From 369456a6c696b328c90d0ac4e7f591363532ae47 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 15 Jan 2026 18:44:32 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=8C=87=E6=B4=BE?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=92=8C=E5=AD=90=E4=BB=BB=E5=8A=A1=E7=BB=84?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E6=97=B6=E6=9C=AA=E8=AE=BE=E7=BD=AEdeadline?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/designhub/service/TaskItemService.java | 10 +++++++++- .../java/com/designhub/service/TaskService.java | 14 ++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/backend/src/main/java/com/designhub/service/TaskItemService.java b/backend/src/main/java/com/designhub/service/TaskItemService.java index f5868bc..9b539f5 100644 --- a/backend/src/main/java/com/designhub/service/TaskItemService.java +++ b/backend/src/main/java/com/designhub/service/TaskItemService.java @@ -824,12 +824,20 @@ public class TaskItemService { throw new BusinessException(ResultCode.PARAM_ERROR, "指定的接收人不存在"); } + LocalDateTime now = LocalDateTime.now(); + // 批量分配给指定设计师 for (TaskItem item : groupItems) { item.setStatus("in_progress"); item.setReceiverId(assignedReceiverId); item.setReceiverDeptId(receiver.getDeptId()); // 设置接单部门ID - item.setUpdateTime(LocalDateTime.now()); + item.setUpdateTime(now); + // 计算并设置deadline(使用工作时间计算) + if (item.getEstimatedHours() != null && item.getEstimatedHours().compareTo(java.math.BigDecimal.ZERO) > 0) { + LocalDateTime deadline = workHoursCalculator.calculateDeadline(now, item.getEstimatedHours()); + item.setDeadline(deadline); + log.info("子任务组审核通过,子任务 {} 设置deadline: {}", item.getId(), deadline); + } taskItemMapper.updateById(item); } diff --git a/backend/src/main/java/com/designhub/service/TaskService.java b/backend/src/main/java/com/designhub/service/TaskService.java index 222529d..c0adc03 100644 --- a/backend/src/main/java/com/designhub/service/TaskService.java +++ b/backend/src/main/java/com/designhub/service/TaskService.java @@ -3231,6 +3231,8 @@ public class TaskService { return; } + LocalDateTime now = LocalDateTime.now(); + if ("parallel".equals(pipelineMode)) { // 并行模式:所有子任务都进入in_progress状态,并设置接收人 for (TaskItem item : taskItems) { @@ -3245,6 +3247,12 @@ public class TaskService { log.info("并行流水线子任务 {} 已设置/更新接收人: receiverId={}, deptId={}", item.getId(), receiverId, receiverDeptId); } + // 计算并设置deadline(使用工作时间计算) + if (item.getEstimatedHours() != null && item.getEstimatedHours().compareTo(BigDecimal.ZERO) > 0) { + LocalDateTime deadline = workHoursCalculator.calculateDeadline(now, item.getEstimatedHours()); + item.setDeadline(deadline); + log.info("并行流水线子任务 {} 设置deadline: {}", item.getId(), deadline); + } taskItemMapper.updateById(item); } log.info("并行流水线任务的所有子任务已更新为in_progress:count={}", taskItems.size()); @@ -3278,6 +3286,12 @@ public class TaskService { log.info("顺序流水线第一部门子任务 {} 保留预先指定的接收人: receiverId={}", item.getId(), item.getReceiverId()); } + // 计算并设置deadline(使用工作时间计算) + if (item.getEstimatedHours() != null && item.getEstimatedHours().compareTo(BigDecimal.ZERO) > 0) { + LocalDateTime deadline = workHoursCalculator.calculateDeadline(now, item.getEstimatedHours()); + item.setDeadline(deadline); + log.info("顺序流水线第一部门子任务 {} 设置deadline: {}", item.getId(), deadline); + } taskItemMapper.updateById(item); log.info("顺序流水线任务第一部门子任务已更新为in_progress:itemId={}, itemNo={}", item.getId(), item.getItemNo());