From 680a9877fe64c40aced1f4e04ea34056fac204fc Mon Sep 17 00:00:00 2001
From: heheng <475597332@qq.com>
Date: Thu, 19 Mar 2026 14:03:30 +0800
Subject: [PATCH] 支持多部门
---
gkhy-system/src/main/resources/mapper/system/SysUserMapper.xml | 74 +++++++-
gkhy-system/src/main/resources/mapper/system/DailySafetyInspectionMapper.xml | 12 +
gkhy-common/src/main/java/com/gkhy/common/core/domain/entity/SysUser.java | 32 ++-
gkhy-system/src/main/java/com/gkhy/system/domain/SysUserDept.java | 20 ++
gkhy-common/src/main/java/com/gkhy/common/core/domain/model/LoginUser.java | 18 ++
gkhy-system/src/main/resources/mapper/system/SysUserDeptMapper.xml | 38 ++++
gkhy-framework/src/main/java/com/gkhy/framework/aspectj/LogAspect.java | 15 +
gkhy-system/src/main/java/com/gkhy/system/service/impl/SysUserServiceImpl.java | 52 +++++
gkhy-system/src/main/java/com/gkhy/system/mapper/DailySafetyInspectionMapper.java | 2
gkhy-system/src/main/java/com/gkhy/system/service/ISysUserService.java | 2
gkhy-system/src/main/java/com/gkhy/system/service/impl/SysDeptServiceImpl.java | 12 +
gkhy-framework/src/main/java/com/gkhy/framework/aspectj/DataScopeAspect.java | 29 +++
gkhy-common/src/main/java/com/gkhy/common/utils/SecurityUtils.java | 13 +
gkhy-system/src/main/java/com/gkhy/system/domain/SysUserOnline.java | 14 +
gkhy-system/src/main/java/com/gkhy/system/service/impl/DailySafetyInspectionServiceImpl.java | 34 +++
gkhy-system/src/main/java/com/gkhy/system/service/impl/SysUserOnlineServiceImpl.java | 16 +
gkhy-system/src/main/resources/mapper/system/SysDeptMapper.xml | 12 +
gkhy-system/src/main/java/com/gkhy/system/mapper/SysUserMapper.java | 2
gkhy-framework/src/main/java/com/gkhy/framework/web/service/UserDetailsServiceImpl.java | 14 +
gkhy-admin/src/main/java/com/gkhy/web/controller/system/SysUserController.java | 8
gkhy-system/src/main/java/com/gkhy/system/mapper/SysDeptMapper.java | 2
gkhy-system/src/main/java/com/gkhy/system/mapper/SysUserDeptMapper.java | 45 +++++
22 files changed, 417 insertions(+), 49 deletions(-)
diff --git a/gkhy-admin/src/main/java/com/gkhy/web/controller/system/SysUserController.java b/gkhy-admin/src/main/java/com/gkhy/web/controller/system/SysUserController.java
index 3c92379..6d6c72f 100644
--- a/gkhy-admin/src/main/java/com/gkhy/web/controller/system/SysUserController.java
+++ b/gkhy-admin/src/main/java/com/gkhy/web/controller/system/SysUserController.java
@@ -68,7 +68,9 @@
{
startPage();
List<SysUser> list = userService.selectUserList(user);
- return getDataTable(list);
+ TableDataInfo dataTable = getDataTable(list);
+ dataTable.setTotal(userService.selectUserListCount(user));
+ return dataTable;
}
@@ -145,7 +147,7 @@
@PostMapping
public AjaxResult add(@Validated @RequestBody SysUser user)
{
- deptService.checkDeptDataScope(user.getDeptId());
+ //deptService.checkDeptDataScope(user.getDeptId());
roleService.checkRoleDataScope(user.getRoleIds());
if (!userService.checkUserNameUnique(user))
{
@@ -174,7 +176,7 @@
{
userService.checkUserAllowed(user);
userService.checkUserDataScope(user.getUserId());
- deptService.checkDeptDataScope(user.getDeptId());
+ //deptService.checkDeptDataScope(user.getDeptId());
roleService.checkRoleDataScope(user.getRoleIds());
if (!userService.checkUserNameUnique(user))
{
diff --git a/gkhy-common/src/main/java/com/gkhy/common/core/domain/entity/SysUser.java b/gkhy-common/src/main/java/com/gkhy/common/core/domain/entity/SysUser.java
index 6623d2e..ac50dfe 100644
--- a/gkhy-common/src/main/java/com/gkhy/common/core/domain/entity/SysUser.java
+++ b/gkhy-common/src/main/java/com/gkhy/common/core/domain/entity/SysUser.java
@@ -77,7 +77,7 @@
@Excel(name = "部门名称", targetAttr = "deptName", type = Type.EXPORT),
@Excel(name = "部门负责人", targetAttr = "leader", type = Type.EXPORT)
})
- private SysDept dept;
+ private List<SysDept> depts;
@ApiModelProperty("角色key")
private String roleKey;
@@ -87,6 +87,9 @@
/** 角色组 */
private Long[] roleIds;
+
+ /** 部门组 */
+ private Long[] deptIds;
/** 岗位组 */
private Long[] postIds;
@@ -252,15 +255,6 @@
this.loginDate = loginDate;
}
- public SysDept getDept()
- {
- return dept;
- }
-
- public void setDept(SysDept dept)
- {
- this.dept = dept;
- }
public List<SysRole> getRoles()
{
@@ -330,7 +324,23 @@
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
- .append("dept", getDept())
+ .append("depts", getDepts())
.toString();
}
+
+ public List<SysDept> getDepts() {
+ return depts;
+ }
+
+ public void setDepts(List<SysDept> depts) {
+ this.depts = depts;
+ }
+
+ public Long[] getDeptIds() {
+ return deptIds;
+ }
+
+ public void setDeptIds(Long[] deptIds) {
+ this.deptIds = deptIds;
+ }
}
diff --git a/gkhy-common/src/main/java/com/gkhy/common/core/domain/model/LoginUser.java b/gkhy-common/src/main/java/com/gkhy/common/core/domain/model/LoginUser.java
index 30eb1a5..e311624 100644
--- a/gkhy-common/src/main/java/com/gkhy/common/core/domain/model/LoginUser.java
+++ b/gkhy-common/src/main/java/com/gkhy/common/core/domain/model/LoginUser.java
@@ -66,6 +66,8 @@
*/
private Set<String> permissions;
+ private Long[] deptIds;
+
/**
* 用户信息
*/
@@ -87,6 +89,14 @@
this.deptId = deptId;
this.user = user;
this.permissions = permissions;
+ }
+
+ public LoginUser(Long userId, Long deptId, SysUser user, Set<String> permissions, Long[] deptIds) {
+ this.userId = userId;
+ this.deptId = deptId;
+ this.user = user;
+ this.permissions = permissions;
+ this.deptIds = deptIds;
}
public Long getUserId()
@@ -263,4 +273,12 @@
{
return null;
}
+
+ public Long[] getDeptIds() {
+ return deptIds;
+ }
+
+ public void setDeptIds(Long[] deptIds) {
+ this.deptIds = deptIds;
+ }
}
diff --git a/gkhy-common/src/main/java/com/gkhy/common/utils/SecurityUtils.java b/gkhy-common/src/main/java/com/gkhy/common/utils/SecurityUtils.java
index adfce8e..0c6ee05 100644
--- a/gkhy-common/src/main/java/com/gkhy/common/utils/SecurityUtils.java
+++ b/gkhy-common/src/main/java/com/gkhy/common/utils/SecurityUtils.java
@@ -51,6 +51,19 @@
}
}
+
+ public static Long[] getDeptIds()
+ {
+ try
+ {
+ return getLoginUser().getDeptIds();
+ }
+ catch (Exception e)
+ {
+ throw new ServiceException("获取部门ID异常", HttpStatus.UNAUTHORIZED);
+ }
+ }
+
/**
* 获取用户账户
**/
diff --git a/gkhy-framework/src/main/java/com/gkhy/framework/aspectj/DataScopeAspect.java b/gkhy-framework/src/main/java/com/gkhy/framework/aspectj/DataScopeAspect.java
index 66e00f8..0c8b6fc 100644
--- a/gkhy-framework/src/main/java/com/gkhy/framework/aspectj/DataScopeAspect.java
+++ b/gkhy-framework/src/main/java/com/gkhy/framework/aspectj/DataScopeAspect.java
@@ -2,6 +2,8 @@
import java.util.ArrayList;
import java.util.List;
+
+import cn.hutool.core.util.ObjectUtil;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
@@ -131,11 +133,34 @@
}
else if (DATA_SCOPE_DEPT.equals(dataScope))
{
- sqlString.append(StringUtils.format(" OR {}.dept_id = {} ", deptAlias, user.getDeptId()));
+// sqlString.append(StringUtils.format(" OR {}.dept_id = {} ", deptAlias, user.getDeptId()));
+ if (ObjectUtil.isNotEmpty(user.getDeptIds()))
+ {
+ sqlString.append(StringUtils.format(" OR {}.dept_id IN ({}) ", deptAlias, StringUtils.join(user.getDeptIds(), ",")));
+ }
+ else
+ {
+ sqlString.append(StringUtils.format(" OR {}.dept_id = {} ", deptAlias, user.getDeptId()));
+ }
}
else if (DATA_SCOPE_DEPT_AND_CHILD.equals(dataScope))
{
- sqlString.append(StringUtils.format(" OR {}.dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id = {} or find_in_set( {} , ancestors ) )", deptAlias, user.getDeptId(), user.getDeptId()));
+ Long[] deptIds = user.getDeptIds();
+ if (deptIds != null && deptIds.length > 0)
+ {
+ // 多个部门时,查询这些部门及其所有子部门
+ StringBuilder deptCondition = new StringBuilder();
+ for (int i = 0; i < deptIds.length; i++)
+ {
+ if (i > 0)
+ {
+ deptCondition.append(" OR ");
+ }
+ deptCondition.append(StringUtils.format("{}.dept_id = {} OR find_in_set({}, {}.ancestors)", deptAlias, deptIds[i], deptIds[i], deptAlias));
+ }
+ sqlString.append(StringUtils.format(" OR ( {} )", deptCondition.toString()));
+ }
+ //sqlString.append(StringUtils.format(" OR {}.dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id = {} or find_in_set( {} , ancestors ) )", deptAlias, user.getDeptId(), user.getDeptId()));
}
else if (DATA_SCOPE_SELF.equals(dataScope))
{
diff --git a/gkhy-framework/src/main/java/com/gkhy/framework/aspectj/LogAspect.java b/gkhy-framework/src/main/java/com/gkhy/framework/aspectj/LogAspect.java
index 4c9399a..f953f66 100644
--- a/gkhy-framework/src/main/java/com/gkhy/framework/aspectj/LogAspect.java
+++ b/gkhy-framework/src/main/java/com/gkhy/framework/aspectj/LogAspect.java
@@ -1,9 +1,15 @@
package com.gkhy.framework.aspectj;
import java.util.Collection;
+import java.util.List;
import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.gkhy.common.core.domain.entity.SysDept;
import org.apache.commons.lang3.ArrayUtils;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
@@ -100,9 +106,14 @@
{
operLog.setOperName(loginUser.getUsername());
SysUser currentUser = loginUser.getUser();
- if (StringUtils.isNotNull(currentUser) && StringUtils.isNotNull(currentUser.getDept()))
+ if (StringUtils.isNotNull(currentUser) && ObjectUtil.isNotEmpty(currentUser.getDepts()))
{
- operLog.setDeptName(currentUser.getDept().getDeptName());
+ List<SysDept> depts = currentUser.getDepts();
+ String deptNames = depts == null ? "" : depts.stream()
+ .map(SysDept::getDeptName)
+ .filter(Objects::nonNull)
+ .collect(Collectors.joining(","));
+ operLog.setDeptName(deptNames);
}
}
diff --git a/gkhy-framework/src/main/java/com/gkhy/framework/web/service/UserDetailsServiceImpl.java b/gkhy-framework/src/main/java/com/gkhy/framework/web/service/UserDetailsServiceImpl.java
index 5d3928c..953af28 100644
--- a/gkhy-framework/src/main/java/com/gkhy/framework/web/service/UserDetailsServiceImpl.java
+++ b/gkhy-framework/src/main/java/com/gkhy/framework/web/service/UserDetailsServiceImpl.java
@@ -1,5 +1,7 @@
package com.gkhy.framework.web.service;
+import cn.hutool.core.util.ObjectUtil;
+import com.gkhy.common.core.domain.entity.SysDept;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -14,6 +16,8 @@
import com.gkhy.common.utils.MessageUtils;
import com.gkhy.common.utils.StringUtils;
import com.gkhy.system.service.ISysUserService;
+
+import java.util.List;
/**
* 用户验证处理
@@ -55,12 +59,20 @@
}
passwordService.validate(user);
-
+ List<SysDept> depts = user.getDepts();
+ if (ObjectUtil.isNotEmpty(depts)){
+ user.setDeptIds(depts.stream().map(SysDept::getDeptId).toArray(Long[]::new));
+ }
return createLoginUser(user);
}
public UserDetails createLoginUser(SysUser user)
{
+ if (ObjectUtil.isNotEmpty(user.getDeptIds())){
+
+ return new LoginUser(user.getUserId(), user.getDeptId(), user, permissionService.getMenuPermission(user), user.getDeptIds());
+ }
+
return new LoginUser(user.getUserId(), user.getDeptId(), user, permissionService.getMenuPermission(user));
}
}
diff --git a/gkhy-system/src/main/java/com/gkhy/system/domain/SysUserDept.java b/gkhy-system/src/main/java/com/gkhy/system/domain/SysUserDept.java
new file mode 100644
index 0000000..4140470
--- /dev/null
+++ b/gkhy-system/src/main/java/com/gkhy/system/domain/SysUserDept.java
@@ -0,0 +1,20 @@
+package com.gkhy.system.domain;
+
+
+import lombok.Data;
+
+/**
+ *用户和部门关联 sys_user_dept
+ *
+ * @author gkhy
+ */
+@Data
+public class SysUserDept
+{
+ /** 用户ID */
+ private Long userId;
+
+ /** 部门ID */
+ private Long deptId;
+
+}
diff --git a/gkhy-system/src/main/java/com/gkhy/system/domain/SysUserOnline.java b/gkhy-system/src/main/java/com/gkhy/system/domain/SysUserOnline.java
index 76b6d17..c694bc8 100644
--- a/gkhy-system/src/main/java/com/gkhy/system/domain/SysUserOnline.java
+++ b/gkhy-system/src/main/java/com/gkhy/system/domain/SysUserOnline.java
@@ -1,5 +1,9 @@
package com.gkhy.system.domain;
+import com.gkhy.common.core.domain.entity.SysDept;
+
+import java.util.List;
+
/**
* 当前在线会话
*
@@ -12,6 +16,8 @@
/** 部门名称 */
private String deptName;
+
+ private List<SysDept> depts;
/** 用户名称 */
private String userName;
@@ -110,4 +116,12 @@
{
this.loginTime = loginTime;
}
+
+ public List<SysDept> getDepts() {
+ return depts;
+ }
+
+ public void setDepts(List<SysDept> depts) {
+ this.depts = depts;
+ }
}
diff --git a/gkhy-system/src/main/java/com/gkhy/system/mapper/DailySafetyInspectionMapper.java b/gkhy-system/src/main/java/com/gkhy/system/mapper/DailySafetyInspectionMapper.java
index 3bd8855..8fe18fa 100644
--- a/gkhy-system/src/main/java/com/gkhy/system/mapper/DailySafetyInspectionMapper.java
+++ b/gkhy-system/src/main/java/com/gkhy/system/mapper/DailySafetyInspectionMapper.java
@@ -22,4 +22,6 @@
List<DailySafetyInspection> getDailySafetyInspectionList(DailySafetyInspection dailySafetyInspection);
int getCheckCount(Long deptId);
+
+ int getCheckCountList(List<Long> deptIds);
}
diff --git a/gkhy-system/src/main/java/com/gkhy/system/mapper/SysDeptMapper.java b/gkhy-system/src/main/java/com/gkhy/system/mapper/SysDeptMapper.java
index 423eac2..15d0ffa 100644
--- a/gkhy-system/src/main/java/com/gkhy/system/mapper/SysDeptMapper.java
+++ b/gkhy-system/src/main/java/com/gkhy/system/mapper/SysDeptMapper.java
@@ -41,6 +41,8 @@
*/
public SysDept selectDeptById(Long deptId);
+ List<SysDept> selectDeptByIds (Long[] ids);
+
/**
* 根据ID查询所有子部门
*
diff --git a/gkhy-system/src/main/java/com/gkhy/system/mapper/SysUserDeptMapper.java b/gkhy-system/src/main/java/com/gkhy/system/mapper/SysUserDeptMapper.java
new file mode 100644
index 0000000..2edb4ea
--- /dev/null
+++ b/gkhy-system/src/main/java/com/gkhy/system/mapper/SysUserDeptMapper.java
@@ -0,0 +1,45 @@
+package com.gkhy.system.mapper;
+
+import com.gkhy.system.domain.SysUserDept;
+
+import java.util.List;
+
+/**
+ *用户与部门关联表 数据层
+ *
+ * @author gkhy
+ */
+public interface SysUserDeptMapper
+{
+ /**
+ * 通过ID删除用户和部门关联
+ *
+ * @param userId 用户ID
+ * @return 结果
+ */
+ public int deleteUserDeptByUserId(Long userId);
+
+ /**
+ * 批量删除用户部门关联信息
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ public int deleteUserDept(Long[] ids);
+
+ /**
+ * 查询部门使用数量
+ *
+ * @param deptId 部门ID
+ * @return 结果
+ */
+ public int selectCountUserDeptByDeptId(Long deptId);
+
+ /**
+ * 批量新增用户部门信息
+ *
+ * @param userDeptList 用户部门列表
+ * @return 结果
+ */
+ public int batchUserDept(List<SysUserDept> userDeptList);
+}
diff --git a/gkhy-system/src/main/java/com/gkhy/system/mapper/SysUserMapper.java b/gkhy-system/src/main/java/com/gkhy/system/mapper/SysUserMapper.java
index 9bf778c..5c42b49 100644
--- a/gkhy-system/src/main/java/com/gkhy/system/mapper/SysUserMapper.java
+++ b/gkhy-system/src/main/java/com/gkhy/system/mapper/SysUserMapper.java
@@ -21,6 +21,8 @@
*/
public List<SysUser> selectUserList(SysUser sysUser);
+ long selectUserListCount(SysUser sysUser);
+
List<SysUser> selectUserListByRoleKey(SysUser sysUser);
/**
diff --git a/gkhy-system/src/main/java/com/gkhy/system/service/ISysUserService.java b/gkhy-system/src/main/java/com/gkhy/system/service/ISysUserService.java
index 898ae55..ca886b8 100644
--- a/gkhy-system/src/main/java/com/gkhy/system/service/ISysUserService.java
+++ b/gkhy-system/src/main/java/com/gkhy/system/service/ISysUserService.java
@@ -20,6 +20,8 @@
*/
public List<SysUser> selectUserList(SysUser user);
+ Long selectUserListCount(SysUser user);
+
/**
* 根据角色key部门id查询
* @param user
diff --git a/gkhy-system/src/main/java/com/gkhy/system/service/impl/DailySafetyInspectionServiceImpl.java b/gkhy-system/src/main/java/com/gkhy/system/service/impl/DailySafetyInspectionServiceImpl.java
index 0392d7c..9c43752 100644
--- a/gkhy-system/src/main/java/com/gkhy/system/service/impl/DailySafetyInspectionServiceImpl.java
+++ b/gkhy-system/src/main/java/com/gkhy/system/service/impl/DailySafetyInspectionServiceImpl.java
@@ -21,6 +21,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -130,16 +131,35 @@
@Override
public int getCheckCount() {
- Long deptId = SecurityUtils.getDeptId();
- SysDept sysDept = sysDeptMapper.selectDeptById(deptId);
- if (sysDept == null){
+ Long[] deptIds = SecurityUtils.getDeptIds();
+ if (ObjectUtil.isEmpty(deptIds)){
return 1;
- }else {
- if (!"1".equals(sysDept.getSafety())){
- return 1;
+ }
+ List<SysDept> sysDepts = sysDeptMapper.selectDeptByIds(deptIds);
+ if (ObjectUtil.isEmpty(sysDepts)){
+ return 1;
+ }
+ List<Long> data = new ArrayList<>();
+ for (SysDept sysDept : sysDepts) {
+ if ("1".equals(sysDept.getSafety())){
+ data.add(sysDept.getDeptId());
}
}
- return dailySafetyInspectionMapper.getCheckCount(deptId);
+ if (ObjectUtil.isEmpty(data)){
+ return 1;
+ }
+ return dailySafetyInspectionMapper.getCheckCountList(data);
+
+// Long deptId = SecurityUtils.getDeptId();
+// SysDept sysDept = sysDeptMapper.selectDeptById(deptId);
+// if (sysDept == null){
+// return 1;
+// }else {
+// if (!"1".equals(sysDept.getSafety())){
+// return 1;
+// }
+// }
+ // return dailySafetyInspectionMapper.getCheckCount(deptId);
}
diff --git a/gkhy-system/src/main/java/com/gkhy/system/service/impl/SysDeptServiceImpl.java b/gkhy-system/src/main/java/com/gkhy/system/service/impl/SysDeptServiceImpl.java
index 8c37b50..28920f2 100644
--- a/gkhy-system/src/main/java/com/gkhy/system/service/impl/SysDeptServiceImpl.java
+++ b/gkhy-system/src/main/java/com/gkhy/system/service/impl/SysDeptServiceImpl.java
@@ -3,8 +3,8 @@
import java.util.*;
import java.util.stream.Collectors;
-import cn.hutool.core.date.DateUtil;
import com.gkhy.system.domain.vo.DeptVo;
+import com.gkhy.system.mapper.SysUserDeptMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.gkhy.common.annotation.DataScope;
@@ -35,6 +35,9 @@
@Autowired
private SysRoleMapper roleMapper;
+
+ @Autowired
+ private SysUserDeptMapper userDeptMapper;
/**
* 查询部门管理数据
@@ -305,6 +308,13 @@
@Override
public int deleteDeptById(Long deptId)
{
+ //对应的人员部门
+ if (userDeptMapper.selectCountUserDeptByDeptId(deptId) > 0)
+ {
+ throw new ServiceException("该部门已绑定人员,请先换绑人员");
+ }
+
+
return deptMapper.deleteDeptById(deptId);
}
diff --git a/gkhy-system/src/main/java/com/gkhy/system/service/impl/SysUserOnlineServiceImpl.java b/gkhy-system/src/main/java/com/gkhy/system/service/impl/SysUserOnlineServiceImpl.java
index c12cfcd..6e3369c 100644
--- a/gkhy-system/src/main/java/com/gkhy/system/service/impl/SysUserOnlineServiceImpl.java
+++ b/gkhy-system/src/main/java/com/gkhy/system/service/impl/SysUserOnlineServiceImpl.java
@@ -1,10 +1,16 @@
package com.gkhy.system.service.impl;
+import cn.hutool.core.util.ObjectUtil;
+import com.gkhy.common.core.domain.entity.SysDept;
import org.springframework.stereotype.Service;
import com.gkhy.common.core.domain.model.LoginUser;
import com.gkhy.common.utils.StringUtils;
import com.gkhy.system.domain.SysUserOnline;
import com.gkhy.system.service.ISysUserOnlineService;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
/**
* 在线用户 服务层处理
@@ -87,9 +93,15 @@
sysUserOnline.setBrowser(user.getBrowser());
sysUserOnline.setOs(user.getOs());
sysUserOnline.setLoginTime(user.getLoginTime());
- if (StringUtils.isNotNull(user.getUser().getDept()))
+ if (ObjectUtil.isNotEmpty(user.getUser().getDepts()))
{
- sysUserOnline.setDeptName(user.getUser().getDept().getDeptName());
+ List<SysDept> depts = user.getUser().getDepts();
+ String deptNames = depts == null ? "" : depts.stream()
+ .map(SysDept::getDeptName)
+ .filter(Objects::nonNull)
+ .collect(Collectors.joining(","));
+ sysUserOnline.setDepts(user.getUser().getDepts());
+ sysUserOnline.setDeptName(deptNames);
}
return sysUserOnline;
}
diff --git a/gkhy-system/src/main/java/com/gkhy/system/service/impl/SysUserServiceImpl.java b/gkhy-system/src/main/java/com/gkhy/system/service/impl/SysUserServiceImpl.java
index 6134583..877c47f 100644
--- a/gkhy-system/src/main/java/com/gkhy/system/service/impl/SysUserServiceImpl.java
+++ b/gkhy-system/src/main/java/com/gkhy/system/service/impl/SysUserServiceImpl.java
@@ -7,6 +7,8 @@
import javax.validation.Validator;
import com.gkhy.common.core.domain.entity.IdsDto;
+import com.gkhy.system.domain.SysUserDept;
+import com.gkhy.system.mapper.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -25,11 +27,6 @@
import com.gkhy.system.domain.SysPost;
import com.gkhy.system.domain.SysUserPost;
import com.gkhy.system.domain.SysUserRole;
-import com.gkhy.system.mapper.SysPostMapper;
-import com.gkhy.system.mapper.SysRoleMapper;
-import com.gkhy.system.mapper.SysUserMapper;
-import com.gkhy.system.mapper.SysUserPostMapper;
-import com.gkhy.system.mapper.SysUserRoleMapper;
import com.gkhy.system.service.ISysConfigService;
import com.gkhy.system.service.ISysDeptService;
import com.gkhy.system.service.ISysUserService;
@@ -68,6 +65,10 @@
@Autowired
protected Validator validator;
+ @Autowired
+ private SysUserDeptMapper sysUserDeptMapper;
+
+
/**
* 根据条件分页查询用户列表
*
@@ -79,6 +80,11 @@
public List<SysUser> selectUserList(SysUser user)
{
return userMapper.selectUserList(user);
+ }
+
+ @Override
+ public Long selectUserListCount(SysUser user) {
+ return userMapper.selectUserListCount( user);
}
@Override
@@ -274,6 +280,8 @@
insertUserPost(user);
// 新增用户与角色管理
insertUserRole(user);
+ // 新增用户与部门管理
+ insertUserDept(user);
return rows;
}
@@ -308,6 +316,9 @@
userPostMapper.deleteUserPostByUserId(userId);
// 新增用户与岗位管理
insertUserPost(user);
+ sysUserDeptMapper.deleteUserDeptByUserId(userId);
+ // 新增用户与部门管理
+ insertUserDept(user);
return userMapper.updateUser(user);
}
@@ -397,6 +408,11 @@
this.insertUserRole(user.getUserId(), user.getRoleIds());
}
+ public void insertUserDept(SysUser user)
+ {
+ this.insertUserDept(user.getUserId(), user.getDeptIds());
+ }
+
/**
* 新增用户岗位信息
*
@@ -444,6 +460,30 @@
}
/**
+ * 新增用户部门信息
+ *
+ * @param userId 用户ID
+ * @param deptIds 部门组
+ */
+ public void insertUserDept(Long userId, Long[] deptIds)
+ {
+ if (StringUtils.isNotEmpty(deptIds))
+ {
+ // 新增用户部门管理
+ List<SysUserDept> list = new ArrayList<SysUserDept>(deptIds.length);
+ for (Long deptId : deptIds)
+ {
+ SysUserDept du = new SysUserDept();
+ du.setUserId(userId);
+ du.setDeptId(deptId);
+ list.add(du);
+ }
+ sysUserDeptMapper.batchUserDept(list);
+ }
+ }
+
+
+ /**
* 通过用户ID删除用户
*
* @param userId 用户ID
@@ -479,6 +519,8 @@
userRoleMapper.deleteUserRole(userIds);
// 删除用户与岗位关联
userPostMapper.deleteUserPost(userIds);
+ //删除对应的部门人员
+ sysUserDeptMapper.deleteUserDept(userIds);
return userMapper.deleteUserByIds(userIds);
}
diff --git a/gkhy-system/src/main/resources/mapper/system/DailySafetyInspectionMapper.xml b/gkhy-system/src/main/resources/mapper/system/DailySafetyInspectionMapper.xml
index 403dd09..44c25ca 100644
--- a/gkhy-system/src/main/resources/mapper/system/DailySafetyInspectionMapper.xml
+++ b/gkhy-system/src/main/resources/mapper/system/DailySafetyInspectionMapper.xml
@@ -117,4 +117,16 @@
and a.dept_id = #{deptId}
and date_format(b.check_date, '%Y%m') = date_format(now(), '%Y%m')
</select>
+
+ <select id="getCheckCountList" parameterType="java.util.List" resultType="int">
+ select count(*)
+ from daily_safety_inspection_dept a
+ inner join daily_safety_inspection b on a.daily_safety_inspection_id = b.id
+ where b.del_flag = 0
+ and a.dept_id in
+ <foreach collection="list" item="deptId" open="(" separator="," close=")">
+ #{deptId}
+ </foreach>
+ and date_format(b.check_date, '%Y%m') = date_format(now(), '%Y%m')
+ </select>
</mapper>
diff --git a/gkhy-system/src/main/resources/mapper/system/SysDeptMapper.xml b/gkhy-system/src/main/resources/mapper/system/SysDeptMapper.xml
index b5d6515..05ec6eb 100644
--- a/gkhy-system/src/main/resources/mapper/system/SysDeptMapper.xml
+++ b/gkhy-system/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -87,6 +87,18 @@
from sys_dept d
where d.dept_id = #{deptId}
</select>
+
+
+ <select id="selectDeptByIds" parameterType="java.util.ArrayList" resultMap="SysDeptResult">
+ select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.safety,
+ (select dept_name from sys_dept where dept_id = d.parent_id) parent_name
+ from sys_dept d
+ where d.dept_id in
+ <foreach collection="array" item="deptId" open="(" separator="," close=")">
+ #{deptId}
+ </foreach>
+ and d.del_flag = '0'
+ </select>
<select id="checkDeptExistUser" parameterType="Long" resultType="int">
select count(1) from sys_user where dept_id = #{deptId} and del_flag = '0'
diff --git a/gkhy-system/src/main/resources/mapper/system/SysUserDeptMapper.xml b/gkhy-system/src/main/resources/mapper/system/SysUserDeptMapper.xml
new file mode 100644
index 0000000..54f2688
--- /dev/null
+++ b/gkhy-system/src/main/resources/mapper/system/SysUserDeptMapper.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gkhy.system.mapper.SysUserDeptMapper">
+
+ <resultMap type="SysUserDept" id="SysUserDeptResult">
+ <result property="userId" column="user_id" />
+ <result property="deptId" column="dept_id" />
+ </resultMap>
+
+ <delete id="deleteUserDeptByUserId" parameterType="Long">
+ delete from sys_user_dept where user_id=#{userId}
+ </delete>
+
+ <delete id="deleteUserDeptByDeptId" parameterType="Long">
+ delete from sys_user_dept where dept_id=#{deptId}
+ </delete>
+
+ <select id="selectCountUserDeptByDeptId" resultType="Integer">
+ select count(1) from sys_user_dept where dept_id=#{deptId}
+ </select>
+
+ <delete id="deleteUserDept" parameterType="Long">
+ delete from sys_user_dept where User_id in
+ <foreach collection="array" item="UserId" open="(" separator="," close=")">
+ #{userId}
+ </foreach>
+ </delete>
+
+ <insert id="batchUserDept">
+ insert into sys_user_dept(user_id, dept_id) values
+ <foreach item="item" index="index" collection="list" separator=",">
+ (#{item.userId},#{item.deptId})
+ </foreach>
+ </insert>
+
+</mapper>
\ No newline at end of file
diff --git a/gkhy-system/src/main/resources/mapper/system/SysUserMapper.xml b/gkhy-system/src/main/resources/mapper/system/SysUserMapper.xml
index b34cdad..9bb85f5 100644
--- a/gkhy-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/gkhy-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -23,7 +23,7 @@
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="remark" column="remark" />
- <association property="dept" javaType="SysDept" resultMap="deptResult" />
+ <collection property="depts" javaType="java.util.List" resultMap="deptResult" />
<collection property="roles" javaType="java.util.List" resultMap="RoleResult" />
</resultMap>
@@ -47,18 +47,20 @@
</resultMap>
<sql id="selectUserVo">
- select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
+ select u.user_id, ud.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
from sys_user u
- left join sys_dept d on u.dept_id = d.dept_id
+ left join sys_user_dept ud on u.user_id = ud.user_id
+ left join sys_dept d on ud.dept_id = d.dept_id
left join sys_user_role ur on u.user_id = ur.user_id
left join sys_role r on r.role_id = ur.role_id
</sql>
<select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
- select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u
- left join sys_dept d on u.dept_id = d.dept_id
+ select u.user_id, ud.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u
+ left join sys_user_dept ud on u.user_id = ud.user_id
+ left join sys_dept d on ud.dept_id = d.dept_id
where u.del_flag = '0'
<if test="userId != null and userId != 0">
AND u.user_id = #{userId}
@@ -82,15 +84,53 @@
AND date_format(u.create_time,'%Y%m%d') <= date_format(#{params.endTime},'%Y%m%d')
</if>
<if test="deptId != null and deptId != 0">
- AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId}, ancestors) ))
+ AND (ud.dept_id = #{deptId} OR ud.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId}, ancestors) ))
</if>
<!-- 数据范围过滤 -->
${params.dataScope}
</select>
+
+ <!-- 用户列表统计 -->
+ <select id="selectUserListCount" parameterType="SysUser" resultType="long">
+ select count(distinct u.user_id)
+ from sys_user u
+ left join sys_user_dept ud on u.user_id = ud.user_id
+ left join sys_dept d on ud.dept_id = d.dept_id
+ where u.del_flag = '0'
+ <if test="userId != null and userId != 0">
+ AND u.user_id = #{userId}
+ </if>
+ <if test="userName != null and userName != ''">
+ AND u.user_name like concat('%', #{userName}, '%')
+ </if>
+ <if test="nickName != null and nickName != ''">
+ and u.nick_name like concat('%',#{nickName},'%')
+ </if>
+ <if test="status != null and status != ''">
+ AND u.status = #{status}
+ </if>
+ <if test="phonenumber != null and phonenumber != ''">
+ AND u.phonenumber like concat('%', #{phonenumber}, '%')
+ </if>
+ <if test="params.beginTime != null and params.beginTime != ''">
+ AND date_format(u.create_time,'%Y%m%d') >= date_format(#{params.beginTime},'%Y%m%d')
+ </if>
+ <if test="params.endTime != null and params.endTime != ''">
+ AND date_format(u.create_time,'%Y%m%d') <= date_format(#{params.endTime},'%Y%m%d')
+ </if>
+ <if test="deptId != null and deptId != 0">
+ AND (ud.dept_id = #{deptId} OR ud.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId}, ancestors) ))
+ </if>
+ <!-- 数据范围过滤 -->
+ ${params.dataScope}
+ </select>
+
+
<select id="selectUserListByRoleKey" parameterType="SysUser" resultMap="SysUserResult">
- select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u
- left join sys_dept d on u.dept_id = d.dept_id
+ select u.user_id, ud.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u
+ left join sys_user_dept ud on u.user_id = ud.user_id
+ left join sys_dept d on ud.dept_id = d.dept_id
left join sys_user_role ur on u.user_id = ur.user_id
left join sys_role r on r.role_id = ur.role_id
where u.del_flag = '0' and u.status = '0' and r.role_key = #{roleKey}
@@ -110,9 +150,10 @@
<select id="selectAllocatedList" parameterType="SysUser" resultMap="SysUserResult">
- select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
+ select distinct u.user_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
from sys_user u
- left join sys_dept d on u.dept_id = d.dept_id
+ left join sys_user_dept ud on u.user_id = ud.user_id
+ left join sys_dept d on ud.dept_id = d.dept_id
left join sys_user_role ur on u.user_id = ur.user_id
left join sys_role r on r.role_id = ur.role_id
where u.del_flag = '0' and r.role_id = #{roleId}
@@ -127,9 +168,10 @@
</select>
<select id="selectUnallocatedList" parameterType="SysUser" resultMap="SysUserResult">
- select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
+ select distinct u.user_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
from sys_user u
- left join sys_dept d on u.dept_id = d.dept_id
+ left join sys_user_dept ud on u.user_id = ud.user_id
+ left join sys_dept d on ud.dept_id = d.dept_id
left join sys_user_role ur on u.user_id = ur.user_id
left join sys_role r on r.role_id = ur.role_id
where u.del_flag = '0' and (r.role_id != #{roleId} or r.role_id IS NULL)
@@ -166,13 +208,15 @@
select user_id, email from sys_user where email = #{email} and del_flag = '0' limit 1
</select>
<select id="selectUserByDeptIds" resultMap="SysUserResult">
- select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark ,d.dept_name, d.leader
- from sys_user u left join sys_dept d on u.dept_id = d.dept_id
+ select u.user_id, ud.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark ,d.dept_name, d.leader
+ from sys_user u
+ left join sys_user_dept ud on u.user_id = ud.user_id
+ left join sys_dept d on ud.dept_id = d.dept_id
where u.del_flag = '0'
<if test="nickName!=null and nickName!=''">
and u.nick_name like concat('%',#{nickName},'%')
</if>
- and u.dept_id in
+ and ud.dept_id in
<foreach item="id" collection="deptId" open="(" separator="," close=")">
#{id}
</foreach>
--
Gitblit v1.9.2