fix(#593): 取消停嘱护士站校验改用RequestStatus替代DispenseStatus"

This reverts commit 430d3b3963.
This commit is contained in:
wangjian963
2026-06-08 10:46:21 +08:00
parent 320973f973
commit bfae31448c

View File

@@ -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<MedicationRequest> medicineRequestList = iMedicationRequestService.list(
new LambdaQueryWrapper<MedicationRequest>()
.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<ServiceRequest> activityRequestList = iServiceRequestService.list(
new LambdaQueryWrapper<ServiceRequest>()
.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<MedicationDispense> 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())) {