diff --git a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/controller/EngineTaskController.java b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/controller/EngineTaskController.java index 470ba04df..46ba0cb5f 100644 --- a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/controller/EngineTaskController.java +++ b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/controller/EngineTaskController.java @@ -154,4 +154,28 @@ public class EngineTaskController { return R.ok(); } + /** + * 设置执行人 (转办) + * + * @param taskParamDto 任务参数DTO + * @return 操作结果 + */ + @PostMapping("/transferTask") + public R transferTask(@RequestBody TaskParamDto taskParamDto) { + Map taskLocalParamMap = taskParamDto.getTaskLocalParamMap(); + if (CollUtil.isNotEmpty(taskLocalParamMap)) { + taskService.setVariablesLocal(taskParamDto.getTaskId(), taskLocalParamMap); + } + + // 设置任务的 owner 为当前任务的 assignee + Task task = taskService.createTaskQuery().taskId(taskParamDto.getTaskId()).includeTaskLocalVariables().singleResult(); + taskService.setOwner(taskParamDto.getTaskId(), task.getAssignee()); + + // 设置任务的 assignee 为目标用户 (转办用户) + for (Long targetUserId : taskParamDto.getTargetUserIdList()) { + taskService.setAssignee(taskParamDto.getTaskId(), targetUserId.toString()); + } + return R.ok(); + } + } diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/api/feign/RemoteFlowEngineService.java b/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/api/feign/RemoteFlowEngineService.java index 670bcf3ef..2f7404977 100644 --- a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/api/feign/RemoteFlowEngineService.java +++ b/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/api/feign/RemoteFlowEngineService.java @@ -82,8 +82,8 @@ public interface RemoteFlowEngineService { * @param taskParamDto 任务参数 * @return 设置负责人结果 */ - @PostMapping("/task/setAssignee") - R setAssignee(@RequestBody TaskParamDto taskParamDto); + @PostMapping("/task/transferTask") + R transferTask(@RequestBody TaskParamDto taskParamDto); /** * 停止流程实例 diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/dto/TaskParamDto.java b/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/dto/TaskParamDto.java index 36689eeae..7b7448196 100644 --- a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/dto/TaskParamDto.java +++ b/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/dto/TaskParamDto.java @@ -7,53 +7,56 @@ import java.util.Map; /** * 任务完成参数对象 - * */ @Data public class TaskParamDto { - private String processInstanceId; + private String processInstanceId; - private List processInstanceIdList; + private List processInstanceIdList; - /** - * 节点id - */ - private String nodeId; + /** + * 节点id + */ + private String nodeId; - /** - * 添加子流程发起人 - */ - private Boolean appendChildProcessRootId; + /** + * 添加子流程发起人 + */ + private Boolean appendChildProcessRootId; - /** - * 任务id - */ - private String taskId; + /** + * 任务id + */ + private String taskId; - /** - * 用户id - */ - private String userId; + /** + * 用户id + */ + private String userId; - /** - * 模板用户id - */ - private String targetUserId; + /** + * 模板用户id + */ + private String targetUserId; - /** - * 参数 - */ - private Map paramMap; + /** + * 参数 + */ + private Map paramMap; - /** - * 任务本地变量 - */ - private Map taskLocalParamMap; + /** + * 任务本地变量 + */ + private Map taskLocalParamMap; - /** - * 模板节点 - */ - private String targetNodeId; + /** + * 模板节点 + */ + private String targetNodeId; + /** + * 转办目标用户 ID 列表 + */ + private List targetUserIdList; }