Commit 6b0520d7795796d61054ec31c3c53edacd50218f

Authored by jason
1 parent dd0bba47

仿钉钉流程设计- 流程抄送增加流程活动 Id 字段

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