From 46a001c1760f60ddda4736b4799c93b27ee7c2b3 Mon Sep 17 00:00:00 2001 From: yml2213 Date: Fri, 21 Aug 2026 18:15:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B6=E6=95=9B=E5=B7=A5=E5=8D=95=E8=B6=85?= =?UTF-8?q?=E6=97=B6=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../worker-platform/work-order-query-repo.ts | 26 +++++++++++++++++++ .../worker-platform/work-order-repo.ts | 25 +----------------- 2 files changed, 27 insertions(+), 24 deletions(-) diff --git a/apps/backend/src/repositories/worker-platform/work-order-query-repo.ts b/apps/backend/src/repositories/worker-platform/work-order-query-repo.ts index 3c7cd8c6..099a107a 100644 --- a/apps/backend/src/repositories/worker-platform/work-order-query-repo.ts +++ b/apps/backend/src/repositories/worker-platform/work-order-query-repo.ts @@ -377,6 +377,32 @@ export async function getWorkerOrderOverview(workerId: number | string): Promise vipEvidencePendingSettlementAmount: Number(row.vip_evidence_pending_settlement_amount || 0), })) } + +/** 查询已超过接单时限、仍待处置的工单。 */ +export async function listOverdueWorkOrders({ + limit = 50, + workerId = 0, +}: { limit?: number; workerId?: number } = {}): Promise { + const params: unknown[] = [] + let workerClause = '' + if (workerId > 0) { + params.push(workerId) + workerClause = `AND wo.assigned_worker_id = $${params.length}` + } + params.push(limit) + const result = await query( + `${WORK_ORDER_SELECT} + WHERE wo.status = 'in_progress' + AND wo.deadline_at IS NOT NULL + AND wo.deadline_at < NOW() + ${workerClause} + ORDER BY wo.deadline_at ASC + LIMIT $${params.length}`, + params, + ) + return result.rows +} + export async function countWorkerActiveOrders(workerId: number | string): Promise { const result = await query<{ total: number }>( ` 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 a7dff7f6..2f257818 100644 --- a/apps/backend/src/repositories/worker-platform/work-order-repo.ts +++ b/apps/backend/src/repositories/worker-platform/work-order-repo.ts @@ -18,6 +18,7 @@ import { getWorkOrderByOrderItemId, getWorkerOrderOverview, isWorkOrderWithinHallCapacityWithClient, + listOverdueWorkOrders, WORK_ORDER_SELECT, } from './work-order-query-repo.js' import type { @@ -1724,30 +1725,6 @@ export async function resolveProblemWorkOrder(input: { }) } -export async function listOverdueWorkOrders({ - limit = 50, - workerId = 0, -}: { limit?: number; workerId?: number } = {}): Promise { - const params: unknown[] = [] - let workerClause = '' - if (workerId > 0) { - params.push(workerId) - workerClause = `AND wo.assigned_worker_id = $${params.length}` - } - params.push(limit) - const result = await query( - `${WORK_ORDER_SELECT} - WHERE wo.status = 'in_progress' - AND wo.deadline_at IS NOT NULL - AND wo.deadline_at < NOW() - ${workerClause} - ORDER BY wo.deadline_at ASC - LIMIT $${params.length}`, - params, - ) - return result.rows -} - export async function settleOverdueWorkOrder(input: { workOrderId: number policy: 'reopen' | 'cancel_release' | 'cancel_deduct'