From 47c53a18fa5874fe9fd368ecf720fda48c05469f Mon Sep 17 00:00:00 2001 From: kuaifan Date: Tue, 13 Jan 2026 10:50:42 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=B7=A8=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E7=A7=BB=E5=8A=A8=E4=BB=BB=E5=8A=A1=E6=97=B6=E5=AD=90?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=B7=A5=E4=BD=9C=E6=B5=81=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=9C=AA=E6=9B=B4=E6=96=B0=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 跨项目移动任务时,子任务的 flow_item_id 和 flow_item_name 没有被正确更新, 导致子任务在新项目中显示的工作流状态与新项目的工作流不匹配。 --- app/Models/ProjectTask.php | 50 ++++++++++++++++++++++++++++++++++---- 1 file changed, 45 insertions(+), 5 deletions(-) diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php index faa6e8c1a..446c37bc8 100644 --- a/app/Models/ProjectTask.php +++ b/app/Models/ProjectTask.php @@ -1960,11 +1960,51 @@ class ProjectTask extends AbstractModel $taskUser->save(); } } - // 子任务 - ProjectTask::whereParentId($this->id)->change([ - 'project_id' => $projectId, - 'column_id' => $columnId, - ]); + // 子任务 - 根据完成状态映射工作流 + $subTasks = ProjectTask::whereParentId($this->id)->get(); + if ($subTasks->isNotEmpty()) { + // 获取新项目的工作流状态 + $newProjectFlow = ProjectFlow::whereProjectId($projectId)->orderByDesc('id')->first(); + $startFlowItem = null; + $endFlowItem = null; + if ($newProjectFlow) { + $flowItems = ProjectFlowItem::whereFlowId($newProjectFlow->id)->orderBy('sort')->get(); + foreach ($flowItems as $item) { + if ($item->status == 'start' && !$startFlowItem) { + $startFlowItem = $item; + } + if ($item->status == 'end' && !$endFlowItem) { + $endFlowItem = $item; + } + } + } + // 更新每个子任务 + foreach ($subTasks as $subTask) { + $subTask->project_id = $projectId; + $subTask->column_id = $columnId; + // 根据完成状态映射工作流 + if ($subTask->complete_at) { + // 已完成 -> end 状态 + if ($endFlowItem) { + $subTask->flow_item_id = $endFlowItem->id; + $subTask->flow_item_name = $endFlowItem->status . '|' . $endFlowItem->name . '|' . $endFlowItem->color; + } else { + $subTask->flow_item_id = 0; + $subTask->flow_item_name = ''; + } + } else { + // 未完成 -> start 状态 + if ($startFlowItem) { + $subTask->flow_item_id = $startFlowItem->id; + $subTask->flow_item_name = $startFlowItem->status . '|' . $startFlowItem->name . '|' . $startFlowItem->color; + } else { + $subTask->flow_item_id = 0; + $subTask->flow_item_name = ''; + } + } + $subTask->save(); + } + } // if ($flowItemId) { // 更新任务流程