From eaac16769d4267a26822344420a57f99b40507b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=B3=E7=BE=BD?= <关羽@gentronhealth.com> Date: Mon, 11 May 2026 14:01:15 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20Bug=20#491:=20=E3=80=90=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E7=A7=91=E5=AE=A4=E9=85=8D=E7=BD=AE=E3=80=91=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=97=B6=E7=B3=BB=E7=BB=9F=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因: addOrEditOrgLoc 方法中 organizationService.getById() 返回 null 时 直接调用 .getName() 导致 NullPointerException。当数据库中某条执行科室配置 关联的 organizationId 对应的科室记录已被删除时触发此问题。 修复: 在调用 getName() 前增加 null 检查,返回"未知科室"作为降级提示。 Co-Authored-By: Claude Opus 4.7 --- .../impl/OrganizationLocationAppServiceImpl.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/OrganizationLocationAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/OrganizationLocationAppServiceImpl.java index 7c76d027..c84f11c9 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/OrganizationLocationAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/OrganizationLocationAppServiceImpl.java @@ -135,7 +135,8 @@ public class OrganizationLocationAppServiceImpl implements IOrganizationLocation BeanUtils.copyProperties(orgLocQueryDto, orgLoc); Long activityDefinitionId = orgLoc.getActivityDefinitionId(); - String activityName = activityDefinitionId != null ? activityDefinitionMapper.selectById(activityDefinitionId).getName() : ""; + String activityName = activityDefinitionId != null + ? activityDefinitionMapper.selectById(activityDefinitionId).getName() : ""; List organizationLocationList = organizationLocationService.getOrgLocListByOrgIdAndActivityDefinitionId(orgLoc.getActivityDefinitionId()); @@ -147,8 +148,8 @@ public class OrganizationLocationAppServiceImpl implements IOrganizationLocation for (OrganizationLocation organizationLocation : organizationLocationList) if (DateTimeUtils.isOverlap(organizationLocation.getStartTime(), organizationLocation.getEndTime(), orgLoc.getStartTime(), orgLoc.getEndTime())) { - String organizationName = - organizationService.getById(organizationLocation.getOrganizationId()).getName(); + Organization org = organizationService.getById(organizationLocation.getOrganizationId()); + String organizationName = org != null ? org.getName() : "未知科室"; return R.fail("当前诊疗:" + activityName + CommonConstants.Common.DASH + orgLoc.getStartTime() + CommonConstants.Common.DASH + orgLoc.getEndTime() + "与" + organizationName + "时间冲突"); }