diff --git a/backend/src/main/java/com/designhub/service/TaskService.java b/backend/src/main/java/com/designhub/service/TaskService.java index 647e2c0..b83780c 100644 --- a/backend/src/main/java/com/designhub/service/TaskService.java +++ b/backend/src/main/java/com/designhub/service/TaskService.java @@ -806,6 +806,40 @@ public class TaskService { task.setCurrentApproverName(approver.getRealName() != null ? approver.getRealName() : approver.getUsername()); } } + + // 对于流水线任务,如果主任务没有接单人,从子任务中获取 + if ((task.getReceiverName() == null || task.getReceiverName().isEmpty()) + && task.getIsPipeline() != null && task.getIsPipeline() == 1) { + try { + List subTasks = taskItemMapper.selectList( + new LambdaQueryWrapper() + .eq(TaskItem::getTaskId, task.getId()) + .isNotNull(TaskItem::getReceiverId) + .orderByAsc(TaskItem::getGroupNo) + ); + if (!subTasks.isEmpty()) { + // 获取所有不同的接单人 + java.util.Set receiverNames = new java.util.LinkedHashSet<>(); + for (TaskItem item : subTasks) { + if (item.getReceiverId() != null) { + User receiver = userService.getUserById(item.getReceiverId()); + if (receiver != null && receiver.getRealName() != null) { + receiverNames.add(receiver.getRealName()); + } + } + } + if (!receiverNames.isEmpty()) { + if (receiverNames.size() == 1) { + task.setReceiverName(receiverNames.iterator().next()); + } else { + task.setReceiverName(receiverNames.iterator().next() + "等" + receiverNames.size() + "人"); + } + } + } + } catch (Exception e) { + log.warn("获取流水线任务子任务接单人失败: taskId={}", task.getId()); + } + } } return result; } @@ -937,15 +971,35 @@ public class TaskService { task.setSubTaskInProgress((int) inProgressCount); task.setSubTaskPending((int) pendingCount); + // 填充子任务的接单人名称 + for (TaskItem item : subTasks) { + if (item.getReceiverId() != null && (item.getReceiverName() == null || item.getReceiverName().isEmpty())) { + User receiver = userService.getUserById(item.getReceiverId()); + if (receiver != null) { + item.setReceiverName(receiver.getRealName()); + } + } + } + // 设置子任务列表(包含处理人信息) task.setSubTasks(subTasks); - // 如果主任务没有receiverName,从子任务中获取第一个有接单人的 + // 如果主任务没有receiverName,从子任务中获取接单人 if (task.getReceiverName() == null || task.getReceiverName().isEmpty()) { - subTasks.stream() - .filter(item -> item.getReceiverName() != null && !item.getReceiverName().isEmpty()) - .findFirst() - .ifPresent(item -> task.setReceiverName(item.getReceiverName() + "等")); + // 收集所有不同的接单人名称 + java.util.Set receiverNames = new java.util.LinkedHashSet<>(); + for (TaskItem item : subTasks) { + if (item.getReceiverName() != null && !item.getReceiverName().isEmpty()) { + receiverNames.add(item.getReceiverName()); + } + } + if (!receiverNames.isEmpty()) { + if (receiverNames.size() == 1) { + task.setReceiverName(receiverNames.iterator().next()); + } else { + task.setReceiverName(receiverNames.iterator().next() + "等" + receiverNames.size() + "人"); + } + } } } } catch (Exception e) {