zjh
10 天以前 72f6490f736d60710b930d68dc087e6e503a9625
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java
@@ -144,8 +144,8 @@
    private ITbTransitionService transitionService;
    @Resource
    private ISysConfigService configService;
    @Value("${path.filePath}")
    private String value;
//    @Value("${path.filePath}")
//    private String value;
    @Resource
    private ITjOrderRemarkService remarkService;
    @Resource
@@ -1034,16 +1034,17 @@
            if (null != tjReservation.getPacId()) tjOrder.setPacId(tjReservation.getPacId());
            if (null != tjReservation.getTjCategory()) tjOrder.setTjCategory(tjReservation.getTjCategory());
            if (null != tjReservation.getGroupingId()) {
                TjDwGrouping dwGrouping = dwGroupingService.getById(tjReservation.getGroupingId());
                tjOrder.setGroupId(tjReservation.getGroupingId());
                tjOrder.setFirmDeptId(tjReservation.getPacId());
                tjOrder.setFirmDeptId(dwGrouping.getDwDeptId());
            }
            tjReservation.setIsExpire(1);
            tjReservationService.updateById(tjReservation);
            if (null != tjReservation.getTeamNo() && tjOrder.getTjType().equals("1")) {
                tjOrder.setTjType("1");
            } else if (tjOrder.getTjType().equals("2")) {
                tjOrder.setTjType("2");
            }
