From acbe0c6c601ff1368002d701631a43a2c00b61f5 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期三, 15 十月 2025 15:27:13 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDeptServiceImpl.java | 32 +++++++++++++++++++++++++++++++- 1 files changed, 31 insertions(+), 1 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDeptServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDeptServiceImpl.java index 035deb8..1b6d502 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDeptServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDeptServiceImpl.java @@ -1,13 +1,15 @@ package com.ruoyi.system.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.entity.TDept; import com.ruoyi.system.mapper.TDeptMapper; import com.ruoyi.system.service.TDeptService; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; /** @@ -32,6 +34,24 @@ return buildDeptTree(depts); } + @Override + public List<Integer> getAllSubDeptIds(String deptId) { + List<Integer> allSubIds = new ArrayList<>(); + getSubDeptIdsRecursive(Integer.valueOf(deptId), allSubIds); + return allSubIds.stream().distinct().collect(Collectors.toList()); + } + private void getSubDeptIdsRecursive(Integer parentId, List<Integer> allSubIds) { + // 查询直接下级 + List<Integer> directSubIds = this.baseMapper.selectList(new LambdaQueryWrapper<TDept>().eq(TDept::getParentId, parentId)).stream() + .map(TDept::getId).collect(Collectors.toList()); + for (Integer subId : directSubIds) { + allSubIds.add(subId); + // 递归查询下级的下级 + getSubDeptIdsRecursive(subId, allSubIds); + } + allSubIds.add(Integer.valueOf(parentId)); + + } /** * 构建部门树结构 * @param depts 部门列表 @@ -60,4 +80,14 @@ .peek(dept -> dept.setChildren(getChildren(dept, depts))) .collect(Collectors.toList()); } + + @Override + public Optional<List<Integer>> getQueryDeptAndChildIds(Integer deptId) { + if (deptId != null) { + List<Integer> allDeptIds = new ArrayList<>(); + getSubDeptIdsRecursive(deptId, allDeptIds); + return Optional.of(allDeptIds.stream().distinct().collect(Collectors.toList())); + } + return Optional.empty(); + } } -- Gitblit v1.7.1