diff --git a/backend/src/main/java/com/designhub/service/TaskService.java b/backend/src/main/java/com/designhub/service/TaskService.java index c37166b..bbc87c1 100644 --- a/backend/src/main/java/com/designhub/service/TaskService.java +++ b/backend/src/main/java/com/designhub/service/TaskService.java @@ -1842,14 +1842,19 @@ public class TaskService { createPipelineTaskItemsForUpdate(existTask, dto); // 判断是否是一级需求任务的明细完善 - // 条件:1) 是指定的明细完善人 或 2) 是需求部门成员编辑待完善明细的一级需求任务 - boolean isPrimaryTaskDetailCompletion = (isPrimaryTaskDetailCompleter || isDemandDeptMemberForPrimaryTask) - && "pending_detail_completion".equals(approvalStatus); + // 🔥 修复: 一级需求任务在 pending_detail_completion 状态下被编辑提交时, + // 无论是谁编辑(明细完善人、需求部门成员、管理员),都应该进入 handlePrimaryTaskDetailCompletion + // 因为一级审核已经通过了,不需要再次进入一级审核流程 + boolean isPrimaryTask = existTask.getIsPrimaryTask() != null && existTask.getIsPrimaryTask() == 1; + boolean wasPendingDetailCompletion = "pending_detail_completion".equals(approvalStatus); + boolean isPrimaryTaskDetailCompletion = isPrimaryTask && wasPendingDetailCompletion; + + log.info("判断明细完善条件: taskId={}, isPrimaryTask={}, approvalStatus={}, isPrimaryTaskDetailCompletion={}", + id, isPrimaryTask, approvalStatus, isPrimaryTaskDetailCompletion); if (isPrimaryTaskDetailCompletion) { - // 一级需求任务明细完善后,进入接单部门审核流程 - log.info("一级需求任务明细完善: taskId={}, userId={}, isPrimaryTaskDetailCompleter={}, isDemandDeptMemberForPrimaryTask={}", - id, userId, isPrimaryTaskDetailCompleter, isDemandDeptMemberForPrimaryTask); + // 一级需求任务明细完善后,进入接单部门审核流程(跳过需求部门审核,因为一级审核已通过) + log.info("一级需求任务明细完善: taskId={}, userId={}", id, userId); handlePrimaryTaskDetailCompletion(existTask, userId); } else { // 普通任务:重新初始化审核状态并发送通知 @@ -3688,6 +3693,10 @@ public class TaskService { taskItemMapper.updateById(item); log.info("一级需求任务子任务 {} 状态已更新为 pending_approval", item.getItemNo()); } + + if (taskItems.isEmpty()) { + log.warn("警告: 任务 {} 没有找到可更新的子任务,请检查子任务创建逻辑", task.getId()); + } } else { // 如果无法确定接单部门负责人,直接发布到任务大厅 log.warn("无法确定接单部门负责人,任务将直接发布到任务大厅");