Explorar o código

退费匹配多条时,数量和金额要一致,才可以。

xiaochan %!s(int64=3) %!d(string=hai) anos
pai
achega
8f9f5c556b

+ 16 - 14
src/main/java/thyyxxk/webserver/service/yibao/XiangMuLuRuService.java

@@ -99,7 +99,6 @@ public class XiangMuLuRuService {
      * @return 返回项目信息
      */
     public ResultVo<List<GetDropdownBox>> getChargeCode(String pyCode) {
-        log.info("获取编码:{}", pyCode);
         return ResultVoUtil.success(dao.getChargeCode(StringUtil.isContainChinese(pyCode)));
     }
 
@@ -110,7 +109,6 @@ public class XiangMuLuRuService {
     @Transactional(rollbackFor = Exception.class)
     public ResultVo<String> xiangMuTuiFei(ZyDetailCharge param) {
         List<Integer> yongHuJueSe = dao.huoQuJueSe(TokenUtil.getTokenUserId());
-        log.info("角色:{}", JSON.toJSONString(yongHuJueSe));
         if (!yongHuJueSe.contains(36) && !yongHuJueSe.contains(1)) {
             return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "您没有权限退费。");
         }
@@ -287,7 +285,6 @@ public class XiangMuLuRuService {
      */
     @Transactional(rollbackFor = Exception.class)
     public ResultVo<String> xiangMuFeiYongShangChuan(ZyDetailCharge param) {
-        log.info("param:{}", JSON.toJSONStringWithDateFormat(param, DateUtil.DEFAULT_PATTERN));
         if (param.getList().size() > 50) {
             return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "一次性项目录入大于50条,๑乛◡乛๑");
         }
@@ -635,13 +632,11 @@ public class XiangMuLuRuService {
         patient.getWeiPiPei().addAll(dao.weiGuiXiangMu(inpatientNo, patient.getAdmissTimes(), ledger, infantFlag));
         patient.getWeiXieDaiYuanLiuShui().addAll(dao.weiXieDaiYuanLiuShuiXiangMu(inpatientNo, patient.getAdmissTimes(), ledger, infantFlag, keShi));
         patient.getWeiXieDaiYuanLiuShui().addAll(dao.weiXieDaiYuanLiuShuiYaoPing(inpatientNo, patient.getAdmissTimes(), ledger, infantFlag, keShi));
-        log.info("查询违规费用 =>>住院号{}次数{}执行科室{}", inpatientNo, patient.getAdmissTimes(), JSON.toJSONString(keShi));
         return ResultVoUtil.success(patient);
     }
 
 
     public ResultVo<List<ZyDetailCharge>> huoQuZhenShuKePiPei(String inpatientNo, Integer admissTimes, Integer ledgerSn, String chargeCodeMx, String execUnit, String startTime, String endTime, String riQiPaiXu) {
-        log.info("获取可以匹配的费用==》 住院号:{},次数:{},账页号:{},项目编码:{},执行科室:{}", inpatientNo, admissTimes, ledgerSn, chargeCodeMx, execUnit);
         List<ZyDetailCharge> zhenShuFeiYong = dao.weiGuiZhenShuPiPei(publicServer.getInpatientNo(inpatientNo), admissTimes, ledgerSn, publicServer.getInfantFlag(inpatientNo),
                 chargeCodeMx, execUnit, startTime, endTime, riQiPaiXu);
         List<ZyDetailCharge> yuEr = dao.tuiFeiYuEr1(publicServer.getInpatientNo(inpatientNo), admissTimes, ledgerSn, publicServer.getInfantFlag(inpatientNo),
@@ -661,11 +656,9 @@ public class XiangMuLuRuService {
                     i--;
                 } else {
                     zy.setYiTuiFei(zy.getChargeFee().subtract(yuErPiPei.get(key).getYiTuiFei()));
-                    log.info("原来:{},已退:{},余额:{}", zy.getChargeFee(), yuErPiPei.get(key).getYiTuiFei(), zy.getYiTuiFei());
                 }
             }
         }
-        log.info("可匹配的费用:{}", JSON.toJSONString(zhenShuFeiYong));
         return ResultVoUtil.success(zhenShuFeiYong);
     }
 
@@ -690,8 +683,6 @@ public class XiangMuLuRuService {
 
         Map<Integer, ZyDetailCharge> tuiFeiYuErPiPei = dao.tuiFeiYuEr2(inpatientNo, zyDetailCharge.getAdmissTimes(), zyDetailCharge.getLedgerSn(), infantFlag, detailSnList).stream().collect(
                 Collectors.toMap(ZyDetailCharge::getOriDetailSn, a -> a, (k1, k2) -> k1));
-
-
         BigDecimal chargeFeeSum = new BigDecimal(0);
         BigDecimal chargeAmountSum = new BigDecimal(0);
 
@@ -711,18 +702,29 @@ public class XiangMuLuRuService {
             chargeFeeSum = chargeFeeSum.add(detailCharge.getChargeFee());
             chargeAmountSum = chargeAmountSum.add(detailCharge.getChargeAmount());
         }
+        log.info("fushu:数量:{},金额:{},正数:数量:{},金额:{}", zy.getChargeAmount(), zy.getChargeFee(), chargeAmountSum, chargeFeeSum);
         if (BigUtils.bigDaYu(chargeFeeSum, zy.getChargeFee().negate()) || BigUtils.dengYu(chargeFeeSum, zy.getChargeFee().negate())) {
             if (zhenShuShuJu.size() == 1) {
                 dao.zhiYouYiGeJiuGenXingFuShuLiuShui(zyDetailCharge.getInpatientNo(), zyDetailCharge.getAdmissTimes(), zyDetailCharge.getLedgerSn(), zyDetailCharge.getDetailSn(), zhenShuShuJu.get(0).getDetailSn());
                 publicServer.genXingYuanLiuShuiBiaoZhi(inpatientNo, zyDetailCharge.getAdmissTimes(), zyDetailCharge.getLedgerSn());
                 return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "费用匹配成功。");
             } else {
-                ResultVo<String> tuiFei = xiangMuTuiFei(zyDetailCharge);
-                if (tuiFei.getCode() != 201) {
-                    return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, tuiFei.getMessage());
+                if (BigUtils.dengYu(chargeFeeSum, zy.getChargeFee().negate()) && BigUtils.dengYu(chargeAmountSum, zy.getChargeAmount().negate())) {
+                    for (ZyDetailCharge item : zyDetailCharge.getList()) {
+                        if (BigUtils.dengYu(zyDetailCharge.getChargeFee().negate(), item.getChargeFee())) {
+                            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "谁教你这么退的,明明有费用一样的可以匹配。");
+                        }
+                    }
+                    ResultVo<String> tuiFei = xiangMuTuiFei(zyDetailCharge);
+                    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, "匹配多条时数量和金额要相等。");
                 }
-                dao.cheXiaoFeiYong(inpatientNo, zyDetailCharge.getAdmissTimes(), zyDetailCharge.getLedgerSn(), zyDetailCharge.getDetailSn());
-                return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "费用拆分成功。");
+
             }
         }
         return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR,