收敛工单撤单统计
This commit is contained in:
@@ -457,6 +457,24 @@ export async function countWorkerTimeoutEvents(workerId: number | string): Promi
|
|||||||
return counts.get(Number(workerId)) || 0
|
return counts.get(Number(workerId)) || 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function countWorkerCancellationsSince(
|
||||||
|
workerId: number | string,
|
||||||
|
sinceIso: string,
|
||||||
|
): Promise<number> {
|
||||||
|
const result = await query<{ total: number }>(
|
||||||
|
`
|
||||||
|
SELECT COUNT(*)::int AS total
|
||||||
|
FROM work_order_events
|
||||||
|
WHERE actor_type = 'worker'
|
||||||
|
AND actor_id = $1
|
||||||
|
AND event_type = 'cancelled_by_worker'
|
||||||
|
AND created_at >= $2
|
||||||
|
`,
|
||||||
|
[String(workerId), sinceIso],
|
||||||
|
)
|
||||||
|
return Number(result.rows[0]?.total || 0)
|
||||||
|
}
|
||||||
|
|
||||||
export async function getWorkOrderByIdWithClient(
|
export async function getWorkOrderByIdWithClient(
|
||||||
client: PoolClient,
|
client: PoolClient,
|
||||||
workOrderId: number | string,
|
workOrderId: number | string,
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import {
|
|||||||
import { createWorkOrderEventWithClient } from './work-order-event-repo.js'
|
import { createWorkOrderEventWithClient } from './work-order-event-repo.js'
|
||||||
import {
|
import {
|
||||||
countTimeoutEventsByWorkerIds,
|
countTimeoutEventsByWorkerIds,
|
||||||
|
countWorkerCancellationsSince,
|
||||||
countWorkerActiveOrders,
|
countWorkerActiveOrders,
|
||||||
countWorkerTimeoutEvents,
|
countWorkerTimeoutEvents,
|
||||||
getWorkOrderById,
|
getWorkOrderById,
|
||||||
@@ -714,24 +715,6 @@ export async function reopenCancelledWorkOrder(input: {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function countWorkerCancellationsSince(
|
|
||||||
workerId: number | string,
|
|
||||||
sinceIso: string,
|
|
||||||
): Promise<number> {
|
|
||||||
const result = await query<{ total: number }>(
|
|
||||||
`
|
|
||||||
SELECT COUNT(*)::int AS total
|
|
||||||
FROM work_order_events
|
|
||||||
WHERE actor_type = 'worker'
|
|
||||||
AND actor_id = $1
|
|
||||||
AND event_type = 'cancelled_by_worker'
|
|
||||||
AND created_at >= $2
|
|
||||||
`,
|
|
||||||
[String(workerId), sinceIso],
|
|
||||||
)
|
|
||||||
return Number(result.rows[0]?.total || 0)
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function acceptWorkOrderAndSettle(input: {
|
export async function acceptWorkOrderAndSettle(input: {
|
||||||
workOrderId: number
|
workOrderId: number
|
||||||
unfreezeDays: number
|
unfreezeDays: number
|
||||||
|
|||||||
Reference in New Issue
Block a user