|
|
@@ -792,7 +792,10 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept>
|
|
|
QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
|
|
|
queryWrapper.isNotNull("leader_id");
|
|
|
|
|
|
- List<SysUser> users = sysUserMapper.selectList(queryWrapper);
|
|
|
+ HashMap<String, Object> params = new HashMap<>();
|
|
|
+
|
|
|
+ List<SysUser> users = sysUserMapper.selectByParams(params);
|
|
|
+
|
|
|
if (users == null || users.size() == 0) {
|
|
|
return new ArrayList<>();
|
|
|
}
|
|
|
@@ -810,7 +813,6 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept>
|
|
|
|
|
|
private List<SysDeptTreeVo> getFiveLevelDeptKzt(SysUser byUserId) {
|
|
|
SysDept sysDept = getById("9");
|
|
|
- SysDept dept = baseMapper.selectById(BaseController.getDeptId());
|
|
|
SysDeptVo sysDeptVo = new SysDeptVo();
|
|
|
String id = byUserId.getId();
|
|
|
List<String> deptIds = new ArrayList<>();
|
|
|
@@ -826,18 +828,57 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept>
|
|
|
if("admin".equals(byUserId.getId())){
|
|
|
sysDept.setComlevel("1");
|
|
|
sysDeptList.add(sysDept);
|
|
|
+ List<SysDeptTreeVo> sysDeptTreeVos = BeanUtil.copyToList(sysDeptList, SysDeptTreeVo.class);
|
|
|
+ Map<String, List<SysDeptTreeVo>> map = sysDeptTreeVos.stream().sorted(Comparator.comparing(SysDeptTreeVo::getId))
|
|
|
+ .collect(Collectors.groupingBy(SysDeptTreeVo::getParentId));
|
|
|
+ sysDeptTreeVos.forEach(i -> {
|
|
|
+ if(Integer.parseInt(i.getComlevel())<=5){
|
|
|
+ i.setChildren(map.getOrDefault(i.getId(), new ArrayList<>()));
|
|
|
+ i.setDeptCount(i.getChildren().size());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return map.get(sysDept.getParentId());
|
|
|
+ } else {
|
|
|
+ List<SysDept> result = new ArrayList<>();
|
|
|
+ List<SysDept> deptList = sysDeptMapper.getListByIds(deptIds);
|
|
|
+ List<SysDept> filteredDeptList = deptList.stream()
|
|
|
+ .filter(dept -> dept.getComlevel() != null) // 过滤条件:Comlevel 不为 null
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 使用一个Map来快速查找部门节点
|
|
|
+ Map<String, SysDept> deptMap = new HashMap<>();
|
|
|
+ for (SysDept dept : filteredDeptList) {
|
|
|
+ deptMap.put(dept.getId(), dept);
|
|
|
+ }
|
|
|
+ // 找出顶级部门(即没有父部门的部门)
|
|
|
+ for (SysDept dept : filteredDeptList) {
|
|
|
+ if (dept.getParentId() == null || deptMap.get(dept.getParentId()) == null) {
|
|
|
+ // 添加到结果列表并构建其子树
|
|
|
+ buildDeptTreeKzt(dept, deptMap);
|
|
|
+ result.add(dept);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<SysDeptTreeVo> sysDeptTreeVos = BeanUtil.copyToList(result, SysDeptTreeVo.class);
|
|
|
+ return sysDeptTreeVos;
|
|
|
}
|
|
|
- List<SysDeptTreeVo> sysDeptTreeVos = BeanUtil.copyToList(sysDeptList, SysDeptTreeVo.class);
|
|
|
- Map<String, List<SysDeptTreeVo>> map = sysDeptTreeVos.stream().sorted(Comparator.comparing(SysDeptTreeVo::getId))
|
|
|
- .collect(Collectors.groupingBy(SysDeptTreeVo::getParentId));
|
|
|
- sysDeptTreeVos.forEach(i -> {
|
|
|
- if(Integer.parseInt(i.getComlevel())<=5){
|
|
|
- i.setChildren(map.getOrDefault(i.getId(), new ArrayList<>()));
|
|
|
- i.setDeptCount(i.getChildren().size());
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private void buildDeptTreeKzt(SysDept dept, Map<String, SysDept> deptMap) {
|
|
|
+ List<SysDept> children = new ArrayList<>();
|
|
|
+ dept.setChildren(children);
|
|
|
+
|
|
|
+ // 查找并添加子部门
|
|
|
+ for (SysDept potentialChild : deptMap.values()) {
|
|
|
+ if (potentialChild.getParentId() != null && potentialChild.getParentId().equals(dept.getId())) {
|
|
|
+ if(StringUtils.isNotEmpty(potentialChild.getComlevel()) && Integer.parseInt(potentialChild.getComlevel())<=5 ){
|
|
|
+ children.add(potentialChild);
|
|
|
+ buildDeptTreeKzt(potentialChild, deptMap); // 递归构建子部门的子树
|
|
|
+ }
|
|
|
}
|
|
|
- });
|
|
|
- return map.get(StringUtils.isNotEmpty(dept .getManagementSource()) ? dept.getParentId():dept.getParentId());
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
private void buildUserTree(List<SysUser> topUsers, List<SysUser> users) {
|
|
|
for (SysUser user : topUsers) {
|
|
|
List<SysUser> children = new ArrayList<>();
|