zjh
2024-12-25 79f9fbd9f999e26af3f0bca534d825eb687e092c
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java
@@ -78,6 +78,7 @@
import com.ltkj.web.controller.lis.LisApiMethod;
import com.ltkj.web.controller.pacs.PacsApiMethodService;
import com.ltkj.web.controller.service.TjSysAsyncServiceImpl;
import com.ltkj.web.wxUtils.HttpClientUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@@ -228,6 +229,8 @@
    private LisJyflhbService lisJyflhbService;
    @Autowired
    private ISysDictDataService sysDictDataService;
    @Autowired
    private TjFlowingWaterHisService tjFlowingWaterHisService;
    //将方法返回值解析成json格式
    public JSONObject getJSONObject(String builder) {
@@ -1229,6 +1232,74 @@
                newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
                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.size() > 0) {
                            List<TjFlowingWaterHis> his = mxList.toList(TjFlowingWaterHis.class);
                            tjFlowingWaterHisService.saveBatch(his);
                        }
                        tjFlowingWaterService.updateById(tjFlowingWater);
                    }else {
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                        return AjaxResult.error();
                    }
                }
            }
            // 查询 对接Lis、Pacs申请如果类型包含在配置内则使用对接lis、pacs
            if (lisApiMethod.isUseLisAndPacsRegister(tjOrder)) {
@@ -2639,8 +2710,8 @@
    @Transactional
    @RepeatSubmit
    public AjaxResult heXiaoByIds(@RequestBody List<String> orderIds) {
        Date date = new Date();
        if(null !=orderIds && !orderIds.isEmpty()){
        Date date = new Date();
        for (String orderId : orderIds) {
            TjOrder byId = tjOrderService.getById(orderId);
            if (null != byId) {
@@ -2845,17 +2916,49 @@
//                return AjaxResult.error("该用户已收费不可撤销签到!");
//            }
            if (null != order.getFinishTime()) return AjaxResult.error("该人员已签离,不可撤销!!!");
            tjOrderService.deleteTjOrderByOrderId(order.getOrderId());
            tjOrderDetailService.deleteTjOrderDetailByOrderDetailId(String.valueOf(order.getOrderId()));
            remarkService.deletedOrderRemarkByTjNum(tjNum);
            tjFlowingWaterService.deleteTjFlowingWaterByOrderId(String.valueOf(order.getOrderId()));
            transitionService.deletedTbTransitionByTjNum(tjNum);
            TjCustomer customer = tjCustomerService.getById(order.getUserId());
            customer.setCardId("0");
            tjCustomerService.updateById(customer);
            String s = configService.selectConfigByKey("is_request_common_his_api");
            if (null != s && s.equals("Y") && "2".equals(order.getTjType())){
                String apiUrl = configService.selectConfigByKey("common_api_url");
                String hospbm = configService.selectConfigByKey("common_api_service_hospbm");
                ArrayList<TjFlowingWater> weizhifu = new ArrayList<>();
                ArrayList<TjFlowingWater> yizhifu = new ArrayList<>();
                LambdaQueryWrapper<TjFlowingWater> wrapper1 = new LambdaQueryWrapper<>();
                wrapper1.eq(TjFlowingWater::getOrderId, order.getOrderId());
                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){
                        weizhifu.add(water);
                    }else {
                        yizhifu.add(water);
                    }
                }
                AjaxResult error = zuofeiWeiZhifu(weizhifu, tjCustomer, apiUrl, hospbm, order,true,tjNum);
                if (error != null && !error.get("code").toString().equals("200")) return error;
                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);
                TjCustomer customer = tjCustomerService.getById(order.getUserId());
                customer.setCardId("0");
                tjCustomerService.updateById(customer);
                tjSamplingMapper.deleteByTjNumAndCusId(tjNum, order.getUserId());
            }
            String configByKey = configService.selectConfigByKey("sfkqdyhis");
            tjSamplingMapper.deleteByTjNumAndCusId(tjNum, order.getUserId());
            if (configByKey.equals("Y")) {
                HashMap<String, Object> hisRequestParams = new HashMap<>();
@@ -3160,17 +3263,156 @@
                    return AjaxResult.error("撤销失败,调用作废出现失败");
                }
            }
            try {
                extracted(dto, order);
            } catch (Exception e) {
                log.info("撤销失败,删除表失败");
                return AjaxResult.error("撤销失败,删除表失败!");
            String s = configService.selectConfigByKey("is_request_common_his_api");
            if (null != s && s.equals("Y") && "2".equals(order.getTjType())) {
                ArrayList<TjFlowingWater> weizhifu = new ArrayList<>();
                ArrayList<TjFlowingWater> yizhifu = new ArrayList<>();
                for (String bldh : dto.getBldhs()) {
                    LambdaQueryWrapper<TjFlowingWater> wrapper = new LambdaQueryWrapper<>();
                    wrapper.eq(TjFlowingWater::getJxbz,bldh);
                    TjFlowingWater water = tjFlowingWaterService.getOne(wrapper);
                    if (water.getPayStasus() == 0L){
                        weizhifu.add(water);
                    }else {
                        yizhifu.add(water);
                    }
                }
                String apiUrl = configService.selectConfigByKey("common_api_url");
                String hospbm = configService.selectConfigByKey("common_api_service_hospbm");
                LambdaQueryWrapper<TjCustomer> wrapper = new LambdaQueryWrapper<>();
                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;
                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 {
                try {
                    extracted(dto, order);
                } catch (Exception e) {
                    log.info("撤销失败,删除表失败");
                    return AjaxResult.error("撤销失败,删除表失败!");
                }
                return AjaxResult.success();
            }
            return AjaxResult.success();
        }
        return AjaxResult.error();
    }
    private AjaxResult zuofeiYiZhifu(ArrayList<TjFlowingWater> yizhifu, TjCustomer tjCustomer, TjOrder order, String apiUrl, String hospbm,Boolean isDelete,String tjNum) {
        if (!yizhifu.isEmpty()){
            for (TjFlowingWater water : yizhifu) {
                HashMap<String, Object> map = new HashMap<>();
                map.put("pationId", tjCustomer.getPationId());
                map.put("cardId", tjCustomer.getHisJzkh());
                map.put("tjNum", water.getTjSerialNumber());
                map.put("kaiDanKs","7805");
                // 收费标志 1待售费 2待退费
                map.put("shouTuiStatus","2");
                JSONArray array = JSONUtil.createArray();
                String bldh = water.getJxbz();
                List<TbTransition> list;
                if (bldh != null){
                    LambdaQueryWrapper<TbTransition> wrapper1 = new LambdaQueryWrapper<>();
                    wrapper1.eq(TbTransition::getJxbz,bldh);
                    wrapper1.gt(TbTransition::getOrdPrice,0);
                    list = tbTransitionService.list(wrapper1);
                }else {
                    LambdaQueryWrapper<TbTransition> wrapper1 = new LambdaQueryWrapper<>();
                    wrapper1.isNull(TbTransition::getJxbz);
                    wrapper1.eq(TbTransition::getTjNum,tjNum);
                    wrapper1.gt(TbTransition::getOrdPrice,0);
                    list = tbTransitionService.list(wrapper1);
                }
                for (TbTransition transition : list) {
                    LambdaQueryWrapper<TjProject> queryWrapper = new LambdaQueryWrapper<>();
                    queryWrapper.eq(TjProject::getProId,transition.getProId());
                    TjProject project = projectService.getOne(queryWrapper);
                    LambdaQueryWrapper<TjFlowingWaterHis> wrapper2 = new LambdaQueryWrapper<>();
                    wrapper2.eq(TjFlowingWaterHis::getParentId,water.getHisWaterId());
                    wrapper2.eq(TjFlowingWaterHis::getXmId,project.getHisXmbm());
                    List<TjFlowingWaterHis> list1 = tjFlowingWaterHisService.list(wrapper2);
                    for (TjFlowingWaterHis waterHis : list1) {
                        LambdaQueryWrapper<SysDept> wrapper = new LambdaQueryWrapper<>();
                        wrapper.eq(SysDept::getDeptId,project.getDeptId());
                        SysDept dept = sysDeptService.getOne(wrapper);
                        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.negate());
                        obj.putOpt("shuliang",Math.negateExact(sl));
                        obj.putOpt("feiYongMxId",waterHis.getCurrentId());
                        obj.putOpt("feiYongId",water.getHisWaterId());
                        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);
                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);
                        }
                    }
                }else return AjaxResult.error();
            }
        }
        return null;
    }
    private AjaxResult zuofeiWeiZhifu(ArrayList<TjFlowingWater> weizhifu, TjCustomer tjCustomer, String apiUrl, String hospbm, TjOrder order,Boolean isDelete,String tjNum) {
        if (!weizhifu.isEmpty()){
            HashMap<String, Object> chexiaoMap = new HashMap<>();
            chexiaoMap.put("pationId", tjCustomer.getPationId());
            chexiaoMap.put("cardId", tjCustomer.getHisJzkh());
            String feiyongList = weizhifu.stream().map(TjFlowingWater::getHisWaterId).collect(Collectors.joining(","));
            chexiaoMap.put("feiYongIdList",feiyongList.trim().replaceAll(" ",""));
            String post = HttpClientUtils.sendPost(apiUrl + "/api/his/"+ hospbm +"/revokeCost", chexiaoMap);
            if (JSONUtil.parseObj(post).getStr("code").equals("200")) {
                if (isDelete) {
                    for (TjFlowingWater water : weizhifu) {
                        String bldh = water.getJxbz();
                        remarkService.deleteTjOrderDetailByjxbz(bldh);
                        tjOrderDetailService.deleteTjOrderDetailByjxbz(bldh);
                        tjFlowingWaterService.deleteTjOrderDetailByjxbz(bldh);
                        transitionService.deleteTjOrderDetailByjxbz(bldh);
                        blService.remove(new LambdaQueryWrapper<TjProBl>().eq(TjProBl::getTjh, tjNum).eq(TjProBl::getBldh, bldh));
                        tjSamplingMapper.deleteByTjNumAndCusIdAndJxbzo(tjNum, order.getUserId(), bldh);
                    }
                }
            } else return AjaxResult.error();
        }
        return null;
    }
    //    @Transactional(propagation =Propagation.REQUIRES_NEW)
    public void extracted(TjProBlDto dto, TjOrder order) {
        for (String bldh : dto.getBldhs()) {