diff --git a/backend/src/main/java/com/designhub/service/TaskItemService.java b/backend/src/main/java/com/designhub/service/TaskItemService.java index 4638e3e..56e0b73 100644 --- a/backend/src/main/java/com/designhub/service/TaskItemService.java +++ b/backend/src/main/java/com/designhub/service/TaskItemService.java @@ -1499,15 +1499,35 @@ public class TaskItemService { } } - // 🔥 更新主任务状态为已审核通过 + // 🔥 更新主任务状态(避免出现“子任务进行中但主任务仍为pending”的状态错乱) mainTask.setApprovalStatus("approved"); - mainTask.setStatus("pending"); + if (assignedReceiverId != null) { + // 子任务已指定处理人并进入进行中:主任务同步为进行中 + mainTask.setStatus("in_progress"); + mainTask.setReceiverId(assignedReceiverId); + com.designhub.entity.User receiver = userService.getUserById(assignedReceiverId); + if (receiver != null) { + mainTask.setReceiverDeptId(receiver.getDeptId()); + } + LocalDateTime now = LocalDateTime.now(); + if (mainTask.getStartTime() == null) { + mainTask.setStartTime(now); + } + if (mainTask.getActualStartTime() == null) { + mainTask.setActualStartTime(now); + } + } else { + // 未指定处理人,继续发布在任务大厅待接单 + mainTask.setStatus("pending"); + mainTask.setReceiverId(null); + mainTask.setReceiverDeptId(null); + } mainTask.setReceivingApprovalTime(LocalDateTime.now()); mainTask.setCurrentApproverId(null); mainTask.setCurrentApproverRole(null); mainTask.setUpdateTime(LocalDateTime.now()); taskMapper.updateById(mainTask); - log.info("主任务 {} 接单部门审核通过,状态更新为 approved/pending", taskId); + log.info("主任务 {} 接单部门审核通过,状态更新为 {}/{}", taskId, mainTask.getApprovalStatus(), mainTask.getStatus()); } /**