|
|
@@ -18,8 +18,10 @@ import com.ydtech.modules.admin.model.*;
|
|
|
import com.ydtech.modules.admin.model.dto.QuTeamNumDto;
|
|
|
import com.ydtech.modules.admin.model.dto.QuUserNumDto;
|
|
|
import com.ydtech.modules.admin.model.dto.SysUserDto;
|
|
|
+import com.ydtech.modules.admin.model.po.SysUserTreeShowLevel;
|
|
|
import com.ydtech.modules.admin.model.vo.*;
|
|
|
import com.ydtech.modules.admin.service.*;
|
|
|
+import com.ydtech.modules.base.controller.BaseController;
|
|
|
import com.ydtech.modules.base.model.dto.PageDto;
|
|
|
import com.ydtech.modules.base.model.vo.PageVo;
|
|
|
import com.ydtech.modules.esm.model.EsmUserImage;
|
|
|
@@ -68,6 +70,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
@Autowired
|
|
|
private SysAreaService sysAreaService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private SysUserTreeShowLevelService sysUserTreeShowLevelService;
|
|
|
+
|
|
|
@Override
|
|
|
public IPage<SysUserBaseVO> findUserList(PageDto<SysUserDto> pageDto) {
|
|
|
PageVo<SysUserBaseVO> pageVo = new PageVo();
|
|
|
@@ -317,7 +322,20 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
*/
|
|
|
@Override
|
|
|
public IPage<SysUser> selectUserPage(Page page, SysUser sysUser, String containsSubDept) {
|
|
|
- return baseMapper.selectUserPage(page, sysUser, containsSubDept);
|
|
|
+ IPage<SysUser> sysUserIPage = baseMapper.selectUserPage(page, sysUser, containsSubDept);
|
|
|
+ List<SysUser> records = sysUserIPage.getRecords();
|
|
|
+ List<String> ids = records.stream().map(SysUser::getId).collect(Collectors.toList());
|
|
|
+ LambdaQueryWrapper<SysUserTreeShowLevel> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.in(SysUserTreeShowLevel::getUserId, ids);
|
|
|
+ List<SysUserTreeShowLevel> list = sysUserTreeShowLevelService.list(wrapper);
|
|
|
+ for (SysUser record : records) {
|
|
|
+ for (SysUserTreeShowLevel showLevel : list) {
|
|
|
+ if (record.getId().equals(showLevel.getUserId())) {
|
|
|
+ record.setShowLevel(showLevel.getShowLevel());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return sysUserIPage;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -705,30 +723,67 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
|
|
|
/**
|
|
|
* 查找组织结构树,返回所有层级的用户列表,其中每个用户包含其直接下级用户。
|
|
|
+ * 该方法首先根据当前用户获取其在组织结构展示中的级别,然后根据这个级别查询或构建相应的组织结构树。
|
|
|
*
|
|
|
* @return 返回组织结构树形式的用户列表,每个用户对象可能包含一个子用户列表。
|
|
|
*/
|
|
|
@Override
|
|
|
public List<SysUser> findTree() {
|
|
|
+ // 获取当前登录用户
|
|
|
+ SysUser user = BaseController.getUser();
|
|
|
+ String userId = user.getId();
|
|
|
+
|
|
|
+ // 根据当前用户ID查询其在组织结构展示中的级别
|
|
|
+ LambdaQueryWrapper<SysUserTreeShowLevel> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ lambdaQueryWrapper.eq(SysUserTreeShowLevel::getUserId, userId);
|
|
|
+ SysUserTreeShowLevel treeShowLevel = sysUserTreeShowLevelService.getOne(lambdaQueryWrapper);
|
|
|
+
|
|
|
//获取领导字段不为空的人的ID
|
|
|
List<SysUser> users = lambdaQuery().isNotNull(SysUser::getLeaderId).list();
|
|
|
+
|
|
|
if (users == null || users.size() == 0) {
|
|
|
return new ArrayList<>();
|
|
|
}
|
|
|
- List<SysUser> topUsers = new ArrayList<>(); //存放1级用户
|
|
|
+ List<SysUser> topUsers = new ArrayList<>(); //存放1级用户,即没有直接上级的用户
|
|
|
|
|
|
+ // 获取可能作为顶层节点的用户ID列表
|
|
|
List<String> topUserId = users.stream().map(SysUser::getLeaderId).collect(Collectors.toList());
|
|
|
|
|
|
- List<SysUser> list2 = lambdaQuery().in(SysUser::getId, topUserId).list();
|
|
|
- // 从查询结果中筛选出没有上级的人员,作为组织结构树的顶层节点
|
|
|
- for (SysUser sysUser : list2) {
|
|
|
- if (Objects.isNull(sysUser.getLeaderId())) {
|
|
|
- topUsers.add(sysUser);
|
|
|
- }
|
|
|
+ List<SysUser> list2;
|
|
|
+ // 根据组织结构展示级别,筛选顶层节点并构建组织结构树
|
|
|
+ switch (treeShowLevel.getShowLevel()) {
|
|
|
+ case "all": // 展示所有级别的用户
|
|
|
+ list2 = lambdaQuery().in(SysUser::getId, topUserId).list();
|
|
|
+ // 从查询结果中筛选出没有上级的人员,作为组织结构树的顶层节点
|
|
|
+ for (SysUser sysUser : list2) {
|
|
|
+ if (Objects.isNull(sysUser.getLeaderId())) {
|
|
|
+ topUsers.add(sysUser);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 递归构建用户树结构
|
|
|
+ buildUserTree(topUsers, users);
|
|
|
+ break;
|
|
|
+ case "same": // 只展示当前用户
|
|
|
+ topUsers.add(user);
|
|
|
+ break;
|
|
|
+ case "subordinate": // 只展示当前用户及下属
|
|
|
+ for (String ids : topUserId) {
|
|
|
+ if (ids.equals(userId)) {
|
|
|
+ topUsers.add(user);
|
|
|
+ // 递归构建用户树结构
|
|
|
+ buildUserTree(topUsers, users);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:// 默认展示所有级别的用户,与"all"情况处理相同
|
|
|
+ list2 = lambdaQuery().in(SysUser::getId, topUserId).list();
|
|
|
+ for (SysUser sysUser : list2) {
|
|
|
+ if (Objects.isNull(sysUser.getLeaderId())) {
|
|
|
+ topUsers.add(sysUser);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
}
|
|
|
-
|
|
|
- // 递归构建用户树结构
|
|
|
- buildUserTree(topUsers, users);
|
|
|
return topUsers;
|
|
|
}
|
|
|
|
|
|
@@ -832,21 +887,21 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- for (QuUserNum mainWaitAuditSum : mainWaitAuditSums) {
|
|
|
- if (quUserNum.getAreaCode().equals(mainWaitAuditSum.getAreaCode())) {
|
|
|
- quUserNum.setMainWaitAuditSum(mainWaitAuditSum.getMainWaitAuditSum());
|
|
|
- }
|
|
|
+ for (QuUserNum mainWaitAuditSum : mainWaitAuditSums) {
|
|
|
+ if (quUserNum.getAreaCode().equals(mainWaitAuditSum.getAreaCode())) {
|
|
|
+ quUserNum.setMainWaitAuditSum(mainWaitAuditSum.getMainWaitAuditSum());
|
|
|
}
|
|
|
- for (QuUserNum mainWaitPaySum : mainWaitPaySums) {
|
|
|
- if (quUserNum.getAreaCode().equals(mainWaitPaySum.getAreaCode())) {
|
|
|
- quUserNum.setMainWaitPaySum(mainWaitPaySum.getMainWaitPaySum());
|
|
|
- }
|
|
|
+ }
|
|
|
+ for (QuUserNum mainWaitPaySum : mainWaitPaySums) {
|
|
|
+ if (quUserNum.getAreaCode().equals(mainWaitPaySum.getAreaCode())) {
|
|
|
+ quUserNum.setMainWaitPaySum(mainWaitPaySum.getMainWaitPaySum());
|
|
|
}
|
|
|
- for (QuUserNum mainAcceptInsuranceSum : mainAcceptInsuranceSums) {
|
|
|
- if (quUserNum.getAreaCode().equals(mainAcceptInsuranceSum.getAreaCode())) {
|
|
|
- quUserNum.setMainAcceptInsuranceSum(mainAcceptInsuranceSum.getMainAcceptInsuranceSum());
|
|
|
- }
|
|
|
+ }
|
|
|
+ for (QuUserNum mainAcceptInsuranceSum : mainAcceptInsuranceSums) {
|
|
|
+ if (quUserNum.getAreaCode().equals(mainAcceptInsuranceSum.getAreaCode())) {
|
|
|
+ quUserNum.setMainAcceptInsuranceSum(mainAcceptInsuranceSum.getMainAcceptInsuranceSum());
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
quUserNums.add(quUserNum);
|
|
|
}
|
|
|
@@ -907,7 +962,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
}
|
|
|
// 设置查询条件中的用户ID列表
|
|
|
quUserNumDto.setUserIds(strIds);
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
// 设置查询条件中的用户ID列表
|
|
|
quUserNumDto.setUserIds(Collections.singletonList(quUserNumDto.getUserId()));
|
|
|
}
|
|
|
@@ -962,7 +1017,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
private boolean exists(List<QuUserNum> quUserNums, SysArea sysArea) {
|
|
|
boolean exist = true;
|
|
|
for (QuUserNum quUserNum1 : quUserNums) {
|
|
|
@@ -1163,7 +1217,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
}
|
|
|
// 设置查询条件中的用户ID列表
|
|
|
quUserNumDto.setUserIds(strIds);
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
// 设置查询条件中的用户ID列表
|
|
|
quUserNumDto.setUserIds(Collections.singletonList(quUserNumDto.getUserId()));
|
|
|
}
|
|
|
@@ -1224,7 +1278,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
|
|
|
for (QuUserNum quUserNum : deptByCompany) {
|
|
|
for (QuUserNum mainWaitAuditSum : mainWaitAuditSums) {
|
|
|
- if (quUserNum.getUserId().equals(mainWaitAuditSum.getUserId()) ) {
|
|
|
+ if (quUserNum.getUserId().equals(mainWaitAuditSum.getUserId())) {
|
|
|
quUserNum.setMainWaitAuditSum(mainWaitAuditSum.getMainWaitAuditSum());
|
|
|
}
|
|
|
}
|
|
|
@@ -1271,19 +1325,13 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
/**
|
|
|
- * @version
|
|
|
- * @author: hxl
|
|
|
- * @Date: 2024/4/29 16:01
|
|
|
- * @Description: 查询当前登陆人管理的渠道人 即领导人为当前登陆人的用户需要递归查询
|
|
|
+ * @version
|
|
|
+ * @author: hxl
|
|
|
+ * @Date: 2024/4/29 16:01
|
|
|
+ * @Description: 查询当前登陆人管理的渠道人 即领导人为当前登陆人的用户需要递归查询
|
|
|
*/
|
|
|
- public List<String> getUserIdsByLeaderId(String userId){
|
|
|
+ public List<String> getUserIdsByLeaderId(String userId) {
|
|
|
// 获取系统中的所有用户
|
|
|
LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
queryWrapper.eq(SysUser::getStatus, 1);
|
|
|
@@ -1297,21 +1345,23 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
findChildren(leadUsers, allUsers, strIds);
|
|
|
return strIds;
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
- * @version
|
|
|
- * @author: hxl
|
|
|
- * @Date: 2024/5/7 10:45
|
|
|
- * @Description: 通过部门id和角色id查询是否存在团队长
|
|
|
+ * @version
|
|
|
+ * @author: hxl
|
|
|
+ * @Date: 2024/5/7 10:45
|
|
|
+ * @Description: 通过部门id和角色id查询是否存在团队长
|
|
|
*/
|
|
|
@Override
|
|
|
public int getCountByDeptAndRoleId(SysUser sysUserVo) {
|
|
|
return sysUserMapper.getCountByDeptAndRoleId(sysUserVo);
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
- * @version
|
|
|
- * @author: hxl
|
|
|
- * @Date: 2024/5/7 11:44
|
|
|
- * @Description: 查询该部门的团队长
|
|
|
+ * @version
|
|
|
+ * @author: hxl
|
|
|
+ * @Date: 2024/5/7 11:44
|
|
|
+ * @Description: 查询该部门的团队长
|
|
|
*/
|
|
|
@Override
|
|
|
public String findTDZUserIdByDeptId(String deptId) {
|