haoyu 2 лет назад
Родитель
Сommit
20c1c28779

+ 57 - 55
src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java

@@ -710,36 +710,25 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     @Override
     public List<SysUser> findTree() {
         //获取领导字段不为空的人的ID
-        List<SysUser> list1 = lambdaQuery().isNotNull(SysUser::getLeaderId).list();
-        if (list1 == null || list1.size() == 0){
+        List<SysUser> users = lambdaQuery().isNotNull(SysUser::getLeaderId).list();
+        if (users == null || users.size() == 0) {
             return new ArrayList<>();
         }
+        List<SysUser> topUsers = new ArrayList<>(); //存放1级用户
 
-        List<String> collect1 = list1.stream().map(SysUser::getLeaderId).collect(Collectors.toList());
+        List<String> topUserId = users.stream().map(SysUser::getLeaderId).collect(Collectors.toList());
 
-        //存放1级用户
-        List<SysUser> sysUsers = new ArrayList<>();
-        // 根据上面获取的ID列表,查询所有这些人的直接上级
-        List<SysUser> list2 = lambdaQuery().in(SysUser::getId, collect1).list();
+        List<SysUser> list2 = lambdaQuery().in(SysUser::getId, topUserId).list();
         // 从查询结果中筛选出没有上级的人员,作为组织结构树的顶层节点
         for (SysUser sysUser : list2) {
             if (Objects.isNull(sysUser.getLeaderId())) {
-                sysUsers.add(sysUser);
+                topUsers.add(sysUser);
             }
         }
-        // 为每个顶层节点分配其直接下级
-        for (SysUser sysUser : sysUsers) {
-            List<SysUser> chils = new ArrayList<>();
-            // 遍历所有人员,为当前顶层节点找出其所有直接下级
-            for (SysUser user : list2) {
-                if (sysUser.getId().equals(user.getLeaderId())) {
-                    chils.add(user);
-                }
-            }
-            // 将找到的直接下级列表设置到当前顶层节点用户对象中
-            sysUser.setChildren(chils);
-        }
-        return sysUsers;
+
+        // 递归构建用户树结构
+        buildUserTree(topUsers, users);
+        return topUsers;
     }
 
 
@@ -814,34 +803,33 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             quUserNumDto.setLevel("1");
             wrapper.eq(SysArea::getLevel, "1");
         }
-
-        // 如果没有查询到用户ID,则直接返回空的分页对象
-        if (strIds.size() == 0) {
-            return new Page<>();
-        }
-
-        // 根据查询条件获取用户数量统计信息
-        quUserNumDto.setUserIds(strIds);
-        List<QuUserNum> userNums = sysUserMapper.getUserNum(quUserNumDto);
-
         //遍历匹配区域名称
         List<SysArea> areaList = sysAreaService.list(wrapper);
 
-        // 根据区域名称匹配用户数量统计信息,并构造最终返回的结果列表
         List<QuUserNum> quUserNums = new ArrayList<>();
-        for (QuUserNum quUserNum : userNums) {
-            for (SysArea sysArea : areaList) {
-                if (!Objects.isNull(sysArea.getAreaCode())) {
-                    // 匹配区域名称
-                    String substring = sysArea.getAreaCode().substring(0, quUserNumDto.getGrouping());
-                    if (quUserNum.getAreaCode().equals(substring)) {
-                        quUserNum.setAreaName(sysArea.getAreaCname());
-                        quUserNums.add(quUserNum);
+
+        // 如果没有查询到用户ID,则直接返回空的分页对象
+        if (strIds.size() != 0) {
+            // 根据查询条件获取用户数量统计信息
+            quUserNumDto.setUserIds(strIds);
+            List<QuUserNum> userNums = sysUserMapper.getUserNum(quUserNumDto);
+
+            // 根据区域名称匹配用户数量统计信息,并构造最终返回的结果列表
+            for (QuUserNum quUserNum : userNums) {
+                for (SysArea sysArea : areaList) {
+                    if (!Objects.isNull(sysArea.getAreaCode())) {
+                        // 匹配区域名称
+                        String substring = sysArea.getAreaCode().substring(0, quUserNumDto.getGrouping());
+                        if (quUserNum.getAreaCode().equals(substring)) {
+                            quUserNum.setAreaName(sysArea.getAreaCname());
+                            quUserNums.add(quUserNum);
+                        }
                     }
                 }
             }
         }
 
+
         // 为每个区域生成未匹配到的统计信息
         for (SysArea sysArea : areaList) {
             if (exists(quUserNums, sysArea)) {
@@ -868,8 +856,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     }
 
 
-
-
     /**
      * 查询用户订单数量进行区域统计详细信息
      *
@@ -926,8 +912,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
      * 手动对 QuUserNum 列表进行分页
      *
      * @param quUserNums 原始 QuUserNum 数据列表
-     * @param pageNum 期望获取的页码(从 1 开始)
-     * @param pageSize 每页包含的 QuUserNum 数量
+     * @param pageNum    期望获取的页码(从 1 开始)
+     * @param pageSize   每页包含的 QuUserNum 数量
      * @return 对应页码的 QuUserNum 子列表,若输入参数无效则返回空列表
      */
     public List<QuUserNum> paginate(List<QuUserNum> quUserNums, int pageNum, int pageSize) {
@@ -942,8 +928,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     }
 
 
-
-
     private void findChildren(List<SysUser> SysUsers, List<SysUser> users, List<String> strIds) {
         for (SysUser sysUser : SysUsers) {
             List<SysUser> children = new ArrayList<>();
@@ -971,6 +955,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         }
         return exist;
     }
+
     private boolean exists(List<SysUser> sysUsers, SysUser sysUser) {
         boolean exist = false;
         for (SysUser user : sysUsers) {
@@ -980,22 +965,39 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         }
         return exist;
     }
+
+    private void buildUserTree(List<SysUser> topUsers, List<SysUser> users) {
+        for (SysUser user : topUsers) {
+            List<SysUser> children = new ArrayList<>();
+            for (SysUser childUser : users) {
+                if (user.getId().equals(childUser.getLeaderId()) && !childUser.getId().contains("M")) {
+                    children.add(childUser);
+                    // 递归查找下一级
+                    buildUserTree(children, users);
+                }
+            }
+            user.setChildren(children);
+        }
+    }
+
+
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2024/4/16 15:51
-     *  @Description: 获取待客录入的可选业务员
-     *  查询
+     * @version
+     * @author: hxl
+     * @Date: 2024/4/16 15:51
+     * @Description: 获取待客录入的可选业务员
+     * 查询
      */
     @Override
     public List<SysUserBaseVO> getAllUsersByHospitality(SysUserVOExt sysUserVOExt) {
         return super.baseMapper.getAllUsersByHospitality(sysUserVOExt);
     }
+
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2024/4/18 16:14
-     *  @Description: 获取客服人员列表数据
+     * @version
+     * @author: hxl
+     * @Date: 2024/4/18 16:14
+     * @Description: 获取客服人员列表数据
      */
     @Override
     public List<SysUserBaseVO> getCustomerUsers(SysUserVOExt sysUserVOExt) {