From bfae31448c3b8bbe70a66af02d1c56fc34ff169f Mon Sep 17 00:00:00 2001 From: wangjian963 <15215920+aprilry@user.noreply.gitee.com> Date: Mon, 8 Jun 2026 10:46:21 +0800 Subject: [PATCH] =?UTF-8?q?fix(#593):=20=E5=8F=96=E6=B6=88=E5=81=9C?= =?UTF-8?q?=E5=98=B1=E6=8A=A4=E5=A3=AB=E7=AB=99=E6=A0=A1=E9=AA=8C=E6=94=B9?= =?UTF-8?q?=E7=94=A8RequestStatus=E6=9B=BF=E4=BB=A3DispenseStatus"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 430d3b396330e283f0abe239acdb2262cf1b80e6. --- .../impl/AdviceManageAppServiceImpl.java | 34 ++++++++++++++----- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/regdoctorstation/appservice/impl/AdviceManageAppServiceImpl.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/regdoctorstation/appservice/impl/AdviceManageAppServiceImpl.java index 980e97ba7..621ca017e 100755 --- a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/regdoctorstation/appservice/impl/AdviceManageAppServiceImpl.java +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/regdoctorstation/appservice/impl/AdviceManageAppServiceImpl.java @@ -1165,18 +1165,34 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService { = activityList.stream().map(AdviceBatchOpParam::getRequestId).collect(Collectors.toList()); // ============ 前置校验 ============ - // 1. 护士站校验:查询药品发放记录,确认护士站是否已执行停止核对(发药) + // 1. 护士站校验:确认医嘱请求仍处于"停止"状态,未被护士核对处理 + // 修正:不再基于 Dispense 历史状态校验,改为直接检查 Request 的当前状态 + if (!medicineRequestIds.isEmpty()) { + List medicineRequestList = iMedicationRequestService.list( + new LambdaQueryWrapper() + .select(MedicationRequest::getId, MedicationRequest::getStatusEnum) + .in(MedicationRequest::getId, medicineRequestIds)); + for (MedicationRequest mr : medicineRequestList) { + if (!RequestStatus.STOPPED.getValue().equals(mr.getStatusEnum())) { + throw new ServiceException("护士站已确认停止该医嘱,无法取消停嘱!"); + } + } + } + if (!activityRequestIds.isEmpty()) { + List activityRequestList = iServiceRequestService.list( + new LambdaQueryWrapper() + .select(ServiceRequest::getId, ServiceRequest::getStatusEnum) + .in(ServiceRequest::getId, activityRequestIds)); + for (ServiceRequest sr : activityRequestList) { + if (!RequestStatus.STOPPED.getValue().equals(sr.getStatusEnum())) { + throw new ServiceException("护士站已确认停止该医嘱,无法取消停嘱!"); + } + } + } + // 2. 药房端校验:如果已有退药/退费记录,说明药房已处理 if (!medicineRequestIds.isEmpty()) { List dispenseList = iMedicationDispenseService.selectByRequestIdList(medicineRequestIds); for (MedicationDispense dispense : dispenseList) { - // 如果发放状态 >= COMPLETED(4),说明护士站已发药/已确认停止 - if (dispense.getStatusEnum() != null && dispense.getStatusEnum() >= DispenseStatus.COMPLETED.getValue() - && !DispenseStatus.ON_HOLD.getValue().equals(dispense.getStatusEnum()) - && !DispenseStatus.STOPPED.getValue().equals(dispense.getStatusEnum()) - && !DispenseStatus.CANCELLED.getValue().equals(dispense.getStatusEnum())) { - throw new ServiceException("护士站已确认停止该医嘱,无法取消停嘱!"); - } - // 2. 药房端校验:如果已有退药/退费记录,说明药房已处理 if (DispenseStatus.RETURNED.getValue().equals(dispense.getStatusEnum()) || DispenseStatus.REFUNDED.getValue().equals(dispense.getStatusEnum()) || DispenseStatus.PART_REFUND.getValue().equals(dispense.getStatusEnum())) {