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()); }