Commit 9f0cd04fa6bce4ad34bbbc2ba606c66810a4b500

Authored by YunaiV
1 parent 3f6a5f06

BPM 模型重构 7:增加任务分配规则的列表 UI 界面(增加角色的规则配置)

yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/BpmTaskAssignRuleController.java
@@ -31,8 +31,8 @@ public class BpmTaskAssignRuleController { @@ -31,8 +31,8 @@ public class BpmTaskAssignRuleController {
31 } 31 }
32 32
33 @PostMapping("/create") 33 @PostMapping("/create")
34 - public CommonResult<String> createTaskAssignRule(@Valid @RequestBody BpmTaskAssignRuleCreateReqVO reqVO) {  
35 - return success("1024"); 34 + public CommonResult<Long> createTaskAssignRule(@Valid @RequestBody BpmTaskAssignRuleCreateReqVO reqVO) {
  35 + return success(taskAssignRuleService.createTaskAssignRule(reqVO));
36 } 36 }
37 37
38 @PutMapping("/update") 38 @PutMapping("/update")
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/vo/rule/BpmTaskAssignRuleCreateReqVO.java
1 package cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.rule; 1 package cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.rule;
2 2
3 -import java.util.Set; 3 +import lombok.Data;
  4 +import lombok.EqualsAndHashCode;
4 5
  6 +@Data
  7 +@EqualsAndHashCode(callSuper = true)
5 public class BpmTaskAssignRuleCreateReqVO extends BpmTaskAssignRuleBaseVO { 8 public class BpmTaskAssignRuleCreateReqVO extends BpmTaskAssignRuleBaseVO {
6 9
7 private String modelId; 10 private String modelId;
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/definition/BpmTaskAssignRuleConvert.java
1 package cn.iocoder.yudao.adminserver.modules.bpm.convert.definition; 1 package cn.iocoder.yudao.adminserver.modules.bpm.convert.definition;
2 2
3 import cn.hutool.core.collection.CollUtil; 3 import cn.hutool.core.collection.CollUtil;
  4 +import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.rule.BpmTaskAssignRuleCreateReqVO;
4 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.rule.BpmTaskAssignRuleRespVO; 5 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.rule.BpmTaskAssignRuleRespVO;
5 import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmTaskAssignRuleDO; 6 import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmTaskAssignRuleDO;
6 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; 7 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
@@ -33,4 +34,6 @@ public interface BpmTaskAssignRuleConvert { @@ -33,4 +34,6 @@ public interface BpmTaskAssignRuleConvert {
33 34
34 BpmTaskAssignRuleRespVO convert(BpmTaskAssignRuleDO bean); 35 BpmTaskAssignRuleRespVO convert(BpmTaskAssignRuleDO bean);
35 36
  37 + BpmTaskAssignRuleDO convert(BpmTaskAssignRuleCreateReqVO bean);
  38 +
36 } 39 }
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/dal/mysql/definition/BpmTaskAssignRuleMapper.java
@@ -24,4 +24,12 @@ public interface BpmTaskAssignRuleMapper extends BaseMapperX&lt;BpmTaskAssignRuleDO @@ -24,4 +24,12 @@ public interface BpmTaskAssignRuleMapper extends BaseMapperX&lt;BpmTaskAssignRuleDO
24 .eq("process_definition_id", BpmTaskAssignRuleDO.PROCESS_DEFINITION_ID_NULL)); 24 .eq("process_definition_id", BpmTaskAssignRuleDO.PROCESS_DEFINITION_ID_NULL));
25 } 25 }
26 26
  27 + default BpmTaskAssignRuleDO selectListByModelIdAndTaskDefinitionKey(String modelId,
  28 + String taskDefinitionKey) {
  29 + return selectOne(new QueryWrapperX<BpmTaskAssignRuleDO>()
  30 + .eq("model_id", modelId)
  31 + .eq("process_definition_id", BpmTaskAssignRuleDO.PROCESS_DEFINITION_ID_NULL)
  32 + .eq("task_definition_key", taskDefinitionKey));
  33 + }
  34 +
