From 6b3f74d2cadca00685f4ef6784625ab470a232e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=B3=E7=BE=BD?= <关羽@gentronhealth.com> Date: Sun, 10 May 2026 17:19:55 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20Bug=20#487:=20=E3=80=90=E4=B8=B4=E5=BA=8A?= =?UTF-8?q?=E5=8C=BB=E5=98=B1=E3=80=91=E8=AF=8A=E7=96=97=E7=B1=BB=E5=8C=BB?= =?UTF-8?q?=E5=98=B1=E7=AD=BE=E5=8F=91=E5=90=8E=EF=BC=8C=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=9C=AA=E5=AE=9E=E6=97=B6=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E4=B8=BA"=E5=B7=B2=E7=AD=BE=E5=8F=91"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 诊疗类医嘱(handService)签发时仅依赖saveOrUpdate更新statusEnum, 但该方式对已有记录可能未正确将statusEnum更新为ACTIVE(2)。 修复:在handService方法末尾使用LambdaUpdateWrapper批量显式更新 所有已处理ServiceRequest的statusEnum为ACTIVE(签发)/DRAFT(保存), 与ServiceRequestServiceImpl中activeStatusEnum/updateDraftStatusBatch 等方法的实现模式保持一致。 Co-Authored-By: Claude Opus 4.7 --- .../impl/AdviceManageAppServiceImpl.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/regdoctorstation/appservice/impl/AdviceManageAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/regdoctorstation/appservice/impl/AdviceManageAppServiceImpl.java index 888de2d1..1428e2ee 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/regdoctorstation/appservice/impl/AdviceManageAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/regdoctorstation/appservice/impl/AdviceManageAppServiceImpl.java @@ -511,6 +511,9 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService { // 签发操作 boolean is_sign = AdviceOpType.SIGN_ADVICE.getCode().equals(adviceOpType); + // 收集已处理的requestId,用于批量更新状态 + List processedRequestIds = new ArrayList<>(); + // 声明长期医嘱诊疗请求 ServiceRequest longServiceRequest; // 新增 + 修改 (长期医嘱) @@ -555,6 +558,9 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService { } } iServiceRequestService.saveOrUpdate(longServiceRequest); + if (longServiceRequest.getId() != null) { + processedRequestIds.add(longServiceRequest.getId()); + } } // 声明临时医嘱诊疗请求 @@ -603,6 +609,9 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService { } } iServiceRequestService.saveOrUpdate(tempServiceRequest); + if (tempServiceRequest.getId() != null) { + processedRequestIds.add(tempServiceRequest.getId()); + } // 保存时,保存诊疗费用项 if (is_save) { @@ -654,6 +663,14 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService { } } + // 批量更新诊疗医嘱状态(使用 update 确保状态字段必定更新) + if (!processedRequestIds.isEmpty()) { + iServiceRequestService.update(null, + new LambdaUpdateWrapper() + .set(ServiceRequest::getStatusEnum, + is_save ? RequestStatus.DRAFT.getValue() : RequestStatus.ACTIVE.getValue()) + .in(ServiceRequest::getId, processedRequestIds)); + } } /**