//            if (null != tjReservation.getTeamNo() && tjOrder.getTjType().equals("1")) {
//                tjOrder.setTjType("1");
//            } else if (tjOrder.getTjType().equals("2")) {
//                tjOrder.setTjType("2");
//            }
        }
        if (StringUtil.isBlank(tjOrder.getFirmId())) {
            tjOrder.setFirmId("0");
@@ -1505,6 +1506,21 @@
            List<TbTransition> list = tbTransitionService.list(wrapper);
            BigDecimal zongjia = new BigDecimal("0.0");
            // his直接单开体检费单项目总价编码
            String tjfhisxmbm = configService.selectConfigByKey("tjfhisxmbm");
            // 是否开启his直接单开体检费单项目 N使用明细开单 其他都为单项目开总价
            String lycdzjhmxj = configService.selectConfigByKey("lycdzjhmxj");
            // 是否使用his价格传递规则 Y开启
            String sfsyhisjgrule = configService.selectConfigByKey("sfsyhisjgrule");
            // his价格传递规则保留得位数 默认2位
            String sfsyhisjgrulebaoliuweishu = configService.selectConfigByKey("sfsyhisjgrulebaoliuweishu");
            // his价格传递规则 1四舍五入 2直接舍去
            String sfsyhisjgrulesconfig = configService.selectConfigByKey("sfsyhisjgrulesconfig");
            // 传递项目是否使用his科室
            String isUseHisKs = configService.selectConfigByKey("isCreateMenZhenFyUseHisKs");
            String createMenZhenFyZJUseHisKs = configService.selectConfigByKey("createMenZhenFyZJUseHisKs");
            for (TbTransition transition : list) {
                LambdaQueryWrapper<TjProject> wrapper1 = new LambdaQueryWrapper<>();
                wrapper1.eq(TjProject::getProId, transition.getProId());
@@ -1519,17 +1535,63 @@
                int sl = 1;
                BigDecimal danjia = transition.getNowPrice();
                BigDecimal allPrice = danjia.multiply(new BigDecimal(sl));
                if (StrUtil.isNotBlank(sfsyhisjgrule) && sfsyhisjgrule.equalsIgnoreCase("Y")){
                    int baoliuweishu = 2;
                    if (StrUtil.isNotBlank(sfsyhisjgrulebaoliuweishu)){
                        try {
                            baoliuweishu = Integer.parseInt(sfsyhisjgrulebaoliuweishu);
                        } catch (NumberFormatException e) {
                            log.error("his价格传递规则保留位数转换异常 配置值->{}\n{}{}",sfsyhisjgrulebaoliuweishu,e,e.getMessage());
                            return AjaxResult.error();
                        }
                    }
                    if (StrUtil.isNotBlank(sfsyhisjgrulesconfig) && !sfsyhisjgrulesconfig.equalsIgnoreCase("1")){
                        // 其他自定义的规则计算方法
                    }else {
                        // 四舍五入
                        danjia = danjia.setScale(baoliuweishu, RoundingMode.HALF_UP);
                        allPrice = danjia.multiply(new BigDecimal(sl)).setScale(baoliuweishu, RoundingMode.HALF_UP);
                    }
                }
                obj.putOpt("danJia", danjia);
                obj.putOpt("jieSuanJe", allPrice);
                obj.putOpt("shuliang", sl);
                obj.putOpt("zhiXingKs", dept.getDeptId());
                obj.putOpt("zhiXingKsMc", dept.getDeptName());
                if (isUseHisKs.equalsIgnoreCase("Y")){
                    obj.putOpt("zhiXingKs", dept.getHisksid());
                    obj.putOpt("zhiXingKsMc", dept.getHisksmc());
                }else {
                    obj.putOpt("zhiXingKs", dept.getDeptId());
                    obj.putOpt("zhiXingKsMc", dept.getDeptName());
                }
                obj.putOpt("shouFeiXmId", project.getHisXmbm());
                obj.putOpt("shouFeiXmMc", project.getHisXmmc());
                array.add(obj);
                zongjia = zongjia.add(allPrice);
            }
            map.put("feiYongInfoList", array);
            if(StringUtil.isNotBlank(lycdzjhmxj) && lycdzjhmxj.equalsIgnoreCase("N")){
                map.put("feiYongInfoList", array);
            }else {
                zongjia = tjFlowingWater.getPaidIn();
                JSONArray zjarray = JSONUtil.createArray();
                JSONObject obj = JSONUtil.createObj();
                int sl = 1;
                obj.putOpt("danJia", zongjia);
                obj.putOpt("jieSuanJe", zongjia);
                obj.putOpt("shuliang", sl);
                if (isUseHisKs.equalsIgnoreCase("Y")){
                    if (StrUtil.isBlank(createMenZhenFyZJUseHisKs)) return AjaxResult.error();
                    obj.putOpt("zhiXingKs", createMenZhenFyZJUseHisKs);
                }else {
                    obj.putOpt("zhiXingKs", "100");
                }
                obj.putOpt("zhiXingKsMc","体检中心");
                obj.putOpt("shouFeiXmId", tjfhisxmbm);
                obj.putOpt("shouFeiXmMc", "体检费");
                zjarray.add(obj);
                map.put("feiYongInfoList", zjarray);
            }
            log.info("调用His接口前 收费总价:{}", zongjia.toString());
            String post = HttpClientUtils.sendPost(apiUrl + "/api/his/" + hospbm + "/creatCostInfo", map);
@@ -1962,7 +2024,7 @@
            //获取拼接前缀
            String makeLisTmhPrefix = configService.selectConfigByKey("make_lis_tmh_prefix");
//            String tjNumber = (sysUser.getUserName() + idUtils.getTjNumber());
            String tjNumber = idUtils.getTjNumber();
            String tjNumber = idUtils.getNewTjNumberRedisLockAndMysql();
            if (StringUtil.isNotBlank(makeLisTmhPrefix)) tjNumber = makeLisTmhPrefix + tjNumber;
@@ -2206,9 +2268,11 @@
                    transitionService.saveRedisTransitionByPacId(cusId, cardId, pacId);
                    //补差价
                    List<Map<String, Object>> cjMaps = groupingProService.huoquxiangmuchajia(pacId.toString(), cusId);
                    List<Map<String, Object>> cjMaps = transitionService.addTbhuoquxiangmuchajia(pacId.toString(), cusId);
                    if (null != cjMaps && !cjMaps.isEmpty()) {
                        log.info("该套餐"+pacId+"中有差价:"+cjMaps.size()+"个");
                        for (Map<String, Object> cjMap : cjMaps) {
                            log.info("添加临时表套餐数据时所选的差价为:"+ cjMap.get("cj").toString());
                            transitionService.buxiangmuchajia(cusId, pacId.toString(), cjMap.get("xmid").toString(), new BigDecimal(cjMap.get("cj").toString()));
                        }
                    }
@@ -3078,7 +3142,7 @@
            TjReport tjReport = new TjReport();
            tjReport.setTjNumber(String.valueOf(tjNumber));
            tjReport.setPath(urlValue + outputFileName1);
            String outputPath1 = value + File.separator;
//            String outputPath1 = value + File.separator;
//            String pdfBinary = getPDFBinary(outputPath1 + outputFileName1);
//            tjReport.setReport(pdfBinary);
            tjReport.setType("体检报告");
@@ -3211,16 +3275,17 @@
        TjOrder order = tjOrderService.getOrderByTjNum(tjNum);
        if (null != order) {
//            String payByTjNum = tjOrderService.isPayByTjNum(String.valueOf(order.getOrderId()));
//            if (null != payByTjNum) {
//                return AjaxResult.error("该用户已收费不可撤销签到!");
//            }
            if (null != order.getFinishTime()) return AjaxResult.error("该人员已签离,不可撤销!!!");
            if (null != order.getPrintLastTime()) return AjaxResult.error("该人员报告已打印,不可撤销!!!");
            Boolean useLisAndPacsRegister = lisApiMethod.isUseLisAndPacsRegister(order);
            String username = SecurityUtils.getUsername();
            LambdaQueryWrapper<TjCustomer> wrapper = new LambdaQueryWrapper<>();
            wrapper.eq(TjCustomer::getCusId, order.getUserId());
            TjCustomer tjCustomer = tjCustomerService.getOne(wrapper);
            String s = configService.selectConfigByKey("is_request_common_his_api");
//            if (null != s && s.equals("Y") && "2".equals(order.getTjType())) {
            if (null != s && s.equals("Y") && !useLisAndPacsRegister) {
                String apiUrl = configService.selectConfigByKey("common_api_url");
                String hospbm = configService.selectConfigByKey("common_api_service_hospbm");
@@ -3231,37 +3296,35 @@
                wrapper1.eq(TjFlowingWater::getOrderId, order.getOrderId());
                wrapper1.orderByDesc(TjFlowingWater::getJxbz);
                List<TjFlowingWater> list = tjFlowingWaterService.list(wrapper1);
                LambdaQueryWrapper<TjCustomer> wrapper = new LambdaQueryWrapper<>();
                wrapper.eq(TjCustomer::getCusId, order.getUserId());
                TjCustomer tjCustomer = tjCustomerService.getOne(wrapper);
                for (TjFlowingWater water : list) {
                    if (water.getPayStasus() == 0L) {
                    if (water.getPayStasus() == 0L || water.getPayStasus() == 2L) {
                        weizhifu.add(water);
                    } else {
                        yizhifu.add(water);
                    }
                }
                log.info("工号为: "+username+" 的用户即将撤销 体检号为:"+tjNum+" 的体检记录;" );
                AjaxResult error = zuofeiWeiZhifu(weizhifu, tjCustomer, apiUrl, hospbm, order, true, tjNum);
                if (error != null && !error.get("code").toString().equals("200")) return error;
                if (error != null && !error.get("code").toString().equals("200")){
                    log.info("工号为: "+username+" 的用户正在撤销 体检号为:"+tjNum+" 并且未支付的体检记录;   撤销失败!!!!" );
                    return error;
                }else {
                    log.info("工号为: "+username+" 的用户正在撤销 体检号为:"+tjNum+" 并且未支付的体检记录;" );
                }
                AjaxResult error1 = zuofeiYiZhifu(yizhifu, tjCustomer, order, apiUrl, hospbm, false, tjNum);
                if (error1 != null && !error.get("code").toString().equals("200")) return error1;
            } else {
                tjOrderService.deleteTjOrderByOrderId(order.getOrderId());
                tjOrderDetailService.deleteTjOrderDetailByOrderDetailId(String.valueOf(order.getOrderId()));
                remarkService.deletedOrderRemarkByTjNum(tjNum);
                tjFlowingWaterService.deleteTjFlowingWaterByOrderId(String.valueOf(order.getOrderId()));
                transitionService.deletedTbTransitionByTjNum(tjNum);
                ycxmService.delOrderYcXmJyByTjh(tjNum);
                if (error1 != null && !error.get("code").toString().equals("200"))
                {
                    log.info("工号为: "+username+" 的用户正在撤销 体检号为:"+tjNum+" 并且已支付的体检记录;   撤销失败!!!!" );
                    return error1;
                }else {
                    log.info("工号为: "+username+" 的用户正在撤销 体检号为:"+tjNum+" 并且已支付的体检记录;" );
                }
                TjCustomer customer = tjCustomerService.getById(order.getUserId());
                customer.setCardId("0");
                tjCustomerService.updateById(customer);
                xdPictureService.deleteTjXdPictureBytjNum(tjNum);
                tjSamplingMapper.deleteByTjNumAndCusId(tjNum, order.getUserId());
            }
            String configByKey = configService.selectConfigByKey("sfkqdyhis");
            if (configByKey.equals("Y")) {
@@ -3291,8 +3354,21 @@
                }
            }
            tjCustomer.setCardId("0");
            tjCustomerService.updateById(tjCustomer);
                /*                tjOrderService.deleteTjOrderByOrderId(order.getOrderId());
                tjOrderDetailService.deleteTjOrderDetailByOrderDetailId(String.valueOf(order.getOrderId()));
                remarkService.deletedOrderRemarkByTjNum(tjNum);
                tjFlowingWaterService.deleteTjFlowingWaterByOrderId(String.valueOf(order.getOrderId()));
                transitionService.deletedTbTransitionByTjNum(tjNum);
                ycxmService.delOrderYcXmJyByTjh(tjNum);
                xdPictureService.deleteTjXdPictureBytjNum(tjNum);
                tjSamplingMapper.deleteByTjNumAndCusId(tjNum, order.getUserId());*/
            tjOrderService.removeById(order.getOrderId());
            return AjaxResult.success("撤销成功");
        }
        return AjaxResult.success("签到记录不存在!");
        return AjaxResult.error("签到记录不存在!");
    }
