From 6ff115296fd82be7ad23e94cebedb9ec18452412 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 14 Jan 2026 14:25:05 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=B8=BA=E6=B2=A1=E6=9C=89deadline?= =?UTF-8?q?=E7=9A=84=E8=BF=9B=E8=A1=8C=E4=B8=AD=E5=AD=90=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=8A=A8=E6=80=81=E8=AE=A1=E7=AE=97deadline?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在enrichTaskItemsWithSubTasks方法中,为没有deadline的进行中子任务 使用updateTime + estimatedHours动态计算deadline,确保展开的 子任务详情列表中能显示完成截止时间 --- .../controller/TaskItemController.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/backend/src/main/java/com/designhub/controller/TaskItemController.java b/backend/src/main/java/com/designhub/controller/TaskItemController.java index fe54e1c..744be09 100644 --- a/backend/src/main/java/com/designhub/controller/TaskItemController.java +++ b/backend/src/main/java/com/designhub/controller/TaskItemController.java @@ -22,6 +22,9 @@ import java.util.HashSet; import com.designhub.mapper.TaskMapper; import com.designhub.mapper.TaskItemMapper; import com.designhub.entity.Task; +import com.designhub.util.WorkHoursCalculator; +import java.math.BigDecimal; +import java.time.LocalDateTime; /** * 任务子项控制器(流水线任务) @@ -39,6 +42,7 @@ public class TaskItemController { private final TaskMapper taskMapper; private final TaskItemMapper taskItemMapper; private final JwtUtil jwtUtil; + private final WorkHoursCalculator workHoursCalculator; /** * 获取可接单的子任务列表 @@ -192,6 +196,21 @@ public class TaskItemController { // 填充同一主任务的所有子任务列表 List subTasks = subTasksMap.get(taskId); if (subTasks != null && !subTasks.isEmpty()) { + // 为没有deadline的进行中子任务动态计算deadline + for (TaskItem subTask : subTasks) { + if (subTask.getDeadline() == null + && "in_progress".equals(subTask.getStatus()) + && subTask.getEstimatedHours() != null + && subTask.getEstimatedHours().compareTo(BigDecimal.ZERO) > 0 + && subTask.getUpdateTime() != null) { + // 使用updateTime作为接单时间(因为接单时会更新updateTime) + LocalDateTime deadline = workHoursCalculator.calculateDeadline( + subTask.getUpdateTime(), + subTask.getEstimatedHours() + ); + subTask.setDeadline(deadline); + } + } item.setSubTasks(subTasks); item.setSubTaskTotal(subTasks.size()); }