Просмотр исходного кода

用户添加身份管理 流程添加主管审批

yzc 1 год назад
Родитель
Сommit
9cbcf64200

+ 1 - 0
hx-flow/src/main/java/com/fjhx/flow/enums/HandleObjectTypeEnum.java

@@ -17,6 +17,7 @@ public enum HandleObjectTypeEnum {
     POST(4, "岗位"),
     ROLE(5, "角色"),
     PARALLEL(6, "动态用户"),
+    DEPT_MANAGER(8, "部门主管"),
     ;
 
     private final Integer key;

+ 22 - 0
hx-flow/src/main/java/com/fjhx/flow/service/flow/impl/FlowProcessServiceImpl.java

@@ -30,9 +30,11 @@ import com.ruoyi.common.constant.StatusConstant;
 import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.domain.entity.SysUserIdentity;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.system.service.ISysDeptService;
+import com.ruoyi.system.service.ISysUserIdentityService;
 import com.ruoyi.system.service.ISysUserService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -70,6 +72,8 @@ public class FlowProcessServiceImpl implements FlowProcessService {
 
     @Autowired
     private FlowInfoService flowInfoService;
+    @Autowired
+    private ISysUserIdentityService sysUserIdentityService;
 
     @DSTransactional
     @Override
@@ -868,6 +872,24 @@ public class FlowProcessServiceImpl implements FlowProcessService {
                 String dynamicUserIdsStr = dynamicUserIds.stream().map(String::valueOf).collect(Collectors.joining(","));
                 flowResult.setUserId(dynamicUserIdsStr);
                 return flowResult;
+            case DEPT_MANAGER:
+                List<SysUserIdentity> identityList = sysUserIdentityService.list(Wrappers.<SysUserIdentity>lambdaQuery()
+                        .eq(SysUserIdentity::getDeptId, SecurityUtils.getDeptId())
+                        .eq(SysUserIdentity::getIdentity, 20)
+                );
+                if (identityList.size() == 0) {
+                    throw new ServiceException("流程节点处理人异常:当前所在部门无部门主管!");
+                }
+                List<Long> userIds = identityList.stream().map(SysUserIdentity::getUserId).collect(Collectors.toList());
+                List<SysUser> identityUserList = sysUserService.list(Wrappers.<SysUser>lambdaQuery().in(SysUser::getUserId, userIds));
+                if (identityList.size() == 1) {
+                    flowResult.setSuccess(true);
+                    flowResult.setUserId(String.valueOf(identityUserList.get(0).getUserId()));
+                    return flowResult;
+                }
+                flowResult.setSuccess(false);
+                flowResult.setUserList(identityUserList);
+                return flowResult;
 
             default:
                 throw new ServiceException("未知用户处理类型:" + handleObjectType);

+ 7 - 4
hx-tenant/src/main/java/com/fjhx/tenant/controller/tenant/UserTenantController.java

@@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fjhx.tenant.utils.DeptUstil;
 import com.ruoyi.common.annotation.RepeatSubmit;
 import com.ruoyi.common.annotation.TenantIgnore;
@@ -15,16 +16,14 @@ import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.domain.entity.SysUserIdentity;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.system.service.ISysDeptService;
-import com.ruoyi.system.service.ISysPostService;
-import com.ruoyi.system.service.ISysRoleService;
-import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.system.service.*;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ArrayUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -56,6 +55,8 @@ public class UserTenantController extends BaseController {
     private ISysDeptService sysDeptService;
     @Autowired
     private RedisCache redisCache;
+    @Autowired
+    private ISysUserIdentityService sysUserIdentityService;
 
     /**
      * 获取用户列表
@@ -193,6 +194,8 @@ public class UserTenantController extends BaseController {
         ajax.put("posts", postService.selectPostAll());
         if (StringUtils.isNotNull(userId)) {
             SysUser sysUser = userService.selectUserById(userId);
+            sysUser.setIdentityList(sysUserIdentityService.list(Wrappers.<SysUserIdentity>lambdaQuery().eq(SysUserIdentity::getUserId, userId)));
+
             ajax.put(AjaxResult.DATA_TAG, sysUser);
             ajax.put("postIds", postService.selectPostListByUserId(userId));
             ajax.put("roleIds", sysUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList()));

+ 11 - 1
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java

@@ -12,7 +12,6 @@ import com.ruoyi.common.xss.Xss;
 import javax.validation.constraints.Email;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.Size;
-import java.math.BigInteger;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
@@ -210,6 +209,9 @@ public class SysUser extends BaseEntity {
     //==================================================
 
     @TableField(exist = false)
+    private List<SysUserIdentity> identityList;
+
+    @TableField(exist = false)
     private Long ofCompanyId;
 
     /**
@@ -230,6 +232,14 @@ public class SysUser extends BaseEntity {
     //================================================================
 
 
+    public List<SysUserIdentity> getIdentityList() {
+        return identityList;
+    }
+
+    public void setIdentityList(List<SysUserIdentity> identityList) {
+        this.identityList = identityList;
+    }
+
     public Integer getIdentity() {
         return identity;
     }

+ 14 - 0
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUserIdentity.java

@@ -0,0 +1,14 @@
+package com.ruoyi.common.core.domain.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class SysUserIdentity {
+    @TableId
+    private Long userId;
+    private Long deptId;
+    private Integer identity;
+}

+ 9 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserIdentityMapper.java

@@ -0,0 +1,9 @@
+package com.ruoyi.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.core.domain.entity.SysUserIdentity;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SysUserIdentityMapper extends BaseMapper<SysUserIdentity> {
+}

+ 7 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserIdentityService.java

@@ -0,0 +1,7 @@
+package com.ruoyi.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.domain.entity.SysUserIdentity;
+
+public interface ISysUserIdentityService extends IService<SysUserIdentity> {
+}

+ 11 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserIdentityServiceImpl.java

@@ -0,0 +1,11 @@
+package com.ruoyi.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.domain.entity.SysUserIdentity;
+import com.ruoyi.system.mapper.SysUserIdentityMapper;
+import com.ruoyi.system.service.ISysUserIdentityService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class SysUserIdentityServiceImpl extends ServiceImpl<SysUserIdentityMapper, SysUserIdentity> implements ISysUserIdentityService {
+}

+ 21 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java

@@ -12,6 +12,7 @@ import com.ruoyi.common.constant.UserConstants;
 import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.domain.entity.SysUserIdentity;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
@@ -24,6 +25,7 @@ import com.ruoyi.system.domain.SysUserRole;
 import com.ruoyi.system.mapper.*;
 import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.system.service.ISysDeptService;
+import com.ruoyi.system.service.ISysUserIdentityService;
 import com.ruoyi.system.service.ISysUserService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -62,6 +64,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     private ISysConfigService configService;
     @Autowired
     private ISysDeptService sysDeptService;
+    @Autowired
+    private ISysUserIdentityService sysUserIdentityService;
 
     /**
      * 根据条件分页查询用户列表
@@ -302,6 +306,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         insertUserPost(user);
         // 新增用户与角色管理
         insertUserRole(user);
+        //保存用户身份信息
+        saveOrUpdateUserIdentity(user);
 
         return rows;
     }
@@ -338,10 +344,25 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         userPostMapper.deleteUserPostByUserId(userId);
         // 新增用户与岗位管理
         insertUserPost(user);
+        // 更新用户与部门身份信息
+        saveOrUpdateUserIdentity(user);
+
         return userMapper.updateUser(user);
     }
 
     /**
+     * 更新用户身份
+     */
+    private void saveOrUpdateUserIdentity(SysUser user) {
+        sysUserIdentityService.remove(Wrappers.<SysUserIdentity>lambdaQuery().eq(SysUserIdentity::getUserId, user.getUserId()));
+        List<SysUserIdentity> sysUserIdentityList = user.getIdentityList();
+        if (ObjectUtil.isNotEmpty(sysUserIdentityList)) {
+            sysUserIdentityList.forEach(item -> item.setUserId(user.getUserId()));
+            sysUserIdentityService.saveBatch(sysUserIdentityList);
+        }
+    }
+
+    /**
      * 赋值部门归属公司
      */
     private void setUserCompanyId(SysUser user) {

+ 5 - 0
ruoyi-system/src/main/resources/mapper/system/SysUserIdentityMapper.xml

@@ -0,0 +1,5 @@
+<?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.ruoyi.system.mapper.SysUserIdentityMapper">
+
+</mapper>