diff --git a/backend/src/main/java/com/designhub/mapper/TaskMapper.java b/backend/src/main/java/com/designhub/mapper/TaskMapper.java index 0975ce3..7df2fc9 100644 --- a/backend/src/main/java/com/designhub/mapper/TaskMapper.java +++ b/backend/src/main/java/com/designhub/mapper/TaskMapper.java @@ -185,6 +185,7 @@ public interface TaskMapper extends BaseMapper { /** * 查询我发布的任务 + * 包括:作为发布人的任务 或 作为一级需求任务明细完善人的任务 */ @Select("") IPage selectMyPublishedTasks(Page page, @Param("userId") Long userId, diff --git a/backend/src/main/java/com/designhub/service/TaskService.java b/backend/src/main/java/com/designhub/service/TaskService.java index 52b17cc..c3ce4c8 100644 --- a/backend/src/main/java/com/designhub/service/TaskService.java +++ b/backend/src/main/java/com/designhub/service/TaskService.java @@ -3616,6 +3616,37 @@ public class TaskService { task.setCurrentApproverId(receivingLeaderId); task.setCurrentApproverRole("receiving_leader"); log.info("一级需求任务明细完善后,等待接单部门负责人审核:leaderId={}", receivingLeaderId); + + // 🔥 更新子任务状态为 pending_approval,以便接单部门负责人审核 + // 顺序模式:只更新第一个部门的子任务 + // 并行模式:更新所有子任务 + List taskItems; + if ("sequential".equals(task.getPipelineMode())) { + // 顺序模式:只更新第一个部门的子任务(item_no 中部门序号为 01) + taskItems = taskItemMapper.selectList( + new LambdaQueryWrapper() + .eq(TaskItem::getTaskId, task.getId()) + .eq(TaskItem::getStatus, "pending") + .eq(TaskItem::getIsLocked, 0) + ); + log.info("一级需求任务 {} 顺序模式,共 {} 个子任务待更新状态", task.getId(), taskItems.size()); + } else { + // 并行模式:更新所有子任务 + taskItems = taskItemMapper.selectList( + new LambdaQueryWrapper() + .eq(TaskItem::getTaskId, task.getId()) + .eq(TaskItem::getStatus, "pending") + .eq(TaskItem::getIsLocked, 0) + ); + log.info("一级需求任务 {} 并行模式,共 {} 个子任务待更新状态", task.getId(), taskItems.size()); + } + + for (TaskItem item : taskItems) { + item.setStatus("pending_approval"); + item.setUpdateTime(LocalDateTime.now()); + taskItemMapper.updateById(item); + log.info("一级需求任务子任务 {} 状态已更新为 pending_approval", item.getItemNo()); + } } else { // 如果无法确定接单部门负责人,直接发布到任务大厅 log.warn("无法确定接单部门负责人,任务将直接发布到任务大厅");