Browse Source

项目判断

xiaochan 2 years ago
parent
commit
79efd21dd7

+ 1 - 1
src/main/java/thyyxxk/webserver/dao/his/inpatient/XiangMuLuRuDao.java

@@ -308,7 +308,7 @@ public interface XiangMuLuRuDao extends BaseMapper<ZyDetailCharge> {
             "       zj_flag, " +
             "       zfl, " +
             "       rtrim(charge_code_mx) as  charge_code_mx, " +
-            "       rtrim(serial) as serial, " +
+            "       case when nullif(serial, '') is null then '00' else rtrim(serial) end as serial, " +
             "       zy_serial_no, " +
             "       doctor_code, " +
             "       yb_self_flag, " +

+ 24 - 23
src/main/java/thyyxxk/webserver/service/inpatient/XiangMuLuRuService.java

@@ -154,10 +154,10 @@ public class XiangMuLuRuService {
             zhiXinKeShi.add(userInfo.getDeptCode());
         }
 
-        List<ZyDetailCharge> xiangMu = new ArrayList<>();
-        List<ZyDetailCharge> yaoPin = new ArrayList<>();
+        List<ZyDetailCharge> project = new ArrayList<>();
+        List<ZyDetailCharge> drug = new ArrayList<>();
         List<ZyDetailCharge> tuiFeiList = new ArrayList<>();
-        List<ZyDetailCharge> yaoPingDan = new ArrayList<>();
+        List<ZyDetailCharge> medicalTechnologyDrugReturnForm = new ArrayList<>();
         // 保存被退费的流水号,把这些流水号修改为 -1 代表已经退费了
         List<Integer> updateRefundFlag = new ArrayList<>();
         // 把 药品 改成 -1 代表已经退了 -2 代表申请 -3 代表拒绝
@@ -191,21 +191,21 @@ public class XiangMuLuRuService {
             if (BigUtils.bigDaYu(item.getOrderNo(), 10)) {
                 item.setOrderNo(new BigDecimal(0));
             }
+            // 00 是项目
             if ("00".equals(item.getSerial())) {
-                maxDetailSn = setRefund(xiangMu, tuiFeiList, updateRefundFlag, maxDetailSn, item);
+                maxDetailSn = setRefund(project, tuiFeiList, updateRefundFlag, maxDetailSn, item);
             } else {
                 if (item.getOrderNo().equals(new BigDecimal(3))) {
-                    // todo 口服药不能退
                     if (!zhiXinKeShi.contains(item.getExecUnit())) {
                         return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号:【%s】,此药品为医技科室录入,请对应的医技科室退费。", item.getDetailSn()));
                     } else {
-                        maxDetailSn = setRefund(xiangMu, tuiFeiList, updateRefundFlag, maxDetailSn, item);
-                        yaoPingDan.add(item);
+                        maxDetailSn = setRefund(project, tuiFeiList, updateRefundFlag, maxDetailSn, item);
+                        medicalTechnologyDrugReturnForm.add(item);
                     }
                 } else {
-                    // 数量变成负数
+                    // 数量设置为负数
                     item.setChargeAmount(item.getChargeAmount().negate());
-                    yaoPin.add(item);
+                    drug.add(item);
                     updateDrugLabel.add(item.getDetailSn());
                 }
 
@@ -213,16 +213,17 @@ public class XiangMuLuRuService {
         }
 
         // 护士退药单
-        if (ListUtil.notBlank(yaoPin)) {
-            Map<String, ZyDetailCharge> getDrugClass = dao.getDrugClass(yaoPin).stream().collect(
+        if (ListUtil.notBlank(drug)) {
+            Map<String, ZyDetailCharge> getDrugClass = dao.getDrugClass(drug).stream().collect(
                     Collectors.toMap(ZyDetailCharge::getChargeCodeMx, a -> a, (k1, k2) -> k1)
             );
 
-            for (ZyDetailCharge item : yaoPin) {
+            for (ZyDetailCharge item : drug) {
                 ZyDetailCharge a = getDrugClass.get(item.getChargeCodeMx());
                 if (a == null) {
                     return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号:【%s】,药品无法退费 原因没有查询到原药品请联系药库,编码为:【%s】。", item.getDetailSn(), item.getChargeCodeMx()));
                 } else {
+                    // 口服药无法退费
                     if (a.getDrugClass().equals("d")) {
                         return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号:【%s】,药品无法退费,原因口服药无法退费,开退费医嘱也不行", item.getDetailSn()));
                     }
@@ -231,30 +232,31 @@ public class XiangMuLuRuService {
 
             }
 
-            ZyActpatient patientInf = publicServer.huoQuHuanZheXinXi(param.getInpatientNo());
+            ZyActpatient patientInfo = publicServer.huoQuHuanZheXinXi(param.getInpatientNo());
             Integer pageNo = publicServer.getTheDrugListNo();
             // 药品单号
             String groupNo = publicServer.getGroupNo();
             // 退药单汇总
-            dao.drugReturnForm(pageNo, patientInf.getWard(), TokenUtil.getTokenUserId(), groupNo);
+            dao.drugReturnForm(pageNo, patientInfo.getWard(), TokenUtil.getTokenUserId(), groupNo);
             // 退药明细
-            dao.detailsOfDrugReturnForm(yaoPin, patientInf.getInpatientNo(), patientInf.getAdmissTimes(),
-                    patientInf.getName(), patientInf.getBedNo(), patientInf.getWard(),
+            dao.detailsOfDrugReturnForm(drug, patientInfo.getInpatientNo(), patientInfo.getAdmissTimes(),
+                    patientInfo.getName(), patientInfo.getBedNo(), patientInfo.getWard(),
                     infantFlag, groupNo, TokenUtil.getTokenUserId(), pageNo, ledgerSn);
+            // 药品的退药 标准 为 -2 申请退药
             dao.genXinZhenShuTuiFeiLiuShui(param.getInpatientNo(), param.getAdmissTimes(), ledgerSn, updateDrugLabel, -2);
-            log.info("项目录入==》药品退费,操作人:{},数据:{}", TokenUtil.getTokenUserId(), JSON.toJSONStringWithDateFormat(yaoPin, DateUtil.DEFAULT_PATTERN));
+            log.info("项目录入==》药品退费,操作人:{},数据:{}", TokenUtil.getTokenUserId(), JSON.toJSONStringWithDateFormat(drug, DateUtil.DEFAULT_PATTERN));
         }
 
         // 医技科室药品单
-        if (ListUtil.notBlank(yaoPingDan)) {
-            dao.shenQingYaoPing(param, yaoPingDan, infantFlag, ledgerSn, TokenUtil.getTokenUserId());
+        if (ListUtil.notBlank(medicalTechnologyDrugReturnForm)) {
+            dao.shenQingYaoPing(param, medicalTechnologyDrugReturnForm, infantFlag, ledgerSn, TokenUtil.getTokenUserId());
         }
 
-        if (ListUtil.notBlank(xiangMu)) {
-            List<List<ZyDetailCharge>> fenGe = ListUtils.partition(xiangMu, 20);
+        if (ListUtil.notBlank(project)) {
+            List<List<ZyDetailCharge>> fenGe = ListUtils.partition(project, 20);
             fenGe.forEach(dao::xiangMuTuiFei);
             dao.genXinZhenShuTuiFeiLiuShui(param.getInpatientNo(), param.getAdmissTimes(), ledgerSn, updateRefundFlag, -1);
-            log.info("项目录入==》项目退费,操作人:{},数据:{}", TokenUtil.getTokenUserId(), JSON.toJSONStringWithDateFormat(xiangMu, DateUtil.DEFAULT_PATTERN));
+            log.info("项目录入==》项目退费,操作人:{},数据:{}", TokenUtil.getTokenUserId(), JSON.toJSONStringWithDateFormat(project, DateUtil.DEFAULT_PATTERN));
         }
 
         return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "退费成功。");
@@ -743,7 +745,6 @@ public class XiangMuLuRuService {
             String key = item.getInpatientNo() + item.getAdmissTimes() + item.getDetailSn() + item.getChargeCodeMx();
             yuErPiPei.put(key, item);
         }
-        // TODO: 2022/1/11 这里需要优化 把计算余额的放到程序里面来计算
         for (int i = 0, len = zhenShuFeiYong.size(); i < len; i++) {
             ZyDetailCharge zy = zhenShuFeiYong.get(i);
             String key = zy.getInpatientNo() + zy.getAdmissTimes() + zy.getDetailSn() + zy.getChargeCodeMx();