From 781d3f66f532a02728bcaa50bffb6a28a6d055bf Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 22 Jan 2026 18:29:02 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=B7=BB=E5=8A=A0=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=84=9A=E6=9C=AC=EF=BC=8C=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=B7=B2=E6=B5=81=E8=BD=AC=E5=88=B0=E6=8E=A5=E5=8D=95=E9=83=A8?= =?UTF-8?q?=E9=97=A8=E5=AE=A1=E6=A0=B8=E7=9A=84=E4=B8=80=E7=BA=A7=E9=9C=80?= =?UTF-8?q?=E6=B1=82=E9=83=A8=E9=97=A8=E4=BB=BB=E5=8A=A1=E5=AD=90=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- database/fix_primary_task_subtask_status.sql | 46 ++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 database/fix_primary_task_subtask_status.sql diff --git a/database/fix_primary_task_subtask_status.sql b/database/fix_primary_task_subtask_status.sql new file mode 100644 index 0000000..2649771 --- /dev/null +++ b/database/fix_primary_task_subtask_status.sql @@ -0,0 +1,46 @@ +-- 修复脚本:将已经处于pending_receiving_approval状态的一级需求部门任务的第一个部门子任务状态更新为pending_approval +-- 执行时间:2026-01-22 +-- 说明:修复一级需求部门任务在接单部门审核时子任务状态不正确的问题 + +-- 1. 查找需要修复的任务 +-- 查询条件:approval_status='pending_receiving_approval' AND is_primary_task=1 AND is_pipeline=1 +SELECT + t.id AS task_id, + t.task_no, + t.title, + COUNT(ti.id) AS pending_subtask_count +FROM task t +LEFT JOIN task_item ti ON t.id = ti.task_id AND ti.status = 'pending' AND ti.is_locked = 0 +WHERE t.approval_status = 'pending_receiving_approval' + AND t.is_primary_task = 1 + AND t.is_pipeline = 1 + AND t.deleted = 0 +GROUP BY t.id, t.task_no, t.title; + +-- 2. 更新第一个部门的子任务状态为pending_approval +-- 更新条件:status='pending' AND is_locked=0(这些是第一个部门的子任务) +UPDATE task_item ti +INNER JOIN task t ON ti.task_id = t.id +SET ti.status = 'pending_approval', + ti.update_time = NOW() +WHERE t.approval_status = 'pending_receiving_approval' + AND t.is_primary_task = 1 + AND t.is_pipeline = 1 + AND t.deleted = 0 + AND ti.status = 'pending' + AND ti.is_locked = 0; + +-- 3. 验证修复结果 +SELECT + t.id AS task_id, + t.task_no, + t.title, + COUNT(CASE WHEN ti.status = 'pending_approval' THEN 1 END) AS pending_approval_count, + COUNT(CASE WHEN ti.status = 'pending' THEN 1 END) AS pending_count +FROM task t +LEFT JOIN task_item ti ON t.id = ti.task_id +WHERE t.approval_status = 'pending_receiving_approval' + AND t.is_primary_task = 1 + AND t.is_pipeline = 1 + AND t.deleted = 0 +GROUP BY t.id, t.task_no, t.title;