修正海外PDA候选验收门禁判断

This commit is contained in:
2026-09-02 15:25:30 +08:00
parent 70d66c2fae
commit 9e0d2f6cdb
2 changed files with 13 additions and 9 deletions
@@ -96,6 +96,8 @@ test('PDA module covers the container-number receiving contract and excludes out
assert.match(source, /item\?\.shippingReady === false/) assert.match(source, /item\?\.shippingReady === false/)
assert.match(source, /!expectedSet\.has\(id\(item\?\.containerNo\)\)/) assert.match(source, /!expectedSet\.has\(id\(item\?\.containerNo\)\)/)
assert.match(source, /unexpectedAwaiting=/) assert.match(source, /unexpectedAwaiting=/)
assert.match(source, /candidatesByContainer\.get\(containerNo\)\?\.operable === true/)
assert.match(source, /candidatesByContainer\.get\(containerNo\)\?\.operable !== true/)
assert.match(source, /missingPickupReady\.length === 0 && unexpectedAwaiting\.length === 0/) assert.match(source, /missingPickupReady\.length === 0 && unexpectedAwaiting\.length === 0/)
assert.doesNotMatch(source, /shippingReady == null|shippingReady !== true/) assert.doesNotMatch(source, /shippingReady == null|shippingReady !== true/)
assert.match(source, /unexpectedHistorical=/) assert.match(source, /unexpectedHistorical=/)
@@ -321,22 +321,24 @@ async function awaitPickupReadyCandidates(context, token, producers, allProducer
const known = new Set(allProducers.map((item) => id(item?.containerNo)).filter(nonBlank)) const known = new Set(allProducers.map((item) => id(item?.containerNo)).filter(nonBlank))
if (!expected.length) return false if (!expected.length) return false
let response = null let response = null
let seen = new Set() let candidatesByContainer = new Map()
for (let attempt = 1; attempt <= 30; attempt += 1) { for (let attempt = 1; attempt <= 30; attempt += 1) {
response = await context.requestOverseas('GET', response = await context.requestOverseas('GET',
'/api/pda/v1/last-leg/receiving-containers/candidates', undefined, {}, token) '/api/pda/v1/last-leg/receiving-containers/candidates', undefined, {}, token)
const candidateRows = success(response) && Array.isArray(response.body?.data) ? response.body.data : [] const candidateRows = success(response) && Array.isArray(response.body?.data) ? response.body.data : []
seen = new Set(candidateRows.map((item) => id(item?.containerNo)).filter(nonBlank)) candidatesByContainer = new Map(candidateRows
if (expected.every((containerNo) => seen.has(containerNo)) .map((item) => [id(item?.containerNo), item]).filter(([containerNo]) => nonBlank(containerNo)))
&& awaiting.every((containerNo) => !seen.has(containerNo))) break if (expected.every((containerNo) => candidatesByContainer.get(containerNo)?.operable === true)
&& awaiting.every((containerNo) => candidatesByContainer.get(containerNo)?.operable !== true)) break
await new Promise((resolve) => setTimeout(resolve, 1000)) await new Promise((resolve) => setTimeout(resolve, 1000))
} }
const seenExpected = expected.filter((containerNo) => seen.has(containerNo)) const seenExpected = expected.filter((containerNo) => candidatesByContainer.has(containerNo))
const missingPickupReady = expected.filter((containerNo) => !seen.has(containerNo)) const missingPickupReady = expected.filter((containerNo) => candidatesByContainer.get(containerNo)?.operable !== true)
const unexpectedAwaiting = awaiting.filter((containerNo) => seen.has(containerNo)) const unexpectedAwaiting = awaiting.filter((containerNo) => candidatesByContainer.get(containerNo)?.operable === true)
const unexpectedHistorical = [...seen].filter((containerNo) => !known.has(containerNo)) const unexpectedHistorical = [...candidatesByContainer.keys()].filter((containerNo) => !known.has(containerNo))
const targetCorrelated = producers.every((item) => item?.shippingReady === true const targetCorrelated = producers.every((item) => item?.shippingReady === true
&& nonBlank(item?.carrierScheduleQueryId) && seen.has(id(item?.containerNo))) && nonBlank(item?.carrierScheduleQueryId)
&& candidatesByContainer.get(id(item?.containerNo))?.operable === true)
const ready = missingPickupReady.length === 0 && unexpectedAwaiting.length === 0 && targetCorrelated const ready = missingPickupReady.length === 0 && unexpectedAwaiting.length === 0 && targetCorrelated
context.addStep(MODULE, '实际处理柜全部达到PICKUP_READY并进入PDA候选', response, ready, context.addStep(MODULE, '实际处理柜全部达到PICKUP_READY并进入PDA候选', response, ready,
`targetCorrelated=${targetCorrelated}, expected=${expected.join('|')}, awaiting=${awaiting.join('|') || 'none'}, seenExpected=${seenExpected.join('|') || 'none'}, missingPickupReady=${missingPickupReady.join('|') || 'none'}, unexpectedAwaiting=${unexpectedAwaiting.join('|') || 'none'}, unexpectedHistorical=${unexpectedHistorical.join('|') || 'none'}; ${trace(response)}`, OPTIONS) `targetCorrelated=${targetCorrelated}, expected=${expected.join('|')}, awaiting=${awaiting.join('|') || 'none'}, seenExpected=${seenExpected.join('|') || 'none'}, missingPickupReady=${missingPickupReady.join('|') || 'none'}, unexpectedAwaiting=${unexpectedAwaiting.join('|') || 'none'}, unexpectedHistorical=${unexpectedHistorical.join('|') || 'none'}; ${trace(response)}`, OPTIONS)