From cb2c468513de99a64006e1f74df76239e43ca786 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 14 Jan 2026 19:09:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=A1=BA=E5=BA=8F=E6=B5=81?= =?UTF-8?q?=E6=B0=B4=E7=BA=BF=E6=8C=87=E6=B4=BE=E6=A8=A1=E5=BC=8F=E4=B8=8B?= =?UTF-8?q?=E5=90=8C=E9=83=A8=E9=97=A8=E5=A4=9A=E8=AE=BE=E8=AE=A1=E5=B8=88?= =?UTF-8?q?=E5=AD=90=E4=BB=BB=E5=8A=A1=E7=8A=B6=E6=80=81=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改updateAssignedPipelineTaskItems方法 - 基于部门序号(从itemNo解析)而不是groupNo来判断第一个部门 - 第一个部门的所有子任务都更新为in_progress状态 - 保留每个子任务预先指定的接收人 --- .../com/designhub/service/TaskService.java | 54 ++++++++++++++++--- 1 file changed, 47 insertions(+), 7 deletions(-) diff --git a/backend/src/main/java/com/designhub/service/TaskService.java b/backend/src/main/java/com/designhub/service/TaskService.java index 02583d0..4686d79 100644 --- a/backend/src/main/java/com/designhub/service/TaskService.java +++ b/backend/src/main/java/com/designhub/service/TaskService.java @@ -3140,28 +3140,68 @@ public class TaskService { } log.info("并行流水线任务的所有子任务已更新为in_progress:count={}", taskItems.size()); } else { - // 顺序模式:只有第一组进入in_progress状态,并设置接收人 - Integer firstGroupNo = taskItems.get(0).getGroupNo(); + // 顺序模式:第一个部门的所有子任务进入in_progress状态 + // 从子任务编号解析部门序号,找出第一个部门的所有子任务 + int firstDeptIndex = -1; for (TaskItem item : taskItems) { - if (item.getGroupNo().equals(firstGroupNo)) { + int deptIndex = parseDeptIndexFromItemNo(item.getItemNo()); + if (firstDeptIndex == -1 || deptIndex < firstDeptIndex) { + firstDeptIndex = deptIndex; + } + } + + log.info("顺序流水线任务,第一个部门序号: {}", firstDeptIndex); + + for (TaskItem item : taskItems) { + int itemDeptIndex = parseDeptIndexFromItemNo(item.getItemNo()); + if (itemDeptIndex == firstDeptIndex) { item.setStatus("in_progress"); item.setIsLocked(0); - // 指派模式下:强制更新第一组子任务的接收人为主任务的接收人 - if (receiverId != null) { + // 指派模式下:如果子任务已有预先指定的接收人,保留;否则使用主任务的接收人 + if (item.getReceiverId() == null && receiverId != null) { item.setReceiverId(receiverId); if (receiverDeptId != null) { item.setReceiverDeptId(receiverDeptId); } - log.info("顺序流水线第一组子任务 {} 已设置/更新接收人: receiverId={}, deptId={}", + log.info("顺序流水线第一部门子任务 {} 设置接收人: receiverId={}, deptId={}", item.getId(), receiverId, receiverDeptId); + } else { + log.info("顺序流水线第一部门子任务 {} 保留预先指定的接收人: receiverId={}", + item.getId(), item.getReceiverId()); } taskItemMapper.updateById(item); - log.info("顺序流水线任务第一组子任务已更新为in_progress:itemId={}", item.getId()); + log.info("顺序流水线任务第一部门子任务已更新为in_progress:itemId={}, itemNo={}", + item.getId(), item.getItemNo()); } } } } + /** + * 从子任务编号解析部门序号 + * 编号格式:任务编号-部门序号-部门内序号,例如 TASK20260114-01-02 + */ + private int parseDeptIndexFromItemNo(String itemNo) { + if (itemNo == null || itemNo.isEmpty()) { + return 1; + } + + String[] parts = itemNo.split("-"); + if (parts.length >= 3) { + try { + // 新格式:TASK...-部门序号-部门内序号 + // 倒数第二段是部门序号 + return Integer.parseInt(parts[parts.length - 2]); + } catch (NumberFormatException e) { + log.warn("解析子任务编号部门序号失败: {}", itemNo); + } + } else if (parts.length == 2) { + // 旧格式:TASK...-序号,认为是第一个部门 + return 1; + } + return 1; + } + /** * 获取指定部门及其所有子部门的ID列表 */