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'