Commit 4fbe9fa480b25fde992687399206af5da8ffecc8
1 parent
af842c70
【代码优化】BPM:流程模型->基本信息->谁可以发起,支持指定多个部门
Showing
6 changed files
with
17 additions
and
18 deletions
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/base/dept/DeptSimpleBaseVO.java
| ... | ... | @@ -6,8 +6,10 @@ import lombok.Data; |
| 6 | 6 | @Schema(description = "部门精简信息 VO") |
| 7 | 7 | @Data |
| 8 | 8 | public class DeptSimpleBaseVO { |
| 9 | + | |
| 9 | 10 | @Schema(description = "部门编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") |
| 10 | 11 | private Long id; |
| 11 | - @Schema(description = "部门名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") | |
| 12 | + @Schema(description = "部门名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "技术部") | |
| 12 | 13 | private String name; |
| 14 | + | |
| 13 | 15 | } |
| 14 | 16 | \ No newline at end of file | ... | ... |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmModelController.java
| ... | ... | @@ -83,13 +83,12 @@ public class BpmModelController { |
| 83 | 83 | List<ProcessDefinition> processDefinitions = processDefinitionService.getProcessDefinitionListByDeploymentIds( |
| 84 | 84 | deploymentMap.keySet()); |
| 85 | 85 | Map<String, ProcessDefinition> processDefinitionMap = convertMap(processDefinitions, ProcessDefinition::getDeploymentId); |
| 86 | - // 获得 User Map | |
| 86 | + // 获得 User Map、Dept Map | |
| 87 | 87 | Set<Long> userIds = convertSetByFlatMap(list, model -> { |
| 88 | 88 | BpmModelMetaInfoVO metaInfo = BpmModelConvert.INSTANCE.parseMetaInfo(model); |
| 89 | 89 | return metaInfo != null ? metaInfo.getStartUserIds().stream() : Stream.empty(); |
| 90 | 90 | }); |
| 91 | 91 | Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(userIds); |
| 92 | - // 获得 Dept Map | |
| 93 | 92 | Set<Long> deptIds = convertSetByFlatMap(list, model -> { |
| 94 | 93 | BpmModelMetaInfoVO metaInfo = BpmModelConvert.INSTANCE.parseMetaInfo(model); |
| 95 | 94 | return metaInfo != null && metaInfo.getStartDeptIds() != null ? metaInfo.getStartDeptIds().stream() : Stream.empty(); | ... | ... |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/BpmModelMetaInfoVO.java
| ... | ... | @@ -59,7 +59,7 @@ public class BpmModelMetaInfoVO { |
| 59 | 59 | @Schema(description = "可发起用户编号数组", example = "[1,2,3]") |
| 60 | 60 | private List<Long> startUserIds; |
| 61 | 61 | |
| 62 | - @Schema(description = "可发起部门编号数组") | |
| 62 | + @Schema(description = "可发起部门编号数组", example = "[2,4,6]") | |
| 63 | 63 | private List<Long> startDeptIds; |
| 64 | 64 | |
| 65 | 65 | @Schema(description = "可管理用户编号数组", requiredMode = Schema.RequiredMode.REQUIRED, example = "[2,4,6]") | ... | ... |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/definition/BpmModelConvert.java
| ... | ... | @@ -76,8 +76,7 @@ public interface BpmModelConvert { |
| 76 | 76 | default BpmModelRespVO buildModel0(Model model, |
| 77 | 77 | BpmModelMetaInfoVO metaInfo, BpmFormDO form, BpmCategoryDO category, |
| 78 | 78 | Deployment deployment, ProcessDefinition processDefinition, |
| 79 | - List<AdminUserRespDTO> startUsers, | |
| 80 | - List<DeptRespDTO> startDepts) { | |
| 79 | + List<AdminUserRespDTO> startUsers, List<DeptRespDTO> startDepts) { | |
| 81 | 80 | BpmModelRespVO modelRespVO = new BpmModelRespVO().setId(model.getId()).setName(model.getName()) |
| 82 | 81 | .setKey(model.getKey()).setCategory(model.getCategory()) |
| 83 | 82 | .setCreateTime(DateUtils.of(model.getCreateTime())); |
| ... | ... | @@ -99,10 +98,9 @@ public interface BpmModelConvert { |
| 99 | 98 | modelRespVO.getProcessDefinition().setDeploymentTime(DateUtils.of(deployment.getDeploymentTime())); |
| 100 | 99 | } |
| 101 | 100 | } |
| 102 | - // User | |
| 103 | - modelRespVO.setStartUsers(BeanUtils.toBean(startUsers, UserSimpleBaseVO.class)); | |
| 104 | - // Dept | |
| 105 | - modelRespVO.setStartDepts(BeanUtils.toBean(startDepts, DeptSimpleBaseVO.class)); | |
| 101 | + // User、Dept | |
| 102 | + modelRespVO.setStartUsers(BeanUtils.toBean(startUsers, UserSimpleBaseVO.class)) | |
| 103 | + .setStartDepts(BeanUtils.toBean(startDepts, DeptSimpleBaseVO.class)); | |
| 106 | 104 | return modelRespVO; |
| 107 | 105 | } |
| 108 | 106 | ... | ... |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/definition/BpmProcessDefinitionInfoDO.java
| ... | ... | @@ -154,7 +154,7 @@ public class BpmProcessDefinitionInfoDO extends BaseDO { |
| 154 | 154 | /** |
| 155 | 155 | * 可发起部门编号数组 |
| 156 | 156 | * |
| 157 | - * 关联 {@link AdminUserRespDTO#getId()} 字段的数组 | |
| 157 | + * 关联 {@link AdminUserRespDTO#getDeptId()} 字段的数组 | |
| 158 | 158 | */ |
| 159 | 159 | @TableField(typeHandler = LongListTypeHandler.class) |
| 160 | 160 | private List<Long> startDeptIds; | ... | ... |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmProcessDefinitionServiceImpl.java
| ... | ... | @@ -51,6 +51,7 @@ public class BpmProcessDefinitionServiceImpl implements BpmProcessDefinitionServ |
| 51 | 51 | |
| 52 | 52 | @Resource |
| 53 | 53 | private BpmProcessDefinitionInfoMapper processDefinitionMapper; |
| 54 | + | |
| 54 | 55 | @Resource |
| 55 | 56 | private AdminUserApi adminUserApi; |
| 56 | 57 | |
| ... | ... | @@ -93,18 +94,17 @@ public class BpmProcessDefinitionServiceImpl implements BpmProcessDefinitionServ |
| 93 | 94 | return false; |
| 94 | 95 | } |
| 95 | 96 | |
| 96 | - // 获取用户所在部门 | |
| 97 | - AdminUserRespDTO user = adminUserApi.getUser(userId); | |
| 98 | - Long userDeptId = user != null ? user.getDeptId() : null; | |
| 99 | - | |
| 100 | 97 | // 校验用户是否在允许发起的用户列表中 |
| 101 | - if (!CollUtil.isEmpty(processDefinition.getStartUserIds())) { | |
| 98 | + if (CollUtil.isNotEmpty(processDefinition.getStartUserIds())) { | |
| 102 | 99 | return processDefinition.getStartUserIds().contains(userId); |
| 103 | 100 | } |
| 104 | 101 | |
| 105 | 102 | // 校验用户是否在允许发起的部门列表中 |
| 106 | - if (!CollUtil.isEmpty(processDefinition.getStartDeptIds()) && userDeptId != null) { | |
| 107 | - return processDefinition.getStartDeptIds().contains(userDeptId); | |
| 103 | + if (CollUtil.isNotEmpty(processDefinition.getStartDeptIds())) { | |
| 104 | + AdminUserRespDTO user = adminUserApi.getUser(userId); | |
| 105 | + return user != null | |
| 106 | + && user.getDeptId() != null | |
| 107 | + && processDefinition.getStartDeptIds().contains(user.getDeptId()); | |
| 108 | 108 | } |
| 109 | 109 | |
| 110 | 110 | // 都为空,则所有人都可以发起 | ... | ... |