zjh
2025-01-06 d5cd702a6985a208dae4a2e532c984252fbca4d4
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java
@@ -498,13 +498,9 @@
                            order.setIdType(tjCustomer.getIdType());
                            order.setAgeUnit(tjCustomer.getAgeUnit());
                            order.setTjCount(String.valueOf(tjCustomer.getCusNumber()));
                            if (null != tjCustomer.getCompName()) {
                                order.setDictCompName(tjCustomer.getCompName());
                            } else {
                                String firmId = order.getFirmId();
                                if (firmId != null && null != iDictCompService.getById(String.valueOf(order.getFirmId()))) {
                                    order.setDictCompName(iDictCompService.getById(String.valueOf(order.getFirmId())).getCnName());
                                }
                            String firmName = order.getFirmName();
                            if (StringUtil.isNotBlank(firmName)) {
                                order.setDictCompName(firmName);
                            }
                            if (null != order.getPacId()) {
                                if (null != tjPackageService.getById(order.getPacId())) {
@@ -1039,16 +1035,9 @@
                tjOrder.setTjType("2");
            }
        }
        if (null != tjCustomer.getCompName()) {
            tjOrder.setFirmName(tjCustomer.getCompName());
        }
        if (null != tjCustomer.getDictCompId()) {
            tjOrder.setFirmId(String.valueOf(tjCustomer.getDictCompId()));
        } else {
        if(StringUtil.isBlank(tjOrder.getFirmId())){
            tjOrder.setFirmId("0");
        }
        if (null != tjOrder.getPhoto()) {
            File file = new File(tjOrder.getPhoto());
@@ -1096,11 +1085,21 @@
    @Transactional(propagation = Propagation.REQUIRES_NEW, isolation = Isolation.READ_COMMITTED)
    public AjaxResult processOrderWithTransaction(TjOrder tjOrder, TjCustomer tjCustomer, TjReservation tjReservation, TjFlowingWater tjFlowingWater, MallOrder mallOrder, SysUser sysUser) {
        //生成体检号
        String tjNumber = (SecurityUtils.getUsername() + new SimpleDateFormat("yyMMddHHmmss").format(new Date()));
        tjOrder.setTjNumber(tjNumber);
        BigDecimal discount = BigDecimal.valueOf(Double.parseDouble(tjOrder.getTjFlowingWater().getDiscount()));
        //获取拼接前缀
        String makeLisTmhPrefix = configService.selectConfigByKey("make_lis_tmh_prefix");
        //生成体检号
//        String tjNumber = (SecurityUtils.getUsername() + new SimpleDateFormat("yyMMddHHmmss").format(new Date()));
//        if(StringUtil.isNotBlank(makeLisTmhPrefix)) tjNumber=makeLisTmhPrefix+tjNumber;
        String tjNumber = (SecurityUtils.getUsername()+IdUtils.getTjNumber());
        if(StringUtil.isNotBlank(makeLisTmhPrefix)) tjNumber=makeLisTmhPrefix+tjNumber;
        tjOrder.setTjNumber(tjNumber);
        BigDecimal discount = BigDecimal.valueOf(Double.parseDouble(tjOrder.getTjFlowingWater().getDiscount()));
        tjOrder.setDiscount(discount.toString());
        if (tjOrderService.save(tjOrder)) {
            //保存收货地址
@@ -1353,75 +1352,10 @@
                return AjaxResult.success(tjNumber);
            }else {
                newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
                AjaxResult error = isRequestCommonHisApi(tjOrder, tjCustomer, tjFlowingWater);
                if (error != null) return error;
//                List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
//                addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
            }
            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", tjCustomer.getPationId());
                map.put("cardId", tjCustomer.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, tjOrder.getTjNumber());
                wrapper.eq(TbTransition::getCusId, tjCustomer.getCusIdcard());
                wrapper.eq(TbTransition::getCardId, tjCustomer.getCardId());
                wrapper.isNotNull(TbTransition::getOrdPrice);
                wrapper.gt(TbTransition::getOrdPrice, 0);
                List<TbTransition> list = tbTransitionService.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();
                    Integer sl = project.getSl();
                    BigDecimal danjia = transition.getOrdPrice();
                    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.isEmpty()) {
                        List<TjFlowingWaterHis> his = mxList.toList(TjFlowingWaterHis.class);
                        tjFlowingWaterHisService.saveBatch(his);
                    }
                    tjFlowingWaterService.updateById(tjFlowingWater);
                } else {
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    return AjaxResult.error();
                }
            }
            return AjaxResult.success(tjNumber);
@@ -1430,6 +1364,76 @@
        }
        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        return AjaxResult.error();
    }
    private AjaxResult isRequestCommonHisApi(TjOrder tjOrder, TjCustomer tjCustomer, TjFlowingWater tjFlowingWater) {
        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", tjCustomer.getPationId());
            map.put("cardId", tjCustomer.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, tjOrder.getTjNumber());
            wrapper.eq(TbTransition::getCusId, tjCustomer.getCusIdcard());
            wrapper.eq(TbTransition::getCardId, tjCustomer.getCardId());
            wrapper.isNotNull(TbTransition::getOrdPrice);
            wrapper.gt(TbTransition::getOrdPrice, 0);
            List<TbTransition> list = tbTransitionService.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();
                Integer sl = project.getSl();
                BigDecimal danjia = transition.getOrdPrice();
                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.isEmpty()) {
                    List<TjFlowingWaterHis> his = mxList.toList(TjFlowingWaterHis.class);
                    tjFlowingWaterHisService.saveBatch(his);
                }
                tjFlowingWaterService.updateById(tjFlowingWater);
            } else {
                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                return AjaxResult.error();
            }
        }
        return null;
    }
    public void addCaiYangDengJi(List<TjOrderDetail> detailList, boolean detailList1, TjOrder order, SysUser sysUser, String jxbz) {
@@ -3040,9 +3044,11 @@
//            }
            if (null != order.getFinishTime()) return AjaxResult.error("该人员已签离,不可撤销!!!");
            Boolean useLisAndPacsRegister = lisApiMethod.isUseLisAndPacsRegister(order);
            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")) {
            if (null != s && s.equals("Y") && !useLisAndPacsRegister) {
                String apiUrl = configService.selectConfigByKey("common_api_url");
                String hospbm = configService.selectConfigByKey("common_api_service_hospbm");
@@ -3391,8 +3397,9 @@
                }
            }
            String s = configService.selectConfigByKey("is_request_common_his_api");
            Boolean useLisAndPacsRegister = lisApiMethod.isUseLisAndPacsRegister(order);
