Commit 6b0520d7795796d61054ec31c3c53edacd50218f
1 parent
dd0bba47
仿钉钉流程设计- 流程抄送增加流程活动 Id 字段
Showing
6 changed files
with
23 additions
and
9 deletions
sql/mysql/bpm_update.sql
0 → 100644
| 1 | +-- ---------------------------- | ||
| 2 | +-- 流程抄送表新加流程活动编号 | ||
| 3 | +-- ---------------------------- | ||
| 4 | +ALTER TABLE `pro-test`.`bpm_process_instance_copy` | ||
| 5 | + ADD COLUMN `activity_id` varchar(64) NULL COMMENT '流程活动编号' AFTER `category`, | ||
| 6 | + MODIFY COLUMN `task_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '任务编号' AFTER `category`; | ||
| 0 | \ No newline at end of file | 7 | \ No newline at end of file |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmProcessInstanceController.java
| @@ -157,8 +157,7 @@ public class BpmProcessInstanceController { | @@ -157,8 +157,7 @@ public class BpmProcessInstanceController { | ||
| 157 | return success(true); | 157 | return success(true); |
| 158 | } | 158 | } |
| 159 | 159 | ||
| 160 | - // TODO @jason:有个 get-form-fields-permission | ||
| 161 | - @GetMapping("/form-fields-permission") | 160 | + @GetMapping("/get-form-fields-permission") |
| 162 | @Operation(summary = "获得流程实例表单字段权限", description = "在【我的流程】菜单中,进行调用") | 161 | @Operation(summary = "获得流程实例表单字段权限", description = "在【我的流程】菜单中,进行调用") |
| 163 | @PreAuthorize("@ss.hasPermission('bpm:process-instance:query')") | 162 | @PreAuthorize("@ss.hasPermission('bpm:process-instance:query')") |
| 164 | public CommonResult<Map<String, String>> getProcessInstanceFormFieldsPermission( | 163 | public CommonResult<Map<String, String>> getProcessInstanceFormFieldsPermission( |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/task/BpmProcessInstanceCopyDO.java
| @@ -48,10 +48,16 @@ public class BpmProcessInstanceCopyDO extends BaseDO { | @@ -48,10 +48,16 @@ public class BpmProcessInstanceCopyDO extends BaseDO { | ||
| 48 | * 冗余 ProcessInstance 的 category 字段 | 48 | * 冗余 ProcessInstance 的 category 字段 |
| 49 | */ | 49 | */ |
| 50 | private String category; | 50 | private String category; |
| 51 | - | 51 | + /** |
| 52 | + * 流程活动编号 | ||
| 53 | + * <p/> | ||
| 54 | + * 对应 BPMN XML 节点 Id, 用于查询抄送节点的表单字段权限 | ||
| 55 | + * 这里冗余的原因。如果是钉钉易搭的抄送节点 (ServiceTask) 。 使用 taskId 可能查不到对应的 activityId | ||
| 56 | + */ | ||
| 57 | + private String activityId; | ||
| 52 | /** | 58 | /** |
| 53 | * 任务主键 | 59 | * 任务主键 |
| 54 | - * | 60 | + * // @芋艿 这个 taskId 是不是可以去掉了 |
| 55 | * 关联 Task 的 id 属性 | 61 | * 关联 Task 的 id 属性 |
| 56 | */ | 62 | */ |
| 57 | private String taskId; | 63 | private String taskId; |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/BpmCopyTaskDelegate.java
| @@ -41,7 +41,7 @@ public class BpmCopyTaskDelegate implements JavaDelegate { | @@ -41,7 +41,7 @@ public class BpmCopyTaskDelegate implements JavaDelegate { | ||
| 41 | // 2. 执行抄送 | 41 | // 2. 执行抄送 |
| 42 | FlowElement currentFlowElement = execution.getCurrentFlowElement(); | 42 | FlowElement currentFlowElement = execution.getCurrentFlowElement(); |
| 43 | processInstanceCopyService.createProcessInstanceCopy(userIds, execution.getProcessInstanceId(), | 43 | processInstanceCopyService.createProcessInstanceCopy(userIds, execution.getProcessInstanceId(), |
| 44 | - currentFlowElement.getId(), currentFlowElement.getName()); | 44 | + currentFlowElement.getId(), null, currentFlowElement.getName()); |
| 45 | } | 45 | } |
| 46 | 46 | ||
| 47 | } | 47 | } |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceCopyService.java
| @@ -26,10 +26,12 @@ public interface BpmProcessInstanceCopyService { | @@ -26,10 +26,12 @@ public interface BpmProcessInstanceCopyService { | ||
| 26 | * | 26 | * |
| 27 | * @param userIds 抄送的用户编号 | 27 | * @param userIds 抄送的用户编号 |
| 28 | * @param processInstanceId 流程编号 | 28 | * @param processInstanceId 流程编号 |
| 29 | + * @param activityId 流程活动编号 id (对应 BPMN XML 节点 Id) | ||
| 30 | + * // TODO 芋艿这个 taskId 是不是可以不要了 | ||
| 29 | * @param taskId 任务编号 | 31 | * @param taskId 任务编号 |
| 30 | * @param taskName 任务名称 | 32 | * @param taskName 任务名称 |
| 31 | */ | 33 | */ |
| 32 | - void createProcessInstanceCopy(Collection<Long> userIds, String processInstanceId, String taskId, String taskName); | 34 | + void createProcessInstanceCopy(Collection<Long> userIds, String processInstanceId, String activityId, String taskId, String taskName); |
| 33 | 35 | ||
| 34 | /** | 36 | /** |
| 35 | * 获得抄送的流程的分页 | 37 | * 获得抄送的流程的分页 |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceCopyServiceImpl.java
| @@ -53,11 +53,11 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy | @@ -53,11 +53,11 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy | ||
| 53 | throw exception(ErrorCodeConstants.TASK_NOT_EXISTS); | 53 | throw exception(ErrorCodeConstants.TASK_NOT_EXISTS); |
| 54 | } | 54 | } |
| 55 | String processInstanceId = task.getProcessInstanceId(); | 55 | String processInstanceId = task.getProcessInstanceId(); |
| 56 | - createProcessInstanceCopy(userIds, processInstanceId, task.getId(), task.getName()); | 56 | + createProcessInstanceCopy(userIds, processInstanceId, task.getTaskDefinitionKey(), task.getId(), task.getName()); |
| 57 | } | 57 | } |
| 58 | 58 | ||
| 59 | @Override | 59 | @Override |
| 60 | - public void createProcessInstanceCopy(Collection<Long> userIds, String processInstanceId, String taskId, String taskName) { | 60 | + public void createProcessInstanceCopy(Collection<Long> userIds, String processInstanceId, String activityId, String taskId, String taskName) { |
| 61 | // 1.1 校验流程实例存在 | 61 | // 1.1 校验流程实例存在 |
| 62 | ProcessInstance processInstance = processInstanceService.getProcessInstance(processInstanceId); | 62 | ProcessInstance processInstance = processInstanceService.getProcessInstance(processInstanceId); |
| 63 | if (processInstance == null) { | 63 | if (processInstance == null) { |
| @@ -74,7 +74,8 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy | @@ -74,7 +74,8 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy | ||
| 74 | List<BpmProcessInstanceCopyDO> copyList = convertList(userIds, userId -> new BpmProcessInstanceCopyDO() | 74 | List<BpmProcessInstanceCopyDO> copyList = convertList(userIds, userId -> new BpmProcessInstanceCopyDO() |
| 75 | .setUserId(userId).setStartUserId(Long.valueOf(processInstance.getStartUserId())) | 75 | .setUserId(userId).setStartUserId(Long.valueOf(processInstance.getStartUserId())) |
| 76 | .setProcessInstanceId(processInstanceId).setProcessInstanceName(processInstance.getName()) | 76 | .setProcessInstanceId(processInstanceId).setProcessInstanceName(processInstance.getName()) |
| 77 | - .setCategory(processDefinition.getCategory()).setTaskId(taskId).setTaskName(taskName)); | 77 | + .setCategory(processDefinition.getCategory()).setActivityId(activityId) |
| 78 | + .setTaskId(taskId).setTaskName(taskName)); | ||
| 78 | processInstanceCopyMapper.insertBatch(copyList); | 79 | processInstanceCopyMapper.insertBatch(copyList); |
| 79 | } | 80 | } |
| 80 | 81 |