27 } 35 }
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/enums/BpmErrorCodeConstants.java
@@ -37,9 +37,12 @@ public interface BpmErrorCodeConstants { @@ -37,9 +37,12 @@ public interface BpmErrorCodeConstants {
37 ErrorCode PROCESS_INSTANCE_CANCEL_FAIL_NOT_EXISTS = new ErrorCode(1009004001, "流程取消失败,流程不处于运行中"); 37 ErrorCode PROCESS_INSTANCE_CANCEL_FAIL_NOT_EXISTS = new ErrorCode(1009004001, "流程取消失败,流程不处于运行中");
38 ErrorCode PROCESS_INSTANCE_CANCEL_FAIL_NOT_SELF = new ErrorCode(1009004002, "流程取消失败,该流程不是你发起的"); 38 ErrorCode PROCESS_INSTANCE_CANCEL_FAIL_NOT_SELF = new ErrorCode(1009004002, "流程取消失败,该流程不是你发起的");
39 39
40 - // ========== 流程实例 1-009-005-000 ========== 40 + // ========== 流程任务 1-009-005-000 ==========
41 ErrorCode TASK_COMPLETE_FAIL_NOT_EXISTS = new ErrorCode(1009004000, "审批任务失败,原因:该任务不处于未审批"); 41 ErrorCode TASK_COMPLETE_FAIL_NOT_EXISTS = new ErrorCode(1009004000, "审批任务失败,原因:该任务不处于未审批");
42 42
  43 + // ========== 流程任务分配规则 1-009-006-000 ==========
  44 + ErrorCode TASK_ASSIGN_RULE_EXISTS = new ErrorCode(1009006000, "流程({}) 的任务({}) 已经存在分配规则");
  45 +
43 // ========== 动态表单模块 1-009-010-000 ========== 46 // ========== 动态表单模块 1-009-010-000 ==========
44 ErrorCode FORM_NOT_EXISTS = new ErrorCode(1009010000, "动态表单不存在"); 47 ErrorCode FORM_NOT_EXISTS = new ErrorCode(1009010000, "动态表单不存在");
45 ErrorCode FORM_FIELD_REPEAT = new ErrorCode(1009010000, "表单项({}) 和 ({}) 使用了相同的字段名({})"); 48 ErrorCode FORM_FIELD_REPEAT = new ErrorCode(1009010000, "表单项({}) 和 ({}) 使用了相同的字段名({})");
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/BpmTaskAssignRuleService.java
1 package cn.iocoder.yudao.adminserver.modules.bpm.service.definition; 1 package cn.iocoder.yudao.adminserver.modules.bpm.service.definition;
2 2
  3 +import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.rule.BpmTaskAssignRuleCreateReqVO;
3 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.rule.BpmTaskAssignRuleRespVO; 4 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.rule.BpmTaskAssignRuleRespVO;
4 import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmTaskAssignRuleDO; 5 import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmTaskAssignRuleDO;
5 import org.springframework.lang.Nullable; 6 import org.springframework.lang.Nullable;
6 7
  8 +import javax.validation.Valid;
7 import java.util.List; 9 import java.util.List;
8 10
9 /** 11 /**
@@ -35,13 +37,20 @@ public interface BpmTaskAssignRuleService { @@ -35,13 +37,20 @@ public interface BpmTaskAssignRuleService {
35 /** 37 /**
36 * 获得流程定义的任务分配规则数组 38 * 获得流程定义的任务分配规则数组
37 * 39 *
38 - * @param processDefinitionId 流程模型的编号 40 + * @param modelId 流程模型的编号
39 * @param processDefinitionId 流程定义的编号 41 * @param processDefinitionId 流程定义的编号
40 * @return 任务规则数组 42 * @return 任务规则数组
41 */ 43 */
42 List<BpmTaskAssignRuleRespVO> getTaskAssignRuleList(String modelId, String processDefinitionId); 44 List<BpmTaskAssignRuleRespVO> getTaskAssignRuleList(String modelId, String processDefinitionId);
43 45
44 - // TODO 芋艿:创建任务规则 46 + /**
  47 + * 创建任务分配规则
  48 + *
  49 + * @param reqVO 创建信息
  50 + * @return 规则编号
  51 + */
  52 + Long createTaskAssignRule(@Valid BpmTaskAssignRuleCreateReqVO reqVO);
  53 +
45 // TODO 芋艿:复制任务规则 54 // TODO 芋艿:复制任务规则
46 55
47 } 56 }
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/impl/BpmTaskAssignRuleServiceImpl.java
@@ -2,14 +2,19 @@ package cn.iocoder.yudao.adminserver.modules.bpm.service.definition.impl; @@ -2,14 +2,19 @@ package cn.iocoder.yudao.adminserver.modules.bpm.service.definition.impl;
2 2
3 import cn.hutool.core.collection.CollUtil; 3 import cn.hutool.core.collection.CollUtil;
4 import cn.hutool.core.util.StrUtil; 4 import cn.hutool.core.util.StrUtil;
  5 +import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.rule.BpmTaskAssignRuleCreateReqVO;
