Fix Bug #491: 【执行科室配置】保存配置时系统报错

根因:时间冲突检查中 organizationService.getById() 返回 null 时直接调用 getName() 导致 NPE;
同时 getOrgLocListByOrgIdAndActivityDefinitionId 方法只按 activityDefinitionId 查询,未按 organizationId 过滤,
导致跨科室误判冲突且可能查询到已删除机构的脏数据。

修复:
1. 增加 org.getName() 前的双重判空(org != null && org.getName() != null)
2. getOrgLocListByOrgIdAndActivityDefinitionId 增加 organizationId 参数并加入查询条件

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-17 19:22:15 +08:00
parent b551872a1f
commit 0a777ee700
4 changed files with 56 additions and 4 deletions

View File

@@ -36,6 +36,6 @@ public interface IOrganizationLocationService extends IService<OrganizationLocat
* @param activityDefinitionId 诊疗定义id
* @return 诊疗的执行科室列表
*/
List<OrganizationLocation> getOrgLocListByOrgIdAndActivityDefinitionId(Long activityDefinitionId);
List<OrganizationLocation> getOrgLocListByOrgIdAndActivityDefinitionId(Long organizationId, Long activityDefinitionId);
}

View File

@@ -53,12 +53,14 @@ public class OrganizationLocationServiceImpl extends ServiceImpl<OrganizationLoc
/**
* 查询诊疗的执行科室列表
*
* @param organizationId 机构id
* @param activityDefinitionId 诊疗定义id
* @return 诊疗的执行科室列表
*/
@Override
public List<OrganizationLocation> getOrgLocListByOrgIdAndActivityDefinitionId(Long activityDefinitionId) {
public List<OrganizationLocation> getOrgLocListByOrgIdAndActivityDefinitionId(Long organizationId, Long activityDefinitionId) {
return baseMapper.selectList(new LambdaQueryWrapper<OrganizationLocation>()
.eq(OrganizationLocation::getOrganizationId, organizationId)
.eq(OrganizationLocation::getActivityDefinitionId, activityDefinitionId));
}