Commit de297e3a78d5a331e5d51ae0f28f328d40796871
1 parent
61e32752
feat: BPM-更多设置-标题设置
Showing
4 changed files
with
45 additions
and
2 deletions
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/BpmModelMetaInfoVO.java
| @@ -74,6 +74,9 @@ public class BpmModelMetaInfoVO { | @@ -74,6 +74,9 @@ public class BpmModelMetaInfoVO { | ||
| 74 | @InEnum(BpmAutoApproveTypeEnum.class) | 74 | @InEnum(BpmAutoApproveTypeEnum.class) |
| 75 | private Integer autoApprovalType; | 75 | private Integer autoApprovalType; |
| 76 | 76 | ||
| 77 | + @Schema(description = "标题设置", example = "{}") | ||
| 78 | + private CustomTitleSetting customTitleSetting; | ||
| 79 | + | ||
| 77 | @Schema(description = "流程 ID 规则") | 80 | @Schema(description = "流程 ID 规则") |
| 78 | @Data | 81 | @Data |
| 79 | @Valid | 82 | @Valid |
| @@ -98,4 +101,18 @@ public class BpmModelMetaInfoVO { | @@ -98,4 +101,18 @@ public class BpmModelMetaInfoVO { | ||
| 98 | 101 | ||
| 99 | } | 102 | } |
| 100 | 103 | ||
| 104 | + @Schema(description = "标题设置") | ||
| 105 | + @Data | ||
| 106 | + @Valid | ||
| 107 | + public static class CustomTitleSetting { | ||
| 108 | + | ||
| 109 | + @Schema(description = "是否自定义", example = "false") | ||
| 110 | + @NotNull(message = "是否自定义不能为空") | ||
| 111 | + private Boolean enable; | ||
| 112 | + | ||
| 113 | + @Schema(description = "标题", example = "流程标题") | ||
| 114 | + private String title; | ||
| 115 | + | ||
| 116 | + } | ||
| 117 | + | ||
| 101 | } | 118 | } |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/definition/BpmProcessDefinitionInfoDO.java
| @@ -170,4 +170,10 @@ public class BpmProcessDefinitionInfoDO extends BaseDO { | @@ -170,4 +170,10 @@ public class BpmProcessDefinitionInfoDO extends BaseDO { | ||
| 170 | */ | 170 | */ |
| 171 | private Integer autoApprovalType; | 171 | private Integer autoApprovalType; |
| 172 | 172 | ||
| 173 | + /** | ||
| 174 | + * 标题设置 | ||
| 175 | + */ | ||
| 176 | + @TableField(typeHandler = JacksonTypeHandler.class) | ||
| 177 | + private BpmModelMetaInfoVO.CustomTitleSetting customTitleSetting; | ||
| 178 | + | ||
| 173 | } | 179 | } |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/enums/BpmnVariableConstants.java
| @@ -50,6 +50,14 @@ public class BpmnVariableConstants { | @@ -50,6 +50,14 @@ public class BpmnVariableConstants { | ||
| 50 | * @see <a href="https://blog.csdn.net/weixin_42065235/article/details/126039993">Flowable/Activiti之SkipExpression 完成自动审批</a> | 50 | * @see <a href="https://blog.csdn.net/weixin_42065235/article/details/126039993">Flowable/Activiti之SkipExpression 完成自动审批</a> |
| 51 | */ | 51 | */ |
| 52 | public static final String PROCESS_INSTANCE_SKIP_EXPRESSION_ENABLED = "_FLOWABLE_SKIP_EXPRESSION_ENABLED"; | 52 | public static final String PROCESS_INSTANCE_SKIP_EXPRESSION_ENABLED = "_FLOWABLE_SKIP_EXPRESSION_ENABLED"; |
| 53 | + /** | ||
| 54 | + * 流程实例的变量 - 流程开始时间 | ||
| 55 | + */ | ||
| 56 | + public static final String PROCESS_START_TIME = "PROCESS_START_TIME"; | ||
| 57 | + /** | ||
| 58 | + * 流程实例的变量 - 流程定义名称 | ||
| 59 | + */ | ||
| 60 | + public static final String PROCESS_DEFINITION_NAME = "PROCESS_DEFINITION_NAME"; | ||
| 53 | 61 | ||
| 54 | /** | 62 | /** |
| 55 | * 任务的变量 - 状态 | 63 | * 任务的变量 - 状态 |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.java
| @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.bpm.service.task; | @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.bpm.service.task; | ||
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | import cn.hutool.core.collection.ListUtil; | 4 | import cn.hutool.core.collection.ListUtil; |
| 5 | +import cn.hutool.core.date.DateUtil; | ||
| 5 | import cn.hutool.core.lang.Assert; | 6 | import cn.hutool.core.lang.Assert; |
| 6 | import cn.hutool.core.util.ArrayUtil; | 7 | import cn.hutool.core.util.ArrayUtil; |
| 7 | import cn.hutool.core.util.ObjectUtil; | 8 | import cn.hutool.core.util.ObjectUtil; |
| @@ -610,14 +611,25 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | @@ -610,14 +611,25 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | ||
| 610 | ProcessInstanceBuilder processInstanceBuilder = runtimeService.createProcessInstanceBuilder() | 611 | ProcessInstanceBuilder processInstanceBuilder = runtimeService.createProcessInstanceBuilder() |
| 611 | .processDefinitionId(definition.getId()) | 612 | .processDefinitionId(definition.getId()) |
| 612 | .businessKey(businessKey) | 613 | .businessKey(businessKey) |
| 613 | - .name(definition.getName().trim()) | ||
| 614 | .variables(variables); | 614 | .variables(variables); |
| 615 | // 3.1 创建流程 ID | 615 | // 3.1 创建流程 ID |
| 616 | BpmModelMetaInfoVO.ProcessIdRule processIdRule = processDefinitionInfo.getProcessIdRule(); | 616 | BpmModelMetaInfoVO.ProcessIdRule processIdRule = processDefinitionInfo.getProcessIdRule(); |
| 617 | if (processIdRule != null && Boolean.TRUE.equals(processIdRule.getEnable())) { | 617 | if (processIdRule != null && Boolean.TRUE.equals(processIdRule.getEnable())) { |
| 618 | processInstanceBuilder.predefineProcessInstanceId(processIdRedisDAO.generate(processIdRule)); | 618 | processInstanceBuilder.predefineProcessInstanceId(processIdRedisDAO.generate(processIdRule)); |
| 619 | } | 619 | } |
| 620 | - // 3.2 发起流程实例 | 620 | + // 3.2 流程名称 |
| 621 | + BpmModelMetaInfoVO.CustomTitleSetting customTitleSetting = processDefinitionInfo.getCustomTitleSetting(); | ||
| 622 | + if (customTitleSetting != null && Boolean.TRUE.equals(customTitleSetting.getEnable())) { | ||
| 623 | + AdminUserRespDTO user = adminUserApi.getUser(userId); | ||
| 624 | + Map<String, Object> cloneVariables = ObjectUtil.clone(variables); | ||
| 625 | + cloneVariables.put(BpmnVariableConstants.PROCESS_INSTANCE_VARIABLE_START_USER_ID, user.getNickname()); | ||
| 626 | + cloneVariables.put(BpmnVariableConstants.PROCESS_START_TIME, DateUtil.now()); | ||
| 627 | + cloneVariables.put(BpmnVariableConstants.PROCESS_DEFINITION_NAME, definition.getName().trim()); | ||
| 628 | + processInstanceBuilder.name(StrUtil.format(customTitleSetting.getTitle(), cloneVariables)); | ||
| 629 | + } else { | ||
| 630 | + processInstanceBuilder.name(definition.getName().trim()); | ||
| 631 | + } | ||
| 632 | + // 3.3 发起流程实例 | ||
| 621 | ProcessInstance instance = processInstanceBuilder.start(); | 633 | ProcessInstance instance = processInstanceBuilder.start(); |
| 622 | return instance.getId(); | 634 | return instance.getId(); |
| 623 | } | 635 | } |