fix(document): 修复文书定义树形列表查询逻辑

- 添加了对organizationId和useRanges参数的空值检查和日志警告
- 在SQL查询中增加了isValid字段过滤条件
- 添加了对primaryMenuEnum参数的条件查询支持
- 增加了详细的请求参数和查询结果日志记录
- 优化了参数传递的一致性,使用变量替代直接访问对象属性
This commit is contained in:
2026-03-13 09:39:55 +08:00
parent 879d31b51d
commit b2dec2667a
2 changed files with 29 additions and 2 deletions

View File

@@ -245,15 +245,37 @@ public class DocDefinitionAppServiceImpl implements IDocDefinitionAppService {
public R<?> getTreeList(DocDefinitonParam param) { public R<?> getTreeList(DocDefinitonParam param) {
// 1. 获取当前登录用户的医院ID避免跨医院查询 // 1. 获取当前登录用户的医院ID避免跨医院查询
Long hospitalId = SecurityUtils.getLoginUser().getHospitalId(); Long hospitalId = SecurityUtils.getLoginUser().getHospitalId();
Long organizationId = param.getOrganizationId();
List<Integer> useRanges = param.getUseRanges();
log.info("获取文书定义树形列表 - 请求参数: hospitalId={}, organizationId={}, useRanges={}, name={}, primaryMenuEnum={}",
hospitalId, organizationId, useRanges, param.getName(), param.getPrimaryMenuEnum());
if (hospitalId == null) { if (hospitalId == null) {
log.warn("当前登录用户未关联医院ID将使用默认值"); log.warn("当前登录用户未关联医院ID将使用默认值");
// 设置默认医院ID为1或其他合适的默认值 // 设置默认医院ID为1或其他合适的默认值
hospitalId = 1L; hospitalId = 1L;
} }
if (organizationId == null || organizationId == 0) {
log.warn("organizationId为空或0将跳过医院过滤和使用范围过滤");
}
if (useRanges == null || useRanges.isEmpty()) {
log.warn("useRanges为空可能返回所有使用范围的文书");
}
// 2. 数据库查询文书定义列表 // 2. 数据库查询文书定义列表
List<DocDefinitionDto> docList = docDefinitionAppMapper.getDefinationList(param.getUseRanges(), List<DocDefinitionDto> docList = docDefinitionAppMapper.getDefinationList(useRanges,
param.getOrganizationId(), hospitalId, param.getName(), param.getPrimaryMenuEnum()); organizationId, hospitalId, param.getName(), param.getPrimaryMenuEnum());
log.info("获取文书定义树形列表 - 查询结果: 记录数={}", docList != null ? docList.size() : 0);
if (docList != null && !docList.isEmpty()) {
for (DocDefinitionDto doc : docList) {
log.debug("文书: id={}, name={}, useRangeEnum={}, hospitalId={}",
doc.getId(), doc.getName(), doc.getUseRangeEnum(), doc.getHospitalId());
}
}
// 3. 构建树形结构(空列表时返回空树,避免空指针) // 3. 构建树形结构(空列表时返回空树,避免空指针)
List<DirectoryNode> treeNodes = new ArrayList<>(); List<DirectoryNode> treeNodes = new ArrayList<>();

View File

@@ -30,6 +30,7 @@
AND ddo.delete_flag = '0' AND ddo.delete_flag = '0'
WHERE dd.delete_flag = '0' WHERE dd.delete_flag = '0'
AND dd.is_valid = 0
<!-- 关键:医院 + 科室联合可见 --> <!-- 关键:医院 + 科室联合可见 -->
<if test="organizationId != null and organizationId != 0"> <if test="organizationId != null and organizationId != 0">
@@ -80,6 +81,10 @@
AND dd.name LIKE CONCAT('%', #{name}, '%') AND dd.name LIKE CONCAT('%', #{name}, '%')
</if> </if>
<if test="primaryMenuEnum != null">
AND dd.primary_menu_enum = #{primaryMenuEnum}
</if>
GROUP BY dd.id, dd.primary_menu_enum, dd.sub_menu GROUP BY dd.id, dd.primary_menu_enum, dd.sub_menu
ORDER BY dd.display_order ORDER BY dd.display_order