From 03239c27b1a1f8907aac52fc364f2645d86044af Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 8 Jan 2026 17:25:33 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=B5=81=E6=B0=B4?= =?UTF-8?q?=E7=BA=BF=E4=BB=BB=E5=8A=A1=E5=8D=A1=E7=89=87=E6=8E=A5=E5=8D=95?= =?UTF-8?q?=E4=BA=BA=E6=98=BE=E7=A4=BA=E4=B8=BA=E7=A9=BA=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=20-=20fillSubTaskStats=E6=96=B9=E6=B3=95=E7=8E=B0?= =?UTF-8?q?=E5=9C=A8=E6=AD=A3=E7=A1=AE=E5=A1=AB=E5=85=85=E5=AD=90=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E7=9A=84receiverName=20-=20getCompletedTasks=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E4=B9=9F=E4=BB=8E=E5=AD=90=E4=BB=BB=E5=8A=A1=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E6=8E=A5=E5=8D=95=E4=BA=BA=E4=BF=A1=E6=81=AF=20-=20?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E6=A0=BC=E5=BC=8F:=20=E5=8D=95=E4=BA=BA?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=A7=93=E5=90=8D=EF=BC=8C=E5=A4=9A=E4=BA=BA?= =?UTF-8?q?=E6=98=BE=E7=A4=BA'XX=E7=AD=89N=E4=BA=BA'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/designhub/service/TaskService.java | 64 +++++++++++++++++-- 1 file changed, 59 insertions(+), 5 deletions(-) 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) {