diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/api/DeployApiController.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/api/DeployApiController.java index da77f359..d3f35f2c 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/api/DeployApiController.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/api/DeployApiController.java @@ -73,8 +73,11 @@ public class DeployApiController { @Operation(summary = "获取我的部署审批任务", description = "查询当前登录用户待审批的部署任务,包含完整的部署业务上下文信息") @GetMapping("/my-approval-tasks") @PreAuthorize("isAuthenticated()") - public Response> getMyApprovalTasks() { - return Response.success(deployService.getMyApprovalTasks()); + public Response> getMyApprovalTasks( + @Parameter(description = "工作流定义Key列表(可选,支持查询多个工作流的待审批任务)") + @RequestParam(required = false) List workflowDefinitionKeys + ) { + return Response.success(deployService.getMyApprovalTasks(workflowDefinitionKeys)); } /** diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/IDeployService.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/IDeployService.java index ff2a653f..6b6993b7 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/IDeployService.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/IDeployService.java @@ -31,9 +31,10 @@ public interface IDeployService { * 获取当前用户的部署审批任务列表 *

查询当前登录用户待审批的部署任务,包含完整的部署业务上下文信息 * + * @param workflowDefinitionKeys 工作流定义Key列表(可选,支持查询多个工作流的待审批任务) * @return 部署审批任务列表 */ - List getMyApprovalTasks(); + List getMyApprovalTasks(List workflowDefinitionKeys); /** * 完成部署审批 diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/DeployServiceImpl.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/DeployServiceImpl.java index f585f526..b7b6f863 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/DeployServiceImpl.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/DeployServiceImpl.java @@ -31,6 +31,7 @@ import org.flowable.engine.RuntimeService; import org.flowable.engine.TaskService; import org.flowable.engine.runtime.ProcessInstance; import org.flowable.task.api.Task; +import org.flowable.task.api.TaskQuery; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -695,17 +696,31 @@ public class DeployServiceImpl implements IDeployService { } @Override - public List getMyApprovalTasks() { + public List getMyApprovalTasks(List workflowDefinitionKeys) { // 1. 获取当前登录用户 String currentUsername = SecurityUtils.getCurrentUsername(); - log.info("查询用户 {} 的部署审批任务", currentUsername); + log.info("查询用户 {} 的部署审批任务, workflowDefinitionKeys={}", currentUsername, workflowDefinitionKeys); - // 2. 查询用户的所有待办任务(包括候选人和分配人,支持或签模式) - List tasks = taskService.createTaskQuery() + // 2. 查询用户的部署工作流待办任务(支持多个工作流) + TaskQuery taskQuery = taskService.createTaskQuery() .taskCandidateOrAssigned(currentUsername) .orderByTaskCreateTime() - .desc() - .list(); + .desc(); + + // 如果指定了工作流定义Key列表,则精确筛选这些工作流的所有待审批任务 + if (workflowDefinitionKeys != null && !workflowDefinitionKeys.isEmpty()) { + // 过滤掉空字符串 + List validKeys = workflowDefinitionKeys.stream() + .filter(key -> key != null && !key.trim().isEmpty()) + .collect(Collectors.toList()); + + if (!validKeys.isEmpty()) { + taskQuery.processDefinitionKeyIn(validKeys); + log.debug("按工作流定义Key列表筛选: {}", validKeys); + } + } + + List tasks = taskQuery.list(); if (tasks.isEmpty()) { log.info("用户 {} 当前没有待办审批任务", currentUsername);