5 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.rule.BpmTaskAssignRuleRespVO; 6 import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.rule.BpmTaskAssignRuleRespVO;
6 import cn.iocoder.yudao.adminserver.modules.bpm.convert.definition.BpmTaskAssignRuleConvert; 7 import cn.iocoder.yudao.adminserver.modules.bpm.convert.definition.BpmTaskAssignRuleConvert;
7 import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmTaskAssignRuleDO; 8 import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmTaskAssignRuleDO;
8 import cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.definition.BpmTaskAssignRuleMapper; 9 import cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.definition.BpmTaskAssignRuleMapper;
  10 +import cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants;
  11 +import cn.iocoder.yudao.adminserver.modules.bpm.enums.definition.BpmTaskAssignRuleTypeEnum;
9 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmModelService; 12 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmModelService;
10 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmProcessDefinitionService; 13 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmProcessDefinitionService;
11 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmTaskAssignRuleService; 14 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmTaskAssignRuleService;
  15 +import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysRoleService;
12 import cn.iocoder.yudao.framework.activiti.core.util.ActivitiUtils; 16 import cn.iocoder.yudao.framework.activiti.core.util.ActivitiUtils;
  17 +import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
13 import lombok.extern.slf4j.Slf4j; 18 import lombok.extern.slf4j.Slf4j;
14 import org.activiti.bpmn.model.BpmnModel; 19 import org.activiti.bpmn.model.BpmnModel;
15 import org.activiti.bpmn.model.UserTask; 20 import org.activiti.bpmn.model.UserTask;
@@ -20,6 +25,10 @@ import org.springframework.validation.annotation.Validated; @@ -20,6 +25,10 @@ import org.springframework.validation.annotation.Validated;
20 import javax.annotation.Resource; 25 import javax.annotation.Resource;
21 import java.util.Collections; 26 import java.util.Collections;
22 import java.util.List; 27 import java.util.List;
  28 +import java.util.Objects;
  29 +import java.util.Set;
  30 +
  31 +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
