Fix Bug #491: 【执行科室配置】保存配置时系统报错
添加根因分析报告,确认修复已在历史 commit (eaac1676,982e9059) 中完成。 所有 NPE 防护已到位:organizationId 前置校验、activityDefinition 判空、 organization 判空降级、stream null 过滤。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
45
.analysis/bug491_analysis.md
Normal file
45
.analysis/bug491_analysis.md
Normal file
@@ -0,0 +1,45 @@
|
||||
# Bug #491 分析报告
|
||||
|
||||
## Bug 信息
|
||||
- **Title**: 【执行科室配置】保存配置时系统报错
|
||||
- **Severity**: 3 | **Priority**: 3 | **Type**: codeerror
|
||||
- **Status**: resolved (已被修复)
|
||||
|
||||
## 错误信息
|
||||
```
|
||||
Cannot invoke "com.openhis.administration.domain.Organization.getName()" because
|
||||
the return value of "com.openhis.administration.service.impl.OrganizationServiceImpl.getById(...)" is null
|
||||
```
|
||||
|
||||
## 根因分析
|
||||
|
||||
在 `OrganizationLocationAppServiceImpl.addOrEditOrgLoc()` 方法中,存在多处 `organizationService.getById()` 和 `activityDefinitionMapper.selectById()` 的返回值未做 null 检查就直接调用 `.getName()` 的情况:
|
||||
|
||||
1. **时间冲突检查**:当数据库中某条执行科室配置关联的 `organizationId` 对应的科室记录已被删除时,`organizationService.getById()` 返回 null,直接调用 `.getName()` 导致 NPE。
|
||||
2. **activityDefinition 查询**:`activityDefinitionMapper.selectById()` 可能返回 null,直接调用 `.getName()` 导致 NPE。
|
||||
3. **organizationLocationInit()**:stream 中未过滤 name 为 null 的 Organization 记录。
|
||||
4. **缺少 organizationId 前置校验**:传入空 organizationId 时未提前拦截。
|
||||
|
||||
## 修复内容(已在以下 commit 中完成)
|
||||
|
||||
**eaac1676** (关羽): 修复时间冲突检查中的 organization NPE
|
||||
- 将 `organizationService.getById().getName()` 改为先赋值再判空
|
||||
|
||||
**982e9059** (刘备): 补充其余 NPE 防护
|
||||
- 第74行:stream 中增加 `.filter(organization -> organization != null && organization.getName() != null)`
|
||||
- 第149-151行:增加 `organizationId == null` 前置校验,返回"请选择执行科室"
|
||||
- 第157-159行:将 `activityDefinitionMapper.selectById().getName()` 改为先赋值再判空
|
||||
|
||||
## 当前代码状态确认
|
||||
|
||||
当前 HEAD (ede95be8) 已包含上述所有修复,具体代码位置:
|
||||
- `OrganizationLocationAppServiceImpl.java:149` - organizationId null 校验
|
||||
- `OrganizationLocationAppServiceImpl.java:157-159` - activityDefinition null 安全
|
||||
- `OrganizationLocationAppServiceImpl.java:171-172` - organization null 安全
|
||||
- `OrganizationLocationAppServiceImpl.java:74` - stream null 过滤
|
||||
|
||||
## 结论
|
||||
|
||||
**Bug #491 已修复**。所有相关的 NPE 防护均已到位,工作目录与 HEAD 一致,无待提交变更。
|
||||
|
||||
修复结果:✅ 已完成(历史 commit)
|
||||
Reference in New Issue
Block a user