Browse Source

退费不退药,修复bug点击了仅退费就不判断口服了。

xiaochan 2 years ago
parent
commit
71a36b0786

+ 0 - 5
src/main/java/thyyxxk/webserver/controller/inpatient/XiangMuLuRuController.java

@@ -49,11 +49,6 @@ public class XiangMuLuRuController {
         return service.getChargeCode(pyCode);
     }
 
-    @PostMapping("/xiangMuTuiFei")
-    public ResultVo<String> xiangMuTuiFei(@RequestBody ZyDetailCharge param) {
-        return service.xiangMuTuiFei(param);
-    }
-
     @GetMapping("/getMuBan")
     public ResultVo<IPage<ZyDetailCharge>> getMuBan(@RequestParam("deptCode") String deptCode,
                                                     @RequestParam("currentPage") long currentPage,

+ 11 - 9
src/main/java/thyyxxk/webserver/service/hospitalizationCosts/HospitalizationCostsService.java

@@ -158,17 +158,19 @@ public class HospitalizationCostsService {
                     if (order == null) {
                         sb.append("没有查询到原药品对应的医嘱");
                     } else {
-                        // 口服药无法退费 包装规格是 09,盒,15,瓶 的可以退费
-                        if ("1".equals(order.getClassCode())) {
-                            if (!(order.getMiniUnit().equals("09") || order.getMiniUnit().equals("15"))) {
-                                sb.append("原因原医嘱的给药方式为口服药,口服无法退费。");
+                        if (!"refundOnly".equals(param.getRefundFlag())) {
+                            // 口服药无法退费 包装规格是 09,盒,15,瓶 的可以退费
+                            if ("1".equals(order.getClassCode())) {
+                                if (!(order.getMiniUnit().equals("09") || order.getMiniUnit().equals("15"))) {
+                                    sb.append("医嘱给药方式为口服药,口服无法退费,药剂科要求只有包装规格为,瓶、盒可以退费有退药。");
+                                }
                             }
+                            if ("d".equals(order.getDrugClass())) {
+                                order.setDrugClass("j");
+                            }
+                            // 医嘱表中会有 z 所以把所有 z 的换成 j
+                            item.setDrugClass("z".equals(order.getDrugClass()) ? "j" : order.getDrugClass());
                         }
-                        if ("d".equals(order.getDrugClass())) {
-                            order.setDrugClass("j");
-                        }
-                        // 医嘱表中会有 z 所以把所有 z 的换成 j
-                        item.setDrugClass("z".equals(order.getDrugClass()) ? "j" : order.getDrugClass());
                     }
                 }
                 Integer count = drugKind.get(item.getChargeCodeMx().trim() + "_" + item.getSerial().trim(), (key) -> dao.getDrugKing(item.getChargeCodeMx().trim(), item.getSerial().trim()));

+ 0 - 173
src/main/java/thyyxxk/webserver/service/inpatient/XiangMuLuRuService.java

@@ -172,179 +172,6 @@ public class XiangMuLuRuService {
         return ResultVoUtil.success(dao.getChargeCode(StringUtil.isContainChinese(pyCode)));
     }
 
-    /**
-     * @param param 需要生成退费 的数据
-     * @return 返回
-     */
-    @Transactional(rollbackFor = Exception.class)
-    public ResultVo<String> xiangMuTuiFei(ZyDetailCharge param) {
-        UserInfo userInfo = redisLikeService.getUserInfoByToken();
-        List<Integer> yongHuJueSe = userInfo.getRoles();
-
-        // 判断是否为婴儿
-        int infantFlag = PublicServer.getInfantFlag(param.getInpatientNo());
-        if (infantFlag == 1) {
-            param.setInpatientNo(param.getInpatientNo().split("\\$")[0]);
-        }
-
-        if (!yongHuJueSe.contains(36) && !yongHuJueSe.contains(1)) {
-            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "您没有权限退费。");
-        }
-        if (param.getList() == null || param.getList().isEmpty()) {
-            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "请先选择需要退费的数据,一次性退费不得超过100条");
-        } else if (param.getList().size() > 100) {
-            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "项目退费一次性大于100条数据");
-        }
-        if (StringUtil.isBlank(param.getInpatientNo()) || param.getAdmissTimes() == null || param.getList().size() == 0) {
-            return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "患者信息不全");
-        }
-        if (dao.getHuanZheSFZaiYuan(param.getInpatientNo(), param.getAdmissTimes()) == 0) {
-            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "该患者已出院");
-        }
-        Integer settlementFlag = dao.getHuanZheSFJieSuan(param.getInpatientNo(), param.getAdmissTimes());
-
-        if (settlementFlag == null || settlementFlag != 0) {
-            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "该患者已经结算了");
-        }
-        // 获取 患者的账页号
-        Integer ledgerSn = publicServer.getLedgerSn(param.getInpatientNo(), param.getAdmissTimes());
-        // 获取原来的数据
-        List<ZyDetailCharge> yuanTuiFeiList = dao.huoQuJuTiFeiYong(param.getInpatientNo(), param.getAdmissTimes(), ledgerSn, param.getList());
-        // 获取患者自己的科室和下面的子科室
-        Set<String> deptList;
-
-        UserInfo us = redisLikeService.getUserInfoByToken();
-        if (us.getDeptCode().startsWith("8")) {
-            deptList = dao.chaXunZhiZXinKeShi(param.getDeptCode());
-            deptList.add(userInfo.getDeptCode());
-        } else {
-            deptList = publicServer.getChildDeptByUserCode();
-        }
-        List<ZyDetailCharge> project = new ArrayList<>();
-        List<ZyDetailCharge> drug = new ArrayList<>();
-        List<ZyDetailCharge> tuiFeiList = new ArrayList<>();
-        List<ZyDetailCharge> medicalTechnologyDrugReturnForm = new ArrayList<>();
-        // 保存被退费的流水号,把这些流水号修改为 -1 代表已经退费了
-        List<Integer> updateRefundFlag = new ArrayList<>();
-        // 把 药品 改成 -1 代表已经退了 -2 代表申请 -3 代表拒绝
-        List<Integer> updateDrugLabel = new ArrayList<>();
-        // 患者最大的 detail_sn
-        int maxDetailSn = publicServer.getMaxDetailSn(param.getInpatientNo(), param.getAdmissTimes());
-
-        for (ZyDetailCharge item : yuanTuiFeiList) {
-            // -3 退药申请,拒绝退药申请是可以重新申请的
-            if (item.getOriDetailSn() != null && item.getOriDetailSn().equals(-3)) {
-                item.setOriDetailSn(null);
-            }
-            if (item.getOriDetailSn() != null && item.getOriDetailSn().equals(-2)) {
-                return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号:【%s】,该药品在申请退药。", item.getDetailSn()));
-            }
-            if (item.getOriDetailSn() != null) {
-                return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号:【%s】,该数据为退费数据。", item.getDetailSn()));
-            }
-            if (BigUtils.bigXiaoYu(item.getChargeFee(), 0) || BigUtils.bigXiaoYu(item.getChargeAmount(), 0)) {
-                return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号:【%s】,该数据为负数。", item.getDetailSn()));
-            }
-            if (StringUtil.isBlank(item.getExecDept())) {
-                item.setExecDept(userInfo.getDeptCode());
-            }
-            if (!yongHuJueSe.contains(1)) {
-                if ("00".equals(item.getSerial()) && !deptList.contains(item.getExecUnit())) {
-                    return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号:【%s】,请对应的执行科室进行退费。", item.getDetailSn()));
-                }
-            }
-            if ("BILL02".equals(item.getChargeCode())) {
-                return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号:【%s】,中药无法退费。", item.getDetailSn()));
-            }
-            item.setNewOrderNo(item.getOrderNo());
-            // 00 是项目
-            if ("00".equals(item.getSerial())) {
-                maxDetailSn = setRefund(project, tuiFeiList, updateRefundFlag, maxDetailSn, item);
-            } else {
-                if ("3".equals(item.getOrderNo().stripTrailingZeros().toPlainString())) {
-                    if (!deptList.contains(item.getExecUnit())) {
-                        return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号:【%s】,此药品为医技科室录入,请对应的医技科室退费。", item.getDetailSn()));
-                    } else {
-                        maxDetailSn = setRefund(project, tuiFeiList, updateRefundFlag, maxDetailSn, item);
-                        medicalTechnologyDrugReturnForm.add(item);
-                    }
-                } else {
-                    // 仅退费不退药品
-                    if ("refundOnly".equals(param.getRefundFlag())) {
-                        maxDetailSn = setRefund(project, tuiFeiList, updateRefundFlag, maxDetailSn, item);
-                    } else {
-                        // 数量设置为负数
-                        item.setChargeAmount(item.getChargeAmount().negate());
-                        drug.add(item);
-                        updateDrugLabel.add(item.getDetailSn());
-                    }
-                }
-            }
-        }
-
-        // 护士退药单
-        if (ListUtil.notBlank(drug)) {
-            for (ZyDetailCharge item : drug) {
-                ZyDetailCharge a = dao.selectDrugClassByOrderNo(item.getOrderNo());
-                if ("refundOnly".equals(param.getRefundFlag())) {
-                    if (dao.getDrugKing(item.getChargeCodeMx(), item.getSerial()) > 0) {
-                        return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号:【%s】,药品无法退费,毒麻药药品无法仅退费不退药品,编码为:【%s】。", item.getDetailSn(), item.getChargeCodeMx()));
-                    }
-                }
-                if (a == null) {
-                    return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号:【%s】,药品无法退费,原因没有查询到原药品对应的医嘱,编码为:【%s】。", item.getDetailSn(), item.getChargeCodeMx()));
-                } else {
-                    // 口服药无法退费 包装规格是 09,盒,15,瓶 的可以退费
-                    if ("1".equals(a.getClassCode())) {
-                        if (!(a.getMiniUnit().equals("09") || a.getMiniUnit().equals("15"))) {
-                            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号:【%s】,药品无法退费,原因原医嘱的给药方式为口服药,口服无法退费。", item.getDetailSn()));
-                        }
-                    }
-                    if ("d".equals(a.getDrugClass())) {
-                        a.setDrugClass("j");
-                    }
-                    // 医嘱表中会有 z 所以把所有 z 的换成 j
-                    item.setDrugClass("z".equals(a.getDrugClass()) ? "j" : a.getDrugClass());
-                }
-            }
-
-            ZyActpatient patientInfo = publicServer.huoQuHuanZheXinXi(param.getInpatientNo());
-            // 退药明细
-            dao.detailsOfDrugReturnForm(drug, patientInfo.getInpatientNo(), patientInfo.getAdmissTimes(),
-                    patientInfo.getName(), patientInfo.getBedNo(), userInfo.getDeptCode(), infantFlag,
-                    param.getGroupNo(), TokenUtil.getTokenUserId(), -1, ledgerSn);
-            // 药品的退药 标准 为 -2 申请退药
-            ListUtil.partitionAndFunc(updateRefundFlag, 20, item -> {
-                dao.genXinZhenShuTuiFeiLiuShui(
-                        param.getInpatientNo(),
-                        param.getAdmissTimes(),
-                        ledgerSn,
-                        item,
-                        -2);
-            });
-            log.info("项目录入==》药品退费,操作人:{},数据:{}", TokenUtil.getTokenUserId(), JSON.toJSONStringWithDateFormat(drug, DateUtil.DEFAULT_PATTERN));
-        }
-
-        // 医技科室药品单
-        if (ListUtil.notBlank(medicalTechnologyDrugReturnForm)) {
-            dao.shenQingYaoPing(param, medicalTechnologyDrugReturnForm, infantFlag, ledgerSn, TokenUtil.getTokenUserId());
-        }
-
-        // 项目退费
-        if (ListUtil.notBlank(project)) {
-            ListUtil.partitionAndFunc(project, 2, dao::xiangMuTuiFei);
-            ListUtil.partitionAndFunc(updateRefundFlag, 20, item -> {
-                dao.genXinZhenShuTuiFeiLiuShui(
-                        param.getInpatientNo(),
-                        param.getAdmissTimes(),
-                        ledgerSn,
-                        item,
-                        -1);
-            });
-            log.info("项目录入==》项目退费,操作人:{},数据:{}", TokenUtil.getTokenUserId(), JSON.toJSONStringWithDateFormat(project, DateUtil.DEFAULT_PATTERN));
-        }
-        return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "退费成功。");
-    }
 
     /**
      * 退费