优化
This commit is contained in:
+15
-4
@@ -97,7 +97,7 @@ function dispatchWrite(path, request) {
|
||||
requireDispatchVersion(request?.recordVersion)
|
||||
return overseasRequest('POST', path, request)
|
||||
}
|
||||
// 生产仓租接口尚未配套发布,直接提交既有库存命令,仍保留原请求的防重标识。
|
||||
// 库存命令与仓租预校验共用本次请求的防重标识。
|
||||
function requireStockCommandIdentity(request) {
|
||||
if (!request?.idempotencyKey) throw new Error('出库请求标识缺失,请重新进入任务')
|
||||
}
|
||||
@@ -105,8 +105,19 @@ function requireStockCommandIdentity(request) {
|
||||
export async function pickDispatchItem(dispatchNo, dispatchItemId, request) {
|
||||
requireDispatchVersion(request?.recordVersion)
|
||||
requireStockCommandIdentity(request)
|
||||
await prepareStockRent({
|
||||
mode: 'DISPATCH',
|
||||
businessNo: dispatchNo,
|
||||
itemId: dispatchItemId,
|
||||
positionId: request.positionId,
|
||||
packages: request.packages,
|
||||
cartonMark: request.cartonMark || null,
|
||||
idempotencyKey: request.idempotencyKey,
|
||||
productQuantity: request.productQuantity || 0
|
||||
})
|
||||
return dispatchWrite(`${DISPATCH_BASE}/${encoded(dispatchNo)}/items/${encoded(dispatchItemId)}/pick`, request)
|
||||
}
|
||||
|
||||
export function completeDispatchLoading(dispatchNo, request) {
|
||||
return dispatchWrite(`${DISPATCH_BASE}/${encoded(dispatchNo)}/loading-complete`, request)
|
||||
}
|
||||
@@ -192,12 +203,12 @@ export async function confirmCargoDiscard(discardNo, palletNo, lines, photoFileI
|
||||
const body = { lines, photoFileIds, scannedCartonMarks, confirmAllCartons, idempotencyKey: request.idempotencyKey }
|
||||
requireStockCommandIdentity(request)
|
||||
// 出库前按同一份货物、照片和幂等键校验仓租,资金就绪后才提交库存扣减。
|
||||
await prepareDiscardRent({ mode: 'DISCARD', businessNo: discardNo, palletNo, ...body })
|
||||
await prepareStockRent({ mode: 'DISCARD', businessNo: discardNo, palletNo, ...body })
|
||||
return normalizeCargoDiscardTask(await overseasRequest('POST', `${CARGO_DISCARD_BASE}/${encoded(discardNo)}/pallets/${encoded(palletNo)}/confirm`, body))
|
||||
}
|
||||
|
||||
/** 本次点击内只查询资金回执,不缓存或自动重放失败的出库命令。 */
|
||||
async function prepareDiscardRent(body) {
|
||||
async function prepareStockRent(body) {
|
||||
const base = '/pda/v1/last-leg/storage-rent/preparations'
|
||||
let preparationId
|
||||
try {
|
||||
@@ -215,7 +226,7 @@ async function prepareDiscardRent(body) {
|
||||
// 尚未发送出库命令时释放已知的未使用预占,释放失败保留原错误诊断。
|
||||
if (preparationId) {
|
||||
try { await overseasRequest('DELETE', `${base}/${encoded(preparationId)}`) }
|
||||
catch (releaseError) { console.error('[Overseas PDA discard] rent preparation release failed', { code: releaseError?.code, requestId: releaseError?.requestId, traceId: releaseError?.traceId }) }
|
||||
catch (releaseError) { console.error('[Overseas PDA stock] rent preparation release failed', { code: releaseError?.code, requestId: releaseError?.requestId, traceId: releaseError?.traceId }) }
|
||||
}
|
||||
throw error
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user