From 9e0d2f6cdb78100ee4bb591db1795fd1db7372d4 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Wed, 2 Sep 2026 15:25:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=B5=B7=E5=A4=96PDA?= =?UTF-8?q?=E5=80=99=E9=80=89=E9=AA=8C=E6=94=B6=E9=97=A8=E7=A6=81=E5=88=A4?= =?UTF-8?q?=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../phase4-overseas-pda-contract.test.mjs | 2 ++ .../phase4-overseas-pda.mjs | 20 ++++++++++--------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/scripts/admin-test-env-modules/phase4-overseas-pda-contract.test.mjs b/scripts/admin-test-env-modules/phase4-overseas-pda-contract.test.mjs index 4cd77d951..0cc97a3df 100644 --- a/scripts/admin-test-env-modules/phase4-overseas-pda-contract.test.mjs +++ b/scripts/admin-test-env-modules/phase4-overseas-pda-contract.test.mjs @@ -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, /!expectedSet\.has\(id\(item\?\.containerNo\)\)/) 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.doesNotMatch(source, /shippingReady == null|shippingReady !== true/) assert.match(source, /unexpectedHistorical=/) diff --git a/scripts/admin-test-env-modules/phase4-overseas-pda.mjs b/scripts/admin-test-env-modules/phase4-overseas-pda.mjs index 753ed739e..b01062fb3 100644 --- a/scripts/admin-test-env-modules/phase4-overseas-pda.mjs +++ b/scripts/admin-test-env-modules/phase4-overseas-pda.mjs @@ -321,22 +321,24 @@ async function awaitPickupReadyCandidates(context, token, producers, allProducer const known = new Set(allProducers.map((item) => id(item?.containerNo)).filter(nonBlank)) if (!expected.length) return false let response = null - let seen = new Set() + let candidatesByContainer = new Map() for (let attempt = 1; attempt <= 30; attempt += 1) { response = await context.requestOverseas('GET', '/api/pda/v1/last-leg/receiving-containers/candidates', undefined, {}, token) const candidateRows = success(response) && Array.isArray(response.body?.data) ? response.body.data : [] - seen = new Set(candidateRows.map((item) => id(item?.containerNo)).filter(nonBlank)) - if (expected.every((containerNo) => seen.has(containerNo)) - && awaiting.every((containerNo) => !seen.has(containerNo))) break + candidatesByContainer = new Map(candidateRows + .map((item) => [id(item?.containerNo), item]).filter(([containerNo]) => nonBlank(containerNo))) + 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)) } - const seenExpected = expected.filter((containerNo) => seen.has(containerNo)) - const missingPickupReady = expected.filter((containerNo) => !seen.has(containerNo)) - const unexpectedAwaiting = awaiting.filter((containerNo) => seen.has(containerNo)) - const unexpectedHistorical = [...seen].filter((containerNo) => !known.has(containerNo)) + const seenExpected = expected.filter((containerNo) => candidatesByContainer.has(containerNo)) + const missingPickupReady = expected.filter((containerNo) => candidatesByContainer.get(containerNo)?.operable !== true) + const unexpectedAwaiting = awaiting.filter((containerNo) => candidatesByContainer.get(containerNo)?.operable === true) + const unexpectedHistorical = [...candidatesByContainer.keys()].filter((containerNo) => !known.has(containerNo)) 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 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)