//            if (null != s && s.equals("Y") && "2".equals(order.getTjType())) {
            if (null != s && s.equals("Y")) {
            if (null != s && s.equals("Y") && !useLisAndPacsRegister) {
                ArrayList<TjFlowingWater> weizhifu = new ArrayList<>();
                ArrayList<TjFlowingWater> yizhifu = new ArrayList<>();
                for (String bldh : dto.getBldhs()) {
@@ -3492,24 +3499,26 @@
                log.info("退费申请 入参 -> {}", JSONUtil.toJsonStr(map));
                String post = HttpClientUtils.sendPost(apiUrl + "/api/his/" + hospbm + "/creatCostInfo", map);
                log.info("退费申请 返回 -> {}", JSONUtil.toJsonStr(post));
                JSONObject jsonObject = JSONUtil.parseObj(post);
                if (jsonObject.getStr("code").equals("200")) {
                    // hisTfWaterId
                    String tfid = jsonObject.getJSONObject("data").getStr("feiYongId");
                    water.setHisTfWaterId(tfid);
                    tjFlowingWaterService.updateById(water);
                    if (isDelete) {
                        for (TjFlowingWater water1 : yizhifu) {
                            String bldh1 = water1.getJxbz();
                            remarkService.deleteTjOrderDetailByjxbz(bldh1);
                            tjOrderDetailService.deleteTjOrderDetailByjxbz(bldh1);
                            tjFlowingWaterService.deleteTjOrderDetailByjxbz(bldh1);
                            transitionService.deleteTjOrderDetailByjxbz(bldh1);
                            blService.remove(new LambdaQueryWrapper<TjProBl>().eq(TjProBl::getTjh, tjNum).eq(TjProBl::getBldh, bldh1));
                            tjSamplingMapper.deleteByTjNumAndCusIdAndJxbzo(tjNum, order.getUserId(), bldh1);
                if(null !=post){
                    JSONObject jsonObject = JSONUtil.parseObj(post);
                    if (jsonObject.getStr("code").equals("200")) {
                        // hisTfWaterId
                        String tfid = jsonObject.getJSONObject("data").getStr("feiYongId");
                        water.setHisTfWaterId(tfid);
                        tjFlowingWaterService.updateById(water);
                        if (isDelete) {
                            for (TjFlowingWater water1 : yizhifu) {
                                String bldh1 = water1.getJxbz();
                                remarkService.deleteTjOrderDetailByjxbz(bldh1);
                                tjOrderDetailService.deleteTjOrderDetailByjxbz(bldh1);
                                tjFlowingWaterService.deleteTjOrderDetailByjxbz(bldh1);
                                transitionService.deleteTjOrderDetailByjxbz(bldh1);
                                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();
                }
            }
        }
        return null;