23 32
24 /** 33 /**
25 * BPM 任务分配规则 Service 实现类 34 * BPM 任务分配规则 Service 实现类
@@ -38,6 +47,8 @@ public class BpmTaskAssignRuleServiceImpl implements BpmTaskAssignRuleService { @@ -38,6 +47,8 @@ public class BpmTaskAssignRuleServiceImpl implements BpmTaskAssignRuleService {
38 @Resource 47 @Resource
39 @Lazy // 解决循环依赖 48 @Lazy // 解决循环依赖
40 private BpmProcessDefinitionService processDefinitionService; 49 private BpmProcessDefinitionService processDefinitionService;
  50 + @Resource
  51 + private SysRoleService roleService;
41 52
42 @Override 53 @Override
43 public List<BpmTaskAssignRuleDO> getTaskAssignRuleListByProcessDefinitionId(String processDefinitionId, 54 public List<BpmTaskAssignRuleDO> getTaskAssignRuleListByProcessDefinitionId(String processDefinitionId,
@@ -76,4 +87,31 @@ public class BpmTaskAssignRuleServiceImpl implements BpmTaskAssignRuleService { @@ -76,4 +87,31 @@ public class BpmTaskAssignRuleServiceImpl implements BpmTaskAssignRuleService {
76 return BpmTaskAssignRuleConvert.INSTANCE.convertList(userTasks, rules); 87 return BpmTaskAssignRuleConvert.INSTANCE.convertList(userTasks, rules);
77 } 88 }
78 89
  90 + @Override
  91 + public Long createTaskAssignRule(BpmTaskAssignRuleCreateReqVO reqVO) {
  92 + // 校验参数
  93 + validTaskAssignRuleOptions(reqVO.getType(), reqVO.getOptions());
  94 + // 校验是否已经配置
  95 + BpmTaskAssignRuleDO existRule = taskRuleMapper.selectListByModelIdAndTaskDefinitionKey(
  96 + reqVO.getModelId(), reqVO.getTaskDefinitionKey());
  97 + if (existRule != null) {
  98 + throw exception(BpmErrorCodeConstants.TASK_ASSIGN_RULE_EXISTS,
  99 + reqVO.getModelId(), reqVO.getTaskDefinitionKey());
  100 + }
  101 +
  102 + // 存储
  103 + BpmTaskAssignRuleDO rule = BpmTaskAssignRuleConvert.INSTANCE.convert(reqVO)
  104 + .setProcessDefinitionId(BpmTaskAssignRuleDO.PROCESS_DEFINITION_ID_NULL); // 只有流程模型,才允许新建
  105 + taskRuleMapper.insert(rule);
  106 + return rule.getId();
  107 + }
  108 +
  109 + private void validTaskAssignRuleOptions(Integer type, Set<Long> options) {
  110 + if (Objects.equals(type, BpmTaskAssignRuleTypeEnum.ROLE.getType())) {
  111 + roleService.validRoles(options);
  112 + return;
  113 + }
  114 +
  115 + }
  116 +
79 } 117 }
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/SysRoleController.java
@@ -97,7 +97,7 @@ public class SysRoleController { @@ -97,7 +97,7 @@ public class SysRoleController {
97 @OperateLog(type = EXPORT) 97 @OperateLog(type = EXPORT)
98 @PreAuthorize("@ss.hasPermission('system:role:export')") 98 @PreAuthorize("@ss.hasPermission('system:role:export')")
99 public void export(HttpServletResponse response, @Validated SysRoleExportReqVO reqVO) throws IOException { 99 public void export(HttpServletResponse response, @Validated SysRoleExportReqVO reqVO) throws IOException {
100 - List<SysRoleDO> list = roleService.getRoles(reqVO); 100 + List<SysRoleDO> list = roleService.getRoleList(reqVO);
101 List<SysRoleExcelVO> data = SysRoleConvert.INSTANCE.convertList03(list); 101 List<SysRoleExcelVO> data = SysRoleConvert.INSTANCE.convertList03(list);
102 // 输出 102 // 输出
103 ExcelUtils.write(response, "角色数据.xls", "角色列表", SysRoleExcelVO.class, data); 103 ExcelUtils.write(response, "角色数据.xls", "角色列表", SysRoleExcelVO.class, data);
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/SysErrorCodeConstants.java
@@ -31,6 +31,7 @@ public interface SysErrorCodeConstants { @@ -31,6 +31,7 @@ public interface SysErrorCodeConstants {
31 ErrorCode ROLE_NAME_DUPLICATE = new ErrorCode(1002003001, "已经存在名为【{}】的角色"); 31 ErrorCode ROLE_NAME_DUPLICATE = new ErrorCode(1002003001, "已经存在名为【{}】的角色");
32 ErrorCode ROLE_CODE_DUPLICATE = new ErrorCode(1002003002, "已经存在编码为【{}】的角色"); 32 ErrorCode ROLE_CODE_DUPLICATE = new ErrorCode(1002003002, "已经存在编码为【{}】的角色");
33 ErrorCode ROLE_CAN_NOT_UPDATE_SYSTEM_TYPE_ROLE = new ErrorCode(1002003004, "不能操作类型为系统内置的角色"); 33 ErrorCode ROLE_CAN_NOT_UPDATE_SYSTEM_TYPE_ROLE = new ErrorCode(1002003004, "不能操作类型为系统内置的角色");
  34 + ErrorCode ROLE_IS_DISABLE = new ErrorCode(1002003004, "名字为【{}】的角色已被禁用");
34 35
35 // ========== 用户模块 1002004000 ========== 36 // ========== 用户模块 1002004000 ==========
36 ErrorCode USER_USERNAME_EXISTS = new ErrorCode(1002004000, "用户账号已经存在"); 37 ErrorCode USER_USERNAME_EXISTS = new ErrorCode(1002004000, "用户账号已经存在");
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysRoleService.java
@@ -127,6 +127,15 @@ public interface SysRoleService { @@ -127,6 +127,15 @@ public interface SysRoleService {
127 * @param reqVO 列表查询 127 * @param reqVO 列表查询
128 * @return 角色列表 128 * @return 角色列表
129 */ 129 */
130 - List<SysRoleDO> getRoles(SysRoleExportReqVO reqVO); 130 + List<SysRoleDO> getRoleList(SysRoleExportReqVO reqVO);
  131 +
  132 + /**
  133 + * 校验角色们是否有效。如下情况,视为无效:
  134 + * 1. 角色编号不存在
  135 + * 2. 角色被禁用
  136 + *
  137 + * @param ids 角色编号数组
  138 + */
  139 + void validRoles(Collection<Long> ids);
