Ver Fonte

1.控制台业务数据代理人权限部门树形

wuhp há 1 ano atrás
pai
commit
1b2b7e3d2d

+ 2 - 0
src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java

@@ -487,6 +487,8 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
 
     Page<SysUser>  getChanelList(@Param("page") Page page,@Param("vo") SysUserDeptRelationshipVo sysUserDeptRelationshipVo);
 
+    List<SysUser> selectByParams(HashMap<String, Object> params);
+
     IPage<SysUserBaseVO> selectForAgentsAndChannelsPage(@Param("page") Page page,@Param("sysUserVO") SysUserDto sysUserVO);
 
     List<Map<String,String>> selectHxUserList(@Param("sysUserDto") SysUserDto sysUserDto);

+ 52 - 11
src/main/java/com/ydtech/modules/admin/service/impl/SysDeptServiceImpl.java

@@ -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<>();

+ 7 - 0
src/main/resources/mapper/modules/admin/SysUserMapper.xml

@@ -1758,5 +1758,12 @@
             and su.name =#{vo.userName}
         </if>
     </select>
+    <select id="selectByParams" resultType="com.ydtech.modules.admin.model.SysUser">
+        select * from sys_user su
+        left join sys_dept sd on sd.id =su.dept_id
+        <where>
+            su.leader_id is not null
+        </where>
+    </select>
 
 </mapper>