@@ -3468,11 +3544,9 @@
    public AjaxResult revokeTjOrderByTjh(@RequestParam @ApiParam(value = "体检号") String tjNum) {
        TjOrder order = tjOrderService.getOrderByTjNum(tjNum);
        String username = SecurityUtils.getUsername();
        log.info("工号为: "+username+" 的用户即将强制撤销 体检号为:"+tjNum+" 的体检记录;" );
        if (null != order) {
//            String payByTjNum = tjOrderService.isPayByTjNum(String.valueOf(order.getOrderId()));
//            if (null != payByTjNum) {
//                return AjaxResult.error("该用户已收费不可撤销签到!");
//            }
            //这里删除的是这个人所有项目包括补录项目
            tjOrderService.deleteTjOrderByOrderId(order.getOrderId());
            tjOrderDetailService.deleteTjOrderDetailByOrderDetailId(String.valueOf(order.getOrderId()));
@@ -3492,6 +3566,7 @@
        TjOrder order = tjOrderService.getOrderByTjNum(tjNum);
        if (null != order) {
            LambdaQueryWrapper<TjProBl> wq = new LambdaQueryWrapper<>();
            wq.eq(TjProBl::getTjh, tjNum);
            List<TjProBl> blList = blService.list(wq);
@@ -3530,7 +3605,12 @@
        }
        TjOrder order = tjOrderService.getOrderByTjNum(dto.getTjh());
        String username = SecurityUtils.getUsername();
        if (null != order) {
            if (null != order.getPrintLastTime()) return AjaxResult.error("该人员报告已打印,不可撤销!!!");
            log.info("工号为: "+username+" 的用户即将撤销 体检号为:"+dto.getTjh()+"补录单号为: " + dto.getBldhs()+ " 的 补录体检记录;" );
            String configByKey = configService.selectConfigByKey("sfkqdyhis");
            if (null != configByKey && configByKey.equals("Y")) {
                log.info("dto的数据是" + JSONUtil.toJsonStr(dto));
@@ -3580,7 +3660,7 @@
                    LambdaQueryWrapper<TjFlowingWater> wrapper = new LambdaQueryWrapper<>();
                    wrapper.eq(TjFlowingWater::getJxbz, bldh);
                    TjFlowingWater water = tjFlowingWaterService.getOne(wrapper);
                    if (water.getPayStasus() == 0L) {
                    if (water.getPayStasus() == 0L || water.getPayStasus() == 2L) {
                        weizhifu.add(water);
                    } else {
                        yizhifu.add(water);
@@ -3592,22 +3672,34 @@
                wrapper.eq(TjCustomer::getCusId, order.getUserId());
                TjCustomer tjCustomer = tjCustomerService.getOne(wrapper);
                AjaxResult error = zuofeiWeiZhifu(weizhifu, tjCustomer, apiUrl, hospbm, order, true, dto.getTjh());
                if (error != null && !error.get("code").toString().equals("200")) return error;
                if (error != null && !error.get("code").toString().equals("200"))
                {
                    log.info("体检号为:"+dto.getTjh()+"补录单号为: " + dto.getBldhs()+ " 并且未支付的补录体检记录;  撤销失败" );
                    return error;
                }else {
                    log.info("工号为: "+username+" 的用户正在撤销 体检号为:"+dto.getTjh()+"补录单号为: " + dto.getBldhs()+ " 并且未支付的补录体检记录;" );
                }
                AjaxResult error1 = zuofeiYiZhifu(yizhifu, tjCustomer, order, apiUrl, hospbm, false, dto.getTjh());
                if (error1 != null && !error.get("code").toString().equals("200")) return error1;
                return AjaxResult.success();
            } else {
                if (error1 != null && !error.get("code").toString().equals("200"))
                {
                    log.info("体检号为:"+dto.getTjh()+"补录单号为: " + dto.getBldhs()+ " 并且已支付的补录体检记录;  撤销失败" );
                    return error1;
                }else {
                    log.info("工号为: "+username+" 的用户正在撤销 体检号为:"+dto.getTjh()+"补录单号为: " + dto.getBldhs()+ " 并且已支付的补录体检记录;" );
                }
            }
                try {
                    extracted(dto, order);
                } catch (Exception e) {
                    log.info("撤销失败,删除表失败");
                    return AjaxResult.error("撤销失败,删除表失败!");
                }
                return AjaxResult.success();
            }
                return AjaxResult.success("撤销成功!");
        }
        return AjaxResult.error();
        return AjaxResult.error("未查询到体检记录!");
    }
    private AjaxResult zuofeiYiZhifu(ArrayList<TjFlowingWater> yizhifu, TjCustomer tjCustomer, TjOrder order, String apiUrl, String hospbm, Boolean isDelete, String tjNum) {
@@ -3680,7 +3772,7 @@
                        String tfid = jsonObject.getJSONObject("data").getStr("feiYongId");
                        water.setHisTfWaterId(tfid);
                        tjFlowingWaterService.updateById(water);
                        if (isDelete) {
           /*             if (isDelete) {
                            for (TjFlowingWater water1 : yizhifu) {
                                String bldh1 = water1.getJxbz();
                                remarkService.deleteTjOrderDetailByjxbz(bldh1);
@@ -3690,8 +3782,8 @@
                                blService.remove(new LambdaQueryWrapper<TjProBl>().eq(TjProBl::getTjh, tjNum).eq(TjProBl::getBldh, bldh1));
                                tjSamplingMapper.deleteByTjNumAndCusIdAndJxbzo(tjNum, order.getUserId(), bldh1);
                            }
                        }
                    } else return AjaxResult.error();
                        }*/
                    } else return AjaxResult.error("撤销失败");
                }
            }
        }
