fix(#782): guanyu (文件合入)

This commit is contained in:
2026-06-19 16:53:53 +08:00
committed by 华佗
parent 8fafa12337
commit c2ed6e04b0

View File

@@ -1193,6 +1193,30 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
.set(DeviceRequest::getStatusEnum, RequestStatus.PENDING_STOP.getValue())
.set(DeviceRequest::getUpdateBy, stopUserName));
}
// 🔧 Bug #782 修复:兜底处理未被以上任何类型过滤器捕获的医嘱
// 当批量停嘱包含非标准 adviceType如 type=31、type=7 等)时,这些医嘱
// 不会被药品/诊疗/耗材任一组捕获,导致状态未更新为 PENDING_STOP造成状态不一致
// 将所有未匹配类型的医嘱统一按诊疗请求ServiceRequest处理
Set<Long> handledIds = new HashSet<>();
handledIds.addAll(medicineRequestIds);
handledIds.addAll(activityRequestIds);
handledIds.addAll(deviceRequestIds);
List<Long> fallbackRequestIds = paramList.stream()
.map(AdviceBatchOpParam::getRequestId)
.filter(Objects::nonNull)
.filter(id -> !handledIds.contains(id))
.collect(Collectors.toList());
if (!fallbackRequestIds.isEmpty()) {
log.info("Bug #782 兜底停嘱处理未匹配类型的医嘱requestIds: {}, 共{}条",
fallbackRequestIds, fallbackRequestIds.size());
iServiceRequestService.update(new LambdaUpdateWrapper<ServiceRequest>()
.in(ServiceRequest::getId, fallbackRequestIds)
.set(ServiceRequest::getOccurrenceEndTime, stopTime)
.set(ServiceRequest::getStatusEnum, RequestStatus.PENDING_STOP.getValue())
.set(ServiceRequest::getUpdateBy, stopUserName));
}
return R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, new Object[]{"医嘱停止"}));
}