zhaowenxuan
2025-03-13 4d2c9f210c69d6dd55c0fd2f53b675aa662baeac
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java
@@ -550,7 +550,7 @@
                wq.isNull(TjOrder::getPrintLastTime);
            }
            if (zt == 6) {
                //已出报告
                //已打印
                wq.isNotNull(TjOrder::getPrintLastTime);
                wq.eq(TjOrder::getHeshouStatus, 1);
                wq.isNotNull(TjOrder::getPrintLastTime);
@@ -609,7 +609,7 @@
                        order.setZt("报告核收");
                    }
                    if (zt == 6) {
                        order.setZt("已出报告");
                        order.setZt("已打印");
                    }
                } else {
                    if (czwj == 0) {
@@ -637,8 +637,8 @@
                        order.setZt("报告核收");
                    }
                    if (null != lastTime) {
                        //已出报告6
                        order.setZt("已出报告");
                        //已打印6
                        order.setZt("已打印");
                    }
                }
            }
@@ -1098,7 +1098,8 @@
    public AjaxResult processOrderWithTransaction(TjOrder tjOrder, TjCustomer tjCustomer, TjReservation tjReservation, TjFlowingWater tjFlowingWater, MallOrder mallOrder, SysUser sysUser) {
        //获取拼接前缀
        String makeLisTmhPrefix = configService.selectConfigByKey("make_lis_tmh_prefix");
//        String makeLisTmhPrefix = configService.selectConfigByKey("make_lis_tmh_prefix");
        String makeLisTmhPrefix = "";
        //生成体检号
//        String tjNumber = (SecurityUtils.getUsername() + new SimpleDateFormat("yyMMddHHmmss").format(new Date()));
@@ -1235,6 +1236,7 @@
                }*/
                // 查询 对接Lis、Pacs申请如果类型包含在配置内则使用对接lis、pacs
                if (lisApiMethod.isUseLisAndPacsRegister(tjOrder)) {
                    log.info("调用his开启 进入不收费方法 该体检人员不收费:"+tjOrder.getTjNumber());
                    // 这是上面个人方法引入数据
                    tjFlowingWater.setPayStasus(1L);
                    newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
@@ -1245,14 +1247,18 @@
                    remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
                    List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
                    xdPictureService.saveBatch(xdPictureList);
//                    List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
//                    addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
                    List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
                    addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
                    log.info("调用his开启 进入不收费方法 该方法执行完毕");
                } else {
                    log.info("调用his开启 进入收费方法 该体检人员不收费:"+tjOrder.getTjNumber());
                    newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
                    List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
                    addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
                    hisApiMethod.tijianshenqing(tjCustomer, DateUtil.format(date1, "yyyy-MM-dd HH:mm:ss"), tjOrder.getCardId());
                    String isUseMx = configService.selectConfigByKey("jcxhis_is_use_mx");
                    if (isUseMx.equalsIgnoreCase("Y"))
                        hisApiMethod.tijianshenqing(tjCustomer, DateUtil.format(date1, "yyyy-MM-dd HH:mm:ss"), tjOrder.getCardId());
                    else hisApiMethod.tijianshenqingJinchuanNew(tjCustomer, DateUtil.format(date1, "yyyy-MM-dd HH:mm:ss"), tjOrder.getCardId());
                }
                return AjaxResult.success(tjNumber);
            } else {
@@ -1349,9 +1355,9 @@
            // 查询 对接Lis、Pacs申请如果类型包含在配置内则使用对接lis、pacs
            log.info("签到登记接口该人员的体检类型是:"+tjOrder.getTjType());
            log.info("签到登记接口该人员: "+tjOrder.getTjNumber()+" 的体检类型是:"+tjOrder.getTjType());
            if (lisApiMethod.isUseLisAndPacsRegister(tjOrder)) {
                log.info("签到登记进入未收费方法");
                log.info(tjOrder.getTjNumber()+"签到登记进入未收费方法");
                // 这是上面个人方法引入数据
                tjFlowingWater.setPayStasus(1L);
                newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
@@ -1361,10 +1367,11 @@
                List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
                xdPictureService.saveBatch(xdPictureList);
                List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
                log.info("签到登记:采样数据查询个数"+detailList.size());
                log.info(tjOrder.getTjNumber()+"签到登记:采样数据查询个数"+detailList.size());
                addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
                return AjaxResult.success(tjNumber);
            } else {
                log.info(tjOrder.getTjNumber()+"else签到登记进入收费方法");
                newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
                AjaxResult error = isRequestCommonHisApi(tjOrder, tjCustomer, tjFlowingWater);
                if (error != null) return error;
@@ -1402,6 +1409,7 @@
            wrapper.gt(TbTransition::getNowPrice, 0);
            List<TbTransition> list = tbTransitionService.list(wrapper);
            BigDecimal zongjia = new BigDecimal("0.0");
            for (TbTransition transition : list) {
                LambdaQueryWrapper<TjProject> wrapper1 = new LambdaQueryWrapper<>();
                wrapper1.eq(TjProject::getProId, transition.getProId());
@@ -1412,7 +1420,8 @@
                SysDept dept = sysDeptService.getOne(wrapper2);
                JSONObject obj = JSONUtil.createObj();
                Integer sl = project.getSl();
//                Integer sl = project.getSl();
                int sl = 1;
                BigDecimal danjia = transition.getNowPrice();
                BigDecimal allPrice = danjia.multiply(new BigDecimal(sl));
                obj.putOpt("danJia", danjia);
@@ -1423,8 +1432,10 @@
                obj.putOpt("shouFeiXmId", project.getHisXmbm());
                obj.putOpt("shouFeiXmMc", project.getHisXmmc());
                array.add(obj);
                zongjia = zongjia.add(allPrice);
            }
            map.put("feiYongInfoList", array);
            log.info("调用His接口前 收费总价:{}", zongjia.toString());
            String post = HttpClientUtils.sendPost(apiUrl + "/api/his/" + hospbm + "/creatCostInfo", map);
            JSONObject object = JSONUtil.parseObj(post);
@@ -3754,6 +3765,20 @@
    }
    @GetMapping("/chushenyemianyijianjiekou")
    @ApiOperation(value = "初审页面弃检接口")
    @Transactional
    public AjaxResult chushenyemianyijianjiekou(@RequestParam String tjNUm, @RequestParam String proId) {
        LambdaQueryWrapper<TjOrderRemark> wq = new LambdaQueryWrapper<>();
        wq.eq(TjOrderRemark::getTjNumber, tjNUm);
        wq.eq(TjOrderRemark::getProId, proId);
        TjOrderRemark remark = remarkService.getOne(wq);
        remark.setType(1);
        remarkService.updateById(remark);
        return AjaxResult.success("操作成功!");
    }
    @PostMapping("/zongjanyemianshjianzhou")
    @ApiOperation(value = "总检获取时间轴接口")
    @Transactional
@@ -3797,7 +3822,7 @@
                        a = 5;
                    }
                    if (null != lastTime) {
                        //已出报告
                        //已打印
                        a = 6;
                    }
                    map.put("tjNUm", tjNUm);
