Browse Source

优化门诊项目确认收费

xiaochan 3 years ago
parent
commit
0050dc7ee7

+ 6 - 73
src/main/java/thyyxxk/webserver/entity/datamodify/MzChargeDetail.java

@@ -196,341 +196,275 @@ public class MzChargeDetail implements Serializable {
      * confirmFlag  标识:1确认发药 医技确认 2.打印药品清单 3.配药确认
      */
     private Integer confirmFlag;
-
+    private Integer oldConfirmFlag;
     /**
      * warnDept
      * 应该是科室
      */
     private String warnDept;
-
     /**
      * ledYf
      */
     private String ledYf;
-
     /**
      * jzFlag
      */
     private String jzFlag;
-
     /**
      * groupOrder
      */
     private Integer groupOrder;
-
     /**
      * cashId
      */
     private String cashId;
-
     /**
      * doctorCode
      * 医生code
      */
     private String doctorCode;
-
     /**
      * supplyCode
      */
     private String supplyCode;
-
     /**
      * frequency
      */
     private String frequency;
-
     /**
      * drugQuan
      */
     private BigDecimal drugQuan;
-
     /**
      * drugUnit
      */
     private String drugUnit;
-
     /**
      * doctorFlag
      */
     private String doctorFlag;
-
     /**
      * injectRes
      */
     private Double injectRes;
-
     /**
      * injectTimes
      */
     private Integer injectTimes;
-
     /**
      * confirmZs
      */
     private String confirmZs;
-
     /**
      * realNo
      */
     private Integer realNo;
-
     /**
      * windowsNoYf
      */
     private String windowsNoYf;
-
     /**
      * ybbxFlag
      */
     private String ybbxFlag;
-
     /**
      * tcNo
      */
     private String tcNo;
-
     /**
      * tcName
      */
     private String tcName;
-
     /**
      * detailFlag
      */
     private String detailFlag;
-
     /**
      * glPercent
      */
     private String glPercent;
-
     /**
      * orderType
      */
     private String orderType;
-
     /**
      * supplyNo
      */
     private String supplyNo;
-
     /**
      * instructionCode
      */
     private String instructionCode;
-
     /**
      * instructionText
      */
     private String instructionText;
-
     /**
      * orderDays
      */
     private Integer orderDays;
-
     /**
      * paySelf
      */
     private String paySelf;
-
     /**
      * tryFlag
      */
     private String tryFlag;
-
     /**
      * reqYj
      */
     private String reqYj;
-
     /**
      * reqNo
      */
     private Integer reqNo;
-
     /**
      * groupType
      */
     private String groupType;
-
     /**
      * orderBill
      */
     private Integer orderBill;
-
     /**
      * chargeBillCode
      */
     private String chargeBillCode;
-
     /**
      * selfFlag
      */
     private String selfFlag;
-
     /**
      * responceType
      */
     private String responceType;
-
     /**
      * decAmount
      */
     private String decAmount;
-
     /**
      * backSerial
      */
     private Integer backSerial;
-
     /**
      * inputTime
      */
     private Date inputTime;
-
     /**
      * cyMtjs
      */
     private Integer cyMtjs;
-
     /**
      * cyJsl
      */
     private Integer cyJsl;
-
     /**
      * cyZql
      */
     private Integer cyZql;
-
     /**
      * cyFj
      */
     private Integer cyFj;
-
     /**
      * cyFfcs
      */
     private Integer cyFfcs;
-
     /**
      * cyFysm
      */
     private Integer cyFysm;
-
     /**
      * supplyAmount
      */
     private Integer supplyAmount;
-
     /**
      * cyJssm
      */
     private String cyJssm;
-
     /**
      * deptNo
      */
     private String deptNo;
-
     /**
      * glPercentFt
      */
     private Double glPercentFt;
-
     /**
      * ybZfFlag
      */
     private String ybZfFlag;
-
     /**
      * origPrice
      */
     private String origPrice;
-
     /**
      * tryResult
      */
     private String tryResult;
-
     /**
      * supplyExec
      */
     private String supplyExec;
-
     /**
      * cyDj
      */
     private String cyDj;
-
     /**
      * receiveFlag
      */
     private String receiveFlag;
-
     /**
      * chequType
      */
     private String chequType;
-
     /**
      * printFlagYj
      */
     private String printFlagYj;
-
     /**
      * confirmFlagQx
      */
     private String confirmFlagQx;
-
     /**
      * ybType
      */
     private String ybType;
-
     /**
      * 金额
      */
     private BigDecimal consumption;
-
-    // 一下都是通过急门诊费用转入 通过机制号 转入的
-
     /**
      * 输入人姓名
      */
     private String patientName;
 
+    // 一下都是通过急门诊费用转入 通过机制号 转入的
     /**
      * 项目名称
      */
     private String itemName;
-
     /**
      * 单列标志
      */
     private String separateFlag;
-
     /**
      * 贵重标志
      */
     private String suppressFlag;
-
     /**
      * 金额
      */
     private BigDecimal price;
-
     /**
      * 总价
      */
     private BigDecimal pricechargeFee;
-
     /**
      * 写死的不知道是什么
      */
     private String checkFlag;
-
     private String icCardNo;
     private Date birthDay;
     private String phoneNo;
@@ -544,16 +478,15 @@ public class MzChargeDetail implements Serializable {
     private BigDecimal je;
     private String execDeptName;
     private String confirmIdName;
-
     private Integer xiangMuZhuangTai;
-
-
     private List<MzChargeDetail> list;
-
     private List<Integer> reqNos;
-
     /**
      * 来源 对外接口时 使用
      */
     private String source;
+
+    public Integer getOldConfirmFlag() {
+        return confirmFlag;
+    }
 }

+ 18 - 33
src/main/java/thyyxxk/webserver/service/zhuyuanyiji/MenZhengXiangMuServer.java

@@ -1,6 +1,7 @@
 package thyyxxk.webserver.service.zhuyuanyiji;
 
 import com.alibaba.fastjson.JSON;
+import com.baomidou.dynamic.datasource.annotation.DS;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -98,7 +99,7 @@ public class MenZhengXiangMuServer {
                 if (template.getList() == null) {
                     template.setList(new ArrayList<>());
                 }
-                if (template.getChargeFee() == null || BigUtils.dengYu(template.getChargeFee(), BigDecimal.ZERO)) {
+                if (template.getChargeFee() == null) {
                     template.setChargeFee(new BigDecimal(BigInteger.ZERO));
                 }
                 template.setChargeFee(template.getChargeFee().add(item.getUnitPrice().multiply(item.getQuantity()).multiply(item.getDrugWin())));
@@ -129,44 +130,28 @@ public class MenZhengXiangMuServer {
         if (ListUtil.notBlank(mz.getList()) && mz.getList().size() > 100) {
             return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "一次性操作不能大于 100 条,且不能为空。");
         }
-        Map<String, MzChargeDetail> map = dao.feiYongXinXi(mz.getRealNo(), mz.getPatientId(), mz.getTimes(), null).stream().collect(
-                Collectors.toMap(item -> item.getPatientId() + item.getTimes() + item.getReceiptNo() + item.getOrderNo() + item.getItemNo() +
-                                item.getChargeItemCode(),
-                        a -> a, (k1, k2) -> k1
-                ));
-        List<MzChargeDetail> xuYaoBaoCunDeShuJu = new ArrayList<>();
-        for (MzChargeDetail item : mz.getList()) {
-            String key = item.getPatientId() + item.getTimes() + item.getReceiptNo() + item.getOrderNo() + item.getItemNo() +
-                    item.getChargeItemCode();
-            MzChargeDetail mzChargeDetail = map.get(key);
-            if (mzChargeDetail != null) {
-                if (!item.getConfirmFlag().equals(mzChargeDetail.getConfirmFlag()) && item.getConfirmFlag() != 0) {
-                    xuYaoBaoCunDeShuJu.add(item);
-                }
-                if (item.getList() != null) {
-                    for (MzChargeDetail chargeDetail : item.getList()) {
-                        chargeDetail.setConfirmFlag(item.getConfirmFlag());
-                        String templateKey = chargeDetail.getPatientId() + chargeDetail.getTimes() + chargeDetail.getReceiptNo() + chargeDetail.getOrderNo()
-                                + chargeDetail.getItemNo() + chargeDetail.getChargeItemCode();
-                        MzChargeDetail template = map.get(templateKey);
-                        if (template != null) {
-                            if (!chargeDetail.getConfirmFlag().equals(mzChargeDetail.getConfirmFlag()) && chargeDetail.getConfirmFlag() != 0) {
-                                xuYaoBaoCunDeShuJu.add(chargeDetail);
-                            }
-                        }
-                    }
-                    item.setList(null);
+        List<MzChargeDetail> confirmationFee = mz.getList();
+        List<MzChargeDetail> flatData = new ArrayList<>();
+        for (MzChargeDetail parentNode : confirmationFee) {
+            Integer confirmationSign = parentNode.getConfirmFlag();
+            List<MzChargeDetail> childNode = parentNode.getList();
+            parentNode.setList(null);
+            if (confirmationSign != null && confirmationSign != 0) {
+                flatData.add(parentNode);
+                if (ListUtil.notBlank(childNode)) {
+                    childNode.forEach(item -> {
+                        item.setConfirmFlag(confirmationSign);
+                        flatData.add(item);
+                    });
                 }
             }
         }
-        if (ListUtil.notBlank(xuYaoBaoCunDeShuJu)) {
-            dao.xiangMuQueRenHuoQuXiao(xuYaoBaoCunDeShuJu, TokenUtil.getTokenUserId(), mz.getExecDept());
-            dao.xiangMuQueRenYjReq(xuYaoBaoCunDeShuJu, TokenUtil.getTokenUserId(), mz.getExecDept());
-            log.info("需要保存的数据:{}", JSON.toJSONString(xuYaoBaoCunDeShuJu));
+        if (ListUtil.notBlank(flatData)) {
+            dao.xiangMuQueRenHuoQuXiao(flatData, TokenUtil.getTokenUserId(), mz.getExecDept());
+            dao.xiangMuQueRenYjReq(flatData, TokenUtil.getTokenUserId(), mz.getExecDept());
             return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "操作成功 L('ω')┘三└('ω')」");
         }
         return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "请选择需要操作的数据");
-
     }
 
 }