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

This commit is contained in:
jason 2024-08-25 23:06:08 +08:00
parent dd0bba4752
commit 6b0520d779
6 changed files with 23 additions and 9 deletions

6
sql/mysql/bpm_update.sql Normal file
View File

@ -0,0 +1,6 @@
-- ----------------------------
-- 流程抄送表新加流程活动编号
-- ----------------------------
ALTER TABLE `pro-test`.`bpm_process_instance_copy`
ADD COLUMN `activity_id` varchar(64) NULL COMMENT '流程活动编号' AFTER `category`,
MODIFY COLUMN `task_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '任务编号' AFTER `category`;

View File

@ -157,8 +157,7 @@ public class BpmProcessInstanceController {
return success(true);
}
// TODO @jason有个 get-form-fields-permission
@GetMapping("/form-fields-permission")
@GetMapping("/get-form-fields-permission")
@Operation(summary = "获得流程实例表单字段权限", description = "在【我的流程】菜单中,进行调用")
@PreAuthorize("@ss.hasPermission('bpm:process-instance:query')")
public CommonResult<Map<String, String>> getProcessInstanceFormFieldsPermission(

View File

@ -48,10 +48,16 @@ public class BpmProcessInstanceCopyDO extends BaseDO {
* 冗余 ProcessInstance category 字段
*/
private String category;
/**
* 流程活动编号
* <p/>
* 对应 BPMN XML 节点 Id, 用于查询抄送节点的表单字段权限
* 这里冗余的原因如果是钉钉易搭的抄送节点 (ServiceTask) 使用 taskId 可能查不到对应的 activityId
*/
private String activityId;
/**
* 任务主键
*
* // @芋艿 这个 taskId 是不是可以去掉了
* 关联 Task id 属性
*/
private String taskId;

View File

@ -41,7 +41,7 @@ public class BpmCopyTaskDelegate implements JavaDelegate {
// 2. 执行抄送
FlowElement currentFlowElement = execution.getCurrentFlowElement();
processInstanceCopyService.createProcessInstanceCopy(userIds, execution.getProcessInstanceId(),
currentFlowElement.getId(), currentFlowElement.getName());
currentFlowElement.getId(), null, currentFlowElement.getName());
}
}

View File

@ -26,10 +26,12 @@ public interface BpmProcessInstanceCopyService {
*
* @param userIds 抄送的用户编号
* @param processInstanceId 流程编号
* @param activityId 流程活动编号 id (对应 BPMN XML 节点 Id)
* // TODO 芋艿这个 taskId 是不是可以不要了
* @param taskId 任务编号
* @param taskName 任务名称
*/
void createProcessInstanceCopy(Collection<Long> userIds, String processInstanceId, String taskId, String taskName);
void createProcessInstanceCopy(Collection<Long> userIds, String processInstanceId, String activityId, String taskId, String taskName);
/**
* 获得抄送的流程的分页

View File

@ -53,11 +53,11 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy
throw exception(ErrorCodeConstants.TASK_NOT_EXISTS);
}
String processInstanceId = task.getProcessInstanceId();
createProcessInstanceCopy(userIds, processInstanceId, task.getId(), task.getName());
createProcessInstanceCopy(userIds, processInstanceId, task.getTaskDefinitionKey(), task.getId(), task.getName());
}
@Override
public void createProcessInstanceCopy(Collection<Long> userIds, String processInstanceId, String taskId, String taskName) {
public void createProcessInstanceCopy(Collection<Long> userIds, String processInstanceId, String activityId, String taskId, String taskName) {
// 1.1 校验流程实例存在
ProcessInstance processInstance = processInstanceService.getProcessInstance(processInstanceId);
if (processInstance == null) {
@ -74,7 +74,8 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy
List<BpmProcessInstanceCopyDO> copyList = convertList(userIds, userId -> new BpmProcessInstanceCopyDO()
.setUserId(userId).setStartUserId(Long.valueOf(processInstance.getStartUserId()))
.setProcessInstanceId(processInstanceId).setProcessInstanceName(processInstance.getName())
.setCategory(processDefinition.getCategory()).setTaskId(taskId).setTaskName(taskName));
.setCategory(processDefinition.getCategory()).setActivityId(activityId)
.setTaskId(taskId).setTaskName(taskName));
processInstanceCopyMapper.insertBatch(copyList);
}