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) {
|
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<>();
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user