增加后台会话撤销并统一拼单业务状态
This commit is contained in:
@@ -136,6 +136,7 @@ import {
|
||||
resolveWorkOrderRulePricing,
|
||||
resolveWorkOrderSharingEnabled,
|
||||
resolveWorkerPermissions,
|
||||
resolveWorkOrderOperationalStatus,
|
||||
} from './mappers.js'
|
||||
import {
|
||||
ensureWorkerPlatformDefaults,
|
||||
@@ -2059,7 +2060,8 @@ export async function acceptAdminWorkOrders(payload: JsonObject = {}, actorName
|
||||
)
|
||||
if (
|
||||
workOrders.some(
|
||||
(workOrder) => mapWorkOrderAdmin(workOrder).status !== WORK_ORDER_STATUS.PENDING_ACCEPTANCE,
|
||||
(workOrder) =>
|
||||
resolveWorkOrderOperationalStatus(workOrder) !== WORK_ORDER_STATUS.PENDING_ACCEPTANCE,
|
||||
)
|
||||
) {
|
||||
throw createHttpError('选中的订单包含非待验收状态,请刷新后重试', {
|
||||
|
||||
@@ -324,6 +324,23 @@ export function mapWorkOrderMaterial(value: unknown) {
|
||||
}
|
||||
}
|
||||
|
||||
/** 统一计算后台使用的工单业务状态,避免拼单订单继续直接暴露母工单 open。 */
|
||||
export function resolveWorkOrderOperationalStatus(workOrder: WorkOrderRow): string {
|
||||
const activeShareQuantity = Math.max(0, Number(workOrder.active_share_quantity || 0))
|
||||
const pendingShareCount = Math.max(0, Number(workOrder.pending_share_count || 0))
|
||||
const sharingTotalQuantity = Math.max(1, Number(workOrder.sharing_total_quantity || 1))
|
||||
const hasActiveShares = activeShareQuantity > 0
|
||||
const sharingFilled =
|
||||
workOrder.sharing_enabled === true && activeShareQuantity >= sharingTotalQuantity
|
||||
|
||||
if (workOrder.status === WORK_ORDER_STATUS.OPEN && workOrder.sharing_enabled && hasActiveShares) {
|
||||
return sharingFilled && pendingShareCount === 0
|
||||
? WORK_ORDER_STATUS.PENDING_ACCEPTANCE
|
||||
: WORK_ORDER_STATUS.IN_PROGRESS
|
||||
}
|
||||
return workOrder.status
|
||||
}
|
||||
|
||||
export function mapWorkOrderAdmin(workOrder: WorkOrderRow) {
|
||||
const activeShareQuantity = Math.max(0, Number(workOrder.active_share_quantity || 0))
|
||||
const pendingShareCount = Math.max(0, Number(workOrder.pending_share_count || 0))
|
||||
@@ -331,14 +348,7 @@ export function mapWorkOrderAdmin(workOrder: WorkOrderRow) {
|
||||
const hasActiveShares = activeShareQuantity > 0
|
||||
const sharingFilled =
|
||||
workOrder.sharing_enabled === true && activeShareQuantity >= sharingTotalQuantity
|
||||
const status =
|
||||
workOrder.status === WORK_ORDER_STATUS.OPEN &&
|
||||
workOrder.sharing_enabled === true &&
|
||||
hasActiveShares
|
||||
? sharingFilled && pendingShareCount === 0
|
||||
? WORK_ORDER_STATUS.PENDING_ACCEPTANCE
|
||||
: WORK_ORDER_STATUS.IN_PROGRESS
|
||||
: workOrder.status
|
||||
const status = resolveWorkOrderOperationalStatus(workOrder)
|
||||
const hallAvailable =
|
||||
workOrder.status === WORK_ORDER_STATUS.OPEN &&
|
||||
(!workOrder.sharing_enabled || activeShareQuantity < sharingTotalQuantity)
|
||||
|
||||
Reference in New Issue
Block a user