提交 6144810e authored 作者: hzh's avatar hzh

导入修改

上级 0562fbe6
...@@ -44,7 +44,7 @@ public class DropDownOptions { ...@@ -44,7 +44,7 @@ public class DropDownOptions {
/** /**
* 分隔符 * 分隔符
*/ */
private static final String DELIMITER = "_"; public static final String DELIMITER = "_";
/** /**
* 创建只有一级的下拉选 * 创建只有一级的下拉选
......
...@@ -93,7 +93,7 @@ public class SysUserController extends BaseController { ...@@ -93,7 +93,7 @@ public class SysUserController extends BaseController {
@SaCheckPermission("system:user:import") @SaCheckPermission("system:user:import")
@PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Void> importData(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception { public R<Void> importData(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception {
ExcelResult<SysUserImportVo> result = ExcelUtil.importExcel(file.getInputStream(), SysUserImportVo.class, new SysUserImportListener(false)); ExcelResult<SysUserImportVo> result = ExcelUtil.importExcel(file.getInputStream(), SysUserImportVo.class, new SysUserImportListener(false, deptService.selectDeptList("/")));
return R.ok(result.getAnalysis()); return R.ok(result.getAnalysis());
} }
...@@ -108,30 +108,9 @@ public class SysUserController extends BaseController { ...@@ -108,30 +108,9 @@ public class SysUserController extends BaseController {
// @org.jetbrains.annotations.NotNull // @org.jetbrains.annotations.NotNull
// private List<DropDownOptions> getDropDownOptions() { // private List<DropDownOptions> getDropDownOptions() {
// SysDeptBo sysDeptBo = new SysDeptBo(); // // 获取部门列表
// sysDeptBo.setStatus(UserConstants.DEPT_NORMAL); // List<SysDeptVo> deptList = deptService.selectDeptList(DropDownOptions.DELIMITER);
// //获取部门列表 // List<DemoDept> deptDataList = StreamUtils.toList(deptList, p -> new DemoDept().setId(p.getDeptId()).setName(p.getDeptName()).setDeptId(p.getDeptId()));
// List<SysDeptVo> deptList = deptService.selectDeptList(sysDeptBo);
// deptList.forEach(d -> {
// //设置名称
// Long parentId = d.getParentId();
// List<String> nameList = new ArrayList<>();
// nameList.add(d.getDeptName());
// while (parentId != 0L) {
// Long finalParentId = parentId;
// SysDeptVo sdv = StreamUtils.findFirst(deptList, dept -> Objects.equals(dept.getDeptId(), finalParentId));
// if (sdv != null) {
// nameList.add(sdv.getDeptName());
// parentId = sdv.getParentId();
// } else {
// parentId = 0L;
// }
// }
// Collections.reverse(nameList);
// String name = StrUtil.join("-", nameList);
// d.setDeptName(name);
// });
// List<DemoDept> deptDataList = StreamUtils.toList(deptList, dept -> new DemoDept().setId(dept.getDeptId()).setName(dept.getDeptName()).setDeptId(dept.getDeptId()));
// //获取角色列表 // //获取角色列表
// List<SysRoleVo> roleList = getInfo(null).getData().getRoles(); // List<SysRoleVo> roleList = getInfo(null).getData().getRoles();
// //获取职位列表 // //获取职位列表
......
...@@ -20,12 +20,14 @@ import org.dromara.common.excel.core.ExcelResult; ...@@ -20,12 +20,14 @@ import org.dromara.common.excel.core.ExcelResult;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.system.controller.system.SysUserController; import org.dromara.system.controller.system.SysUserController;
import org.dromara.system.domain.bo.SysUserBo; import org.dromara.system.domain.bo.SysUserBo;
import org.dromara.system.domain.vo.SysDeptVo;
import org.dromara.system.domain.vo.SysUserImportVo; import org.dromara.system.domain.vo.SysUserImportVo;
import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.system.service.*; import org.dromara.system.service.*;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Optional;
/** /**
* 系统用户自定义导入 * 系统用户自定义导入
...@@ -46,13 +48,14 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo ...@@ -46,13 +48,14 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo
private final Boolean isUpdateSupport; private final Boolean isUpdateSupport;
private final Long operUserId; private final Long operUserId;
private final List<SysDeptVo> deptList;
private int successNum = 0; private int successNum = 0;
private int failureNum = 0; private int failureNum = 0;
private final StringBuilder successMsg = new StringBuilder(); private final StringBuilder successMsg = new StringBuilder();
private final StringBuilder failureMsg = new StringBuilder(); private final StringBuilder failureMsg = new StringBuilder();
public SysUserImportListener(Boolean isUpdateSupport) { public SysUserImportListener(Boolean isUpdateSupport, List<SysDeptVo> deptList) {
String initPassword = SpringUtils.getBean(ISysConfigService.class).selectConfigByKey("sys.user.initPassword"); String initPassword = SpringUtils.getBean(ISysConfigService.class).selectConfigByKey("sys.user.initPassword");
this.userService = SpringUtils.getBean(ISysUserService.class); this.userService = SpringUtils.getBean(ISysUserService.class);
this.sysUserController = SpringUtils.getBean(SysUserController.class); this.sysUserController = SpringUtils.getBean(SysUserController.class);
...@@ -62,6 +65,7 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo ...@@ -62,6 +65,7 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo
this.password = BCrypt.hashpw(initPassword); this.password = BCrypt.hashpw(initPassword);
this.isUpdateSupport = isUpdateSupport; this.isUpdateSupport = isUpdateSupport;
this.operUserId = LoginHelper.getUserId(); this.operUserId = LoginHelper.getUserId();
this.deptList = deptList;
} }
@Override @Override
...@@ -76,7 +80,7 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo ...@@ -76,7 +80,7 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo
user.setCreateBy(operUserId); user.setCreateBy(operUserId);
//设置部门 //设置部门
if (StringUtils.isNotEmpty(userVo.getDeptName())) { if (StringUtils.isNotEmpty(userVo.getDeptName())) {
Long deptId = sysDeptService.selectDeptIdByName(StrUtil.split(userVo.getDeptName(), "/")); Long deptId = Optional.ofNullable(StreamUtils.findFirst(deptList, d -> Objects.equals(d.getDeptName(), userVo.getDeptName()))).map(SysDeptVo::getDeptId).orElse(null);
user.setDeptId(deptId); user.setDeptId(deptId);
} }
//设置岗位 //设置岗位
......
...@@ -22,6 +22,14 @@ public interface ISysDeptService { ...@@ -22,6 +22,14 @@ public interface ISysDeptService {
*/ */
List<SysDeptVo> selectDeptList(SysDeptBo dept); List<SysDeptVo> selectDeptList(SysDeptBo dept);
/**
* 获取数据
*
* @param split 分割符
* @return 部门信息集合
*/
List<SysDeptVo> selectDeptList(String split);
/** /**
* 查询部门树结构信息 * 查询部门树结构信息
* *
......
...@@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil; ...@@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
...@@ -15,6 +16,7 @@ import org.dromara.common.core.constant.CacheNames; ...@@ -15,6 +16,7 @@ import org.dromara.common.core.constant.CacheNames;
import org.dromara.common.core.constant.UserConstants; import org.dromara.common.core.constant.UserConstants;
import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.*; import org.dromara.common.core.utils.*;
import org.dromara.common.excel.core.DropDownOptions;
import org.dromara.common.mybatis.helper.DataBaseHelper; import org.dromara.common.mybatis.helper.DataBaseHelper;
import org.dromara.common.redis.utils.CacheUtils; import org.dromara.common.redis.utils.CacheUtils;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
...@@ -29,10 +31,7 @@ import org.springframework.cache.annotation.CacheEvict; ...@@ -29,10 +31,7 @@ import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -63,6 +62,42 @@ public class SysDeptServiceImpl implements ISysDeptService { ...@@ -63,6 +62,42 @@ public class SysDeptServiceImpl implements ISysDeptService {
return baseMapper.selectDeptList(lqw); return baseMapper.selectDeptList(lqw);
} }
@Override
public List<SysDeptVo> selectDeptList(String split) {
SysDeptBo dept = new SysDeptBo();
dept.setStatus(UserConstants.DEPT_NORMAL);
LambdaQueryWrapper<SysDept> lqw = buildQueryWrapper(dept);
List<SysDeptVo> deptList = baseMapper.selectDeptList(lqw);
// 构建部门ID到部门对象的映射,提高查找效率
Map<Long, SysDeptVo> deptMap = deptList.stream()
.collect(Collectors.toMap(SysDeptVo::getDeptId, d -> d));
return StreamUtils.toList(deptList, d -> {
List<String> nameList = new ArrayList<>();
Long currentId = d.getDeptId();
// 自底向上收集部门名称
while (currentId != null && currentId != 0L) {
SysDeptVo currentDept = deptMap.get(currentId);
if (currentDept == null) {
break;
}
nameList.add(currentDept.getDeptName());
currentId = currentDept.getParentId();
}
// 如果没有找到任何部门,使用原始名称
if (nameList.isEmpty()) {
nameList.add(dept.getDeptName());
} else {
// 反转列表以获得正确的层级顺序
Collections.reverse(nameList);
}
// 拼接层级名称
String fullName = StrUtil.join(DropDownOptions.DELIMITER, nameList);
SysDeptVo sd = BeanUtil.copyProperties(d, SysDeptVo.class);
sd.setDeptName(fullName);
return sd;
});
}
/** /**
* 查询部门树结构信息 * 查询部门树结构信息
* *
......
...@@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil; ...@@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
...@@ -32,11 +31,9 @@ import org.dromara.server.api.RemoteServerService; ...@@ -32,11 +31,9 @@ import org.dromara.server.api.RemoteServerService;
import org.dromara.server.api.domain.RemoteUser; import org.dromara.server.api.domain.RemoteUser;
import org.dromara.system.domain.*; import org.dromara.system.domain.*;
import org.dromara.system.domain.bo.SysUserBo; import org.dromara.system.domain.bo.SysUserBo;
import org.dromara.system.domain.vo.SysPostVo; import org.dromara.system.domain.vo.*;
import org.dromara.system.domain.vo.SysRoleVo;
import org.dromara.system.domain.vo.SysUserExportVo;
import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.system.mapper.*; import org.dromara.system.mapper.*;
import org.dromara.system.service.ISysDeptService;
import org.dromara.system.service.ISysUserService; import org.dromara.system.service.ISysUserService;
import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
...@@ -63,6 +60,7 @@ public class SysUserServiceImpl implements ISysUserService { ...@@ -63,6 +60,7 @@ public class SysUserServiceImpl implements ISysUserService {
private final SysUserRoleMapper userRoleMapper; private final SysUserRoleMapper userRoleMapper;
private final SysUserPostMapper userPostMapper; private final SysUserPostMapper userPostMapper;
private final SysTenantMapper sysTenantMapper; private final SysTenantMapper sysTenantMapper;
private final ISysDeptService sysDeptService;
@DubboReference @DubboReference
private RemoteServerService remoteServerService; private RemoteServerService remoteServerService;
...@@ -90,17 +88,7 @@ public class SysUserServiceImpl implements ISysUserService { ...@@ -90,17 +88,7 @@ public class SysUserServiceImpl implements ISysUserService {
if (CollectionUtils.isNotEmpty(list)) { if (CollectionUtils.isNotEmpty(list)) {
List<Long> userIds = StreamUtils.toList(list, SysUserExportVo::getUserId); List<Long> userIds = StreamUtils.toList(list, SysUserExportVo::getUserId);
//获取部门信息 //获取部门信息
List<Long> deptIdList = list.stream().map(SysUserExportVo::getDeptId).filter(Objects::nonNull).distinct().collect(Collectors.toList()); List<SysDeptVo> deptList = sysDeptService.selectDeptList("/");
List<SysDept> deptList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(deptIdList)) {
List<SysDept> sysDeptList = deptMapper.selectByIds(deptIdList);
deptIdList = sysDeptList.stream().flatMap(s -> {
List<Long> deptIds = StrUtil.split(s.getAncestors(), ',', -1, true, Convert::toLong);
deptIds.add(s.getDeptId());
return deptIds.stream();
}).distinct().collect(Collectors.toList());
deptList = deptMapper.selectByIds(deptIdList);
}
//获取岗位信息 //获取岗位信息
List<SysUserPost> supList = userPostMapper.selectList(new LambdaQueryWrapper<SysUserPost>().in(SysUserPost::getUserId, userIds)); List<SysUserPost> supList = userPostMapper.selectList(new LambdaQueryWrapper<SysUserPost>().in(SysUserPost::getUserId, userIds));
List<SysPost> postList = new ArrayList<>(); List<SysPost> postList = new ArrayList<>();
...@@ -115,23 +103,13 @@ public class SysUserServiceImpl implements ISysUserService { ...@@ -115,23 +103,13 @@ public class SysUserServiceImpl implements ISysUserService {
List<Long> roleIds = StreamUtils.toList(surList, SysUserRole::getRoleId); List<Long> roleIds = StreamUtils.toList(surList, SysUserRole::getRoleId);
roleList = roleMapper.selectByIds(roleIds); roleList = roleMapper.selectByIds(roleIds);
} }
List<SysDept> finalDeptList = deptList;
List<SysPost> finalPostList = postList; List<SysPost> finalPostList = postList;
List<SysRole> finalRoleList = roleList; List<SysRole> finalRoleList = roleList;
for (SysUserExportVo export : list) { for (SysUserExportVo export : list) {
//设置部门信息 //设置部门信息
if (ObjectUtil.isNotNull(export.getDeptId())) { if (ObjectUtil.isNotNull(export.getDeptId())) {
SysDept sd = StreamUtils.findFirst(deptList, d -> Objects.equals(d.getDeptId(), export.getDeptId())); export.setDeptName(Optional.ofNullable(StreamUtils.findFirst(deptList, d -> Objects.equals(d.getDeptId(), export.getDeptId()))).map(SysDeptVo::getDeptName).orElse(null));
if (ObjectUtil.isNotNull(sd)) {
List<Long> deptIds = StrUtil.split(sd.getAncestors(), ',', -1, true, Convert::toLong);
deptIds.add(sd.getDeptId());
export.setDeptName(deptIds.stream().map(deptId -> {
if (Objects.equals(deptId, 0L)) {
return null;
}
return Optional.ofNullable(StreamUtils.findFirst(finalDeptList, d -> Objects.equals(d.getDeptId(), deptId))).map(SysDept::getDeptName).orElse(null);
}).filter(Objects::nonNull).collect(Collectors.joining("/")));
}
} }
//设置岗位信息 //设置岗位信息
List<SysUserPost> posts = StreamUtils.filter(supList, sup -> Objects.equals(sup.getUserId(), export.getUserId())); List<SysUserPost> posts = StreamUtils.filter(supList, sup -> Objects.equals(sup.getUserId(), export.getUserId()));
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论