|
@@ -702,33 +702,44 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
return list(lqw);
|
|
return list(lqw);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 查找组织结构树,返回所有层级的用户列表,其中每个用户包含其直接下级用户。
|
|
|
|
|
+ *
|
|
|
|
|
+ * @return 返回组织结构树形式的用户列表,每个用户对象可能包含一个子用户列表。
|
|
|
|
|
+ */
|
|
|
@Override
|
|
@Override
|
|
|
public List<SysUser> findTree() {
|
|
public List<SysUser> findTree() {
|
|
|
- //获取所有被领导的人ID
|
|
|
|
|
|
|
+ //获取领导字段不为空的人的ID
|
|
|
List<SysUser> list1 = lambdaQuery().isNotNull(SysUser::getLeaderId).list();
|
|
List<SysUser> list1 = lambdaQuery().isNotNull(SysUser::getLeaderId).list();
|
|
|
List<String> collect1 = list1.stream().map(SysUser::getLeaderId).collect(Collectors.toList());
|
|
List<String> collect1 = list1.stream().map(SysUser::getLeaderId).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
+ //存放1级用户
|
|
|
List<SysUser> sysUsers = new ArrayList<>();
|
|
List<SysUser> sysUsers = new ArrayList<>();
|
|
|
|
|
+ // 根据上面获取的ID列表,查询所有这些人的直接上级
|
|
|
List<SysUser> list2 = lambdaQuery().in(SysUser::getId, collect1).list();
|
|
List<SysUser> list2 = lambdaQuery().in(SysUser::getId, collect1).list();
|
|
|
|
|
+ // 从查询结果中筛选出没有上级的人员,作为组织结构树的顶层节点
|
|
|
for (SysUser sysUser : list2) {
|
|
for (SysUser sysUser : list2) {
|
|
|
if (Objects.isNull(sysUser.getLeaderId())) {
|
|
if (Objects.isNull(sysUser.getLeaderId())) {
|
|
|
sysUsers.add(sysUser);
|
|
sysUsers.add(sysUser);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ // 为每个顶层节点分配其直接下级
|
|
|
for (SysUser sysUser : sysUsers) {
|
|
for (SysUser sysUser : sysUsers) {
|
|
|
List<SysUser> chils = new ArrayList<>();
|
|
List<SysUser> chils = new ArrayList<>();
|
|
|
|
|
+ // 遍历所有人员,为当前顶层节点找出其所有直接下级
|
|
|
for (SysUser user : list2) {
|
|
for (SysUser user : list2) {
|
|
|
if (sysUser.getId().equals(user.getLeaderId())) {
|
|
if (sysUser.getId().equals(user.getLeaderId())) {
|
|
|
chils.add(user);
|
|
chils.add(user);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ // 将找到的直接下级列表设置到当前顶层节点用户对象中
|
|
|
sysUser.setChildren(chils);
|
|
sysUser.setChildren(chils);
|
|
|
}
|
|
}
|
|
|
return sysUsers;
|
|
return sysUsers;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
|
/**
|
|
/**
|
|
|
* 根据部门ID查询后台用户列表。
|
|
* 根据部门ID查询后台用户列表。
|
|
|
*
|
|
*
|
|
@@ -844,10 +855,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
quUserNums.add(userNum);
|
|
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());
|
|
recordsPage.setTotal(quUserNums.size());
|
|
|
return recordsPage;
|
|
return recordsPage;
|
|
|
}
|
|
}
|
|
@@ -897,14 +909,37 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
// 根据公司和用户ID列表查询用户数量统计信息
|
|
// 根据公司和用户ID列表查询用户数量统计信息
|
|
|
List<QuUserNum> deptByCompany = sysUserMapper.getUserByCompany(quUserNumDto);
|
|
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());
|
|
page.setTotal(deptByCompany.size());
|
|
|
return page;
|
|
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) {
|
|
private void findChildren(List<SysUser> SysUsers, List<SysUser> users, List<String> strIds) {
|
|
|
for (SysUser sysUser : SysUsers) {
|
|
for (SysUser sysUser : SysUsers) {
|