fix(pda): 暂停未配套上线的仓租预检查调用
This commit is contained in:
+7
-28
@@ -3,7 +3,6 @@ import { overseasRequest, overseasUpload, overseasDownload } from './overseas.js
|
||||
const DISPATCH_BASE = '/pda/v1/last-leg/dispatches'
|
||||
const OUTBOUND_BASE = '/pda/v1/last-leg/outbound-tasks'
|
||||
const CARGO_DISCARD_BASE = '/pda/v1/last-leg/cargo-discards'
|
||||
const STORAGE_PREPARATION_BASE = '/pda/v1/last-leg/storage-rent/preparations'
|
||||
|
||||
const encoded = (value) => encodeURIComponent(String(value || '').trim())
|
||||
|
||||
@@ -98,30 +97,14 @@ function dispatchWrite(path, request) {
|
||||
requireDispatchVersion(request?.recordVersion)
|
||||
return overseasRequest('POST', path, request)
|
||||
}
|
||||
async function prepareStorageRent(mode, businessNo, request, extra = {}) {
|
||||
try {
|
||||
if (!request?.idempotencyKey) throw new Error('出库请求标识缺失,请重新进入任务')
|
||||
const result = await overseasRequest('POST', STORAGE_PREPARATION_BASE, {
|
||||
mode, businessNo, idempotencyKey: request.idempotencyKey, ...extra
|
||||
})
|
||||
if (result?.ready !== true || !['NOT_REQUIRED', 'READY', 'CONSUMED'].includes(result?.status)) {
|
||||
const error = new Error(result?.message || (result?.status === 'FREEZE_PENDING' ? '费用确认中,请稍后重试' : '费用尚未确认,请稍后重试'))
|
||||
error.code = `STORAGE_RENT_${result?.status || 'INVALID_RESPONSE'}`
|
||||
throw error
|
||||
}
|
||||
} catch (cause) {
|
||||
// 预扣可能已受理,保留完整原请求及幂等键继续核对。
|
||||
cause.storageRentPreparation = true
|
||||
throw cause
|
||||
}
|
||||
// 生产仓租接口尚未配套发布,直接提交既有库存命令,仍保留原请求的防重标识。
|
||||
function requireStockCommandIdentity(request) {
|
||||
if (!request?.idempotencyKey) throw new Error('出库请求标识缺失,请重新进入任务')
|
||||
}
|
||||
|
||||
export async function pickDispatchItem(dispatchNo, dispatchItemId, request) {
|
||||
requireDispatchVersion(request?.recordVersion)
|
||||
await prepareStorageRent('DISPATCH', dispatchNo, request, {
|
||||
itemId: dispatchItemId, positionId: request.positionId, packages: request.packages,
|
||||
cartonMark: request.cartonMark, productQuantity: request.productQuantity
|
||||
})
|
||||
requireStockCommandIdentity(request)
|
||||
return dispatchWrite(`${DISPATCH_BASE}/${encoded(dispatchNo)}/items/${encoded(dispatchItemId)}/pick`, request)
|
||||
}
|
||||
export function completeDispatchLoading(dispatchNo, request) {
|
||||
@@ -145,16 +128,12 @@ export function resolveOutboundTask(businessNo) {
|
||||
}
|
||||
|
||||
export async function pickOutboundTask(taskNo, request) {
|
||||
await prepareStorageRent('OUTBOUND', taskNo, request, {
|
||||
itemId: request.outboundPalletItemId, positionId: request.inventoryPositionId,
|
||||
packages: request.packages, cartonMarks: request.cartonMarks,
|
||||
skuCode: request.skuCode, productQuantity: request.productQuantity
|
||||
})
|
||||
requireStockCommandIdentity(request)
|
||||
return overseasRequest('POST', `${OUTBOUND_BASE}/${encoded(taskNo)}/pick`, request)
|
||||
}
|
||||
|
||||
export async function pickOutboundPallet(taskNo, palletNo, request) {
|
||||
await prepareStorageRent('OUTBOUND_PALLET', taskNo, request, { palletNo })
|
||||
requireStockCommandIdentity(request)
|
||||
return overseasRequest('POST', `${OUTBOUND_BASE}/${encoded(taskNo)}/pallets/${encoded(palletNo)}/pick`, request)
|
||||
}
|
||||
|
||||
@@ -208,7 +187,7 @@ export async function resolveCargoDiscardPallet(palletNo, discardNo) {
|
||||
|
||||
export async function confirmCargoDiscard(discardNo, palletNo, lines, photoFileIds, scannedCartonMarks = [], confirmAllCartons = false, request = {}) {
|
||||
const body = { lines, photoFileIds, scannedCartonMarks, confirmAllCartons, idempotencyKey: request.idempotencyKey }
|
||||
await prepareStorageRent('DISCARD', discardNo, request, { palletNo, lines, photoFileIds, scannedCartonMarks, confirmAllCartons })
|
||||
requireStockCommandIdentity(request)
|
||||
return normalizeCargoDiscardTask(await overseasRequest('POST', `${CARGO_DISCARD_BASE}/${encoded(discardNo)}/pallets/${encoded(palletNo)}/confirm`, body))
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user