From 813617a83730cf0cd2caaf48545d7e2ce7faae82 Mon Sep 17 00:00:00 2001 From: zhaoyun Date: Thu, 28 May 2026 09:55:26 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20Bug=20#609=20-=20=E5=87=BA=E9=99=A2?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=20Index:0=20IndexOutOfBoundsException?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Root Cause: SpecialAdviceAppServiceImpl.saveLeaveHospitalOrders() 在第 436 行调用 .getRecords().get(0) 时,如果 getAdviceBaseInfo 返回空列表,会抛出 IndexOutOfBoundsException。 Fix: 1. 用 CollectionUtils.isEmpty() 判空,空时返回友好错误提示 2. 修复 endTime = endTime 的无操作逻辑,改为默认当前时间 --- .../appservice/impl/SpecialAdviceAppServiceImpl.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/regdoctorstation/appservice/impl/SpecialAdviceAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/regdoctorstation/appservice/impl/SpecialAdviceAppServiceImpl.java index d2d374ecc..97c57aa63 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/regdoctorstation/appservice/impl/SpecialAdviceAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/regdoctorstation/appservice/impl/SpecialAdviceAppServiceImpl.java @@ -28,6 +28,7 @@ import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; +import org.springframework.util.CollectionUtils; import java.util.stream.Collectors; /** @@ -400,7 +401,7 @@ public class SpecialAdviceAppServiceImpl implements ISpecialAdviceAppService { // 计划出院时间 Date endTime = leaveHospitalParam.getEndTime(); if (endTime == null) { - endTime = endTime; + endTime = new Date(); } // 就诊id Long encounterId = leaveHospitalParam.getEncounterId(); @@ -429,9 +430,12 @@ public class SpecialAdviceAppServiceImpl implements ISpecialAdviceAppService { } // 出院的医嘱信息 - AdviceBaseDto activityAdviceBaseDto = iDoctorStationAdviceAppService.getAdviceBaseInfo(null, null, null, - List.of(transferOrganizationDefinitionId), null, 1, 1, Whether.NO.getValue(), List.of(3), null, null).getRecords() - .get(0); + List adviceList = iDoctorStationAdviceAppService.getAdviceBaseInfo(null, null, null, + List.of(transferOrganizationDefinitionId), null, 1, 1, Whether.NO.getValue(), List.of(3), null, null).getRecords(); + if (CollectionUtils.isEmpty(adviceList)) { + return R.fail("未找到出院医嘱定义数据,请确认诊疗目录中已配置出院医嘱"); + } + AdviceBaseDto activityAdviceBaseDto = adviceList.get(0); // 保存出院医嘱请求 ServiceRequest serviceRequest = new ServiceRequest(); serviceRequest.setStatusEnum(RequestStatus.DRAFT.getValue());// 请求状态