diff --git a/backend/src/main/java/com/designhub/service/TaskApprovalService.java b/backend/src/main/java/com/designhub/service/TaskApprovalService.java index 9fe1e89..463644a 100644 --- a/backend/src/main/java/com/designhub/service/TaskApprovalService.java +++ b/backend/src/main/java/com/designhub/service/TaskApprovalService.java @@ -226,8 +226,19 @@ public class TaskApprovalService { // 普通任务:根据是否指定接收人设置状态 if (assignedReceiverId != null) { task.setStatus("in_progress"); // 指定接单直接进入进行中状态 - task.setStartTime(LocalDateTime.now()); - task.setActualStartTime(LocalDateTime.now()); + LocalDateTime now = LocalDateTime.now(); + task.setStartTime(now); + task.setActualStartTime(now); + + // 重新计算deadline:从指定接单时间开始计算 + if (task.getEstimatedHours() != null) { + int hours = task.getEstimatedHours().intValue(); + if (hours > 0) { + task.setDeadline(now.plusHours(hours)); + log.info("任务deadline已重新计算:从指定接单时间 {} 开始,预估 {} 小时,截止时间 {}", + now, hours, task.getDeadline()); + } + } } else { task.setStatus("pending"); // 未指定则发布到大厅 } diff --git a/backend/src/main/java/com/designhub/service/TaskService.java b/backend/src/main/java/com/designhub/service/TaskService.java index ea405bc..10bbcdc 100644 --- a/backend/src/main/java/com/designhub/service/TaskService.java +++ b/backend/src/main/java/com/designhub/service/TaskService.java @@ -767,11 +767,14 @@ public class TaskService { } LocalDateTime now = LocalDateTime.now(); - LocalDateTime deadline = task.getDeadline(); - if (deadline == null && task.getEstimatedHours() != null) { + // 重新计算deadline:从接单时间开始计算,无论之前是否有deadline + LocalDateTime deadline = null; + if (task.getEstimatedHours() != null) { int hours = task.getEstimatedHours().intValue(); if (hours > 0) { deadline = now.plusHours(hours); + log.info("任务deadline已重新计算:从接单时间 {} 开始,预估 {} 小时,截止时间 {}", + now, hours, deadline); } }