ソースを参照

违规退费匹配优化

xiaochan 3 年 前
コミット
18331dbdb5

+ 2 - 1
src/main/java/thyyxxk/webserver/controller/yibao/XiangMuLuRuController.java

@@ -130,10 +130,11 @@ public class XiangMuLuRuController {
                                                               @RequestParam("ledgerSn") Integer ledgerSn,
                                                               @RequestParam("chargeCodeMx") String chargeCodeMx,
                                                               @RequestParam("execUnit") String execUnit,
+                                                              @RequestParam("orderNo") String orderNo,
                                                               @RequestParam("startTime") String startTime,
                                                               @RequestParam("endTime") String endTime,
                                                               @RequestParam("riQiPaiXu") String riQiPaiXu) {
-        return service.huoQuZhenShuKePiPei(inpatientNo, admissTimes, ledgerSn, chargeCodeMx, execUnit, startTime, endTime, riQiPaiXu);
+        return service.huoQuZhenShuKePiPei(inpatientNo, admissTimes, ledgerSn, chargeCodeMx, execUnit, orderNo, startTime, endTime, riQiPaiXu);
     }
 
     @PostMapping("/caiFenPiPei")

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

@@ -1081,7 +1081,15 @@ public interface XiangMuLuRuDao extends BaseMapper<ZyDetailCharge> {
     @Select("<script>" +
             "select inpatient_no,admiss_times,ledger_sn,detail_sn,charge_amount,charge_fee,order_no,charge_code_mx,charge_date,ori_detail_sn " +
             "from zy_detail_charge where inpatient_no = #{inpatientNo} and admiss_times = #{admissTimes} and ledger_sn = #{ledgerSn} and charge_code_mx = #{chargeCodeMx} " +
-            "and exec_unit = #{execUnit} and trans_flag_yb &lt;&gt; 2 and order_no &lt;&gt; 6 and charge_fee &gt; 0 and  charge_amount &gt; 0 and infant_flag = #{infantFlag}" +
+            "<choose>" +
+            "<when test=\"execUnit != null and execUnit != ''\">" +
+            "and exec_unit = #{execUnit} " +
+            "</when>" +
+            "<otherwise>" +
+            "and order_no = #{orderNo}" +
+            "</otherwise>" +
+            "</choose>" +
+            "and trans_flag_yb &lt;&gt; 2 and order_no &lt;&gt; 6 and charge_fee &gt; 0 and  charge_amount &gt; 0 and infant_flag = #{infantFlag}" +
             "<if test=\"startTime != null and startTime != '' \">" +
             "and charge_date &gt;= #{startTime} and charge_date &lt;= #{endTime} " +
             "</if>" +
@@ -1093,6 +1101,7 @@ public interface XiangMuLuRuDao extends BaseMapper<ZyDetailCharge> {
                                             @Param("infantFlag") Integer infantFlag,
                                             @Param("chargeCodeMx") String chargeCodeMx,
                                             @Param("execUnit") String execUnit,
+                                            @Param("orderNo") String orderNo,
                                             @Param("startTime") String startTime,
                                             @Param("endTime") String endTime,
                                             @Param("riQiPaiXu") String riQiPaiXu);

+ 11 - 19
src/main/java/thyyxxk/webserver/service/yibao/XiangMuLuRuService.java

@@ -20,10 +20,7 @@ import thyyxxk.webserver.utils.*;
 
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -635,9 +632,12 @@ public class XiangMuLuRuService {
     }
 
 
-    public ResultVo<List<ZyDetailCharge>> huoQuZhenShuKePiPei(String inpatientNo, Integer admissTimes, Integer ledgerSn, String chargeCodeMx, String execUnit, String startTime, String endTime, String riQiPaiXu) {
+    public ResultVo<List<ZyDetailCharge>> huoQuZhenShuKePiPei(String inpatientNo, Integer admissTimes, Integer ledgerSn,
+                                                              String chargeCodeMx, String execUnit, String orderNo, String startTime,
+                                                              String endTime, String riQiPaiXu) {
+        execUnit = StringUtil.isBlank(execUnit) ? null : execUnit;
         List<ZyDetailCharge> zhenShuFeiYong = dao.weiGuiZhenShuPiPei(publicServer.getInpatientNo(inpatientNo), admissTimes, ledgerSn, publicServer.getInfantFlag(inpatientNo),
-                chargeCodeMx, execUnit, startTime, endTime, riQiPaiXu);
+                chargeCodeMx, execUnit, orderNo, startTime, endTime, riQiPaiXu);
         List<ZyDetailCharge> yuEr = dao.tuiFeiYuEr1(publicServer.getInpatientNo(inpatientNo), admissTimes, ledgerSn, chargeCodeMx, execUnit);
         Map<String, ZyDetailCharge> yuErPiPei = new HashMap<>();
         for (ZyDetailCharge item : yuEr) {
@@ -679,7 +679,7 @@ public class XiangMuLuRuService {
         ZyDetailCharge zy = dao.piPeiXinXiFuShu(inpatientNo, zyDetailCharge.getAdmissTimes(), zyDetailCharge.getLedgerSn(), infantFlag, zyDetailCharge.getDetailSn());
         if (zy == null) {
             return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "未找到负数费用信息,可能已经被删除了,请刷新页面重试。");
-        } else if (zy.getTransFlagYb().equals("2") || zy.getOriDetailSn() != null) {
+        } else if (zy.getOriDetailSn() != null || zy.getTransFlagYb().equals("2")) {
             return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "该负数费用已被正负相抵。");
         }
         List<ZyDetailCharge> zhenShuShuJu = dao.piPeiXinXi(inpatientNo, zyDetailCharge.getAdmissTimes(), zyDetailCharge.getLedgerSn(), infantFlag, detailSnList);
@@ -693,8 +693,10 @@ public class XiangMuLuRuService {
         List<String> zhiXinKeShi = dao.chaXunZhiZXinKeShi(zyDetailCharge.getDeptCode());
 
         for (ZyDetailCharge detailCharge : zhenShuShuJu) {
-            ResultVo<String> LOGICAL_ERROR = getStringResultVo(yongHuJueSe, zhiXinKeShi, zyDetailCharge, detailCharge, false);
-            if (LOGICAL_ERROR != null) return LOGICAL_ERROR;
+            if (!BigUtils.dengYu(detailCharge.getOrderNo(), zyDetailCharge.getOrderNo())) {
+                ResultVo<String> LOGICAL_ERROR = getStringResultVo(yongHuJueSe, zhiXinKeShi, zyDetailCharge, detailCharge, false);
+                if (LOGICAL_ERROR != null) return LOGICAL_ERROR;
+            }
             if (detailCharge.getTransFlagYb().equals("2")) {
                 return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号为:{%d},已被正负抵消。", detailCharge.getDetailSn()));
             }
@@ -713,16 +715,6 @@ public class XiangMuLuRuService {
             return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR,
                     String.format("负数费用:{%.2f},匹配费用:{%.2f} <br> 负数数量:{%.2f},匹配数量:{%.2f}", zy.getChargeFee().negate(), chargeFeeSum, zy.getChargeAmount().negate(), chargeAmountSum));
         } else {
-//            if (BigUtils.dengYu(chargeFeeSum, zy.getChargeFee().negate()) && BigUtils.dengYu(chargeAmountSum, zy.getChargeAmount().negate())) {
-//                ResultVo<String> tuiFei = xiangMuTuiFei(zyDetailCharge, false);
-//                if (tuiFei.getCode() != 201) {
-//                    return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, tuiFei.getMessage());
-//                }
-//                dao.cheXiaoFeiYong(inpatientNo, zyDetailCharge.getAdmissTimes(), zyDetailCharge.getLedgerSn(), zyDetailCharge.getDetailSn());
-//                return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "费用拆分成功。");
-//            } else {
-//                return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "匹配多条时数量和金额要相等。");
-//            }
             return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "每次只能匹配一条。");
         }
     }