fix(dropship): project sealed carton identities into overseas receiving
This commit is contained in:
+9
-3
@@ -144,8 +144,14 @@ public record FirstLegLoadingPlanCompletedV2(
|
||||
/** 头程托盘冻结快照;普通入仓用于复用打印编号,一键代发还冻结 SKU/箱唛库存。 */
|
||||
public record PalletSnapshot(String palletNo, List<SkuPackageSnapshot> skuPackages) {}
|
||||
|
||||
/** 托盘下 SKU、箱数、数量及箱号冻结快照;cartonMarks 中每个箱号都对应 skuCode。 */
|
||||
public record SkuPackageSnapshot(String skuCode, String productName,
|
||||
/** 托盘下来源入库明细、SKU、箱数、数量及箱号冻结快照;同 SKU 多明细按 sourceInboundDetailId 精确区分。 */
|
||||
public record SkuPackageSnapshot(String sourceInboundDetailId, String skuCode, String productName,
|
||||
int packageCount, int productQuantity,
|
||||
List<String> cartonMarks) {}
|
||||
List<String> cartonMarks) {
|
||||
public SkuPackageSnapshot {
|
||||
if (sourceInboundDetailId == null || sourceInboundDetailId.isBlank()) {
|
||||
throw new IllegalArgumentException("sourceInboundDetailId is required for each pallet SKU snapshot");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ components:
|
||||
volumeWeightKg: {type: [number, 'null'], minimum: 0, description: Sum of final loaded item dimensional weight facts; null when unavailable}
|
||||
items: {type: array, items: {type: object}}
|
||||
orderType: {type: string, enum: [FIRST_LEG, ONE_CLICK_DROPSHIP]}
|
||||
pallets: {type: array, items: {type: object}}
|
||||
pallets: {type: array, items: {$ref: '#/components/schemas/FirstLegPalletSnapshotV2'}}
|
||||
destinationType: {type: string, enum: [FBA, OVERSEAS]}
|
||||
FirstLegContainerShippingNodeRecordedV1:
|
||||
type: object
|
||||
@@ -57,6 +57,24 @@ components:
|
||||
providerEventId: {type: string}
|
||||
providerNodeCode: {type: string}
|
||||
rawPayloadHash: {type: string, pattern: '^[0-9a-fA-F]{64}$'}
|
||||
FirstLegPalletSnapshotV2:
|
||||
type: object
|
||||
required: [palletNo, skuPackages]
|
||||
properties:
|
||||
palletNo: {type: string, minLength: 1}
|
||||
skuPackages:
|
||||
type: array
|
||||
items: {$ref: '#/components/schemas/FirstLegSkuPackageSnapshotV2'}
|
||||
FirstLegSkuPackageSnapshotV2:
|
||||
type: object
|
||||
required: [sourceInboundDetailId, skuCode, productName, packageCount, productQuantity, cartonMarks]
|
||||
properties:
|
||||
sourceInboundDetailId: {type: string, minLength: 1, description: Exact source inbound detail identity matching the order item; never infer from SKU because multiple details may share a SKU}
|
||||
skuCode: {type: string}
|
||||
productName: {type: [string, 'null']}
|
||||
packageCount: {type: integer, minimum: 1}
|
||||
productQuantity: {type: integer, minimum: 1}
|
||||
cartonMarks: {type: array, items: {type: string}, minItems: 1}
|
||||
OverseasContainerUnloadedV1:
|
||||
type: object
|
||||
required: [sourceContainerBookingId, containerNo, unloadingCompletedAt, unloadingPhotoUploadedAt]
|
||||
|
||||
Reference in New Issue
Block a user