Переглянути джерело

流程引擎支持多角色选择

yzc 1 рік тому
батько
коміт
5180685d16

+ 1 - 1
hx-flow/src/main/java/com/fjhx/flow/entity/flow/po/FlowDefinitionNode.java

@@ -79,7 +79,7 @@ public class FlowDefinitionNode extends BaseIdPo {
     /**
      * 指定对象id
      */
-    private Long handleObjectId;
+    private String handleObjectId;
 
     @NotNull(message = "流程节点id不能为空")
     public Long getId() {

+ 4 - 2
hx-flow/src/main/java/com/fjhx/flow/service/flow/impl/FlowProcessServiceImpl.java

@@ -662,7 +662,9 @@ public class FlowProcessServiceImpl implements FlowProcessService {
         }
 
         Integer handleObjectType = node.getHandleObjectType();
-        Long handleObjectId = node.getHandleObjectId();
+        List<Long> handleObjectIds = Arrays.asList(node.getHandleObjectId().split(",")).stream()
+                .map(s -> Long.parseLong(s.trim())).collect(Collectors.toList());
+        Long handleObjectId = handleObjectIds.get(0);
 
         HandleObjectTypeEnum handleObjectTypeEnum = HandleObjectTypeEnum.getEnum(handleObjectType);
 
@@ -713,7 +715,7 @@ public class FlowProcessServiceImpl implements FlowProcessService {
                 return flowResult;
 
             case ROLE:
-                List<SysUser> roleUserList = sysUserService.getListByRoleId(handleObjectId);
+                List<SysUser> roleUserList = sysUserService.getListByRoleIds(handleObjectIds);
                 if (roleUserList.size() == 0) {
                     throw new ServiceException("流程节点处理人异常:节点处理角色无用户");
                 }

+ 1 - 1
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java

@@ -133,7 +133,7 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
 
     List<SysUser> getListByPostId(@Param("postId")Long postId, @Param("companyId") Long companyId);
 
-    List<SysUser> getListByRoleId(@Param("roleId")Long roleId, @Param("companyId") Long companyId);
+    List<SysUser> getListByRoleIds(@Param("roleId")List<Long> roleIds, @Param("companyId") Long companyId);
 
     List<SysRole> getRoleByUserIdList(@Param("userIdList") List<Long> userIdList);
 

+ 1 - 1
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java

@@ -231,7 +231,7 @@ public interface ISysUserService extends IService<SysUser> {
      *
      * @param roleId 用户id
      */
-    List<SysUser> getListByRoleId(Long roleId);
+    List<SysUser> getListByRoleIds(List<Long> roleId);
 
     /**
      * 获取有权限查看的用户列表

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

@@ -600,8 +600,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     }
 
     @Override
-    public List<SysUser> getListByRoleId(Long roleId) {
-        return baseMapper.getListByRoleId(roleId, SecurityUtils.getCompanyId());
+    public List<SysUser> getListByRoleIds(List<Long> roleIds) {
+        return baseMapper.getListByRoleIds(roleIds, SecurityUtils.getCompanyId());
     }
 
     @Override

+ 9 - 5
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -256,7 +256,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		</if>
     </select>
 
-    <select id="getListByRoleId" resultType="com.ruoyi.common.core.domain.entity.SysUser">
+    <select id="getListByRoleIds" resultType="com.ruoyi.common.core.domain.entity.SysUser">
         select u.user_id,
                u.dept_id,
                u.user_name,
@@ -277,10 +277,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                u.user_code
         from sys_user_role sur
                  inner join sys_user u on sur.user_id = u.user_id
-        where sur.role_id = #{roleId}
-		<if test="companyId != null">
-			AND u.company_id = #{companyId}
-		</if>
+        <where>
+			<foreach collection="roleIds" item="roleId" open="sur.role_id in (" separator="," close=")">
+				#{roleId}
+			</foreach>
+			<if test="companyId != null">
+				AND u.company_id = #{companyId}
+			</if>
+		</where>
     </select>
     <select id="getRoleByUserIdList" resultType="com.ruoyi.common.core.domain.entity.SysRole">
         select sr.role_id, sr.role_key ,sr.role_name, sur.user_id