优化
This commit is contained in:
@@ -14,6 +14,27 @@ export function uniqueContainerProducer(item, index, all) {
|
||||
return nonBlank(item?.containerNo)
|
||||
&& all.findIndex((candidate) => candidate?.containerNo === item.containerNo) === index
|
||||
}
|
||||
export function crossContainerCartonProbe(producers, current) {
|
||||
const currentCodes = new Set((current?.inbounds || []).map(item => id(item.inboundCode)))
|
||||
if (!nonBlank(current?.containerNo) || !currentCodes.size) return null
|
||||
for (const item of producers || []) {
|
||||
if (!nonBlank(item?.containerNo) || item.containerNo === current?.containerNo
|
||||
|| !longId(item?.containerBookingId) || !longId(item?.sourceOrderId)
|
||||
|| !longId(item?.sourceInboundId) || item?.sourceStatus !== 'LOADED'
|
||||
|| !nonBlank(item?.inboundCode) || currentCodes.has(item.inboundCode)) continue
|
||||
const standardFba = item.destinationType === 'FBA' && item.fulfillmentType === 'STANDARD'
|
||||
const marks = standardFba ? item.receivingCartonMarks
|
||||
: (Array.isArray(item.cartonMarks) ? item.cartonMarks : [item.cartonMark])
|
||||
const prefix = `${item.inboundCode}#PDA-CONTRACT-`
|
||||
const cartonMark = (Array.isArray(marks) ? marks : []).map(id).find(value => nonBlank(value)
|
||||
&& (!standardFba || (value.startsWith(prefix) && /^[1-9][0-9]*$/.test(value.slice(prefix.length)))))
|
||||
if (cartonMark) return { cartonMark, containerNo:item.containerNo,
|
||||
containerBookingId:id(item.containerBookingId), inboundCode:item.inboundCode,
|
||||
sourceOrderId:id(item.sourceOrderId), sourceInboundId:id(item.sourceInboundId),
|
||||
mode:standardFba ? 'FBA_RECEIVING_PREFIX' : 'PHYSICAL_CARTON' }
|
||||
}
|
||||
return null
|
||||
}
|
||||
function success(response) { return response?.http === 200 && String(response?.body?.code) === '200' }
|
||||
function code(response) { return String(response?.body?.code ?? '') }
|
||||
function traced(response) { return nonBlank(response?.requestId) && nonBlank(response?.traceId) }
|
||||
@@ -525,14 +546,13 @@ async function probeCartonResolveNegatives(context, token, current) {
|
||||
{ cartonMark: `UNMATCHED-${markerSuffix(context)}#ANY-SUFFIX` }, cartonResolveRejected)
|
||||
|
||||
const allProducers = context.createdResources?.phase4InboundProducerFixtures?.containers || []
|
||||
const crossContainerMark = allProducers
|
||||
.filter((item) => id(item?.containerNo) !== id(current.containerNo))
|
||||
.flatMap((item) => Array.isArray(item?.cartonMarks) ? item.cartonMarks : [item?.cartonMark])
|
||||
.map(id).find(nonBlank)
|
||||
if (crossContainerMark) {
|
||||
const crossContainerProbe = crossContainerCartonProbe(allProducers,current)
|
||||
if (crossContainerProbe) {
|
||||
context.addStep(MODULE,'跨柜解析反证来源为另一真实实装柜及入仓码',null,true,
|
||||
JSON.stringify(crossContainerProbe),OPTIONS)
|
||||
await expected(context, token, 'POST', '其他柜箱码前缀被当前锁定柜拒绝',
|
||||
'/api/pda/v1/last-leg/receiving-containers/current/cartons/resolve',
|
||||
{ cartonMark: crossContainerMark }, cartonResolveRejected)
|
||||
{ cartonMark: crossContainerProbe.cartonMark }, cartonResolveRejected)
|
||||
} else {
|
||||
blockerGap(context, '箱码跨柜负向', '缺少另一真实柜的冻结箱码,不能伪造跨柜归属反证')
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user