|
@@ -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,
|