zhaowenxuan
2025-01-04 23fe6fc0a44c8fc840076837d6f92302e90962cd
20250104
1个文件已修改
272 ■■■■■ 已修改文件
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjFlowingWaterController.java 272 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjFlowingWaterController.java
@@ -8,12 +8,14 @@
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;
@@ -94,6 +96,8 @@
    private ITjSamplingService tjSamplingService;
    @Autowired
    private TjOrderController tjOrderController;
    @Autowired
    private ITbTransitionService tbTransitionService;
    /**
     * 查询该体检号对应的订单流水列表
@@ -378,21 +382,21 @@
//        tjFlowingWater.setPayStasus(1L);
        TjOrder order = orderService.getById(tjFlowingWater.getOrderId());
        if(order.getFinishTime() !=null){
        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.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();
                String jxbz = DateUtil.format(dates, "yyyyMMddHHmmss") + order.getOrderId();
                //异步单项收费明细
                Boolean b = asyncService.iundividualCharges(tjFlowingWater, order, customer, sysUser,jxbz);
                if (!b){
                Boolean b = asyncService.iundividualCharges(tjFlowingWater, order, customer, sysUser, jxbz);
                if (!b) {
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    return AjaxResult.error();
                }
@@ -403,13 +407,15 @@
            }
        }
        if (flowingWater.getPayStasus() == 1) {
            return AjaxResult.success("该订单已付款 无须再付");
        }
//        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);
        }
//        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());
@@ -525,7 +531,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);
@@ -623,6 +629,94 @@
                            tjRefundVo.setTjFlowingWater(flowingWater);
                            tjRefundVoList.add(tjRefundVo);
                        }
                    }
                }
                return AjaxResult.success(tjRefundVoList);
            }
            return AjaxResult.success("该用户不存在或已体检完成");
        }
        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);
@@ -919,7 +1013,12 @@
            TjOrder order = orderService.getById(OrderId);
            if (null != order) {
                List<TjProject> tjProjectList = null;
                TjFlowingWater water = tjFlowingWaterService.getById(tjSerialNumber);
                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);
@@ -1025,7 +1124,10 @@
                            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()));
                        tjRefundProInfoVoList.add(proInfoVo);
@@ -1033,6 +1135,54 @@
                }
                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("体检已全部完成或已失效");
    }
@@ -1119,4 +1269,98 @@
        }
        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();
    }
}