收敛工单超时查询

This commit is contained in:
yml2213
2026-08-21 18:15:07 +08:00
parent d5daf7f5dd
commit 46a001c176
2 changed files with 27 additions and 24 deletions
@@ -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<WorkOrderRow[]> {
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<WorkOrderRow>(
`${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<number> {
const result = await query<{ total: number }>(
`
@@ -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<WorkOrderRow[]> {
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<WorkOrderRow>(
`${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'