|
@@ -148,6 +148,9 @@ public class XiangMuLuRuService {
|
|
|
|
|
|
List<Integer> genXingZhenShuTuiFeiLiuShui = new ArrayList<>();
|
|
|
List<ZyDetailCharge> tuiFeiList = new ArrayList<>();
|
|
|
+ // 获取到用户角色 管理员角色可以无视
|
|
|
+ List<Integer> yongHuJueSe = dao.huoQuJueSe(TokenUtil.getTokenUserId());
|
|
|
+ List<String> zhiXinKeShi = dao.chaXunZhiZXinKeShi(param.getDeptCode());
|
|
|
for (ZyDetailCharge pojo : yuanTuiFeiList) {
|
|
|
// 判断患者的费用是否存在负数
|
|
|
if (pojo.getChargeFee().signum() == -1 || pojo.getChargeAmount().signum() == -1) {
|
|
@@ -157,7 +160,7 @@ public class XiangMuLuRuService {
|
|
|
yaoPingDan.add(pojo);
|
|
|
}
|
|
|
// 在这里判断执行科室
|
|
|
- ResultVo<String> LOGICAL_ERROR = getStringResultVo(param, pojo);
|
|
|
+ ResultVo<String> LOGICAL_ERROR = getStringResultVo(yongHuJueSe, zhiXinKeShi, param, pojo);
|
|
|
if (LOGICAL_ERROR != null) return LOGICAL_ERROR;
|
|
|
// 数据库有个 触发器 如果带了医嘱号且有篆刻那么这里就需要改成 0
|
|
|
if (BigUtils.bigDaYu(pojo.getOrderNo(), 10)) {
|
|
@@ -197,14 +200,13 @@ public class XiangMuLuRuService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private ResultVo<String> getStringResultVo(ZyDetailCharge xuYaoTuiDeShuJu, ZyDetailCharge piPeiDeShuJu) {
|
|
|
+ private ResultVo<String> getStringResultVo(List<Integer> yongHuJueSe, List<String> zhiXinKeShi, ZyDetailCharge xuYaoTuiDeShuJu,
|
|
|
+ ZyDetailCharge piPeiDeShuJu) {
|
|
|
// 获取到用户角色 管理员角色可以无视
|
|
|
- List<Integer> yongHuJueSe = dao.huoQuJueSe(TokenUtil.getTokenUserId());
|
|
|
if (!yongHuJueSe.contains(1)) {
|
|
|
// 科室开头 是 8 就不是医技科室 只有医技科室可以退药品
|
|
|
if (xuYaoTuiDeShuJu.getDeptCode().startsWith("8")) {
|
|
|
//获取到这个人是否属于这个科室
|
|
|
- List<String> zhiXinKeShi = dao.chaXunZhiZXinKeShi(xuYaoTuiDeShuJu.getDeptCode());
|
|
|
if (!zhiXinKeShi.contains(piPeiDeShuJu.getExecUnit())) {
|
|
|
return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号为【%s】,请对应的执行科室进行退费。<br/>( ´Д`)y━・~~", piPeiDeShuJu.getDetailSn()));
|
|
|
}
|
|
@@ -214,7 +216,6 @@ public class XiangMuLuRuService {
|
|
|
return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号为【%s】,包含药品费用,无法退费。<br/>( ´Д`)y━・~~", piPeiDeShuJu.getDetailSn()));
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
} else if (!xuYaoTuiDeShuJu.getDeptCode().equals(piPeiDeShuJu.getExecUnit())) {
|
|
|
return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号为【%s】,请对应的执行科室进行退费。<br/>( ´Д`)y━・~~", piPeiDeShuJu.getDetailSn()));
|
|
|
}
|
|
@@ -450,15 +451,17 @@ public class XiangMuLuRuService {
|
|
|
* @return 返回是否匹配成功
|
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public ResultVo<String> yiZhuTuiFeiPiPei(String inpatientNo, Integer admissTimes) {
|
|
|
+ public ResultVo<String> yiZhuTuiFeiPiPei(String inpatientNo, Integer admissTimes, String deptCode) {
|
|
|
int infantFlag = publicServer.getInfantFlag(inpatientNo);
|
|
|
inpatientNo = publicServer.getInpatientNo(inpatientNo);
|
|
|
Integer ledgerSn = publicServer.getLedgerSn(inpatientNo, admissTimes);
|
|
|
|
|
|
+ List<String> keShiLeiBiao = publicServer.huoQuBingFangDeKeShi(deptCode);
|
|
|
+
|
|
|
// 获取正的医嘱费用
|
|
|
- List<ZyDetailCharge> getYiZhuFeiYongZhenShu = dao.getYiZhuFeiYong(inpatientNo, admissTimes, ledgerSn, ">", infantFlag);
|
|
|
+ List<ZyDetailCharge> getYiZhuFeiYongZhenShu = dao.getYiZhuFeiYong(inpatientNo, admissTimes, ledgerSn, ">", infantFlag, keShiLeiBiao);
|
|
|
// 获取负的医嘱费用
|
|
|
- List<ZyDetailCharge> getYiZhuFeiYongFuShu = dao.getYiZhuFeiYong(inpatientNo, admissTimes, ledgerSn, "<", infantFlag);
|
|
|
+ List<ZyDetailCharge> getYiZhuFeiYongFuShu = dao.getYiZhuFeiYong(inpatientNo, admissTimes, ledgerSn, "<", infantFlag, keShiLeiBiao);
|
|
|
// 获取负数的退费数据 主要是用来判断 这一条正的是否退费了。
|
|
|
List<ZyDetailCharge> tuiFeiList = dao.tuiFeiList(inpatientNo, admissTimes, infantFlag);
|
|
|
if (!tuiFeiList.isEmpty()) {
|
|
@@ -604,6 +607,12 @@ public class XiangMuLuRuService {
|
|
|
int infantFlag = publicServer.getInfantFlag(inpatientNo);
|
|
|
Integer ledger = publicServer.getLedgerSn(inpatientNo, admissTimes);
|
|
|
|
|
|
+ log.info("查询违规费用 =>>住院号{}次数{}执行科室{}", inpatientNo, admissTimes, execUnit);
|
|
|
+
|
|
|
+ List<String> keShi = publicServer.huoQuBingFangDeKeShi(execUnit);
|
|
|
+
|
|
|
+ publicServer.genXingYuanLiuShuiBiaoZhi(inpatientNo, admissTimes, ledger);
|
|
|
+
|
|
|
WeiGuiFeiYongFenXi weiGuiFeiYongFenXi = new WeiGuiFeiYongFenXi();
|
|
|
weiGuiFeiYongFenXi.setWeiPiPei(new ArrayList<>());
|
|
|
weiGuiFeiYongFenXi.setWeiXieDaiYuanLiuShui(new ArrayList<>());
|
|
@@ -623,8 +632,8 @@ public class XiangMuLuRuService {
|
|
|
}
|
|
|
weiGuiFeiYongFenXi.getWeiPiPei().addAll(dao.weiGuiYaoPin(inpatientNo, admissTimes, ledger, infantFlag));
|
|
|
weiGuiFeiYongFenXi.getWeiPiPei().addAll(dao.weiGuiXiangMu(inpatientNo, admissTimes, ledger, infantFlag));
|
|
|
- weiGuiFeiYongFenXi.getWeiXieDaiYuanLiuShui().addAll(dao.weiXieDaiYuanLiuShuiXiangMu(inpatientNo, admissTimes, ledger, infantFlag, execUnit));
|
|
|
- weiGuiFeiYongFenXi.getWeiXieDaiYuanLiuShui().addAll(dao.weiXieDaiYuanLiuShuiYaoPing(inpatientNo, admissTimes, ledger, infantFlag, execUnit));
|
|
|
+ weiGuiFeiYongFenXi.getWeiXieDaiYuanLiuShui().addAll(dao.weiXieDaiYuanLiuShuiXiangMu(inpatientNo, admissTimes, ledger, infantFlag, keShi));
|
|
|
+ weiGuiFeiYongFenXi.getWeiXieDaiYuanLiuShui().addAll(dao.weiXieDaiYuanLiuShuiYaoPing(inpatientNo, admissTimes, ledger, infantFlag, keShi));
|
|
|
return ResultVoUtil.success(weiGuiFeiYongFenXi);
|
|
|
}
|
|
|
|
|
@@ -654,8 +663,10 @@ public class XiangMuLuRuService {
|
|
|
List<ZyDetailCharge> shuJuXinXi = dao.piPeiXinXi(inpatientNo, zyDetailCharge.getAdmissTimes(), zyDetailCharge.getLedgerSn(), infantFlag, detailSnList);
|
|
|
BigDecimal chargeFeeSum = new BigDecimal(0);
|
|
|
BigDecimal chargeAmountSum = new BigDecimal(0);
|
|
|
+ List<Integer> yongHuJueSe = dao.huoQuJueSe(TokenUtil.getTokenUserId());
|
|
|
+ List<String> zhiXinKeShi = dao.chaXunZhiZXinKeShi(zyDetailCharge.getDeptCode());
|
|
|
for (ZyDetailCharge detailCharge : shuJuXinXi) {
|
|
|
- ResultVo<String> LOGICAL_ERROR = getStringResultVo(zyDetailCharge, detailCharge);
|
|
|
+ ResultVo<String> LOGICAL_ERROR = getStringResultVo(yongHuJueSe, zhiXinKeShi, zyDetailCharge, detailCharge);
|
|
|
if (LOGICAL_ERROR != null) return LOGICAL_ERROR;
|
|
|
if (detailCharge.getOriDetailSn() != null || detailCharge.getTransFlagYb().equals("2")) {
|
|
|
return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号为:{%d},已被退费请重新选择。", detailCharge.getDetailSn()));
|