This commit is contained in:
2026-08-27 17:16:33 +08:00
parent 61a97cd057
commit 76c24867a4
19 changed files with 474 additions and 107 deletions
@@ -1,4 +1,5 @@
export const CONTAINER_CONVERT_ENDPOINT = '/api/platform/v1/last-leg/inbound-plans/convert'
export const CONTAINER_SUMMARY_ENDPOINT = '/api/platform/v1/last-leg/orders/container-summaries'
export const CONTAINER_CONVERT_ENDPOINT = '/api/platform/v1/last-leg/inbound-plans/convert-container'
export const CONTAINER_CONVERT_EXPECTED_ORDERS = 15
export function groupOrdersByCustomer(orders) {
@@ -13,7 +14,7 @@ export function groupOrdersByCustomer(orders) {
}
export function validContainerBatchResult(result, sourceOrders) {
const plans = Array.isArray(result?.plans) ? result.plans : []
const plans = Array.isArray(result) ? result : []
if (!Array.isArray(sourceOrders) || !sourceOrders.length || plans.length !== sourceOrders.length) return false
const sourceIds = new Set(sourceOrders.map((order) => String(order.orderId)))
const resultIds = plans.flatMap((plan) => Array.isArray(plan?.lines) ? plan.lines : [])
@@ -32,15 +33,14 @@ export function validContainerBatchResult(result, sourceOrders) {
})
}
export function validOrderFact(actual, expected) {
const exact = (field) => (actual?.[field] ?? null) === (expected?.[field] ?? null)
return ['packageCount', 'volumeCbm', 'productQuantity', 'volumeWeightKg',
'palletCount', 'estimatedArrivalAt', 'actualArrivalAt', 'estimatedWarehouseAt'].every(exact)
}
export function distinctPhysicalPalletCount(rows) {
if (!Array.isArray(rows)) return 0
return new Set(rows.map((row) => String(row?.physicalPalletId ?? '').trim()).filter(Boolean)).size
export function validContainerSummaryPage(data, expected) {
if (!Array.isArray(data?.records)) return false
const row = data.records.find((item) => String(item?.sourceContainerBookingId ?? '')
=== String(expected?.sourceContainerBookingId ?? ''))
return Number(data.page) >= 1 && Number(data.size) >= 1 && Number(data.total) >= 1
&& Number(data.pages) >= 1 && String(row?.containerNo ?? '') === String(expected?.containerNo ?? '')
&& Number(row?.orderCount) === Number(expected?.orderCount)
&& Number(row?.inboundCodeCount) === Number(expected?.inboundCodeCount)
}
export function zeroDrift(before, after) {
@@ -50,9 +50,3 @@ export function zeroDrift(before, after) {
export function stableReplay(first, replay) {
return zeroDrift(first, replay)
}
export function validPdaCandidate(candidate, expected) {
return String(candidate?.containerNo ?? '') === String(expected?.containerNo ?? '')
&& Number(candidate?.planCount) === Number(expected?.planCount)
&& Number(candidate?.inboundCodeCount) === Number(expected?.inboundCodeCount)
}