zjh
2025-01-20 73a816fd2b1e29c25d615c85ce34b12b55c16ccf
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjFlowingWaterController.java
@@ -6,8 +6,19 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.pinyin.PinyinUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.ltkj.common.annotation.RepeatSubmit;
import com.ltkj.common.core.domain.entity.SysDept;
import com.ltkj.common.core.domain.entity.SysUser;
import com.ltkj.common.utils.SecurityUtils;
import com.ltkj.framework.config.MatchUtils;
@@ -16,12 +27,17 @@
import com.ltkj.hosp.vodomain.TjCollectFeesVo;
import com.ltkj.hosp.vodomain.TjRefundProInfoVo;
import com.ltkj.hosp.vodomain.TjRefundVo;
import com.ltkj.system.service.ISysConfigService;
import com.ltkj.system.service.ISysDeptService;
import com.ltkj.system.service.ISysUserService;
import com.ltkj.web.wxUtils.HttpClientUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.bind.annotation.*;
import com.ltkj.common.annotation.Log;
import com.ltkj.common.core.controller.BaseController;
@@ -68,7 +84,20 @@
    private TjAsyncService asyncService;
    @Resource
    private IJimuOnlineReportService reportService;
    @Resource
    private ITjPackageProjectService tjPackageProjectService;
    @Autowired
    private ISysConfigService configService;
    @Autowired
    private ISysDeptService sysDeptService;
    @Autowired
    private TjFlowingWaterHisService tjFlowingWaterHisService;
    @Autowired
    private ITjSamplingService tjSamplingService;
    @Autowired
    private TjOrderController tjOrderController;
    @Autowired
    private ITbTransitionService tbTransitionService;
    /**
     * 查询该体检号对应的订单流水列表
@@ -87,12 +116,12 @@
            map.put("water", list);
        }
        LambdaQueryWrapper<TjChargingStandard> wq3 = new LambdaQueryWrapper<>();
        wq3.eq(TjChargingStandard::getTjNum,TjNumber);
        wq3.eq(TjChargingStandard::getTjNum, TjNumber);
        List<TjChargingStandard> list = chargingStandardService.list(wq3);
        if (null !=list && list.size()>0){
        if (null != list && !list.isEmpty()) {
            for (TjChargingStandard standard : list) {
                TjProject project = projectService.getById(standard.getProId());
                if (null !=project && null!=project.getProCheckType()) {
                if (null != project && null != project.getProCheckType()) {
                    standard.setProCheckType(project.getProCheckType());
                }
            }
@@ -195,63 +224,293 @@
    @PutMapping
    @ApiOperation(value = "体检点击收费按钮接口")
    @Transactional
    @RepeatSubmit
    public AjaxResult edit(@RequestBody TjFlowingWater tjFlowingWater) {
        Long userId = Long.valueOf(SecurityUtils.getLoginUser().getUserId());
        SysUser sysUser = userService.getById(userId);
        TjFlowingWater flowingWater = tjFlowingWaterService.getById(tjFlowingWater.getTjSerialNumber());
        tjFlowingWater.setTollCollectorId(String.valueOf(SecurityUtils.getLoginUser().getUserId()));
        tjFlowingWater.setPayStasus(1L);
//        tjFlowingWater.setTollCollectorId(String.valueOf(SecurityUtils.getLoginUser().getUserId()));
//        tjFlowingWater.setPayStasus(1L);
        TjOrder order = orderService.getById(tjFlowingWater.getOrderId());
        if(order.getFinishTime() !=null){
            return AjaxResult.error("该人员已签离,不可补录项目!");
        }
        TjCustomer customer = customerService.getById(order.getUserId());
        if (null != tjFlowingWater.getTjProIds() && tjFlowingWater.getTjProIds().length > 0) {
            tjFlowingWater.setWaterId(SecurityUtils.getUsername() + DateUtil.format(new Date(), "yyMMddHHmmssSSS"));
            tjFlowingWater.setWaterId(PinyinUtil.getFirstLetter(customer.getCusName(), "").toUpperCase() +SecurityUtils.getUsername() + DateUtil.format(new Date(), "yyMMddHHmmssSSS"));
            tjFlowingWater.setIsAddition("Y");
            if(tjFlowingWater.getPayStasus().toString().equals("0")){
                tjFlowingWater.setPayStasus(0L);
            }else {
                tjFlowingWater.setPayStasus(1L);
            }
            if (tjFlowingWaterService.save(tjFlowingWater)) {
                Date dates = new Date();
                String jxbz = DateUtil.format(dates, "yyyyMMddHHmmss")+order.getOrderId();
                //异步单项收费明细
                asyncService.iundividualCharges(tjFlowingWater, order, customer,sysUser);
                //extracted(tjFlowingWater, order, customer);
                Map<String,Object>map=new HashMap<>();
                map.put("waterId",tjFlowingWater.getWaterId());
                map.put("mobanId",reportService.getMoBanIds());
                return AjaxResult.success("收费成功",map);
                Boolean b = asyncService.iundividualCharges(tjFlowingWater, order, customer, sysUser,jxbz);
                if (!b){
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    return AjaxResult.error();
                }
                if(tjFlowingWater.getPayStasus().equals(1L)){
                    detailService.updateTjOrderDetailsFlowingWaterIdByJxbz(order.getOrderId().toString(), jxbz, tjFlowingWater.getTjSerialNumber().toString());
                    remarkService.updateTjOrderRemarkSfbzByJxbz(order.getOrderId().toString(), jxbz, tjFlowingWater.getTjSerialNumber().toString());
                }else {
                    String s = configService.selectConfigByKey("is_request_common_his_api");
                    if (null != s && s.equals("Y")) {
                        String apiUrl = configService.selectConfigByKey("common_api_url");
                        String hospbm = configService.selectConfigByKey("common_api_service_hospbm");
                        HashMap<String, Object> map = new HashMap<>();
                        map.put("pationId",customer.getPationId());
                        map.put("cardId",customer.getHisJzkh());
                        map.put("tjNum",tjFlowingWater.getTjSerialNumber());
                        map.put("kaiDanKs","7805");
                        // 收费标志 1待售费 2待退费
                        map.put("shouTuiStatus","1");
                        JSONArray array = JSONUtil.createArray();
                        LambdaQueryWrapper<TbTransition> wrapper = new LambdaQueryWrapper<>();
                        wrapper.eq(TbTransition::getTjNum,order.getTjNumber());
                        wrapper.eq(TbTransition::getCusId,customer.getCusIdcard());
                        wrapper.eq(TbTransition::getCardId,customer.getCardId());
                        wrapper.eq(TbTransition::getJxbz,jxbz);
                        wrapper.isNotNull(TbTransition::getOrdPrice);
                        wrapper.gt(TbTransition::getOrdPrice,0);
                        List<TbTransition> list = transitionService.list(wrapper);
                        for (TbTransition transition : list) {
                            LambdaQueryWrapper<TjProject> wrapper1 = new LambdaQueryWrapper<>();
                            wrapper1.eq(TjProject::getProId,transition.getProId());
                            TjProject project = projectService.getOne(wrapper1);
                            LambdaQueryWrapper<SysDept> wrapper2 = new LambdaQueryWrapper<>();
                            wrapper2.eq(SysDept::getDeptId,project.getDeptId());
                            SysDept dept = sysDeptService.getOne(wrapper2);
                            JSONObject obj = JSONUtil.createObj();
                            BigDecimal danjia = transition.getOrdPrice();
                            Integer sl = project.getSl();
                            BigDecimal allPrice = danjia.multiply(new BigDecimal(sl));
                            obj.putOpt("danJia",danjia);
                            obj.putOpt("jieSuanJe",allPrice);
                            obj.putOpt("shuliang",sl);
                            obj.putOpt("zhiXingKs",dept.getDeptId());
                            obj.putOpt("zhiXingKsMc",dept.getDeptName());
                            obj.putOpt("shouFeiXmId",project.getHisXmbm());
                            obj.putOpt("shouFeiXmMc",project.getHisXmmc());
//                        obj.putOpt("zhiXingKs","7805");
//                        obj.putOpt("zhiXingKsMc","体检科");
//                        obj.putOpt("shouFeiXmId","4735346");
//                        obj.putOpt("shouFeiXmMc","体检费");
                            array.add(obj);
                        }
                        map.put("feiYongInfoList",array);
                        String post = HttpClientUtils.sendPost(apiUrl + "/api/his/"+hospbm+"/creatCostInfo", map);
                        JSONObject object = JSONUtil.parseObj(post);
                        if (object.getInt("code") == 200) {
                            JSONObject data = object.getJSONObject("data");
                            tjFlowingWater.setHisWaterId(data.getStr("feiYongId"));
                            JSONArray mxList = data.getJSONArray("mxList");
                            if (mxList != null && mxList.size() > 0) {
                                List<TjFlowingWaterHis> his = mxList.toList(TjFlowingWaterHis.class);
                                tjFlowingWaterHisService.saveBatch(his);
                            }
                            tjFlowingWaterService.updateById(tjFlowingWater);
                        }else {
                            return AjaxResult.error();
                        }
                    }
                }
                Map<String, Object> map = new HashMap<>();
                map.put("waterId", tjFlowingWater.getWaterId());
                map.put("mobanId", reportService.getMoBanIds());
                return AjaxResult.success("收费成功", map);
            }
        }
        if(flowingWater.getPayStasus()==1){
        if (flowingWater.getPayStasus() == 1) {
            return AjaxResult.success("该订单已付款 无须再付");
        }
        if (tjFlowingWaterService.updateById(tjFlowingWater)){
            LambdaQueryWrapper<TjOrderDetail> wq2 = new LambdaQueryWrapper<>();
            wq2.eq(TjOrderDetail::getOrderId, tjFlowingWater.getOrderId());
            wq2.isNull(TjOrderDetail::getFlowingWaterId);
        if (tjFlowingWaterService.updateById(tjFlowingWater)) {
//            LambdaQueryWrapper<TjOrderDetail> wq2 = new LambdaQueryWrapper<>();
//            wq2.eq(TjOrderDetail::getOrderId, tjFlowingWater.getOrderId());
//            wq2.isNull(TjOrderDetail::getFlowingWaterId);
            List<TjConsumables> list2 = new ArrayList<>();
            for (TjOrderDetail tjOrderDetail : detailService.list(wq2)) {
                tjOrderDetail.setFlowingWaterId(String.valueOf(tjFlowingWater.getTjSerialNumber()));
                detailService.updateById(tjOrderDetail);
            }
//            for (TjOrderDetail tjOrderDetail : detailService.list(wq2)) {
//                tjOrderDetail.setFlowingWaterId(String.valueOf(tjFlowingWater.getTjSerialNumber()));
//                detailService.updateById(tjOrderDetail);
//            }
            detailService.updateTjOrderDetailsFlowingWaterIdByJxbzisnull(String.valueOf(order.getOrderId()),String.valueOf(tjFlowingWater.getTjSerialNumber()));
            remarkService.updateTjOrderRemarkSfbzByJxbzisnull(order.getOrderId().toString(),tjFlowingWater.getTjSerialNumber().toString());
            LambdaQueryWrapper<TjOrderDetail> wq3 = new LambdaQueryWrapper<>();
            wq3.eq(TjOrderDetail::getOrderId, tjFlowingWater.getOrderId());
            wq3.isNotNull(TjOrderDetail::getFlowingWaterId);
            List<TjOrderDetail> detailList = detailService.list(wq3);
            if (null != detailList && detailList.size() > 0) {
            if (null != detailList && !detailList.isEmpty()) {
                LambdaQueryWrapper<TbTransition> wqq = new LambdaQueryWrapper<>();
                wqq.eq(TbTransition::getCusId, customer.getCusIdcard());
                wqq.in(TbTransition::getProId, detailList.stream().map(TjOrderDetail::getProId).collect(Collectors.toList()));
                List<TbTransition> tbTransitionList = transitionService.list(wqq);
                if(null != tbTransitionList && tbTransitionList.size() > 0){
                if (null != tbTransitionList && !tbTransitionList.isEmpty()) {
//                    extracted(order, list2, tbTransitionList);
                    //异步添加收费明细
                    asyncService.collectFees(order,list2,tbTransitionList,sysUser,tjFlowingWater.getDiscount());
                    Map<String,Object>map=new HashMap<>();
                    map.put("waterId",tjFlowingWater.getWaterId());
                    map.put("mobanId",reportService.getMoBanIds());
                    return AjaxResult.success("收费成功",map);
                    asyncService.collectFees(order, list2, tbTransitionList, sysUser, tjFlowingWater.getDiscount());
                    Map<String, Object> map = new HashMap<>();
                    map.put("waterId", tjFlowingWater.getWaterId());
                    map.put("mobanId", reportService.getMoBanIds());
                    return AjaxResult.success("收费成功", map);
                }
            }
            return AjaxResult.success("该用户已收费不可重复收费");
        }
        return AjaxResult.error();
    }
    @PutMapping("supper")
    @ApiOperation(value = "体检点击强制收费按钮接口")
    @Transactional
    @RepeatSubmit
    public AjaxResult supperEdit(@RequestBody TjFlowingWater tjFlowingWater) {
        Long userId = Long.valueOf(SecurityUtils.getLoginUser().getUserId());
        SysUser sysUser = userService.getById(userId);
        TjFlowingWater flowingWater = tjFlowingWaterService.getById(tjFlowingWater.getTjSerialNumber());
//        tjFlowingWater.setTollCollectorId(String.valueOf(SecurityUtils.getLoginUser().getUserId()));
//        tjFlowingWater.setPayStasus(1L);
        TjOrder order = orderService.getById(tjFlowingWater.getOrderId());
        if (order.getFinishTime() != null) {
            return AjaxResult.error("该人员已签离,不可补录项目!");
        }
        TjCustomer customer = customerService.getById(order.getUserId());
        if (null != tjFlowingWater.getTjProIds() && tjFlowingWater.getTjProIds().length > 0) {
            tjFlowingWater.setWaterId(PinyinUtil.getFirstLetter(customer.getCusName(), "").toUpperCase() + SecurityUtils.getUsername() + DateUtil.format(new Date(), "yyMMddHHmmssSSS"));
            tjFlowingWater.setIsAddition("Y");
            if (tjFlowingWaterService.save(tjFlowingWater)) {
                Date dates = new Date();
                String jxbz = DateUtil.format(dates, "yyyyMMddHHmmss") + order.getOrderId();
                //异步单项收费明细
                Boolean b = asyncService.iundividualCharges(tjFlowingWater, order, customer, sysUser, jxbz);
                if (!b) {
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    return AjaxResult.error();
                }
                Map<String, Object> map = new HashMap<>();
                map.put("waterId", tjFlowingWater.getWaterId());
                map.put("mobanId", reportService.getMoBanIds());
                return AjaxResult.success("收费成功", map);
            }
        }
//        if (flowingWater.getPayStasus() == 1) {
//            return AjaxResult.success("该订单已付款 无须再付");
//        }
        String s = configService.selectConfigByKey("is_request_common_his_api");
//        if (null != s && s.equals("Y") && order.getTjType().equals("2") && StrUtil.isNotBlank(tjFlowingWater.getHisWaterId())) {
        tjFlowingWater.setPayStasus(1L);
        tjFlowingWater.setCopeWith(null);
        tjFlowingWater.setPaidIn(null);
//          }
        if (tjFlowingWaterService.updateById(tjFlowingWater)) {
//            LambdaQueryWrapper<TjOrderDetail> wq2 = new LambdaQueryWrapper<>();
//            wq2.eq(TjOrderDetail::getOrderId, tjFlowingWater.getOrderId());
//            wq2.isNull(TjOrderDetail::getFlowingWaterId);
            List<TjConsumables> list2 = new ArrayList<>();
//            for (TjOrderDetail tjOrderDetail : detailService.list(wq2)) {
//                tjOrderDetail.setFlowingWaterId(String.valueOf(tjFlowingWater.getTjSerialNumber()));
//                detailService.updateById(tjOrderDetail);
//            }
            if (StrUtil.isBlank(flowingWater.getJxbz())){
                detailService.updateTjOrderDetailsFlowingWaterIdByJxbzisnull(String.valueOf(order.getOrderId()),String.valueOf(tjFlowingWater.getTjSerialNumber()));
                remarkService.updateTjOrderRemarkSfbzByJxbzisnull(order.getOrderId().toString(),tjFlowingWater.getTjSerialNumber().toString());
            }else {
                detailService.updateTjOrderDetailsFlowingWaterIdByJxbz(String.valueOf(order.getOrderId()), flowingWater.getJxbz(), String.valueOf(tjFlowingWater.getTjSerialNumber()));
                remarkService.updateTjOrderRemarkSfbzByJxbz(order.getOrderId().toString(), flowingWater.getJxbz(), tjFlowingWater.getTjSerialNumber().toString());
            }
            LambdaQueryWrapper<TjOrderDetail> wq3 = new LambdaQueryWrapper<>();
            wq3.eq(TjOrderDetail::getOrderId, tjFlowingWater.getOrderId());
            wq3.isNotNull(TjOrderDetail::getFlowingWaterId);
            List<TjOrderDetail> detailList = detailService.list(wq3);
            if (null != detailList && !detailList.isEmpty()) {
                LambdaQueryWrapper<TbTransition> wqq = new LambdaQueryWrapper<>();
                wqq.eq(TbTransition::getCusId, customer.getCusIdcard());
                wqq.in(TbTransition::getProId, detailList.stream().map(TjOrderDetail::getProId).collect(Collectors.toList()));
                List<TbTransition> tbTransitionList = transitionService.list(wqq);
                if (null != tbTransitionList && !tbTransitionList.isEmpty()) {
//                    extracted(order, list2, tbTransitionList);
                    //异步添加收费明细
//                    asyncService.collectFees(order, list2, tbTransitionList, sysUser, tjFlowingWater.getDiscount());
                    Map<String, Object> map = new HashMap<>();
                    map.put("waterId", tjFlowingWater.getWaterId());
                    map.put("mobanId", reportService.getMoBanIds());
                    SysUser user = null;
                    if (flowingWater.getCreateId()!= null)
                        user = userService.getById(flowingWater.getCreateId());
                    else user = userService.getById(1L);
                    TjOrder tjOrder = orderService.getById(flowingWater.getOrderId());
                    List<TjOrderDetail> detailList1 = detailService.getCaiYangDengJi(flowingWater.getOrderId());
                    tjOrderController.addCaiYangDengJi(detailList1, !detailList1.isEmpty(), tjOrder, user, null);
                    return AjaxResult.success("收费成功", map);
                }
            }
            return AjaxResult.success("该用户已收费不可重复收费");
        }
        return AjaxResult.error();
    }
    @PutMapping("refund")
    @ApiOperation(value = "体检点击强制退费按钮接口")
    @Transactional
    @RepeatSubmit
    public AjaxResult refundEdit(@RequestBody String json){
        JSONObject parseObj = JSONUtil.parseObj(json);
        String tjSerialNumber = parseObj.getStr("tjSerialNumber");
        TjFlowingWater tjFlowingWater = tjFlowingWaterService.getById(tjSerialNumber);
        Long orderId = tjFlowingWater.getOrderId();
        LambdaQueryWrapper<TjOrderRemark> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(TjOrderRemark::getSfbz,tjSerialNumber);
        List<TjOrderRemark> list = remarkService.list(wrapper);
        if (list.isEmpty()){
            return AjaxResult.error("该人员没有已收费项目");
        }
        String tjNumber = list.get(0).getTjNumber();
        List<Long> proIds = list.stream().map(TjOrderRemark::getProId).collect(Collectors.toList());
        LambdaQueryWrapper<TjSampling> wrapper1 = new LambdaQueryWrapper<>();
        wrapper1.eq(TjSampling::getTjNum,tjNumber);
        wrapper1.in(TjSampling::getProId,proIds);
        wrapper1.eq(TjSampling::getIsSignFor,"0");
        List<TjSampling> samplings = tjSamplingService.list(wrapper1);
        if (!samplings.isEmpty())
            return AjaxResult.error("该人员此单中存在已做的化验项目,不可退费");
        if (StrUtil.isBlank(tjFlowingWater.getJxbz())){
            LambdaUpdateWrapper<TjOrderDetail> wrapper2 = new LambdaUpdateWrapper<>();
            wrapper2.set(TjOrderDetail::getFlowingWaterId,null)
                    .set(TjOrderDetail::getUpdateTime,new Date())
                    .eq(TjOrderDetail::getOrderId,orderId)
                    .isNull(TjOrderDetail::getJxbz);
            detailService.update(wrapper2);
            LambdaUpdateWrapper<TjOrderRemark> wrapper3 = new LambdaUpdateWrapper<>();
//            wrapper3
        }else {
//            detailService.updateTjOrderDetailsFlowingWaterIdByJxbz(String.valueOf(order.getOrderId()), flowingWater.getJxbz(), String.valueOf(tjFlowingWater.getTjSerialNumber()));
//            remarkService.updateTjOrderRemarkSfbzByJxbz(order.getOrderId().toString(), flowingWater.getJxbz(), tjFlowingWater.getTjSerialNumber().toString());
        }
        return AjaxResult.success();
    }
@@ -277,7 +536,7 @@
        if (null != tjName || null != tjPhone) {
            LambdaQueryWrapper<TjCustomer> wq0 = new LambdaQueryWrapper<>();
            wq0.eq(TjCustomer::getCusName, tjName)
            wq0.like(TjCustomer::getCusName, tjName)
                    .or()
                    .eq(TjCustomer::getCusPhone, tjPhone);
            List<TjCustomer> customerList = customerService.list(wq0);
@@ -303,8 +562,8 @@
                    List<TjOrderDetail> detailList = detailService.list(wq2);
                    if (null != detailList && detailList.size() > 0) {
                        TjRefundVo tjRefundVo = new TjRefundVo();
                        tjRefundVo.setTjName(MatchUtils.hideCusName(customer.getCusName()));
                        tjRefundVo.setTjPhone(MatchUtils.hidePhoneNum(customer.getCusPhone()));
                        tjRefundVo.setTjName(customer.getCusName());
                        tjRefundVo.setTjPhone(customer.getCusPhone());
                        tjRefundVo.setTjNumber(order.getTjNumber());
                        tjRefundVo.setTjOrderId(String.valueOf(order.getOrderId()));
                        if (null != order.getDictCompName()) tjRefundVo.setTjComp(order.getDictCompName());
@@ -350,8 +609,8 @@
                        TjCustomer customer = customerService.getById(order.getUserId());
                        if (null != customer) {
                            TjRefundVo tjRefundVo = new TjRefundVo();
                            tjRefundVo.setTjName(MatchUtils.hideCusName(customer.getCusName()));
                            tjRefundVo.setTjPhone(MatchUtils.hidePhoneNum(customer.getCusPhone()));
                            tjRefundVo.setTjName(customer.getCusName());
                            tjRefundVo.setTjPhone(customer.getCusPhone());
                            tjRefundVo.setTjNumber(order.getTjNumber());
                            tjRefundVo.setTjOrderId(String.valueOf(order.getOrderId()));
                            if (null != order.getDictCompName()) tjRefundVo.setTjComp(order.getDictCompName());
@@ -384,6 +643,94 @@
        return AjaxResult.error("请输入要查询条件");
    }
    @GetMapping("/findTjRefundListByNameAndTjNumAndPhone2")
    @ApiOperation(value = "体检(退费)页面查询接口")
    public AjaxResult findTjRefundListByNameAndTjNumAndPhone2(@RequestParam(required = false) @ApiParam(value = "体检号") String tjNum,
                                                             @RequestParam(required = false) @ApiParam(value = "体检人姓名") String tjName,
                                                             @RequestParam(required = false) @ApiParam(value = "体检人手机号") String tjPhone) {
        if (null != tjName || null != tjPhone) {
            LambdaQueryWrapper<TjCustomer> wq0 = new LambdaQueryWrapper<>();
            wq0.like(TjCustomer::getCusName, tjName)
                    .or()
                    .eq(TjCustomer::getCusPhone, tjPhone);
            List<TjCustomer> customerList = customerService.list(wq0);
            if (null != customerList && customerList.size() > 0) {
                List<TjRefundVo> tjRefundVoList = new ArrayList<>();
                for (TjCustomer customer : customerList) {
                    LambdaQueryWrapper<TjOrder> wq1 = new LambdaQueryWrapper<>();
                    wq1.eq(TjOrder::getUserId, customer.getCusId());
                    wq1.eq(TjOrder::getCheckStatus, 0);
                    wq1.orderByDesc(TjOrder::getCreateTime);
                    List<TjOrder> tjOrders = orderService.list(wq1);
                    TjOrder order = null;
                    if (null != tjOrders && tjOrders.size() > 0) {
                        order = tjOrders.get(0);
                    }
                    if (null == order) {
                        continue;
                    }
                    LambdaQueryWrapper<TjFlowingWater> wrapper = new LambdaQueryWrapper<>();
                    wrapper.eq(TjFlowingWater::getOrderId, order.getOrderId());
                    wrapper.eq(TjFlowingWater::getPayStasus,1L);
                    List<TjFlowingWater> list = tjFlowingWaterService.list(wrapper);
                    for (TjFlowingWater water : list) {
                        TjRefundVo tjRefundVo = new TjRefundVo();
                        tjRefundVo.setTjName(customer.getCusName());
                        tjRefundVo.setTjPhone(customer.getCusPhone());
                        tjRefundVo.setTjNumber(order.getTjNumber());
                        tjRefundVo.setTjOrderId(String.valueOf(order.getOrderId()));
                        if (null != order.getDictCompName()) tjRefundVo.setTjComp(order.getDictCompName());
                        if (null != order.getTjType()) tjRefundVo.setTjType(order.getTjType());
                        tjRefundVo.setRegisterTime(order.getCreateTime());
                        tjRefundVo.setDrawerTime(order.getCreateTime());
                        tjRefundVo.setReportTime(order.getReportTime());
                        tjRefundVo.setTotalAmount(water.getPaidIn());
                        tjRefundVo.setTjFlowingWater(water);
                        tjRefundVoList.add(tjRefundVo);
                    }
                }
                return AjaxResult.success(tjRefundVoList);
            }
            return AjaxResult.error("该用户不存在");
        }
        if (null != tjNum) {
            LambdaQueryWrapper<TjOrder> wq1 = new LambdaQueryWrapper<>();
            wq1.likeLeft(TjOrder::getTjNumber, tjNum);
            wq1.eq(TjOrder::getCheckStatus, 0);
            List<TjOrder> orderList = orderService.list(wq1);
            if (null != orderList && orderList.size() > 0) {
                List<TjRefundVo> tjRefundVoList = new ArrayList<>();
                for (TjOrder order : orderList) {
                    LambdaQueryWrapper<TjFlowingWater> wrapper = new LambdaQueryWrapper<>();
                    wrapper.eq(TjFlowingWater::getOrderId, order.getOrderId());
                    wrapper.eq(TjFlowingWater::getPayStasus,1L);
                    List<TjFlowingWater> list = tjFlowingWaterService.list(wrapper);
                    TjCustomer customer = customerService.getById(order.getUserId());
                    for (TjFlowingWater water : list) {
                        TjRefundVo tjRefundVo = new TjRefundVo();
                        tjRefundVo.setTjName(customer.getCusName());
                        tjRefundVo.setTjPhone(customer.getCusPhone());
                        tjRefundVo.setTjNumber(order.getTjNumber());
                        tjRefundVo.setTjOrderId(String.valueOf(order.getOrderId()));
                        if (null != order.getDictCompName()) tjRefundVo.setTjComp(order.getDictCompName());
                        if (null != order.getTjType()) tjRefundVo.setTjType(order.getTjType());
                        tjRefundVo.setRegisterTime(order.getCreateTime());
                        tjRefundVo.setDrawerTime(order.getCreateTime());
                        tjRefundVo.setReportTime(order.getReportTime());
                        tjRefundVo.setTotalAmount(water.getPaidIn());
                        tjRefundVo.setTjFlowingWater(water);
                        tjRefundVoList.add(tjRefundVo);
                    }
                }
                return AjaxResult.success(tjRefundVoList);
            }
            return AjaxResult.success("该用户不存在或已体检完成");
        }
        return AjaxResult.error("请输入要查询条件");
    }
    /**
     * 体检(收费)页面查询接口
@@ -400,29 +747,29 @@
                    .or()
                    .like(TjCustomer::getCusPhone, tjPhone);
            List<TjCustomer> customerList = customerService.list(wq0);
            if (null != customerList && customerList.size() > 0) {
            if (null != customerList && !customerList.isEmpty()) {
                for (TjCustomer customer : customerList) {
                    LambdaQueryWrapper<TjOrder> wq1 = new LambdaQueryWrapper<>();
                    wq1.eq(TjOrder::getUserId, customer.getCusId());
                    wq1.eq(TjOrder::getCheckStatus, 0);
                    wq1.orderByDesc(TjOrder::getCreateTime);
                    List<TjOrder> tjOrders = orderService.list(wq1);
                    if (null != tjOrders && tjOrders.size() > 0) {
                    if (null != tjOrders && !tjOrders.isEmpty()) {
                        for (TjOrder order : tjOrders) {
                            LambdaQueryWrapper<TjOrderDetail> wq2 = new LambdaQueryWrapper<>();
                            wq2.eq(TjOrderDetail::getOrderId, order.getOrderId());
                            List<TjOrderDetail> detailList = detailService.list(wq2);
                            if (null != detailList && detailList.size() > 0) {
                            if (null != detailList && !detailList.isEmpty()) {
                                TjCollectFeesVo tjRefundVo = new TjCollectFeesVo();
                                tjRefundVo.setTjCusId(String.valueOf(customer.getCusId()));
                                tjRefundVo.setTjName(MatchUtils.hideCusName(customer.getCusName()));
                                tjRefundVo.setTjPhone(MatchUtils.hidePhoneNum(customer.getCusPhone()));
                                tjRefundVo.setTjName(customer.getCusName());
                                tjRefundVo.setTjPhone(customer.getCusPhone());
                                tjRefundVo.setSex(String.valueOf(customer.getCusSex()));
                               if(null !=customer.getCusIdcard()) tjRefundVo.setIdCard(MatchUtils.hideIdCardNum(customer.getCusIdcard()));
                                if (null != customer.getCusIdcard()) tjRefundVo.setIdCard(customer.getCusIdcard());
                                DictComp dictComp = compService.getById(order.getFirmId());
                                if(null !=dictComp){
                                if (null != dictComp) {
                                    tjRefundVo.setTjComp(dictComp.getCnName());
                                }else {
                                } else {
                                    tjRefundVo.setTjComp("无");
                                }
                                if (null != order.getTjType()) tjRefundVo.setTjType(order.getTjType());
@@ -431,7 +778,7 @@
                                wq.eq(TjFlowingWater::getIsAddition, "N");
                                wq.ne(TjFlowingWater::getPayStasus, 2);
                                TjFlowingWater one = tjFlowingWaterService.getOne(wq);
                               // tjRefundVo.setPaidIn(String.valueOf(one.getPaidIn()));
                                // tjRefundVo.setPaidIn(String.valueOf(one.getPaidIn()));
                                tjRefundVo.setTjFlowingWater(one);
                                tjRefundVo.setTjNumber(order.getTjNumber());
                                tjRefundVo.setTjOrderId(String.valueOf(order.getOrderId()));
@@ -439,39 +786,6 @@
                            }
                        }
                    }
                              //                    TjOrder order = null;
//                    if (null != tjOrders && tjOrders.size() > 0) {
//                        order = tjOrders.get(0);
//                    }
//                    if (null == order) {
//                        continue;
//                    }
//                    LambdaQueryWrapper<TjOrderDetail> wq2 = new LambdaQueryWrapper<>();
//                    wq2.eq(TjOrderDetail::getOrderId, order.getOrderId());
//                    List<TjOrderDetail> detailList = detailService.list(wq2);
//                    if (null != detailList && detailList.size() > 0) {
//                        TjCollectFeesVo tjRefundVo = new TjCollectFeesVo();
//                        tjRefundVo.setTjCusId(String.valueOf(customer.getCusId()));
//                        tjRefundVo.setTjName(customer.getCusName());
//                        tjRefundVo.setTjPhone(customer.getCusPhone());
//                        tjRefundVo.setSex(String.valueOf(customer.getCusSex()));
//                        tjRefundVo.setIdCard(customer.getCusIdcard());
//                        if (null != order.getDictCompName())
//                            tjRefundVo.setTjComp(compService.getById(order.getFirmId()) != null ? compService.getById(order.getFirmId()).getCnName() : null);
//                        if (null != order.getTjType()) tjRefundVo.setTjType(order.getTjType());
//                        LambdaQueryWrapper<TjFlowingWater> wq = new LambdaQueryWrapper<>();
//                        wq.eq(TjFlowingWater::getOrderId, order.getOrderId());
//                        wq.eq(TjFlowingWater::getIsAddition, "N");
//                        wq.eq(TjFlowingWater::getPayStasus, 0);
//                        TjFlowingWater one = tjFlowingWaterService.getOne(wq);
////                        if (null == one) {
////                            return AjaxResult.success("不可重复收费");
////                        }
//                        tjRefundVo.setTjFlowingWater(one);
//                        tjRefundVo.setTjNumber(order.getTjNumber());
//                        tjRefundVo.setTjOrderId(String.valueOf(order.getOrderId()));
//                        tjCollectFeesVoList.add(tjRefundVo);
//                    }
                }
                return AjaxResult.success(tjCollectFeesVoList);
            }
@@ -481,30 +795,143 @@
        if (null != tjNum) {
            LambdaQueryWrapper<TjOrder> wq1 = new LambdaQueryWrapper<>();
            wq1.likeLeft(TjOrder::getTjNumber, tjNum);
            wq1.eq(TjOrder::getCheckStatus, 0);
//            wq1.eq(TjOrder::getCheckStatus, 0);
            List<TjOrder> orderList = orderService.list(wq1);
            if (null != orderList && orderList.size() > 0) {
            if (null != orderList && !orderList.isEmpty()) {
                for (TjOrder order : orderList) {
                    LambdaQueryWrapper<TjOrderDetail> wq2 = new LambdaQueryWrapper<>();
                    wq2.eq(TjOrderDetail::getOrderId, order.getOrderId());
                    //wq2.isNull(TjOrderDetail::getFlowingWaterId);
                    List<TjOrderDetail> detailList = detailService.list(wq2);
                    if (null != detailList && detailList.size() > 0) {
                    if (null != detailList && !detailList.isEmpty()) {
                        TjCustomer customer = customerService.getById(order.getUserId());
                        if (null != customer) {
                            TjCollectFeesVo tjRefundVo = new TjCollectFeesVo();
                            tjRefundVo.setTjCusId(String.valueOf(customer.getCusId()));
                            tjRefundVo.setTjName(MatchUtils.hideCusName(customer.getCusName()));
                            tjRefundVo.setTjPhone(MatchUtils.hidePhoneNum(customer.getCusPhone()));
                            tjRefundVo.setTjName(customer.getCusName());
                            tjRefundVo.setTjPhone(customer.getCusPhone());
                            tjRefundVo.setSex(String.valueOf(customer.getCusSex()));
                            tjRefundVo.setIdCard(MatchUtils.hideIdCardNum(customer.getCusIdcard()));
                            if (null != order.getDictCompName())
                                tjRefundVo.setTjComp(compService.getById(order.getFirmId()) != null ? compService.getById(order.getFirmId()).getCnName() : null);
                            tjRefundVo.setIdCard(customer.getCusIdcard());
                            if (null != order.getFirmId()) {
                                DictComp byId = compService.getById(order.getFirmId());
                                if (null != byId) {
                                    tjRefundVo.setTjComp(byId.getCnName());
                                }
                            }
                            if (null != order.getTjType()) tjRefundVo.setTjType(order.getTjType());
                            TjFlowingWater one = tjFlowingWaterService.getOne(new LambdaQueryWrapper<TjFlowingWater>()
                                    .eq(TjFlowingWater::getOrderId, order.getOrderId())
                                    .eq(TjFlowingWater::getIsAddition, "N")
                                    .ne(TjFlowingWater::getPayStasus, 2) );
                                    .ne(TjFlowingWater::getPayStasus, 2));
                            tjRefundVo.setTjFlowingWater(one);
                            tjRefundVo.setTjNumber(order.getTjNumber());
                            tjRefundVo.setTjOrderId(String.valueOf(order.getOrderId()));
                            tjCollectFeesVoList.add(tjRefundVo);
                        }
                    }
                }
                return AjaxResult.success(tjCollectFeesVoList);
            }
            return AjaxResult.success("该用户不存在或已体检完成");
        }
        return AjaxResult.error("请输入要查询条件");
    }
    /**
     * 体检(收费)页面查询接口
     */
    @GetMapping("/findTjCollectFeesByNameAndTjNumAndPhoneN")
    @ApiOperation(value = "体检(收费)页面查询接口")
    public AjaxResult findTjCollectFeesByNameAndTjNumAndPhoneNew(@RequestParam(required = false) @ApiParam(value = "体检号") String tjNum,
                                                              @RequestParam(required = false) @ApiParam(value = "体检人姓名") String tjName,
                                                              @RequestParam(required = false) @ApiParam(value = "体检人手机号") String tjPhone) {
        List<TjCollectFeesVo> tjCollectFeesVoList = new ArrayList<>();
        if (null != tjName || null != tjPhone) {
            LambdaQueryWrapper<TjCustomer> wq0 = new LambdaQueryWrapper<>();
            wq0.like(TjCustomer::getCusName, tjName)
                    .or()
                    .like(TjCustomer::getCusPhone, tjPhone);
            List<TjCustomer> customerList = customerService.list(wq0);
            if (null != customerList && !customerList.isEmpty()) {
                    LambdaQueryWrapper<TjOrder> wq1 = new LambdaQueryWrapper<>();
                    wq1.in(TjOrder::getUserId,customerList.stream().map(TjCustomer::getCusId).collect(Collectors.toList()));
                    wq1.eq(TjOrder::getCheckStatus, 0);
//                    wq1.isNotNull(TjOrder::getReportTime);
                    wq1.orderByDesc(TjOrder::getCreateTime);
                    List<TjOrder> tjOrders = orderService.list(wq1);
                    if (null != tjOrders && !tjOrders.isEmpty()) {
                        for (TjOrder order : tjOrders) {
                            TjCustomer customer = customerService.getById(order.getUserId());
                            LambdaQueryWrapper<TjOrderDetail> wq2 = new LambdaQueryWrapper<>();
                            wq2.eq(TjOrderDetail::getOrderId, order.getOrderId());
                            List<TjOrderDetail> detailList = detailService.list(wq2);
                            if (null != detailList && !detailList.isEmpty()) {
                                TjCollectFeesVo tjRefundVo = new TjCollectFeesVo();
                                tjRefundVo.setTjCusId(String.valueOf(customer.getCusId()));
                                tjRefundVo.setTjName(customer.getCusName());
                                tjRefundVo.setTjPhone(customer.getCusPhone());
                                tjRefundVo.setSex(String.valueOf(customer.getCusSex()));
                                if (null != customer.getCusIdcard()) tjRefundVo.setIdCard(customer.getCusIdcard());
                                DictComp dictComp = compService.getById(order.getFirmId());
                                if (null != dictComp) {
                                    tjRefundVo.setTjComp(dictComp.getCnName());
                                } else {
                                    tjRefundVo.setTjComp("无");
                                }
                                if (null != order.getTjType()) tjRefundVo.setTjType(order.getTjType());
                                LambdaQueryWrapper<TjFlowingWater> wq = new LambdaQueryWrapper<>();
                                wq.eq(TjFlowingWater::getOrderId, order.getOrderId());
//                                wq.eq(TjFlowingWater::getIsAddition, "N");
                                wq.ne(TjFlowingWater::getPayStasus, 2);
                                List<TjFlowingWater> list = tjFlowingWaterService.list(wq);
                                for (TjFlowingWater water : list) {
                                    tjRefundVo.setTjFlowingWater(water);
                                    tjRefundVo.setTjNumber(order.getTjNumber());
                                    tjRefundVo.setTjOrderId(String.valueOf(order.getOrderId()));
                                    TjCollectFeesVo vo = BeanUtil.copyProperties(tjRefundVo, TjCollectFeesVo.class);
                                    tjCollectFeesVoList.add(vo);
                                }
                            }
                        }
                    }
                return AjaxResult.success(tjCollectFeesVoList);
            }
            return AjaxResult.error("该用户不存在");
        }
        if (null != tjNum) {
            LambdaQueryWrapper<TjOrder> wq1 = new LambdaQueryWrapper<>();
            wq1.likeLeft(TjOrder::getTjNumber, tjNum);
//            wq1.eq(TjOrder::getCheckStatus, 0);
            List<TjOrder> orderList = orderService.list(wq1);
            if (null != orderList && !orderList.isEmpty()) {
                for (TjOrder order : orderList) {
                    LambdaQueryWrapper<TjOrderDetail> wq2 = new LambdaQueryWrapper<>();
                    wq2.eq(TjOrderDetail::getOrderId, order.getOrderId());
                    //wq2.isNull(TjOrderDetail::getFlowingWaterId);
                    List<TjOrderDetail> detailList = detailService.list(wq2);
                    if (null != detailList && !detailList.isEmpty()) {
                        TjCustomer customer = customerService.getById(order.getUserId());
                        if (null != customer) {
                            TjCollectFeesVo tjRefundVo = new TjCollectFeesVo();
                            tjRefundVo.setTjCusId(String.valueOf(customer.getCusId()));
                            tjRefundVo.setTjName(customer.getCusName());
                            tjRefundVo.setTjPhone(customer.getCusPhone());
                            tjRefundVo.setSex(String.valueOf(customer.getCusSex()));
                            tjRefundVo.setIdCard(customer.getCusIdcard());
                            if (null != order.getFirmId()) {
                                DictComp byId = compService.getById(order.getFirmId());
                                if (null != byId) {
                                    tjRefundVo.setTjComp(byId.getCnName());
                                }
                            }
                            if (null != order.getTjType()) tjRefundVo.setTjType(order.getTjType());
                            TjFlowingWater one = tjFlowingWaterService.getOne(new LambdaQueryWrapper<TjFlowingWater>()
                                    .eq(TjFlowingWater::getOrderId, order.getOrderId())
                                    .eq(TjFlowingWater::getIsAddition, "N")
                                    .ne(TjFlowingWater::getPayStasus, 2));
                            tjRefundVo.setTjFlowingWater(one);
                            tjRefundVo.setTjNumber(order.getTjNumber());
                            tjRefundVo.setTjOrderId(String.valueOf(order.getOrderId()));
@@ -536,32 +963,111 @@
                } else {
                    tjProjectList = detailService.selectTjOrderDetailListByFlowingWaterIdIsNotNull(OrderId);
                }
                if (null != tjProjectList && tjProjectList.size() > 0) {
                String pacId = transitionService.selectPacIdByTbTransitionTjNumAndProId(order.getTjNumber(),order.getCardId());
                String s = tjFlowingWaterService.getDiscount(OrderId);
                if (null != tjProjectList && !tjProjectList.isEmpty()) {
                    for (TjProject project : tjProjectList) {
                        if (project.getProParentId() == 0) {
                            //                            LambdaQueryWrapper<TbTransition> wqq1 = new LambdaQueryWrapper<>();
//                            wqq1.eq(TbTransition::getCusId, customerService.getById(order.getUserId()).getCusIdcard());
//                            wqq1.eq(TbTransition::getParentProId, project.getProId());
//                            List<TbTransition> tbTransitionList = transitionService.list(wqq1);
//                            BigDecimal bigDecimal = new BigDecimal("0.00");
//                            BigDecimal bigDecimal1 = new BigDecimal("0.00");
//                            for (TbTransition transition : tbTransitionList) {
//                                 bigDecimal = bigDecimal.add(transition.getNowPrice());
//                                 bigDecimal1=bigDecimal1.add(transition.getOrdPrice());
//                            }
//                            project.setProPrice(bigDecimal.setScale(0,BigDecimal.ROUND_UP));
//                            project.setProOrdPrice(bigDecimal1);
                            BigDecimal decimal = transitionService.getTbTransitionPriceAndOrdPrice(customerService.getById(order.getUserId()).getCusIdcard(),
                                    project.getProId());
                            String s = tjFlowingWaterService.getDiscount(OrderId);
                            if(null !=decimal){
                                project.setProPrice(decimal.setScale(2));
                                project.setProOrdPrice(decimal.multiply(new BigDecimal(s)).setScale(2));
                            }else {
                                project.setProPrice(new BigDecimal("0.00"));
                                project.setProOrdPrice(new BigDecimal("0.00"));
                            if (null != pacId) {
                                TjPackageProject pp = tjPackageProjectService.getOne(new LambdaQueryWrapper<TjPackageProject>().eq(TjPackageProject::getPacId, pacId)
                                        .eq(TjPackageProject::getProId, String.valueOf(project.getProId())));
                                if (null != pp) {
                                    project.setProPrice(pp.getPriceNow());
                                    project.setProOrdPrice(pp.getPriceNow().multiply(new BigDecimal(s)));
                                } else {
                                    project.setProPrice(project.getProPrice().setScale(2));
                                    project.setProOrdPrice(project.getProPrice().multiply(new BigDecimal(s)).setScale(2));
                                }
                            } else {
                                project.setProPrice(project.getProPrice().setScale(2));
                                project.setProOrdPrice(project.getProPrice().multiply(new BigDecimal(s)).setScale(2));
                            }
                        }
                    }
                    List<TjFlowingWater> list = tjFlowingWaterService.list(new LambdaQueryWrapper<TjFlowingWater>()
                            .eq(TjFlowingWater::getOrderId, order)
                            .eq(TjFlowingWater::getPayStasus, 2));
                    if (null != list && !list.isEmpty()) {
                        List<TjProject> projectList = projectService.getTjProListByPacIdAndDeptId(pacId);
                        if(null !=projectList && !projectList.isEmpty()){
                            for (TjProject project : projectList) {
                                project.setProOrdPrice(tjPackageProjectService.getPacProPriceByPacIdAndPro(project.getProId(),pacId)
                                        .multiply(new BigDecimal(s)).setScale(2));
                                tjProjectList.add(project);
                            }
                        }
                    }
                }
                return AjaxResult.success(tjProjectList);
            }
        }
        return AjaxResult.error("暂时没有数据");
    }
    /**
     * 体检已收费未收费信息查询接口
     */
    @GetMapping("/findTjChargedButNotChargedByTjNumN")
    @ApiOperation(value = "体检已收费未收费信息查询接口")
    public AjaxResult findTjChargedButNotChargedByTjNumN(@RequestParam @ApiParam(value = "0未缴费1已缴费") Integer type,
                                                        @RequestParam @ApiParam(value = "体检号") String OrderId,
                                                         @RequestParam String tjSerialNumber) {
        if (null != OrderId) {
            TjOrder order = orderService.getById(OrderId);
            if (null != order) {
                List<TjProject> tjProjectList = null;
                LambdaQueryWrapper<TjFlowingWater> wrapper = new LambdaQueryWrapper<>();
                wrapper.eq(TjFlowingWater::getTjSerialNumber,tjSerialNumber);
//                wrapper.eq(TjFlowingWater::getPayStasus,type);
                TjFlowingWater water = tjFlowingWaterService.getOne(wrapper);
                if (water == null)
                    return AjaxResult.success(tjProjectList);
                if (type == 0) {
                    if (StrUtil.isBlank(water.getJxbz()))
                        tjProjectList = detailService.selectTjOrderDetailListByFlowingWaterIdIsNullAndJxbzIsNull(OrderId);
                    else tjProjectList = detailService.selectTjOrderDetailListByFlowingWaterIdIsNullN(OrderId,water.getJxbz());
                } else {
                    if (StrUtil.isBlank(water.getJxbz()))
                        tjProjectList = detailService.selectTjOrderDetailListByFlowingWaterIdIsNotNullAndJxbzIsNull(OrderId);
                    else tjProjectList = detailService.selectTjOrderDetailListByFlowingWaterIdIsNotNullN(OrderId,water.getJxbz());
                }
                String pacId = transitionService.selectPacIdByTbTransitionTjNumAndProId(order.getTjNumber(),order.getCardId());
                String s = tjFlowingWaterService.getDiscount(OrderId);
                if (null != tjProjectList && !tjProjectList.isEmpty()) {
                    for (TjProject project : tjProjectList) {
                        if (project.getProParentId() == 0) {
                            if (null != pacId) {
                                TjPackageProject pp = tjPackageProjectService.getOne(new LambdaQueryWrapper<TjPackageProject>().eq(TjPackageProject::getPacId, pacId)
                                        .eq(TjPackageProject::getProId, String.valueOf(project.getProId())));
                                if (null != pp) {
                                    project.setProPrice(pp.getPriceNow());
                                    project.setProOrdPrice(pp.getPriceNow().multiply(new BigDecimal(s)));
                                } else {
                                    project.setProPrice(project.getProPrice().setScale(2));
                                    project.setProOrdPrice(project.getProPrice().multiply(new BigDecimal(s)).setScale(2));
                                }
                            } else {
                                project.setProPrice(project.getProPrice().setScale(2));
                                project.setProOrdPrice(project.getProPrice().multiply(new BigDecimal(s)).setScale(2));
                            }
                        }
                    }
                    List<TjFlowingWater> list = tjFlowingWaterService.list(new LambdaQueryWrapper<TjFlowingWater>()
                            .eq(TjFlowingWater::getOrderId, order)
                            .eq(TjFlowingWater::getPayStasus, 2));
                    if (null != list && !list.isEmpty()) {
                        List<TjProject> projectList = projectService.getTjProListByPacIdAndDeptId(pacId);
                        if(null !=projectList && !projectList.isEmpty()){
                            for (TjProject project : projectList) {
                                project.setProOrdPrice(tjPackageProjectService.getPacProPriceByPacIdAndPro(project.getProId(),pacId)
                                        .multiply(new BigDecimal(s)).setScale(2));
                                tjProjectList.add(project);
                            }
                        }
                    }
                }
                return AjaxResult.success(tjProjectList);
@@ -580,46 +1086,108 @@
    public AjaxResult getTjRefundProInfoVoList(@RequestParam @ApiParam(value = "体检订单id") String orderId) {
        TjOrder tjOrder = orderService.getById(orderId);
        if (null == tjOrder) return AjaxResult.error("该体检记录不存在");
        TjCustomer customer = customerService.getById(tjOrder.getUserId());
//        TjCustomer customer = customerService.getById(tjOrder.getUserId());
        if (tjOrder.getCheckStatus() == 0 && tjOrder.getReportTime() == null) {
            LambdaQueryWrapper<TjOrderDetail> wq = new LambdaQueryWrapper<>();
            wq.eq(TjOrderDetail::getOrderId, orderId);
            //wq.eq(TjOrderDetail::getTjStatus, 0);
            wq.ne(TjOrderDetail::getTjStatus,1);
            wq.ne(TjOrderDetail::getTjStatus,3);
            wq.ne(TjOrderDetail::getTjStatus, 1);
            wq.ne(TjOrderDetail::getTjStatus, 3);
            wq.isNotNull(TjOrderDetail::getFlowingWaterId);
            List<TjOrderDetail> detailList = detailService.list(wq);
            String pacId = transitionService.selectPacIdByTbTransitionTjNumAndProId(tjOrder.getTjNumber(),tjOrder.getCardId());
            if (null != detailList && detailList.size() > 0) {
                List<TjRefundProInfoVo> tjRefundProInfoVoList = new ArrayList<>();
                for (TjOrderDetail detail : detailList) {
                    TjProject project = projectService.getById(detail.getProId());
                    if (project.getProParentId() == 0) {
                        LambdaQueryWrapper<TbTransition> wqq1 = new LambdaQueryWrapper<>();
                        wqq1.eq(TbTransition::getCusId, customer.getCusIdcard());
                        wqq1.eq(TbTransition::getParentProId, project.getProId());
                        List<TbTransition> tbTransitionList = transitionService.list(wqq1);
                        BigDecimal bigDecimal = new BigDecimal("0.00");
                        BigDecimal bigDecimal1 = new BigDecimal("0.00");
                        for (TbTransition transition : tbTransitionList) {
                            bigDecimal = bigDecimal.add(transition.getNowPrice());
                            bigDecimal1 = bigDecimal1.add(transition.getOrdPrice());
                        }
//                        LambdaQueryWrapper<TbTransition> wqq1 = new LambdaQueryWrapper<>();
//                        wqq1.eq(TbTransition::getCusId, customer.getCusIdcard());
//                        wqq1.eq(TbTransition::getParentProId, project.getProId());
//                        List<TbTransition> tbTransitionList = transitionService.list(wqq1);
//                        BigDecimal bigDecimal = new BigDecimal("0.00");
//                        BigDecimal bigDecimal1 = new BigDecimal("0.00");
//                        for (TbTransition transition : tbTransitionList) {
//                            bigDecimal = bigDecimal.add(transition.getNowPrice());
//                            bigDecimal1 = bigDecimal1.add(transition.getOrdPrice());
//                        }
                        String s = tjFlowingWaterService.getDiscount(orderId);
                        TjRefundProInfoVo proInfoVo = new TjRefundProInfoVo();
                       // double discount = Double.parseDouble(tjFlowingWaterService.getById(detail.getFlowingWaterId()).getDiscount());
                        //BigDecimal decimal = BigDecimal.valueOf(discount).divide(BigDecimal.valueOf(100));
                        //proInfoVo.setNetReceipts(bigDecimal.multiply(decimal).setScale(2, BigDecimal.ROUND_DOWN));
                        proInfoVo.setNetReceipts(bigDecimal);
                        if (null != pacId) {
                            TjPackageProject pp = tjPackageProjectService.getOne(new LambdaQueryWrapper<TjPackageProject>().eq(TjPackageProject::getPacId, pacId)
                                    .eq(TjPackageProject::getProId, String.valueOf(project.getProId())));
                            if (null != pp) {
                                proInfoVo.setNetReceipts(pp.getPriceNow().multiply(new BigDecimal(s)));
                                proInfoVo.setPrice(pp.getPriceNow());
                            } else {
                                proInfoVo.setNetReceipts(project.getProPrice().multiply(new BigDecimal(s)));
                                proInfoVo.setPrice(project.getProPrice());
                            }
                        } else {
                            proInfoVo.setNetReceipts(project.getProPrice().multiply(new BigDecimal(s)));
                            proInfoVo.setPrice(project.getProPrice());
                        }
                        proInfoVo.setCollectFeesTime(tjFlowingWaterService.getById(detail.getFlowingWaterId()).getUpdateTime());
                        proInfoVo.setTollCollector(userService.getById(tjFlowingWaterService.getById(detail.getFlowingWaterId()).getTollCollectorId()).getNickName());
//                        TjFlowingWater water = tjFlowingWaterService.getById(detail.getFlowingWaterId());
//                        String tollCollectorId = water.getTollCollectorId();
//                        SysUser user = userService.getById(tollCollectorId);
//                        proInfoVo.setTollCollector(user.getNickName());
                        proInfoVo.setProName(project.getProName());
                        proInfoVo.setProId(String.valueOf(project.getProId()));
                        //proInfoVo.setPrice(project.getProPrice().setScale(2, BigDecimal.ROUND_DOWN));
                        proInfoVo.setPrice(bigDecimal1);
                        tjRefundProInfoVoList.add(proInfoVo);
                    }
                }
                return AjaxResult.success(tjRefundProInfoVoList);
            }
        }
        return AjaxResult.success("体检已全部完成或已失效");
    }
    /**
     * 体检退费项目查询接口
     */
    @GetMapping("/getTjRefundProInfoVoList2")
    @ApiOperation(value = "体检退费项目详情查询接口")
    @Transactional
    public AjaxResult getTjRefundProInfoVoList2(@RequestParam @ApiParam(value = "体检订单id") String orderId) {
        TjOrder tjOrder = orderService.getById(orderId);
        if (null == tjOrder) return AjaxResult.error("该体检记录不存在");
        if (tjOrder.getCheckStatus() == 0 && tjOrder.getReportTime() == null) {
            List<TjRefundProInfoVo> tjRefundProInfoVoList = new ArrayList<>();
            LambdaQueryWrapper<TjFlowingWater> wrapper = new LambdaQueryWrapper<>();
            wrapper.eq(TjFlowingWater::getOrderId,tjOrder.getOrderId());
            wrapper.eq(TjFlowingWater::getPayStasus,1L);
            List<TjFlowingWater> list = tjFlowingWaterService.list(wrapper);
            if (list.isEmpty())
                return AjaxResult.error("没有收费项目");
            for (TjFlowingWater water : list) {
                LambdaQueryWrapper<TjOrderRemark> wrapper1 = new LambdaQueryWrapper<>();
                wrapper1.eq(TjOrderRemark::getTjNumber,tjOrder.getTjNumber());
                if (StrUtil.isNotBlank(water.getJxbz()))
                    wrapper1.eq(TjOrderRemark::getJxbz,water.getJxbz());
                else wrapper1.isNull(TjOrderRemark::getJxbz);
                wrapper1.isNotNull(TjOrderRemark::getSfbz);
                List<TjOrderRemark> list1 = remarkService.list(wrapper1);
                for (TjOrderRemark remark : list1) {
                    TjProject project = projectService.getById(remark.getProId());
                    QueryWrapper<TbTransition> wrapper2 = new QueryWrapper<>();
                    wrapper2.select("sum(now_price) as now_price");
                    wrapper2.eq("tj_num",remark.getTjNumber());
                    wrapper2.eq("parent_pro_id",remark.getProId());
                    wrapper2.groupBy("parent_pro_id");
                    TbTransition transition = tbTransitionService.getOne(wrapper2);
                    TjRefundProInfoVo proInfoVo = new TjRefundProInfoVo();
                    proInfoVo.setNetReceipts(transition.getNowPrice());
                    proInfoVo.setPrice(project.getProPrice());
                    proInfoVo.setCollectFeesTime(water.getUpdateTime());
                    proInfoVo.setProName(project.getProName());
                    proInfoVo.setProId(String.valueOf(project.getProId()));
                    tjRefundProInfoVoList.add(proInfoVo);
                }
            }
            if (!tjRefundProInfoVoList.isEmpty())
                return AjaxResult.success(tjRefundProInfoVoList);
        }
        return AjaxResult.success("体检已全部完成或已失效");
    }
@@ -630,17 +1198,18 @@
     */
    @PostMapping("/tjRefund")
    @ApiOperation(value = "体检退费按钮接口")
    public AjaxResult tjRefund(@RequestBody @ApiParam(value = "流水对象") TjFlowingWater tjFlowingWater){
        if(null == tjFlowingWater.getRefundPros()||tjFlowingWater.getRefundPros().size()==0) return AjaxResult.error("请选择退费项目");
    public AjaxResult tjRefund(@RequestBody @ApiParam(value = "流水对象") TjFlowingWater tjFlowingWater) {
        if (null == tjFlowingWater.getRefundPros() || tjFlowingWater.getRefundPros().size() == 0)
            return AjaxResult.error("请选择退费项目");
        tjFlowingWater.setTollCollectorId(String.valueOf(SecurityUtils.getLoginUser().getUserId()));
        tjFlowingWater.setRefundPersonId(String.valueOf(SecurityUtils.getLoginUser().getUserId()));
        tjFlowingWater.setRefundTime(new Date());
        tjFlowingWater.setIsAddition("N");
        tjFlowingWater.setPayStasus(2L);
        tjFlowingWater.setWaterId(SecurityUtils.getUsername() + DateUtil.format(new Date(), "yyMMddHHmmssSSS"));
        tjFlowingWater.setWaterId("TF" + SecurityUtils.getUsername() + DateUtil.format(new Date(), "yyMMddHHmmssSSS"));
        tjFlowingWater.setPaidIn(BigDecimal.valueOf(0.00).subtract(tjFlowingWater.getRefundPrice()));
        tjFlowingWater.setCopeWith(tjFlowingWater.getRefundPrice());
        if (tjFlowingWaterService.save(tjFlowingWater)){
        if (tjFlowingWaterService.save(tjFlowingWater)) {
            TjOrder order = orderService.getById(tjFlowingWater.getOrderId());
            for (TjProject refundPro : tjFlowingWater.getRefundPros()) {
                LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
@@ -691,17 +1260,111 @@
                        }
                    }
                }
                LambdaQueryWrapper<TjOrderRemark>wqz=new LambdaQueryWrapper<>();
                wqz.eq(TjOrderRemark::getTjNumber,order.getTjNumber());
                wqz.eq(TjOrderRemark::getProId,refundPro.getProId());
                LambdaQueryWrapper<TjOrderRemark> wqz = new LambdaQueryWrapper<>();
                wqz.eq(TjOrderRemark::getTjNumber, order.getTjNumber());
                wqz.eq(TjOrderRemark::getProId, refundPro.getProId());
                remarkService.remove(wqz);
            }
            List<TjProject> refundPros = tjFlowingWater.getRefundPros();
            asyncService.tjRefund(refundPros,order.getTjNumber());
            Map<String,Object>map=new HashMap<>();
            map.put("waterId",tjFlowingWater.getWaterId());
            map.put("mobanId",reportService.getMoBanId());
            return AjaxResult.success("退费成功",map);
            asyncService.tjRefund(refundPros, order.getTjNumber());
            Map<String, Object> map = new HashMap<>();
            map.put("waterId", tjFlowingWater.getWaterId());
            map.put("mobanId", reportService.getMoBanId());
            return AjaxResult.success("退费成功", map);
        }
        return AjaxResult.error();
    }
    /**
     * 体检退费接口
     */
    @PostMapping("/tjRefund2")
    @ApiOperation(value = "体检退费按钮接口")
    @Transactional
    public AjaxResult tjRefund2(@RequestBody @ApiParam(value = "流水对象") TjFlowingWater tjFlowingWater) {
        if (null == tjFlowingWater.getRefundPros() || tjFlowingWater.getRefundPros().size() == 0)
            return AjaxResult.error("请选择退费项目");
        TjOrder order = orderService.getById(tjFlowingWater.getOrderId());
        List<TjProject> refundPros = tjFlowingWater.getRefundPros();
        List<Long> proIds = refundPros.stream().map(TjProject::getProId).collect(Collectors.toList());
        LambdaQueryWrapper<TjSampling> wrapper = new LambdaQueryWrapper<>();
        wrapper.in(TjSampling::getProId,proIds);
        wrapper.eq(TjSampling::getTjNum,order.getTjNumber());
        wrapper.eq(TjSampling::getIsSignFor,"0");
        List<TjSampling> list1 = tjSamplingService.list(wrapper);
        if (!list1.isEmpty())
            return AjaxResult.error("所选项目中包含已做检验项目无法退费");
        tjFlowingWater.setTollCollectorId(String.valueOf(SecurityUtils.getLoginUser().getUserId()));
        tjFlowingWater.setRefundPersonId(String.valueOf(SecurityUtils.getLoginUser().getUserId()));
        tjFlowingWater.setRefundTime(new Date());
        tjFlowingWater.setIsAddition("N");
        tjFlowingWater.setPayStasus(2L);
        tjFlowingWater.setWaterId("TF" + SecurityUtils.getUsername() + DateUtil.format(new Date(), "yyMMddHHmmssSSS"));
        tjFlowingWater.setPaidIn(BigDecimal.valueOf(0.00).subtract(tjFlowingWater.getRefundPrice()));
        tjFlowingWater.setCopeWith(tjFlowingWater.getRefundPrice());
        tjFlowingWater.setTjSerialNumber(IdUtil.getSnowflake().nextId());
        if (tjFlowingWaterService.save(tjFlowingWater)) {
            for (TjProject refundPro : tjFlowingWater.getRefundPros()) {
                LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
                wq.eq(TjProject::getProParentId, refundPro.getProId());
                List<Long> collect = projectService.list(wq).stream().map(TjProject::getProId).collect(Collectors.toList());
                LambdaQueryWrapper<TjOrderDetail> wq1 = new LambdaQueryWrapper<>();
                wq1.in(TjOrderDetail::getProId, collect);
                wq1.eq(TjOrderDetail::getOrderId, tjFlowingWater.getOrderId());
                wq1.isNotNull(TjOrderDetail::getFlowingWaterId);
                wq1.eq(TjOrderDetail::getTjStatus, 0);
                List<TjOrderDetail> list = detailService.list(wq1);
                if (null != list && list.size() > 0) {
                    for (TjOrderDetail orderDetail : list) {
                        orderDetail.setFlowingWaterId(null);
                        detailService.updateById(orderDetail);
                        LambdaQueryWrapper<TjChargingStandard> wqq = new LambdaQueryWrapper<>();
                        wqq.eq(TjChargingStandard::getTjNum, order.getTjNumber());
                        wqq.eq(TjChargingStandard::getProId, orderDetail.getProId());
                        chargingStandardService.remove(wqq);
                    }
                }
                LambdaQueryWrapper<TjOrderDetail> wq2 = new LambdaQueryWrapper<>();
                wq2.eq(TjOrderDetail::getProId, refundPro.getProId());
                wq2.eq(TjOrderDetail::getOrderId, tjFlowingWater.getOrderId());
                wq2.isNotNull(TjOrderDetail::getFlowingWaterId);
                wq2.eq(TjOrderDetail::getTjStatus, 0);
                TjOrderDetail detail = detailService.getOne(wq2);
                if (null != detail) {
                    detail.setFlowingWaterId(null);
                    detailService.updateById(detail);
                    LambdaQueryWrapper<TjProConsumables> wqqq = new LambdaQueryWrapper<>();
                    wqqq.eq(TjProConsumables::getProId, detail.getProId());
                    List<TjProConsumables> proConsumables = proConsumablesService.list(wqqq);
                    List<TjConsumables> list2 = new ArrayList<>();
                    if (null != proConsumables && proConsumables.size() > 0) {
                        for (TjProConsumables tjProConsumables : proConsumables) {
                            TjConsumables tjConsumables = consumablesService.selectTjConsumablesById(tjProConsumables.getConsumablesId());
                            list2.add(tjConsumables);
                        }
                    }
                    if (null != list && list.size() > 0) {
                        ArrayList<TjConsumables> collectw = list2.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(TjConsumables::getId))), ArrayList::new));
                        for (TjConsumables tjConsumables : collectw) {
                            LambdaQueryWrapper<TjChargingStandard> wqq = new LambdaQueryWrapper<>();
                            wqq.eq(TjChargingStandard::getTjNum, order.getTjNumber());
                            wqq.eq(TjChargingStandard::getConsumablesId, tjConsumables.getId());
                            chargingStandardService.remove(wqq);
                        }
                    }
                }
                LambdaUpdateWrapper<TjOrderRemark> wqz = new LambdaUpdateWrapper<>();
                wqz.eq(TjOrderRemark::getTjNumber, order.getTjNumber());
                wqz.eq(TjOrderRemark::getProId, refundPro.getProId());
                wqz.set(TjOrderRemark::getSfbz,null);
                remarkService.update(wqz);
            }
            asyncService.tjRefund(refundPros, order.getTjNumber());
            Map<String, Object> map = new HashMap<>();
            map.put("waterId", tjFlowingWater.getWaterId());
            map.put("mobanId", reportService.getMoBanId());
            return AjaxResult.success("退费成功", map);
        }
        return AjaxResult.error();
    }