|
@@ -266,10 +266,19 @@ public class YfWardPrescriptionServiceImpl implements YfWardPrescriptionService
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<YzActOrderCyDetailVo> queryZyDrugCy(String pageNo) {
|
|
|
+ public List<YzActOrderCyDetailVo> queryZyDrugCy(String pageNo, String submitFlag) {
|
|
|
List<YzActOrderCyDetailVo> yzActOrderCyDetailVos = new ArrayList<>();
|
|
|
YzActOrderCy yzActOrderCy = yzActOrderCyMapper.selectYzActOrderCyByPageNo(pageNo);
|
|
|
- List<YzActOrderCyDetail> yzActOrderCyDetails = yzActOrderCyDetailMapper.selectYzActOrderCyDetail(yzActOrderCy.getOrderNo());
|
|
|
+ List<YzActOrderCyDetail> yzActOrderCyDetails;
|
|
|
+ // 中草药退药
|
|
|
+ if("T".equals(yzActOrderCy.getStatusFlag()) && "3".equals(submitFlag)){
|
|
|
+ yzActOrderCyDetails = yzActOrderCyDetailMapper.selectYzActOrderCyDetailTy(yzActOrderCy.getOrderNo());
|
|
|
+ } else if("5".equals(submitFlag)){
|
|
|
+ // 查询已退药
|
|
|
+ yzActOrderCyDetails = yzActOrderCyDetailMapper.selectYpZyPatientTy(yzActOrderCy.getOrderNo());
|
|
|
+ } else {
|
|
|
+ yzActOrderCyDetails = yzActOrderCyDetailMapper.selectYzActOrderCyDetail(yzActOrderCy.getOrderNo());
|
|
|
+ }
|
|
|
for (int i = 0; i < yzActOrderCyDetails.size(); i++) {
|
|
|
YzActOrderCyDetail yzActOrderCyDetail = yzActOrderCyDetails.get(i);
|
|
|
YzActOrderCyDetailVo vo = new YzActOrderCyDetailVo();
|
|
@@ -688,6 +697,16 @@ public class YfWardPrescriptionServiceImpl implements YfWardPrescriptionService
|
|
|
Date now = new Date();
|
|
|
Map<String, Object> resultMap = new HashMap<>();
|
|
|
YzActOrderCy yzActOrderCy = yzActOrderCyMapper.selectYzActOrderCyByPageNo(pageNo);
|
|
|
+ // 中草药拒绝退药
|
|
|
+ if(isTy == 2 && "T".equals(yzActOrderCy.getStatusFlag())){
|
|
|
+ int s = yzActOrderCyMapper.updateChargeStatus(now, userCode, "N", pageNo);
|
|
|
+ if(s == 0){
|
|
|
+ throw new MzException("拒绝退药失败,请检查!");
|
|
|
+ }
|
|
|
+ resultMap.put("code", 0);
|
|
|
+ resultMap.put("message", "拒绝退药成功!");
|
|
|
+ return resultMap;
|
|
|
+ }
|
|
|
if(isTy == 0){
|
|
|
if(yzActOrderCy != null && yzActOrderCy.getQuantity() == 0d){
|
|
|
throw new MzException("药单发药剂数为0,请检查!");
|
|
@@ -701,6 +720,10 @@ public class YfWardPrescriptionServiceImpl implements YfWardPrescriptionService
|
|
|
if (null == zyActpatient) {
|
|
|
zyActpatient = zyActpatientMapper.selectByInpatientNo(ZyActpatient.ZY_INACTPATIENT, yzActOrderCy.getInpatientNo(), yzActOrderCy.getAdmissTimes());
|
|
|
}
|
|
|
+ // 中草药退药
|
|
|
+ if("T".equals(yzActOrderCy.getStatusFlag())){
|
|
|
+ isTy = 99;
|
|
|
+ }
|
|
|
if (isTy == 0) {
|
|
|
YzActOrderCy cy = yzActOrderCyMapper.selectYzActOrderCyByPageNoAndFour(pageNo, "4");
|
|
|
if(cy != null){
|
|
@@ -723,11 +746,42 @@ public class YfWardPrescriptionServiceImpl implements YfWardPrescriptionService
|
|
|
actpatient.setCharge2(multiply);
|
|
|
actpatient.setTableName(tableName);
|
|
|
zyActpatientMapper.updateZyActpatientZy(actpatient);
|
|
|
+ } if(isTy == 99){
|
|
|
+ YzActOrderCy cy = yzActOrderCyMapper.selectYzActOrderCyByPageNoAndFour(pageNo, "T");
|
|
|
+ if(cy != null){
|
|
|
+ throw new MzException("确认退药失败,请勿重复退药!药单号:" + pageNo);
|
|
|
+ }
|
|
|
+ // 退费
|
|
|
+ BigDecimal m = DecimalUtil.minus(BigDecimal.ZERO, multiply);
|
|
|
+ ZyLedgerFile zyLedgerFile = new ZyLedgerFile();
|
|
|
+ zyLedgerFile.setInpatientNo(yzActOrderCy.getInpatientNo());
|
|
|
+ zyLedgerFile.setAdmissTimes(yzActOrderCy.getAdmissTimes());
|
|
|
+ zyLedgerFile.setLedgerSn(ledgerSn);
|
|
|
+ zyLedgerFile.setTotalCharge(m);
|
|
|
+ zyLedgerFile.setBalance(m);
|
|
|
+ zyLedgerFile.setCharge2(m);
|
|
|
+ zyLedgerFileMapper.updateZyLedgerFileZy(zyLedgerFile);
|
|
|
+ ZyActpatient actpatient = new ZyActpatient();
|
|
|
+ actpatient.setInpatientNo(yzActOrderCy.getInpatientNo());
|
|
|
+ actpatient.setAdmissTimes(yzActOrderCy.getAdmissTimes());
|
|
|
+ actpatient.setTotalCharge(m);
|
|
|
+ actpatient.setBalance(m);
|
|
|
+ actpatient.setCharge2(m);
|
|
|
+ actpatient.setTableName(tableName);
|
|
|
+ zyActpatientMapper.updateZyActpatientZy(actpatient);
|
|
|
}
|
|
|
- if (yzActOrderCyMapper.updateChargeStatus(now, userCode, "4", pageNo) == 0) {
|
|
|
- throw new MzException("确认发药失败,更新药单状态异常"+pageNo);
|
|
|
- }else{
|
|
|
- log.info("确认药单成功,药单号:{}", pageNo);
|
|
|
+ if(isTy == 99){
|
|
|
+ if (yzActOrderCyMapper.updateChargeStatus(now, userCode, "5", pageNo) == 0) {
|
|
|
+ throw new MzException("确认退药失败,更新药单状态异常"+pageNo);
|
|
|
+ }else{
|
|
|
+ log.info("确认药单退药成功,药单号:{}", pageNo);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (yzActOrderCyMapper.updateChargeStatus(now, userCode, "4", pageNo) == 0) {
|
|
|
+ throw new MzException("确认发药失败,更新药单状态异常"+pageNo);
|
|
|
+ }else{
|
|
|
+ log.info("确认药单成功,药单号:{}", pageNo);
|
|
|
+ }
|
|
|
}
|
|
|
for (int i = 0; i < yzActOrderCyDetails.size(); i++) {
|
|
|
YzActOrderCyDetail yzActOrderCyDetail = yzActOrderCyDetails.get(i);
|
|
@@ -755,14 +809,32 @@ public class YfWardPrescriptionServiceImpl implements YfWardPrescriptionService
|
|
|
log.info("确认药单,更新库存成功[{}]", JSONObject.valueToString(yzActOrderCyDetail));
|
|
|
}
|
|
|
supplyCode = "Z";
|
|
|
+ } else if(isTy == 99){
|
|
|
+ // 退药库存
|
|
|
+ quantity = yzActOrderCyDetail.getQuantity() * yzActOrderCy.getQuantity();
|
|
|
+ int j = ypBaseYfMapper.updateStockAmount(yzActOrderCyDetail.getChargeCode(), yzActOrderCyDetail.getSerial(), yzActOrderCy.getGroupNo(),
|
|
|
+ yzActOrderCyDetail.getQuantity() * yzActOrderCy.getQuantity(), BigDecimal.valueOf(quantity * yzActOrderCyDetail.getUnitPrice()));
|
|
|
+ if (j == 0) {
|
|
|
+ throw new MzException("确认退药失败,更新药房库存异常");
|
|
|
+ }else{
|
|
|
+ log.info("确认药单,更新库存成功[{}]", JSONObject.valueToString(yzActOrderCyDetail));
|
|
|
+ }
|
|
|
+ supplyCode = "t";
|
|
|
}
|
|
|
ypZyPatient.setSupplyCode(supplyCode);
|
|
|
- ypZyPatient.setAmount(quantity);
|
|
|
+ if(isTy == 99){
|
|
|
+ ypZyPatient.setAmount(-quantity);
|
|
|
+ // 药单类型为ZT(中草药退药)
|
|
|
+ ypZyPatient.setPageType("ZT");
|
|
|
+ } else {
|
|
|
+ ypZyPatient.setAmount(quantity);
|
|
|
+ // 药单类型为Z(中草药发药)
|
|
|
+ ypZyPatient.setPageType("Z");
|
|
|
+ }
|
|
|
ypZyPatient.setInfantFlag(!yzActOrderCy.getInpatientNo().contains("$") ? "0" : "1");
|
|
|
ypZyPatient.setDrawer(yzActOrderCy.getDoctorCode());
|
|
|
ypZyPatient.setKeeper(userCode);
|
|
|
- ypZyPatient.setAlwaysFlag("t").setDrugClass("j").setAcctSign("2").setSelfFlag("1").setPaySelf("0").setPageType("Z")
|
|
|
- .setJyFlag("0").setConfirmTime(now);
|
|
|
+ ypZyPatient.setAlwaysFlag("t").setDrugClass("j").setAcctSign("2").setSelfFlag("1").setPaySelf("0").setJyFlag("0").setConfirmTime(now);
|
|
|
ypZyPatient.setActOrderNo(yzActOrderCy.getOrderNo());
|
|
|
ypZyPatient.setPageNo(Integer.parseInt(pageNo));
|
|
|
ypZyPatient.setGroupNo(yzActOrderCy.getGroupNo());
|
|
@@ -814,6 +886,42 @@ public class YfWardPrescriptionServiceImpl implements YfWardPrescriptionService
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ if(isTy == 99){
|
|
|
+ // 退药产生退费记录
|
|
|
+ List<ZyDetailCharge> fyList = zyDetailChargeMapper.selectZyDetailChargeByOrderCode(
|
|
|
+ yzActOrderCy.getInpatientNo(), yzActOrderCy.getAdmissTimes(), yzActOrderCy.getOrderNo());
|
|
|
+ for(ZyDetailCharge fy : fyList){
|
|
|
+ ZyDetailCharge fyNew = new ZyDetailCharge();
|
|
|
+ BeanUtils.copyProperties(fy, fyNew);
|
|
|
+ int d = zyDetailChargeMapper.updateChargeOriDetailSn(fy.getInpatientNo(), fy.getAdmissTimes(), fy.getLedgerSn(), fy.getDetailSn());
|
|
|
+ if (d == 0) {
|
|
|
+ throw new MzException("确认退药失败,更新费用退费标志异常!");
|
|
|
+ }
|
|
|
+ fyNew.setLedgerSn(zyLedgerFileMapper.selectMaxLedgerSn(fy.getInpatientNo(), fy.getAdmissTimes()));
|
|
|
+ fyNew.setOriDetailSn(fy.getDetailSn());
|
|
|
+ int maxDetailSn = zyDetailChargeMapper.selectMaxDetailSn(fy.getInpatientNo(), fy.getAdmissTimes());
|
|
|
+ fyNew.setDetailSn(maxDetailSn + 1);
|
|
|
+ fyNew.setChargeAmount(-fy.getChargeAmount());
|
|
|
+ fyNew.setChargeFee(DecimalUtil.minus(BigDecimal.ZERO, fy.getChargeFee()));
|
|
|
+ fyNew.setChargeDate(new Date());
|
|
|
+ fyNew.setGenTime(new Date());
|
|
|
+ // 保存退费记录
|
|
|
+ int f = zyDetailChargeMapper.insertZyDetailCharge(fyNew);
|
|
|
+ if (f == 0) {
|
|
|
+ throw new MzException("确认退药失败,保存退费记录异常!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 删除医嘱
|
|
|
+ int g = yzActOrderMapper.deleteYzActOrderByActOrderNo(yzActOrderCy.getOrderNo());
|
|
|
+ if (g == 0) {
|
|
|
+ g = yzActOrderMapper.deleteYzInActOrderByActOrderNo(yzActOrderCy.getOrderNo());
|
|
|
+ if (g == 0) {
|
|
|
+ throw new MzException("确认退药失败,更新医嘱记录标志异常!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
resultMap.put("code", 0);
|
|
|
resultMap.put("message", "保存领药单发药数据成功");
|
|
|
return resultMap;
|