131 140
132 } 141 }
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/impl/SysRoleServiceImpl.java
@@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollectionUtil; @@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollectionUtil;
5 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; 5 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
6 import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; 6 import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
7 import cn.iocoder.yudao.framework.common.pojo.PageResult; 7 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  8 +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
8 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; 9 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
9 import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleCreateReqVO; 10 import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleCreateReqVO;
10 import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleExportReqVO; 11 import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleExportReqVO;
@@ -33,9 +34,11 @@ import org.springframework.util.StringUtils; @@ -33,9 +34,11 @@ import org.springframework.util.StringUtils;
33 import javax.annotation.PostConstruct; 34 import javax.annotation.PostConstruct;
34 import javax.annotation.Resource; 35 import javax.annotation.Resource;
35 import java.util.*; 36 import java.util.*;
  37 +import java.util.function.Consumer;
36 import java.util.stream.Collectors; 38 import java.util.stream.Collectors;
37 39
38 import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*; 40 import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*;
  41 +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
39 42
40 /** 43 /**
41 * 角色 Service 实现类 44 * 角色 Service 实现类
@@ -234,10 +237,30 @@ public class SysRoleServiceImpl implements SysRoleService { @@ -234,10 +237,30 @@ public class SysRoleServiceImpl implements SysRoleService {
234 } 237 }
235 238
236 @Override 239 @Override
237 - public List<SysRoleDO> getRoles(SysRoleExportReqVO reqVO) { 240 + public List<SysRoleDO> getRoleList(SysRoleExportReqVO reqVO) {
238 return roleMapper.listRoles(reqVO); 241 return roleMapper.listRoles(reqVO);
239 } 242 }
240 243
  244 + @Override
  245 + public void validRoles(Collection<Long> ids) {
  246 + if (CollUtil.isEmpty(ids)) {
  247 + return;
  248 + }
  249 + // 获得角色信息
  250 + List<SysRoleDO> roles = roleMapper.selectBatchIds(ids);
  251 + Map<Long, SysRoleDO> roleMap = CollectionUtils.convertMap(roles, SysRoleDO::getId);
  252 + // 校验
  253 + ids.forEach(id -> {
  254 + SysRoleDO role = roleMap.get(id);
  255 + if (role == null) {
  256 + throw exception(ROLE_NOT_EXISTS);
  257 + }
  258 + if (!CommonStatusEnum.ENABLE.getStatus().equals(role.getStatus())) {
  259 + throw exception(ROLE_IS_DISABLE, role.getName());
  260 + }
  261 + });
  262 + }
  263 +
241 /** 264 /**
242 * 校验角色的唯一字段是否重复 265 * 校验角色的唯一字段是否重复
243 * 266 *
@@ -253,7 +276,7 @@ public class SysRoleServiceImpl implements SysRoleService { @@ -253,7 +276,7 @@ public class SysRoleServiceImpl implements SysRoleService {
253 // 1. 该 name 名字被其它角色所使用 276 // 1. 该 name 名字被其它角色所使用
254 SysRoleDO role = roleMapper.selectByName(name); 277 SysRoleDO role = roleMapper.selectByName(name);
255 if (role != null && !role.getId().equals(id)) { 278 if (role != null && !role.getId().equals(id)) {
256 - throw ServiceExceptionUtil.exception(ROLE_NAME_DUPLICATE, name); 279 + throw exception(ROLE_NAME_DUPLICATE, name);
257 } 280 }
258 // 2. 是否存在相同编码的角色 281 // 2. 是否存在相同编码的角色
259 if (!StringUtils.hasText(code)) { 282 if (!StringUtils.hasText(code)) {
@@ -262,7 +285,7 @@ public class SysRoleServiceImpl implements SysRoleService { @@ -262,7 +285,7 @@ public class SysRoleServiceImpl implements SysRoleService {
262 // 该 code 编码被其它角色所使用 285 // 该 code 编码被其它角色所使用
263 role = roleMapper.selectByCode(code); 286 role = roleMapper.selectByCode(code);
264 if (role != null && !role.getId().equals(id)) { 287 if (role != null && !role.getId().equals(id)) {
265 - throw ServiceExceptionUtil.exception(ROLE_CODE_DUPLICATE, code); 288 + throw exception(ROLE_CODE_DUPLICATE, code);
266 } 289 }
267 } 290 }
268 291
@@ -275,18 +298,12 @@ public class SysRoleServiceImpl implements SysRoleService { @@ -275,18 +298,12 @@ public class SysRoleServiceImpl implements SysRoleService {
275 public void checkUpdateRole(Long id) { 298 public void checkUpdateRole(Long id) {
276 SysRoleDO roleDO = roleMapper.selectById(id); 299 SysRoleDO roleDO = roleMapper.selectById(id);
277 if (roleDO == null) { 300 if (roleDO == null) {
278 - throw ServiceExceptionUtil.exception(ROLE_NOT_EXISTS); 301 + throw exception(ROLE_NOT_EXISTS);
279 } 302 }
280 // 内置角色,不允许删除 303 // 内置角色,不允许删除
281 if (SysRoleTypeEnum.SYSTEM.getType().equals(roleDO.getType())) { 304 if (SysRoleTypeEnum.SYSTEM.getType().equals(roleDO.getType())) {
282 - throw ServiceExceptionUtil.exception(ROLE_CAN_NOT_UPDATE_SYSTEM_TYPE_ROLE); 305 + throw exception(ROLE_CAN_NOT_UPDATE_SYSTEM_TYPE_ROLE);
283 } 306 }
284 } 307 }
285 308
286 -// @Override  
287 -// @DataScope(deptAlias = "d")  
288 -// public List<SysRole> selectRoleList(SysRole role) {  
289 -// return roleMapper.selectRoleList(role);  
290 -// }  
291 -  
292 } 309 }
yudao-admin-ui/src/views/bpm/model/index.vue
@@ -210,7 +210,13 @@ @@ -210,7 +210,13 @@
210 <span>{{ getDictDataLabel(DICT_TYPE.BPM_TASK_ASSIGN_RULE_TYPE, scope.row.type) }}</span> 210 <span>{{ getDictDataLabel(DICT_TYPE.BPM_TASK_ASSIGN_RULE_TYPE, scope.row.type) }}</span>
211 </template> 211 </template>
212 </el-table-column> 212 </el-table-column>
213 - <el-table-column label="规则范围" align="center" prop="options" /> 213 + <el-table-column label="规则范围" align="center" prop="options" width="200px">
  214 + <template slot-scope="scope">
  215 + <el-tag size="medium" v-if="scope.row.options" v-for="option in scope.row.options">
  216 + {{ getAssignRuleOptionName(scope.row.type, option) }}
  217 + </el-tag>
  218 + </template>
  219 + </el-table-column>
214 <el-table-column label="操作" align="center" width="80" fixed="right"> 220 <el-table-column label="操作" align="center" width="80" fixed="right">
215 <template slot-scope="scope"> 221 <template slot-scope="scope">
216 <!-- TODO 权限 --> 222 <!-- TODO 权限 -->
@@ -604,9 +610,9 @@ export default { @@ -604,9 +610,9 @@ export default {
604 ...row, 610 ...row,
605 options: [] 611 options: []
606 }; 612 };
607 - // TODO 芋艿:需要搞一搞 613 + // 将 options 赋值到对应的 roleIds 等选项
608 if (row.type === 10) { 614 if (row.type === 10) {
609 - this.taskAssignRule.form.role = row.options; 615 + this.taskAssignRule.form.roleIds = row.options;
610 } 616 }
611 this.taskAssignRule.open = true; 617 this.taskAssignRule.open = true;
612 }, 618 },
@@ -619,12 +625,14 @@ export default { @@ -619,12 +625,14 @@ export default {
619 ...this.taskAssignRule.form, 625 ...this.taskAssignRule.form,
620 taskDefinitionName: undefined, 626 taskDefinitionName: undefined,
621 }; 627 };
  628 + // 将 roleIds 等选项赋值到 options 中
622 if (form.type === 10) { 629 if (form.type === 10) {
623 form.options = form.roleIds; 630 form.options = form.roleIds;
624 } 631 }
625 form.roleIds = undefined; 632 form.roleIds = undefined;
626 // 新增 633 // 新增
627 if (!form.id) { 634 if (!form.id) {
  635 + form.modelId = this.taskAssignRule.row.id // 模型编号
628 createTaskAssignRule(form).then(response => { 636 createTaskAssignRule(form).then(response => {
629 this.msgSuccess("修改成功"); 637 this.msgSuccess("修改成功");
630 this.taskAssignRule.open = false; 638 this.taskAssignRule.open = false;
@@ -647,10 +655,20 @@ export default { @@ -647,10 +655,20 @@ export default {
647 this.taskAssignRule.open = false; 655 this.taskAssignRule.open = false;
648 this.resetAssignRuleForm(); 656 this.resetAssignRuleForm();
649 }, 657 },
650 - // 表单重置 658 + /** 表单重置 */
651 resetAssignRuleForm() { 659 resetAssignRuleForm() {
652 this.taskAssignRule.form = {}; 660 this.taskAssignRule.form = {};
653 this.resetForm("taskAssignRuleForm"); 661 this.resetForm("taskAssignRuleForm");
  662 + },
  663 + getAssignRuleOptionName(type, option) {
  664 + if (type === 10) {
  665 + for (const roleOption of this.taskAssignRule.roleOptions) {
  666 + if (roleOption.id === option) {
  667 + return roleOption.name;
  668 + }
  669 + }
  670 + }
  671 + return '未知(' + option + ')';
654 } 672 }
655 } 673 }
656 }; 674 };