From 106992e7c554e2475b4e7a11a27b8959d198d233 Mon Sep 17 00:00:00 2001 From: yml2213 Date: Thu, 20 Aug 2026 15:03:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=92=A4=E5=8D=95=20?= =?UTF-8?q?=E9=80=A0=E6=88=90=E6=89=93=E6=89=8B=E5=B7=B2=E8=B6=85=E6=97=B6?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../worker-platform/work-order-repo.ts | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/apps/backend/src/repositories/worker-platform/work-order-repo.ts b/apps/backend/src/repositories/worker-platform/work-order-repo.ts index 4bdfafaa..3913fc30 100644 --- a/apps/backend/src/repositories/worker-platform/work-order-repo.ts +++ b/apps/backend/src/repositories/worker-platform/work-order-repo.ts @@ -1219,7 +1219,18 @@ export async function getWorkerOrderOverview(workerId: number | string): Promise AND wos.worker_id = $1 AND wos.status != 'cancelled' WHERE wo.assigned_worker_id = $1 - OR wo.last_assigned_worker_id = $1 + OR ( + wo.last_assigned_worker_id = $1 + AND ( + wo.status <> 'open' + OR EXISTS ( + SELECT 1 + FROM work_order_events timeout_event + WHERE timeout_event.work_order_id = wo.id + AND timeout_event.event_type = 'timeout_reopen' + ) + ) + ) OR wos.id IS NOT NULL ) SELECT @@ -3410,7 +3421,18 @@ function buildWorkOrderWhere({ params.push(workerSharingId) filters.push( `(wo.assigned_worker_id = $${params.length} - OR wo.last_assigned_worker_id = $${params.length} + OR ( + wo.last_assigned_worker_id = $${params.length} + AND ( + wo.status <> 'open' + OR EXISTS ( + SELECT 1 + FROM work_order_events timeout_event + WHERE timeout_event.work_order_id = wo.id + AND timeout_event.event_type = 'timeout_reopen' + ) + ) + ) OR wo.id IN ( SELECT work_order_id FROM work_order_shares WHERE worker_id = $${params.length} AND status != 'cancelled'