升级用户导入:加入部门名称
This commit is contained in:
parent
29d47ab642
commit
81ed861819
@ -36,6 +36,9 @@ public class SysUserBo extends BaseEntity {
|
||||
*/
|
||||
private Long deptId;
|
||||
|
||||
/** 部门名称,导入时使用 */
|
||||
private String deptName;
|
||||
|
||||
/**
|
||||
* 用户账号
|
||||
*/
|
||||
|
@ -17,7 +17,6 @@ import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
// @Accessors(chain = true) // 导入不允许使用 会找不到set方法
|
||||
public class SysUserImportVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
@ -29,11 +28,13 @@ public class SysUserImportVo implements Serializable {
|
||||
@ExcelProperty(value = "用户序号")
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 部门ID
|
||||
*/
|
||||
@ExcelProperty(value = "部门编号")
|
||||
private Long deptId;
|
||||
/** 部门ID */
|
||||
// @ExcelProperty(value = "部门编号")
|
||||
// private Long deptId;
|
||||
|
||||
/** 部门名称 */
|
||||
@ExcelProperty(value = "部门名称")
|
||||
private String deptName;
|
||||
|
||||
/**
|
||||
* 用户账号
|
||||
|
@ -7,14 +7,17 @@ import com.alibaba.excel.context.AnalysisContext;
|
||||
import com.alibaba.excel.event.AnalysisEventListener;
|
||||
import com.ruoyi.common.core.exception.ServiceException;
|
||||
import com.ruoyi.common.core.utils.SpringUtils;
|
||||
import com.ruoyi.common.core.utils.StringUtils;
|
||||
import com.ruoyi.common.core.utils.ValidatorUtils;
|
||||
import com.ruoyi.common.excel.core.ExcelListener;
|
||||
import com.ruoyi.common.excel.core.ExcelResult;
|
||||
import com.ruoyi.common.security.utils.LoginHelper;
|
||||
import com.ruoyi.system.domain.bo.SysUserBo;
|
||||
import com.ruoyi.system.domain.vo.SysDeptVo;
|
||||
import com.ruoyi.system.domain.vo.SysUserImportVo;
|
||||
import com.ruoyi.system.domain.vo.SysUserVo;
|
||||
import com.ruoyi.system.service.ISysConfigService;
|
||||
import com.ruoyi.system.service.ISysDeptService;
|
||||
import com.ruoyi.system.service.ISysUserService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@ -30,11 +33,13 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo
|
||||
|
||||
private final ISysUserService userService;
|
||||
|
||||
private final ISysDeptService deptService;
|
||||
|
||||
private final String password;
|
||||
|
||||
private final Boolean isUpdateSupport;
|
||||
|
||||
private final Long operUserId;
|
||||
private final Long operateUserId;
|
||||
|
||||
private int successNum = 0;
|
||||
private int failureNum = 0;
|
||||
@ -44,21 +49,30 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo
|
||||
public SysUserImportListener(Boolean isUpdateSupport) {
|
||||
String initPassword = SpringUtils.getBean(ISysConfigService.class).selectConfigByKey("sys.user.initPassword");
|
||||
this.userService = SpringUtils.getBean(ISysUserService.class);
|
||||
this.deptService = SpringUtils.getBean(ISysDeptService.class);
|
||||
this.password = BCrypt.hashpw(initPassword);
|
||||
this.isUpdateSupport = isUpdateSupport;
|
||||
this.operUserId = LoginHelper.getUserId();
|
||||
this.operateUserId = LoginHelper.getUserId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invoke(SysUserImportVo userVo, AnalysisContext context) {
|
||||
SysUserVo sysUser = this.userService.selectUserByUserName(userVo.getUserName());
|
||||
try {
|
||||
if (StringUtils.isNotEmpty(userVo.getDeptName())) {
|
||||
long deptCount = deptService.selectDeptCountByName(userVo.getDeptName());
|
||||
if (deptCount == 1) {
|
||||
SysDeptVo dept = deptService.selectDeptByName(userVo.getDeptName());
|
||||
if (ObjectUtil.isNotNull(dept)) {
|
||||
// 验证是否存在这个用户
|
||||
if (ObjectUtil.isNull(sysUser)) {
|
||||
//用户不存在,插入
|
||||
userVo.setUserId(null);//屏蔽掉前台传过来的用户ID,使用系统的雪花算法值
|
||||
SysUserBo user = BeanUtil.toBean(userVo, SysUserBo.class);
|
||||
user.setDeptId(dept.getDeptId());//获取用户部门ID
|
||||
ValidatorUtils.validate(user);
|
||||
user.setPassword(password);
|
||||
user.setCreateBy(operUserId);
|
||||
user.setCreateBy(operateUserId);
|
||||
userService.insertUser(user);
|
||||
successNum++;
|
||||
successMsg.append("<br/>").append(successNum).append("、账号 ").append(user.getUserName()).append(" 导入成功");
|
||||
@ -66,10 +80,11 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo
|
||||
Long userId = sysUser.getUserId();
|
||||
SysUserBo user = BeanUtil.toBean(userVo, SysUserBo.class);
|
||||
user.setUserId(userId);
|
||||
user.setDeptId(dept.getDeptId());//获取用户部门ID
|
||||
ValidatorUtils.validate(user);
|
||||
userService.checkUserAllowed(user.getUserId());
|
||||
userService.checkUserDataScope(user.getUserId());
|
||||
user.setUpdateBy(operUserId);
|
||||
user.setUpdateBy(operateUserId);
|
||||
userService.updateUser(user);
|
||||
successNum++;
|
||||
successMsg.append("<br/>").append(successNum).append("、账号 ").append(user.getUserName()).append(" 更新成功");
|
||||
@ -77,6 +92,26 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo
|
||||
failureNum++;
|
||||
failureMsg.append("<br/>").append(failureNum).append("、账号 ").append(sysUser.getUserName()).append(" 已存在");
|
||||
}
|
||||
|
||||
} else {
|
||||
failureNum++;
|
||||
failureMsg.append("<br/>").append(failureNum).append("、账号 ").append(sysUser.getUserName()).append(" 的部门名称 ").append(userVo.getDeptName()).append(" 在部门表中不存在,无法导入");
|
||||
}
|
||||
}
|
||||
|
||||
if (deptCount == 0) {
|
||||
failureNum++;
|
||||
failureMsg.append("<br/>").append(failureNum).append("、账号 ").append(userVo.getUserName()).append(" 的部门名称 ").append(userVo.getDeptName()).append(" 在部门表中不存在,无法导入");
|
||||
}
|
||||
if (deptCount > 1) {
|
||||
failureNum++;
|
||||
failureMsg.append("<br/>").append(failureNum).append("、账号 ").append(userVo.getUserName()).append(" 的部门名称 ").append(userVo.getDeptName()).append(" 存在两条以上部门记录,无法导入");
|
||||
}
|
||||
} else {
|
||||
failureNum++;
|
||||
failureMsg.append("<br/>").append(failureNum).append("、账号 ").append(userVo.getUserName()).append(" 的部门名称为空,无法导入");
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
failureNum++;
|
||||
String msg = "<br/>" + failureNum + "、账号 " + userVo.getUserName() + " 导入失败:";
|
||||
@ -97,7 +132,7 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo
|
||||
@Override
|
||||
public String getAnalysis() {
|
||||
if (failureNum > 0) {
|
||||
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
|
||||
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据没有成功导入,错误如下:");
|
||||
throw new ServiceException(failureMsg.toString());
|
||||
} else {
|
||||
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
|
||||
|
@ -3,6 +3,7 @@ package com.ruoyi.system.service;
|
||||
import java.util.List;
|
||||
|
||||
import cn.hutool.core.lang.tree.Tree;
|
||||
import com.alibaba.excel.event.AbstractIgnoreExceptionReadListener;
|
||||
import com.ruoyi.common.orm.core.service.IBaseService;
|
||||
import com.ruoyi.system.domain.SysDept;
|
||||
import com.ruoyi.system.domain.bo.SysDeptBo;
|
||||
@ -55,6 +56,20 @@ public interface ISysDeptService extends IBaseService<SysDept>
|
||||
*/
|
||||
SysDeptVo selectDeptById(Long deptId);
|
||||
|
||||
/**
|
||||
* 根据 部门名称 查询记录数量
|
||||
* @param deptName 部门名称
|
||||
* @return 记录数量
|
||||
*/
|
||||
long selectDeptCountByName(String deptName);
|
||||
|
||||
/**
|
||||
* 根据 部门名称 查询部门信息
|
||||
* @param deptName 部门名称
|
||||
* @return 部门信息
|
||||
*/
|
||||
SysDeptVo selectDeptByName(String deptName);
|
||||
|
||||
/**
|
||||
* 根据ID查询所有子部门(正常状态)
|
||||
*
|
||||
|
@ -159,6 +159,28 @@ public class SysDeptServiceImpl extends BaseServiceImpl<SysDeptMapper, SysDept>
|
||||
return this.getOneAs(queryWrapper, SysDeptVo.class);//TODO:缺少parent_name
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据 部门名称 查询记录数量
|
||||
* @param deptName 部门名称
|
||||
* @return 记录数量
|
||||
*/
|
||||
@Override
|
||||
public long selectDeptCountByName(String deptName) {
|
||||
QueryWrapper queryWrapper = query().where(SYS_DEPT.DEL_FLAG.eq("0")).and(SYS_DEPT.DEPT_NAME.eq(deptName)).and(SYS_DEPT.STATUS.eq("0"));
|
||||
return this.count(queryWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据 部门名称 查询部门信息
|
||||
* @param deptName 部门名称
|
||||
* @return 部门信息
|
||||
*/
|
||||
@Override
|
||||
public SysDeptVo selectDeptByName(String deptName) {
|
||||
QueryWrapper queryWrapper = query().where(SYS_DEPT.DEL_FLAG.eq("0")).and(SYS_DEPT.DEPT_NAME.eq(deptName)).and(SYS_DEPT.STATUS.eq("0"));
|
||||
return this.getOneAs(queryWrapper,SysDeptVo.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据ID查询所有子部门(正常状态)
|
||||
*
|
||||
@ -343,42 +365,6 @@ public class SysDeptServiceImpl extends BaseServiceImpl<SysDeptMapper, SysDept>
|
||||
return this.updateById(sysDept);
|
||||
}
|
||||
|
||||
// /**
|
||||
// * 递归列表
|
||||
// */
|
||||
// private void recursionFn(List<SysDept> list, SysDept t) {
|
||||
// // 得到子节点列表
|
||||
// List<SysDept> childList = getChildList(list, t);
|
||||
// t.setChildren(childList);
|
||||
// for (SysDept tChild : childList) {
|
||||
// if (hasChild(list, tChild)) {
|
||||
// recursionFn(list, tChild);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * 得到子节点列表
|
||||
// */
|
||||
// private List<SysDept> getChildList(List<SysDept> list, SysDept t) {
|
||||
// List<SysDept> tlist = new ArrayList<>();
|
||||
// Iterator<SysDept> it = list.iterator();
|
||||
// while (it.hasNext()) {
|
||||
// SysDept n = (SysDept) it.next();
|
||||
// if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getDeptId().longValue()) {
|
||||
// tlist.add(n);
|
||||
// }
|
||||
// }
|
||||
// return tlist;
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * 判断是否有子节点
|
||||
// */
|
||||
// private boolean hasChild(List<SysDept> list, SysDept t) {
|
||||
// return getChildList(list, t).size() > 0;
|
||||
// }
|
||||
|
||||
/**
|
||||
* 通过部门ID查询部门名称
|
||||
*
|
||||
|
@ -21,7 +21,6 @@ import com.ruoyi.common.orm.core.service.impl.BaseServiceImpl;
|
||||
import com.ruoyi.common.security.utils.LoginHelper;
|
||||
import com.ruoyi.system.domain.*;
|
||||
import com.ruoyi.system.domain.bo.SysUserBo;
|
||||
import com.ruoyi.system.domain.vo.SysDeptVo;
|
||||
import com.ruoyi.system.domain.vo.SysPostVo;
|
||||
import com.ruoyi.system.domain.vo.SysRoleVo;
|
||||
import com.ruoyi.system.domain.vo.SysUserVo;
|
||||
@ -595,8 +594,10 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserMapper, SysUser>
|
||||
* @param user 用户对象
|
||||
*/
|
||||
public void insertUserRole(SysUser user) {
|
||||
if (ObjectUtil.isNotEmpty(user.getUserId()) && ObjectUtil.isNotEmpty(user.getRoleIds())) {
|
||||
userRoleService.insertUserRoles(user.getUserId(),user.getRoleIds());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增用户岗位信息
|
||||
@ -606,7 +607,7 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserMapper, SysUser>
|
||||
public boolean insertUserPost(SysUser user) {
|
||||
boolean inserted = true;
|
||||
Long[] posts = user.getPostIds();
|
||||
if (StringUtils.isNotEmpty(posts)) {
|
||||
if (ObjectUtil.isNotEmpty(posts)) {
|
||||
// 新增用户与岗位管理
|
||||
List<SysUserPost> list = new ArrayList<>(posts.length);
|
||||
for (Long postId : posts) {
|
||||
|
Loading…
Reference in New Issue
Block a user