fix: 为没有deadline的进行中子任务动态计算deadline

在enrichTaskItemsWithSubTasks方法中,为没有deadline的进行中子任务
使用updateTime + estimatedHours动态计算deadline,确保展开的
子任务详情列表中能显示完成截止时间
This commit is contained in:
Your Name 2026-01-14 14:25:05 +08:00
parent f342961887
commit 6ff115296f

View File

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