支持批量验收接单订单

This commit is contained in:
yml2213
2026-08-15 15:07:31 +08:00
parent 87d8360e64
commit 4eb9aa2cd8
4 changed files with 112 additions and 0 deletions
@@ -1163,6 +1163,46 @@ export async function acceptAdminWorkOrder(workOrderId: number | string) {
return { order: mapWorkOrderAdmin(updated || workOrder) }
}
export async function acceptAdminWorkOrders(payload: JsonObject = {}) {
const workOrderIds = [
...new Set(
(Array.isArray(payload.workOrderIds) ? payload.workOrderIds : [])
.map((item) => normalizeOptionalId(item))
.filter((item): item is number => item !== null),
),
]
if (workOrderIds.length === 0) {
throw createHttpError('请至少选择一个待验收订单', {
statusCode: 400,
errorCode: 'work_order_batch_accept_required',
})
}
const workOrders = await Promise.all(workOrderIds.map((workOrderId) => getRequiredWorkOrder(workOrderId)))
if (workOrders.some((workOrder) => workOrder.status !== WORK_ORDER_STATUS.PENDING_ACCEPTANCE)) {
throw createHttpError('选中的订单包含非待验收状态,请刷新后重试', {
statusCode: 409,
errorCode: 'work_order_batch_accept_status_invalid',
})
}
const pendingSharingCounts = await Promise.all(
workOrders.map((workOrder) => countWorkOrderPendingSharingSubmissions(workOrder.id)),
)
if (pendingSharingCounts.some((count) => count > 0)) {
throw createHttpError('选中的订单存在拼单打手未提交验收资料,暂不能统一验收', {
statusCode: 409,
errorCode: 'work_order_batch_accept_sharing_pending_submissions',
})
}
const results = []
for (const workOrder of workOrders) {
results.push(await acceptAdminWorkOrder(workOrder.id))
}
return { orders: results.map((result) => result.order) }
}
export async function unassignAdminWorkOrder(workOrderId: number | string) {
const workOrder = await getRequiredWorkOrder(workOrderId)
if (