From 81ed861819c8b909617acc6df96ca98967045a3d Mon Sep 17 00:00:00 2001 From: dataprince Date: Thu, 26 Oct 2023 17:28:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E7=94=A8=E6=88=B7=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=EF=BC=9A=E5=8A=A0=E5=85=A5=E9=83=A8=E9=97=A8=E5=90=8D?= =?UTF-8?q?=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/system/domain/bo/SysUserBo.java | 3 + .../system/domain/vo/SysUserImportVo.java | 13 +-- .../listener/SysUserImportListener.java | 83 +++++++++++++------ .../ruoyi/system/service/ISysDeptService.java | 15 ++++ .../service/impl/SysDeptServiceImpl.java | 58 +++++-------- .../service/impl/SysUserServiceImpl.java | 7 +- 6 files changed, 110 insertions(+), 69 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysUserBo.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysUserBo.java index 6438822..4e30bac 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysUserBo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysUserBo.java @@ -36,6 +36,9 @@ public class SysUserBo extends BaseEntity { */ private Long deptId; + /** 部门名称,导入时使用 */ + private String deptName; + /** * 用户账号 */ diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysUserImportVo.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysUserImportVo.java index e28ee3f..781c0cd 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysUserImportVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysUserImportVo.java @@ -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; /** * 用户账号 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/SysUserImportListener.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/SysUserImportListener.java index 7b1519f..ba20d1d 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/SysUserImportListener.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/SysUserImportListener.java @@ -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").append(successNum).append("、账号 ").append(user.getUserName()).append(" 导入成功"); - } else if (isUpdateSupport) { - Long userId = sysUser.getUserId(); - SysUserBo user = BeanUtil.toBean(userVo, SysUserBo.class); - user.setUserId(userId); - ValidatorUtils.validate(user); - userService.checkUserAllowed(user.getUserId()); - userService.checkUserDataScope(user.getUserId()); - user.setUpdateBy(operUserId); - userService.updateUser(user); - successNum++; - successMsg.append("
").append(successNum).append("、账号 ").append(user.getUserName()).append(" 更新成功"); + 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(operateUserId); + userService.insertUser(user); + successNum++; + successMsg.append("
").append(successNum).append("、账号 ").append(user.getUserName()).append(" 导入成功"); + } else if (isUpdateSupport) { + 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(operateUserId); + userService.updateUser(user); + successNum++; + successMsg.append("
").append(successNum).append("、账号 ").append(user.getUserName()).append(" 更新成功"); + } else { + failureNum++; + failureMsg.append("
").append(failureNum).append("、账号 ").append(sysUser.getUserName()).append(" 已存在"); + } + + } else { + failureNum++; + failureMsg.append("
").append(failureNum).append("、账号 ").append(sysUser.getUserName()).append(" 的部门名称 ").append(userVo.getDeptName()).append(" 在部门表中不存在,无法导入"); + } + } + + if (deptCount == 0) { + failureNum++; + failureMsg.append("
").append(failureNum).append("、账号 ").append(userVo.getUserName()).append(" 的部门名称 ").append(userVo.getDeptName()).append(" 在部门表中不存在,无法导入"); + } + if (deptCount > 1) { + failureNum++; + failureMsg.append("
").append(failureNum).append("、账号 ").append(userVo.getUserName()).append(" 的部门名称 ").append(userVo.getDeptName()).append(" 存在两条以上部门记录,无法导入"); + } } else { failureNum++; - failureMsg.append("
").append(failureNum).append("、账号 ").append(sysUser.getUserName()).append(" 已存在"); + failureMsg.append("
").append(failureNum).append("、账号 ").append(userVo.getUserName()).append(" 的部门名称为空,无法导入"); } + } catch (Exception e) { failureNum++; String msg = "
" + failureNum + "、账号 " + userVo.getUserName() + " 导入失败:"; @@ -97,7 +132,7 @@ public class SysUserImportListener extends AnalysisEventListener 0) { - failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); + failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据没有成功导入,错误如下:"); throw new ServiceException(failureMsg.toString()); } else { successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:"); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java index de33de4..77afbac 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java @@ -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 */ SysDeptVo selectDeptById(Long deptId); + /** + * 根据 部门名称 查询记录数量 + * @param deptName 部门名称 + * @return 记录数量 + */ + long selectDeptCountByName(String deptName); + + /** + * 根据 部门名称 查询部门信息 + * @param deptName 部门名称 + * @return 部门信息 + */ + SysDeptVo selectDeptByName(String deptName); + /** * 根据ID查询所有子部门(正常状态) * diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java index 7b30e74..b0ba226 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java @@ -159,6 +159,28 @@ public class SysDeptServiceImpl extends BaseServiceImpl 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 return this.updateById(sysDept); } -// /** -// * 递归列表 -// */ -// private void recursionFn(List list, SysDept t) { -// // 得到子节点列表 -// List childList = getChildList(list, t); -// t.setChildren(childList); -// for (SysDept tChild : childList) { -// if (hasChild(list, tChild)) { -// recursionFn(list, tChild); -// } -// } -// } -// -// /** -// * 得到子节点列表 -// */ -// private List getChildList(List list, SysDept t) { -// List tlist = new ArrayList<>(); -// Iterator 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 list, SysDept t) { -// return getChildList(list, t).size() > 0; -// } - /** * 通过部门ID查询部门名称 * diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java index 8dbfd66..a05e2da 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java @@ -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,7 +594,9 @@ public class SysUserServiceImpl extends BaseServiceImpl * @param user 用户对象 */ public void insertUserRole(SysUser user) { - userRoleService.insertUserRoles(user.getUserId(),user.getRoleIds()); + if (ObjectUtil.isNotEmpty(user.getUserId()) && ObjectUtil.isNotEmpty(user.getRoleIds())) { + userRoleService.insertUserRoles(user.getUserId(),user.getRoleIds()); + } } /** @@ -606,7 +607,7 @@ public class SysUserServiceImpl extends BaseServiceImpl public boolean insertUserPost(SysUser user) { boolean inserted = true; Long[] posts = user.getPostIds(); - if (StringUtils.isNotEmpty(posts)) { + if (ObjectUtil.isNotEmpty(posts)) { // 新增用户与岗位管理 List list = new ArrayList<>(posts.length); for (Long postId : posts) {