优化
This commit is contained in:
@@ -14,7 +14,8 @@ function closeTo(actual, expected, tolerance = 0.000001) {
|
||||
}
|
||||
function ceiling(value, scale) {
|
||||
const factor = 10 ** scale
|
||||
return Math.ceil((value - Number.EPSILON) * factor) / factor
|
||||
const floatingPointNoise = Number.EPSILON * Math.max(1, Math.abs(value)) * 4
|
||||
return Math.ceil((value - floatingPointNoise) * factor) / factor
|
||||
}
|
||||
function halfUp(value, scale) {
|
||||
const factor = 10 ** scale
|
||||
@@ -375,24 +376,31 @@ export async function run(context) {
|
||||
const incrementalDetailCount = Number(context.context?.phase3LoadingIncrementalDetailCount || 1)
|
||||
if (incrementalDetailCount > 1) {
|
||||
const packagesPerDetail = Number(context.context?.phase3LoadingIncrementalPackageCount || 1)
|
||||
const expectedPackages = incrementalDetailCount * packagesPerDetail
|
||||
const configuredPackageCounts = context.context?.waitSplitVariant?.packageCounts
|
||||
const detailPackageCounts = Array.isArray(configuredPackageCounts)
|
||||
&& configuredPackageCounts.length === incrementalDetailCount
|
||||
? configuredPackageCounts.map(Number)
|
||||
: Array.from({ length: incrementalDetailCount }, () => packagesPerDetail)
|
||||
const expectedPackages = detailPackageCounts.reduce((sum, count) => sum + count, 0)
|
||||
context.assert(MODULE, '动态增量多明细箱数前置与冻结总数一致', measuredResponse,
|
||||
expectedPackages === originalPackageCount,
|
||||
`detailCount=${incrementalDetailCount}, packagesPerDetail=${packagesPerDetail}, frozen=${originalPackageCount}`, OPTIONS)
|
||||
`detailCount=${incrementalDetailCount}, packageCounts=${detailPackageCounts.join('+')}, frozen=${originalPackageCount}`, OPTIONS)
|
||||
if (expectedPackages === originalPackageCount) {
|
||||
const firstDetailPackageCount = detailPackageCounts[0]
|
||||
const resetFirstCountResponse = await context.request('PUT',
|
||||
`/api/platform/v1/first-leg/inbounds/${inboundId}/measurement/items/${firstScan.itemId}/confirmed-package-count?${query(tenantId)}`,
|
||||
{ measurementVersion: Number(measured?.version), confirmedPackageCount: packagesPerDetail })
|
||||
{ measurementVersion: Number(measured?.version), confirmedPackageCount: firstDetailPackageCount })
|
||||
const resetFirstCount = context.apiSuccess(MODULE,
|
||||
'增量 fixture 将首条货物确认箱数恢复为自身箱数', resetFirstCountResponse,
|
||||
`itemId=${asId(firstScan.itemId)}, confirmedPackageCount=${packagesPerDetail}`, OPTIONS)
|
||||
`itemId=${asId(firstScan.itemId)}, confirmedPackageCount=${firstDetailPackageCount}`, OPTIONS)
|
||||
context.assert(MODULE, '增量首条货物箱数和版本更新正确', resetFirstCountResponse,
|
||||
Number(resetFirstCount?.confirmedPackageCount) === packagesPerDetail
|
||||
Number(resetFirstCount?.confirmedPackageCount) === firstDetailPackageCount
|
||||
&& Number(resetFirstCount?.measurementVersion) === Number(measured?.version) + 1,
|
||||
`version=${resetFirstCount?.measurementVersion ?? 'missing'}`, OPTIONS)
|
||||
|
||||
for (let detailIndex = 1; detailIndex < incrementalDetailCount; detailIndex += 1) {
|
||||
const cartonIndex = detailIndex * packagesPerDetail + 1
|
||||
const detailPackageCount = detailPackageCounts[detailIndex]
|
||||
const cartonIndex = detailPackageCounts.slice(0, detailIndex).reduce((sum, count) => sum + count, 0) + 1
|
||||
const detailBoxCode = `${inboundCode}#${originalPackageCount}-${cartonIndex}`
|
||||
const scanResponse = await multipartRequest(context, scanPath, {
|
||||
boxCode: detailBoxCode, ...replacement,
|
||||
@@ -410,12 +418,12 @@ export async function run(context) {
|
||||
if (!scanned?.itemId) continue
|
||||
const countDetailResponse = await context.request('PUT',
|
||||
`/api/platform/v1/first-leg/inbounds/${inboundId}/measurement/items/${scanned.itemId}/confirmed-package-count?${query(tenantId)}`,
|
||||
{ measurementVersion: Number(scanned.measurementVersion), confirmedPackageCount: packagesPerDetail })
|
||||
{ measurementVersion: Number(scanned.measurementVersion), confirmedPackageCount: detailPackageCount })
|
||||
const countDetail = context.apiSuccess(MODULE,
|
||||
`增量第${detailIndex + 1}条货物确认自身箱数`, countDetailResponse,
|
||||
`confirmedPackageCount=${packagesPerDetail}`, OPTIONS)
|
||||
`confirmedPackageCount=${detailPackageCount}`, OPTIONS)
|
||||
context.assert(MODULE, `增量第${detailIndex + 1}条货物箱数更新正确`, countDetailResponse,
|
||||
Number(countDetail?.confirmedPackageCount) === packagesPerDetail,
|
||||
Number(countDetail?.confirmedPackageCount) === detailPackageCount,
|
||||
`measurementVersion=${countDetail?.measurementVersion ?? 'missing'}`, OPTIONS)
|
||||
}
|
||||
measuredResponse = await context.request('GET', measurementPath)
|
||||
|
||||
Reference in New Issue
Block a user