|
@@ -2,6 +2,7 @@ package com.xy.service.impl;
|
|
|
|
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
+import cn.hutool.core.map.MapUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import cn.hutool.crypto.SecureUtil;
|
|
|
import cn.hutool.json.JSONUtil;
|
|
@@ -34,8 +35,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
@@ -161,6 +161,13 @@ public class SysWorkUserServiceImpl extends ServiceImpl<SysWorkUserMapper, SysWo
|
|
|
.setRoleId(roleId).setWorkUserId(sysWorkUser.getId()).setSysId(sysRolesJMaps.get(roleId).getSysId())).collect(Collectors.toList());
|
|
|
// 保存用户角色绑定信息
|
|
|
sysUserRoleService.saveBatch(sysUserRoleList);
|
|
|
+ } else {
|
|
|
+ if (roleIds != null && roleIds.size() == 0) {
|
|
|
+ // 清理角色
|
|
|
+ sysUserRoleService.remove(Wrappers.<SysUserRole>lambdaUpdate().eq(SysUserRole::getWorkUserId, sysWorkUser.getId()));
|
|
|
+ log.info("{},清理角色", sysWorkUser.getAccount());
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
// 更新部门信息
|
|
|
List<Long> deptIds = updateDto.getDeptIds();
|
|
@@ -173,6 +180,13 @@ public class SysWorkUserServiceImpl extends ServiceImpl<SysWorkUserMapper, SysWo
|
|
|
.setDeptId(deptId).setWorkUserId(sysWorkUser.getId()).setSysId(sysDeptsJMaps.get(deptId).getSysId())).collect(Collectors.toList());
|
|
|
// 保存用户部门绑定信息
|
|
|
sysUserDeptService.saveBatch(newSysUserDeptList);
|
|
|
+ } else {
|
|
|
+ if (deptIds != null && deptIds.size() == 0) {
|
|
|
+ // 清理部门
|
|
|
+ sysUserDeptService.remove(Wrappers.<SysUserDept>lambdaUpdate()
|
|
|
+ .eq(SysUserDept::getWorkUserId, sysWorkUser.getId()));
|
|
|
+ log.info("{},清理部门", sysWorkUser.getAccount());
|
|
|
+ }
|
|
|
}
|
|
|
return R.ok(Boolean.TRUE);
|
|
|
}
|
|
@@ -260,8 +274,6 @@ public class SysWorkUserServiceImpl extends ServiceImpl<SysWorkUserMapper, SysWo
|
|
|
@ApiOperation("集合查询")
|
|
|
public R<List<SysWorkVo>> list(ListDto listDto) {
|
|
|
Long sysId = listDto.getSysId();
|
|
|
- // 部门分配为可选,先判断是否存在
|
|
|
- List<SysUserDept> sysUserDepts = sysUserDeptService.list(Wrappers.<SysUserDept>lambdaQuery().eq(sysId != null, SysUserDept::getSysId, sysId).in(SysUserDept::getWorkUserId, listDto.getId()));
|
|
|
|
|
|
// 条件构造
|
|
|
JoinLambdaWrapper<SysWorkUser> joinLambdaWrapper = new JoinLambdaWrapper<>(SysWorkUser.class)
|
|
@@ -269,12 +281,25 @@ public class SysWorkUserServiceImpl extends ServiceImpl<SysWorkUserMapper, SysWo
|
|
|
.leftJoin(SysUserRole.class, SysUserRole::getWorkUserId, SysWorkUser::getId).eq(sysId != null, SysUserRole::getSysId, sysId)
|
|
|
.manyToManySelect(SysWorkVo::getRoleIds, Long.class, cb -> cb.add(SysUserRole::getRoleId))
|
|
|
.end();
|
|
|
- if (CollUtil.isNotEmpty(sysUserDepts)) {
|
|
|
- joinLambdaWrapper.leftJoin(SysUserDept.class, SysUserDept::getWorkUserId, SysWorkUser::getId).eq(sysId != null, SysUserDept::getSysId, sysId)
|
|
|
- .manyToManySelect(SysWorkVo::getDeptIds, Long.class, cb -> cb.add(SysUserDept::getDeptId))
|
|
|
- .end();
|
|
|
+ List<Long> wUserIds = listDto.getId();
|
|
|
+ Map<Long, List<SysUserDept>> deptUserMap = MapUtil.newHashMap();
|
|
|
+ List<SysUserDept> sysUserDepts = new ArrayList<>();
|
|
|
+ if (CollUtil.isNotEmpty(wUserIds)) {
|
|
|
+ // 部门分配为可选,先判断是否存在
|
|
|
+ sysUserDepts = sysUserDeptService.list(Wrappers.<SysUserDept>lambdaQuery().eq(sysId != null, SysUserDept::getSysId, sysId).in(SysUserDept::getWorkUserId, listDto.getId()));
|
|
|
+ // 存在部门的
|
|
|
+ if (CollUtil.isNotEmpty(sysUserDepts)) {
|
|
|
+ deptUserMap = sysUserDepts.stream().collect(Collectors.groupingBy(SysUserDept::getWorkUserId));
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
+ // if (CollUtil.isNotEmpty(sysUserDepts)) {
|
|
|
+ // joinLambdaWrapper.leftJoin(SysUserDept.class, SysUserDept::getWorkUserId, SysWorkUser::getId).eq(sysId != null, SysUserDept::getSysId, sysId)
|
|
|
+ // .manyToManySelect(SysWorkVo::getDeptIds, Long.class, cb -> cb.add(SysUserDept::getDeptId))
|
|
|
+ // .end();
|
|
|
+ // }
|
|
|
+
|
|
|
// 查询数据
|
|
|
List<SysWorkVo> sysWorkVos = baseMapper.joinSelectList(joinLambdaWrapper, SysWorkVo.class);
|
|
|
if (sysWorkVos.size() > 0) {
|
|
@@ -288,10 +313,14 @@ public class SysWorkUserServiceImpl extends ServiceImpl<SysWorkUserMapper, SysWo
|
|
|
sysRoleJMap = new JArrayList<>(sysRoles).toMap(SysRole::getId).cover();
|
|
|
}
|
|
|
// 查询部门信息
|
|
|
- JList<List<Long>> deptIdss = new JArrayList<>(sysWorkVos).getProperty(SysWorkVo::getDeptIds);
|
|
|
+ // JList<List<Long>> deptIdss = new JArrayList<>(sysWorkVos).getProperty(SysWorkVo::getDeptIds);
|
|
|
List<Long> deptIds = new ArrayList<>();
|
|
|
- if (CollUtil.isNotEmpty(deptIdss) && CollUtil.isNotEmpty(sysUserDepts)) {
|
|
|
- deptIdss.forEach(longs -> deptIds.addAll(longs));
|
|
|
+ // if (CollUtil.isNotEmpty(deptIdss)) {
|
|
|
+ // deptIdss.forEach(longs -> deptIds.addAll(longs));
|
|
|
+ // }
|
|
|
+ if (!deptUserMap.isEmpty()) {
|
|
|
+ List<Long> departmentIds = sysUserDepts.stream().map(SysUserDept::getDeptId).distinct().collect(Collectors.toList());
|
|
|
+ deptIds.addAll(departmentIds);
|
|
|
}
|
|
|
JMap<Long, SysDept> sysDeptJMap = new JHashMap<>();
|
|
|
if (deptIds.size() > 0) {
|
|
@@ -311,19 +340,27 @@ public class SysWorkUserServiceImpl extends ServiceImpl<SysWorkUserMapper, SysWo
|
|
|
sysWorkVo.getRoleNames().add(sysRole.getName());
|
|
|
sysWorkVo.getRoleCodes().add(sysRole.getCode());
|
|
|
}
|
|
|
- List<Long> workVoDeptIds = sysWorkVo.getDeptIds();
|
|
|
+ // List<Long> workVoDeptIds = sysWorkVo.getDeptIds();
|
|
|
sysWorkVo.setDeptNames(new ArrayList<>());
|
|
|
sysWorkVo.setDeptIds(new ArrayList<>());
|
|
|
- if (CollUtil.isNotEmpty(workVoDeptIds)) {
|
|
|
- for (Long workVoDeptId : workVoDeptIds) {
|
|
|
- SysDept sysDept = sysDeptJMap.get(workVoDeptId);
|
|
|
- if (sysDept == null) {
|
|
|
- break;
|
|
|
+ Set<Long> workVoDeptIds = new HashSet<>();
|
|
|
+ Set<String> userDeptNames = new HashSet<>();
|
|
|
+ Set<Long> userDeptIds = new HashSet<>();
|
|
|
+ if (!deptUserMap.isEmpty()) {
|
|
|
+ List<SysUserDept> sysUserDeptList = deptUserMap.get(sysWorkVo.getId());
|
|
|
+ if (CollUtil.isNotEmpty(sysUserDeptList)) {
|
|
|
+ for (SysUserDept sysUserDept : sysUserDeptList) {
|
|
|
+ SysDept sysDept = sysDeptJMap.get(sysUserDept.getDeptId());
|
|
|
+ if (sysDept != null) {
|
|
|
+ workVoDeptIds.add(sysDept.getId());
|
|
|
+ userDeptNames.add(sysDept.getName());
|
|
|
+ userDeptIds.add(sysDept.getId());
|
|
|
+ }
|
|
|
}
|
|
|
- sysWorkVo.getDeptNames().add(sysDept.getName());
|
|
|
- sysWorkVo.getDeptIds().add(sysDept.getId());
|
|
|
}
|
|
|
}
|
|
|
+ sysWorkVo.setDeptIds(CollUtil.newArrayList(userDeptIds));
|
|
|
+ sysWorkVo.setDeptNames(CollUtil.newArrayList(userDeptNames));
|
|
|
List<Long> deptRoleIds = new ArrayList<>();
|
|
|
List<String> deptRoleNames = new ArrayList<>();
|
|
|
if (CollUtil.isNotEmpty(workVoDeptIds)) {
|