@@ -3708,7 +3800,7 @@
            String post = HttpClientUtils.sendPost(apiUrl + "/api/his/" + hospbm + "/revokeCost", chexiaoMap);
            if (JSONUtil.parseObj(post).getStr("code").equals("200")) {
                if (isDelete) {
                /*if (isDelete) {
                    for (TjFlowingWater water : weizhifu) {
                        String bldh = water.getJxbz();
                        if (StrUtil.isNotBlank(bldh)) {
@@ -3720,31 +3812,39 @@
                            tjSamplingMapper.deleteByTjNumAndCusIdAndJxbzo(tjNum, order.getUserId(), bldh);
                        } else {
                            //这里删除的是这个人所有项目包括补录项目
                            tjOrderService.deleteTjOrderByOrderId(order.getOrderId());
                *//*            tjOrderService.deleteTjOrderByOrderId(order.getOrderId());
                            tjOrderDetailService.deleteTjOrderDetailByOrderDetailId(String.valueOf(order.getOrderId()));
                            remarkService.deletedOrderRemarkByTjNum(tjNum);
                            tjFlowingWaterService.deleteTjFlowingWaterByOrderId(String.valueOf(order.getOrderId()));
                            transitionService.deletedTbTransitionByTjNum(tjNum);
                            tjSamplingMapper.deleteByTjNumAndCusId(order.getTjNumber(), order.getUserId());
                            tjSamplingMapper.deleteByTjNumAndCusId(order.getTjNumber(), order.getUserId());*//*
//                            TjCustomer customer = tjCustomerService.getById(order.getUserId());
//                            customer.setCardId("0");
//                            tjCustomerService.updateById(customer);
//                            tjOrderService.removeById(order.getOrderId());
                        }
                    }
                }
            } else return AjaxResult.error();
                }*/
            } else return AjaxResult.error("撤销失败");
        }
        return null;
    }
    //    @Transactional(propagation =Propagation.REQUIRES_NEW)
    public void extracted(TjProBlDto dto, TjOrder order) {
        for (String bldh : dto.getBldhs()) {
            remarkService.deleteTjOrderDetailByjxbz(bldh);
            tjOrderDetailService.deleteTjOrderDetailByjxbz(bldh);
            tjFlowingWaterService.deleteTjOrderDetailByjxbz(bldh);
            transitionService.deleteTjOrderDetailByjxbz(bldh);
            blService.remove(new LambdaQueryWrapper<TjProBl>().eq(TjProBl::getTjh, dto.getTjh()).eq(TjProBl::getBldh, bldh));
        try {
            for (String bldh : dto.getBldhs()) {
                remarkService.deleteTjOrderDetailByjxbz(bldh);
                tjOrderDetailService.deleteTjOrderDetailByjxbz(bldh);
                tjFlowingWaterService.deleteTjOrderDetailByjxbz(bldh);
                transitionService.deleteTjOrderDetailByjxbz(bldh);
                blService.remove(new LambdaQueryWrapper<TjProBl>().eq(TjProBl::getTjh, dto.getTjh()).eq(TjProBl::getBldh, bldh));
            }
            tjSamplingMapper.deleteByTjNumAndCusIdAndJxbz(dto.getTjh(), order.getUserId(), dto.getBldhs());
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        tjSamplingMapper.deleteByTjNumAndCusIdAndJxbz(dto.getTjh(), order.getUserId(), dto.getBldhs());
    }
@@ -3951,16 +4051,6 @@
    @GetMapping(value = "newgetTransitionList")
    @ApiOperation(value = "最新查询过渡表数据")
    public AjaxResult newgetTransitionList(@RequestParam @ApiParam(value = "客户id") String cusId) {
//        String pacId = transitionService.getTbTransitionPacId(cusId);
//        if(StringUtil.isNotBlank(pacId)){
//            //补差价
//            List<Map<String,Object>> cjMaps = groupingProService.huoquxiangmuchajia(pacId, cusId);
//            if(null !=cjMaps && !cjMaps.isEmpty()){
//                for (Map<String, Object> cjMap : cjMaps) {
//                    transitionService.buxiangmuchajia(cusId,pacId,cjMap.get("xmid").toString(),new BigDecimal(cjMap.get("cj").toString()));
//                }
//            }
//        }
        List<TbTransition> list = transitionService.newgetTransitionList(cusId);
        return AjaxResult.success(list);
    }