|
@@ -154,10 +154,10 @@ public class XiangMuLuRuService {
|
|
|
zhiXinKeShi.add(userInfo.getDeptCode());
|
|
|
}
|
|
|
|
|
|
- List<ZyDetailCharge> xiangMu = new ArrayList<>();
|
|
|
- List<ZyDetailCharge> yaoPin = new ArrayList<>();
|
|
|
+ List<ZyDetailCharge> project = new ArrayList<>();
|
|
|
+ List<ZyDetailCharge> drug = new ArrayList<>();
|
|
|
List<ZyDetailCharge> tuiFeiList = new ArrayList<>();
|
|
|
- List<ZyDetailCharge> yaoPingDan = new ArrayList<>();
|
|
|
+ List<ZyDetailCharge> medicalTechnologyDrugReturnForm = new ArrayList<>();
|
|
|
// 保存被退费的流水号,把这些流水号修改为 -1 代表已经退费了
|
|
|
List<Integer> updateRefundFlag = new ArrayList<>();
|
|
|
// 把 药品 改成 -1 代表已经退了 -2 代表申请 -3 代表拒绝
|
|
@@ -191,21 +191,21 @@ public class XiangMuLuRuService {
|
|
|
if (BigUtils.bigDaYu(item.getOrderNo(), 10)) {
|
|
|
item.setOrderNo(new BigDecimal(0));
|
|
|
}
|
|
|
+ // 00 是项目
|
|
|
if ("00".equals(item.getSerial())) {
|
|
|
- maxDetailSn = setRefund(xiangMu, tuiFeiList, updateRefundFlag, maxDetailSn, item);
|
|
|
+ maxDetailSn = setRefund(project, tuiFeiList, updateRefundFlag, maxDetailSn, item);
|
|
|
} else {
|
|
|
if (item.getOrderNo().equals(new BigDecimal(3))) {
|
|
|
- // todo 口服药不能退
|
|
|
if (!zhiXinKeShi.contains(item.getExecUnit())) {
|
|
|
return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号:【%s】,此药品为医技科室录入,请对应的医技科室退费。", item.getDetailSn()));
|
|
|
} else {
|
|
|
- maxDetailSn = setRefund(xiangMu, tuiFeiList, updateRefundFlag, maxDetailSn, item);
|
|
|
- yaoPingDan.add(item);
|
|
|
+ maxDetailSn = setRefund(project, tuiFeiList, updateRefundFlag, maxDetailSn, item);
|
|
|
+ medicalTechnologyDrugReturnForm.add(item);
|
|
|
}
|
|
|
} else {
|
|
|
- // 数量变成负数
|
|
|
+ // 数量设置为负数
|
|
|
item.setChargeAmount(item.getChargeAmount().negate());
|
|
|
- yaoPin.add(item);
|
|
|
+ drug.add(item);
|
|
|
updateDrugLabel.add(item.getDetailSn());
|
|
|
}
|
|
|
|
|
@@ -213,16 +213,17 @@ public class XiangMuLuRuService {
|
|
|
}
|
|
|
|
|
|
// 护士退药单
|
|
|
- if (ListUtil.notBlank(yaoPin)) {
|
|
|
- Map<String, ZyDetailCharge> getDrugClass = dao.getDrugClass(yaoPin).stream().collect(
|
|
|
+ if (ListUtil.notBlank(drug)) {
|
|
|
+ Map<String, ZyDetailCharge> getDrugClass = dao.getDrugClass(drug).stream().collect(
|
|
|
Collectors.toMap(ZyDetailCharge::getChargeCodeMx, a -> a, (k1, k2) -> k1)
|
|
|
);
|
|
|
|
|
|
- for (ZyDetailCharge item : yaoPin) {
|
|
|
+ for (ZyDetailCharge item : drug) {
|
|
|
ZyDetailCharge a = getDrugClass.get(item.getChargeCodeMx());
|
|
|
if (a == null) {
|
|
|
return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号:【%s】,药品无法退费 原因没有查询到原药品请联系药库,编码为:【%s】。", item.getDetailSn(), item.getChargeCodeMx()));
|
|
|
} else {
|
|
|
+ // 口服药无法退费
|
|
|
if (a.getDrugClass().equals("d")) {
|
|
|
return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号:【%s】,药品无法退费,原因口服药无法退费,开退费医嘱也不行", item.getDetailSn()));
|
|
|
}
|
|
@@ -231,30 +232,31 @@ public class XiangMuLuRuService {
|
|
|
|
|
|
}
|
|
|
|
|
|
- ZyActpatient patientInf = publicServer.huoQuHuanZheXinXi(param.getInpatientNo());
|
|
|
+ ZyActpatient patientInfo = publicServer.huoQuHuanZheXinXi(param.getInpatientNo());
|
|
|
Integer pageNo = publicServer.getTheDrugListNo();
|
|
|
// 药品单号
|
|
|
String groupNo = publicServer.getGroupNo();
|
|
|
// 退药单汇总
|
|
|
- dao.drugReturnForm(pageNo, patientInf.getWard(), TokenUtil.getTokenUserId(), groupNo);
|
|
|
+ dao.drugReturnForm(pageNo, patientInfo.getWard(), TokenUtil.getTokenUserId(), groupNo);
|
|
|
// 退药明细
|
|
|
- dao.detailsOfDrugReturnForm(yaoPin, patientInf.getInpatientNo(), patientInf.getAdmissTimes(),
|
|
|
- patientInf.getName(), patientInf.getBedNo(), patientInf.getWard(),
|
|
|
+ dao.detailsOfDrugReturnForm(drug, patientInfo.getInpatientNo(), patientInfo.getAdmissTimes(),
|
|
|
+ patientInfo.getName(), patientInfo.getBedNo(), patientInfo.getWard(),
|
|
|
infantFlag, groupNo, TokenUtil.getTokenUserId(), pageNo, ledgerSn);
|
|
|
+ // 药品的退药 标准 为 -2 申请退药
|
|
|
dao.genXinZhenShuTuiFeiLiuShui(param.getInpatientNo(), param.getAdmissTimes(), ledgerSn, updateDrugLabel, -2);
|
|
|
- log.info("项目录入==》药品退费,操作人:{},数据:{}", TokenUtil.getTokenUserId(), JSON.toJSONStringWithDateFormat(yaoPin, DateUtil.DEFAULT_PATTERN));
|
|
|
+ log.info("项目录入==》药品退费,操作人:{},数据:{}", TokenUtil.getTokenUserId(), JSON.toJSONStringWithDateFormat(drug, DateUtil.DEFAULT_PATTERN));
|
|
|
}
|
|
|
|
|
|
// 医技科室药品单
|
|
|
- if (ListUtil.notBlank(yaoPingDan)) {
|
|
|
- dao.shenQingYaoPing(param, yaoPingDan, infantFlag, ledgerSn, TokenUtil.getTokenUserId());
|
|
|
+ if (ListUtil.notBlank(medicalTechnologyDrugReturnForm)) {
|
|
|
+ dao.shenQingYaoPing(param, medicalTechnologyDrugReturnForm, infantFlag, ledgerSn, TokenUtil.getTokenUserId());
|
|
|
}
|
|
|
|
|
|
- if (ListUtil.notBlank(xiangMu)) {
|
|
|
- List<List<ZyDetailCharge>> fenGe = ListUtils.partition(xiangMu, 20);
|
|
|
+ if (ListUtil.notBlank(project)) {
|
|
|
+ List<List<ZyDetailCharge>> fenGe = ListUtils.partition(project, 20);
|
|
|
fenGe.forEach(dao::xiangMuTuiFei);
|
|
|
dao.genXinZhenShuTuiFeiLiuShui(param.getInpatientNo(), param.getAdmissTimes(), ledgerSn, updateRefundFlag, -1);
|
|
|
- log.info("项目录入==》项目退费,操作人:{},数据:{}", TokenUtil.getTokenUserId(), JSON.toJSONStringWithDateFormat(xiangMu, DateUtil.DEFAULT_PATTERN));
|
|
|
+ log.info("项目录入==》项目退费,操作人:{},数据:{}", TokenUtil.getTokenUserId(), JSON.toJSONStringWithDateFormat(project, DateUtil.DEFAULT_PATTERN));
|
|
|
}
|
|
|
|
|
|
return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "退费成功。");
|
|
@@ -743,7 +745,6 @@ public class XiangMuLuRuService {
|
|
|
String key = item.getInpatientNo() + item.getAdmissTimes() + item.getDetailSn() + item.getChargeCodeMx();
|
|
|
yuErPiPei.put(key, item);
|
|
|
}
|
|
|
- // TODO: 2022/1/11 这里需要优化 把计算余额的放到程序里面来计算
|
|
|
for (int i = 0, len = zhenShuFeiYong.size(); i < len; i++) {
|
|
|
ZyDetailCharge zy = zhenShuFeiYong.get(i);
|
|
|
String key = zy.getInpatientNo() + zy.getAdmissTimes() + zy.getDetailSn() + zy.getChargeCodeMx();
|