fix(document): 修复文书定义树形列表查询逻辑
- 添加了对organizationId和useRanges参数的空值检查和日志警告 - 在SQL查询中增加了isValid字段过滤条件 - 添加了对primaryMenuEnum参数的条件查询支持 - 增加了详细的请求参数和查询结果日志记录 - 优化了参数传递的一致性,使用变量替代直接访问对象属性
This commit is contained in:
@@ -245,15 +245,37 @@ public class DocDefinitionAppServiceImpl implements IDocDefinitionAppService {
|
||||
public R<?> getTreeList(DocDefinitonParam param) {
|
||||
// 1. 获取当前登录用户的医院ID(避免跨医院查询)
|
||||
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) {
|
||||
log.warn("当前登录用户未关联医院ID,将使用默认值");
|
||||
// 设置默认医院ID为1(或其他合适的默认值)
|
||||
hospitalId = 1L;
|
||||
}
|
||||
|
||||
if (organizationId == null || organizationId == 0) {
|
||||
log.warn("organizationId为空或0,将跳过医院过滤和使用范围过滤");
|
||||
}
|
||||
|
||||
if (useRanges == null || useRanges.isEmpty()) {
|
||||
log.warn("useRanges为空,可能返回所有使用范围的文书");
|
||||
}
|
||||
|
||||
// 2. 数据库查询文书定义列表
|
||||
List<DocDefinitionDto> docList = docDefinitionAppMapper.getDefinationList(param.getUseRanges(),
|
||||
param.getOrganizationId(), hospitalId, param.getName(), param.getPrimaryMenuEnum());
|
||||
List<DocDefinitionDto> docList = docDefinitionAppMapper.getDefinationList(useRanges,
|
||||
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. 构建树形结构(空列表时返回空树,避免空指针)
|
||||
List<DirectoryNode> treeNodes = new ArrayList<>();
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
AND ddo.delete_flag = '0'
|
||||
|
||||
WHERE dd.delete_flag = '0'
|
||||
AND dd.is_valid = 0
|
||||
|
||||
<!-- 关键:医院 + 科室联合可见 -->
|
||||
<if test="organizationId != null and organizationId != 0">
|
||||
@@ -80,6 +81,10 @@
|
||||
AND dd.name LIKE CONCAT('%', #{name}, '%')
|
||||
</if>
|
||||
|
||||
<if test="primaryMenuEnum != null">
|
||||
AND dd.primary_menu_enum = #{primaryMenuEnum}
|
||||
</if>
|
||||
|
||||
GROUP BY dd.id, dd.primary_menu_enum, dd.sub_menu
|
||||
ORDER BY dd.display_order
|
||||
|
||||
|
||||
Reference in New Issue
Block a user