@@ -3948,7 +3973,9 @@
    public AjaxResult updateTransitionnewPrice(@RequestBody List<UpdateTransitionnewPriceDto> dtos) {
        if (null != dtos && !dtos.isEmpty()) {
            int index = 0;
            for (UpdateTransitionnewPriceDto dto : dtos) {
                index++;
                LambdaQueryWrapper<TbTransition> wq = new LambdaQueryWrapper<>();
                wq.eq(TbTransition::getCusId, dto.getCusIdCard());
                wq.eq(TbTransition::getParentProId, dto.getParentProId());
@@ -3959,22 +3986,47 @@
                log.info("折扣为: " + new BigDecimal(dto.getDiscount()));
                if (null != list && !list.isEmpty()) {
                    BigDecimal dxzj = transitionService.getTbTransitionPriceAndOrdPrice(dto.getCusIdCard(), dto.getParentProId());
                    for (TbTransition transition : list) {
                        BigDecimal ordPrice = transition.getOrdPrice();
                        BigDecimal multiply = ordPrice.multiply((new BigDecimal(dto.getDiscount()).divide(BigDecimal.valueOf(10))));
                        log.info("后端计算的金额: " + multiply);
                        transition.setNowPrice(multiply);
                        transition.setDiscount(new BigDecimal(dto.getDiscount()));
                        transitionService.updateById(transition);
                    }
                    if (null != dto.getYhj() && dto.getYhj().compareTo(BigDecimal.ZERO) >= 0) {
                        List<TbTransition> transitionList = list.stream().filter(a ->
                                transitionService.getTbTransitionPriceAndOrdPrice(dto.getCusIdCard(), dto.getParentProId()).subtract(dto.getYhj()).compareTo(BigDecimal.ZERO) >= 0).collect(Collectors.toList());
                        if (!transitionList.isEmpty()) {
                            TbTransition tbTransition = transitionList.get(0);
                            tbTransition.setNowPrice(dxzj);
                            transitionService.updateById(tbTransition);
                    log.info("dxzj:{}",dxzj.toString());
                    if (index == dtos.size()){
                        BigDecimal yhj = dto.getYhj();
                        log.info("前端传递的价格:{}",yhj.toString());
                        BigDecimal cj = yhj.subtract(dxzj);
                        log.info("计算的差价:{}",cj.toString());
                        int index1 = 0;
                        for (TbTransition transition : list) {
                            BigDecimal ordPrice = transition.getOrdPrice();
                            BigDecimal multiply = ordPrice.multiply((new BigDecimal(dto.getDiscount()).divide(BigDecimal.valueOf(10))));
                            if (index1 == 0){
                                log.info("修改小项 {}{} 原本价格:{}",transition.getProId(),transition.getProName(),multiply.toString());
                                multiply = multiply.add(cj);
                                log.info("增加差价后:{}",multiply.toString());
                            }
                            index1++;
                            log.info("后端计算的金额: " + multiply.toString());
//                        log.info("前端传递的金额: " + dto.getYhj());
                            transition.setNowPrice(multiply);
                            transition.setDiscount(new BigDecimal(dto.getDiscount()));
                            transitionService.updateById(transition);
                        }
                    }else {
                        for (TbTransition transition : list) {
                            BigDecimal ordPrice = transition.getOrdPrice();
                            BigDecimal multiply = ordPrice.multiply((new BigDecimal(dto.getDiscount()).divide(BigDecimal.valueOf(10))));
                            log.info("后端计算的金额: " + multiply.toString());
//                        log.info("前端传递的金额: " + dto.getYhj());
                            transition.setNowPrice(multiply);
                            transition.setDiscount(new BigDecimal(dto.getDiscount()));
                            transitionService.updateById(transition);
                        }
//                        if (null != dto.getYhj() && dto.getYhj().compareTo(BigDecimal.ZERO) >= 0) {
//                            List<TbTransition> transitionList = list.stream().filter(a ->
//                                    transitionService.getTbTransitionPriceAndOrdPrice(dto.getCusIdCard(), dto.getParentProId()).subtract(dto.getYhj()).compareTo(BigDecimal.ZERO) >= 0).collect(Collectors.toList());
//                            if (!transitionList.isEmpty()) {
//                                TbTransition tbTransition = transitionList.get(0);
//                                tbTransition.setNowPrice(dxzj);
//                                transitionService.updateById(tbTransition);
//                            }
//                        }
                    }
                }
            }
@@ -4015,5 +4067,44 @@
        }
        return AjaxResult.error();
    }
    @PostMapping("/addBlTransition")
    @ApiOperation(value = "补录添加过渡表数据")
    @Transactional
    public AjaxResult addBlTransition(@RequestBody Map<String, Object> map) {
        Object packId = map.get("pacId");
        if (null == map.get("cusId")) return AjaxResult.error("请选择体检人");
        String cusId = map.get("cusId").toString();
        Object proIds1 = map.get("proIds");
        List<Long> proIds = null;
        if (null != proIds1 && !proIds1.equals("")) {
            proIds = JSON.parseArray(proIds1.toString(), Long.class);
        }
        TjCustomer tjCustomer = tjCustomerService.getTjCustomerByCusIdCard(cusId);
        String cardId = "0";
        if (null != tjCustomer) {
            cardId = tjCustomer.getCardId();
        }
        if ((null == proIds || proIds.isEmpty()) && (null == packId || packId.equals(""))) {
            transitionService.deletedTbTransitionByCusId(cusId);
        }
        //单项
        if (null != proIds && !proIds.isEmpty()) {
            //异步保存数据库表
            for (Long proId : proIds) {
                TjProject project = projectService.selectTjProjectByProId(proId);
                if (null != project) {
                    List<TbTransition> transitionList = transitionService.getTbTransitionListByCusIdAndPacIdAndProId(cusId, String.valueOf(proId));
                    if (null == transitionList || transitionList.isEmpty()) {
                        transitionService.saveRedisTransitionByProId(cusId, cardId, proId);
                    }
                }
            }
        }
        return AjaxResult.success();
    }
}