Procházet zdrojové kódy

手动分页数据

haoyu před 2 roky
rodič
revize
48801af61b

+ 1 - 1
src/main/java/com/ydtech/modules/admin/model/dto/QuUserNumDto.java

@@ -39,7 +39,7 @@ public class QuUserNumDto {
     private List<String> userIds;
 
     @TableField(exist = false)
-    private int pageNo;
+    private int pageNum;
 
     @TableField(exist = false)
     private int pageSize;

+ 41 - 6
src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java

@@ -702,33 +702,44 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return list(lqw);
     }
 
+
+    /**
+     * 查找组织结构树,返回所有层级的用户列表,其中每个用户包含其直接下级用户。
+     *
+     * @return 返回组织结构树形式的用户列表,每个用户对象可能包含一个子用户列表。
+     */
     @Override
     public List<SysUser> findTree() {
-        //获取所有被领导的人ID
+        //获取领导字段不为空的人ID
         List<SysUser> list1 = lambdaQuery().isNotNull(SysUser::getLeaderId).list();
         List<String> collect1 = list1.stream().map(SysUser::getLeaderId).collect(Collectors.toList());
 
+        //存放1级用户
         List<SysUser> sysUsers = new ArrayList<>();
+        // 根据上面获取的ID列表,查询所有这些人的直接上级
         List<SysUser> list2 = lambdaQuery().in(SysUser::getId, collect1).list();
+        // 从查询结果中筛选出没有上级的人员,作为组织结构树的顶层节点
         for (SysUser sysUser : list2) {
             if (Objects.isNull(sysUser.getLeaderId())) {
                 sysUsers.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;
     }
 
 
-
     /**
      * 根据部门ID查询后台用户列表。
      *
@@ -844,10 +855,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                 quUserNums.add(userNum);
             }
         }
+        List<QuUserNum> paginate = paginate(quUserNums, quUserNumDto.getPageNum(), quUserNumDto.getPageSize());
 
         // 构造返回的分页对象
-        IPage<QuUserNum> recordsPage = new Page<>(quUserNumDto.getPageNo(), quUserNumDto.getPageSize());
-        recordsPage.setRecords(quUserNums);
+        IPage<QuUserNum> recordsPage = new Page<>(quUserNumDto.getPageNum(), quUserNumDto.getPageSize());
+        recordsPage.setRecords(paginate);
         recordsPage.setTotal(quUserNums.size());
         return recordsPage;
     }
@@ -897,14 +909,37 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         // 根据公司和用户ID列表查询用户数量统计信息
         List<QuUserNum> deptByCompany = sysUserMapper.getUserByCompany(quUserNumDto);
 
+        List<QuUserNum> paginate = paginate(deptByCompany, quUserNumDto.getPageNum(), quUserNumDto.getPageSize());
+
         // 创建并设置分页信息
-        IPage<QuUserNum> page = new Page<>(quUserNumDto.getPageNo(), quUserNumDto.getPageSize());
-        page.setRecords(deptByCompany);
+        IPage<QuUserNum> page = new Page<>(quUserNumDto.getPageNum(), quUserNumDto.getPageSize());
+        page.setRecords(paginate);
         page.setTotal(deptByCompany.size());
         return page;
     }
 
 
+    /**
+     * 手动对 QuUserNum 列表进行分页
+     *
+     * @param quUserNums 原始 QuUserNum 数据列表
+     * @param pageNum 期望获取的页码(从 1 开始)
+     * @param pageSize 每页包含的 QuUserNum 数量
+     * @return 对应页码的 QuUserNum 子列表,若输入参数无效则返回空列表
+     */
+    public List<QuUserNum> paginate(List<QuUserNum> quUserNums, int pageNum, int pageSize) {
+        if (quUserNums == null || quUserNums.isEmpty() || pageNum < 1 || pageSize < 1) {
+            return Collections.emptyList();
+        }
+
+        int startIndex = (pageNum - 1) * pageSize;
+        int endIndex = Math.min(startIndex + pageSize, quUserNums.size());
+
+        return quUserNums.subList(startIndex, endIndex);
+    }
+
+
+
 
     private void findChildren(List<SysUser> SysUsers, List<SysUser> users, List<String> strIds) {
         for (SysUser sysUser : SysUsers) {