Fix Bug #487: 【临床医嘱】诊疗类医嘱签发后,列表状态未实时刷新为"已签发"
诊疗类医嘱(handService)签发时仅依赖saveOrUpdate更新statusEnum, 但该方式对已有记录可能未正确将statusEnum更新为ACTIVE(2)。 修复:在handService方法末尾使用LambdaUpdateWrapper批量显式更新 所有已处理ServiceRequest的statusEnum为ACTIVE(签发)/DRAFT(保存), 与ServiceRequestServiceImpl中activeStatusEnum/updateDraftStatusBatch 等方法的实现模式保持一致。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -511,6 +511,9 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
|
|||||||
// 签发操作
|
// 签发操作
|
||||||
boolean is_sign = AdviceOpType.SIGN_ADVICE.getCode().equals(adviceOpType);
|
boolean is_sign = AdviceOpType.SIGN_ADVICE.getCode().equals(adviceOpType);
|
||||||
|
|
||||||
|
// 收集已处理的requestId,用于批量更新状态
|
||||||
|
List<Long> processedRequestIds = new ArrayList<>();
|
||||||
|
|
||||||
// 声明长期医嘱诊疗请求
|
// 声明长期医嘱诊疗请求
|
||||||
ServiceRequest longServiceRequest;
|
ServiceRequest longServiceRequest;
|
||||||
// 新增 + 修改 (长期医嘱)
|
// 新增 + 修改 (长期医嘱)
|
||||||
@@ -555,6 +558,9 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
iServiceRequestService.saveOrUpdate(longServiceRequest);
|
iServiceRequestService.saveOrUpdate(longServiceRequest);
|
||||||
|
if (longServiceRequest.getId() != null) {
|
||||||
|
processedRequestIds.add(longServiceRequest.getId());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 声明临时医嘱诊疗请求
|
// 声明临时医嘱诊疗请求
|
||||||
@@ -603,6 +609,9 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
iServiceRequestService.saveOrUpdate(tempServiceRequest);
|
iServiceRequestService.saveOrUpdate(tempServiceRequest);
|
||||||
|
if (tempServiceRequest.getId() != null) {
|
||||||
|
processedRequestIds.add(tempServiceRequest.getId());
|
||||||
|
}
|
||||||
|
|
||||||
// 保存时,保存诊疗费用项
|
// 保存时,保存诊疗费用项
|
||||||
if (is_save) {
|
if (is_save) {
|
||||||
@@ -654,6 +663,14 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 批量更新诊疗医嘱状态(使用 update 确保状态字段必定更新)
|
||||||
|
if (!processedRequestIds.isEmpty()) {
|
||||||
|
iServiceRequestService.update(null,
|
||||||
|
new LambdaUpdateWrapper<ServiceRequest>()
|
||||||
|
.set(ServiceRequest::getStatusEnum,
|
||||||
|
is_save ? RequestStatus.DRAFT.getValue() : RequestStatus.ACTIVE.getValue())
|
||||||
|
.in(ServiceRequest::getId, processedRequestIds));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user