This commit is contained in:
2026-10-20 10:35:52 +08:00
parent ce189f062f
commit c13175bf77
202 changed files with 38397 additions and 7138 deletions
@@ -1986,7 +1986,7 @@ CREATE TABLE IF NOT EXISTS ll_dispatch_item (
return_receipt_id BIGINT NULL COMMENT '明确选用的真实退回入仓来源',
PRIMARY KEY (id),
UNIQUE KEY uk_ll_dispatch_item_source (dispatch_order_id,plan_pallet_id,warehouse_pallet_id),
UNIQUE KEY uk_ll_dispatch_item_source (dispatch_order_id,source_key),
KEY idx_ll_dispatch_item_order (customer_id,order_id),
KEY idx_ll_dispatch_item_inbound (customer_id,inbound_code),
KEY idx_ll_dispatch_item_pallet (customer_id,plan_pallet_id,warehouse_pallet_id)
@@ -1998,12 +1998,70 @@ SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE tab
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_dispatch_item' AND column_name='gross_weight_kg'), 'SELECT 1', 'ALTER TABLE ll_dispatch_item ADD COLUMN gross_weight_kg DECIMAL(18,3) NOT NULL DEFAULT 0 COMMENT ''毛重(千克)'' AFTER package_count, ADD COLUMN volume_weight_kg DECIMAL(18,3) NOT NULL DEFAULT 0 COMMENT ''材积重(千克)'' AFTER gross_weight_kg')); PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_dispatch_item' AND column_name='destination_type'), 'SELECT 1', 'ALTER TABLE ll_dispatch_item ADD COLUMN destination_type VARCHAR(32) NULL COMMENT ''目的类型:FBA或PRIVATE'' AFTER fba_warehouse_code, ADD COLUMN delivery_address VARCHAR(1000) NULL COMMENT ''私人仓目的地址快照'' AFTER destination_type, ADD COLUMN postal_code VARCHAR(32) NULL COMMENT ''私人仓邮编快照'' AFTER delivery_address, ADD COLUMN contact_name VARCHAR(128) NULL COMMENT ''私人仓联系人快照'' AFTER postal_code, ADD COLUMN contact_phone VARCHAR(64) NULL COMMENT ''私人仓联系电话快照'' AFTER contact_name')); PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
CREATE TABLE IF NOT EXISTS ll_dispatch_item_source (
id BIGINT NOT NULL COMMENT '逻辑运输来源贡献快照主键',
dispatch_order_id BIGINT NOT NULL COMMENT '所属整车排车主单ID',
dispatch_item_id BIGINT NOT NULL COMMENT '所属客户逻辑排车明细ID',
customer_id VARCHAR(128) NOT NULL COMMENT '本条真实客户ID',
relabel_application_id BIGINT NOT NULL COMMENT '换标申请ID',
relabel_item_id BIGINT NOT NULL COMMENT '换标申请原明细ID',
relabel_round_key VARCHAR(128) NOT NULL COMMENT '冻结的真实换标作业轮次,扫码数量变化不改变轮次',
warehouse_pallet_id BIGINT NOT NULL COMMENT '当前真实物理托盘ID',
inventory_position_id BIGINT NOT NULL COMMENT '绑定后实际库存位置ID',
inventory_balance_id BIGINT NOT NULL COMMENT '绑定后实际库存余额ID',
source_inventory_balance_id BIGINT NULL COMMENT '原货源库存余额快照,未知为空',
source_inbound_order_id BIGINT NULL COMMENT '逐换标明细原货源订单ID,未知为空',
source_inbound_order_no VARCHAR(128) NULL COMMENT '逐换标明细原货源订单业务号快照',
source_inbound_code VARCHAR(128) NULL COMMENT '逐换标明细原入仓业务号快照',
notified_package_count BIGINT NOT NULL COMMENT '本来源通知箱数,不代表全部换标成功',
package_count BIGINT NOT NULL COMMENT '本来源实际绑定的可拣箱数',
product_quantity BIGINT NULL COMMENT '有真实依据的来源产品件数,未知为空',
binding_basis_hash CHAR(64) NOT NULL COMMENT '申请轮次、位置及逐来源贡献的冻结依据摘要',
unit_facts_json JSON NOT NULL COMMENT '逐件新旧箱唛及成功或异常工作事实快照',
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
PRIMARY KEY (id),
UNIQUE KEY uk_dispatch_item_source_contribution (dispatch_item_id,relabel_item_id,inventory_position_id),
KEY idx_dispatch_item_source_dispatch (dispatch_order_id,dispatch_item_id),
KEY idx_dispatch_item_source_relabel (customer_id,relabel_application_id,relabel_item_id),
CONSTRAINT chk_dispatch_item_source_packages CHECK(notified_package_count>=0 AND package_count>0),
CONSTRAINT chk_dispatch_item_source_quantity CHECK(product_quantity IS NULL OR product_quantity>=0)
) ENGINE=InnoDB COMMENT='换标逻辑来源实际贡献不可变快照';
CREATE TABLE IF NOT EXISTS ll_physical_pallet_guard (
warehouse_pallet_id BIGINT NOT NULL COMMENT '真实全局物理托盘ID',
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '首次建立串行点时间',
PRIMARY KEY (warehouse_pallet_id)
) ENGINE=InnoDB COMMENT='排车冻结与仓内实托组成修改的共同串行点';
CREATE TABLE IF NOT EXISTS ll_dispatch_physical_pallet_lock (
id BIGINT NOT NULL COMMENT '物理实托占用主键',
warehouse_id VARCHAR(128) NOT NULL COMMENT '真实起运仓ID',
warehouse_pallet_id BIGINT NOT NULL COMMENT '全局真实物理托盘ID',
active_warehouse_pallet_id BIGINT NULL COMMENT '活动物理排他键,释放后为空',
dispatch_order_id BIGINT NULL COMMENT '正式排车主单ID,与草稿归属互斥',
draft_token VARCHAR(64) NULL COMMENT '草稿拥有者令牌,与正式排车归属互斥',
draft_container_id BIGINT NULL COMMENT '草稿内唯一占用该实托的容器ID',
operator_id VARCHAR(128) NULL COMMENT '占用操作人ID',
status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE' COMMENT '物理占用状态',
expires_at DATETIME(3) NULL COMMENT '草稿失效时间,正式占用为空',
locked_at DATETIME(3) NOT NULL COMMENT '锁定时间',
released_at DATETIME(3) NULL COMMENT '释放时间',
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
PRIMARY KEY (id),
UNIQUE KEY uk_dispatch_physical_active_pallet (active_warehouse_pallet_id),
KEY idx_dispatch_physical_order (dispatch_order_id,status),
KEY idx_dispatch_physical_draft (draft_token,draft_container_id,status),
CONSTRAINT chk_dispatch_physical_active_key CHECK((status='ACTIVE' AND active_warehouse_pallet_id IS NOT NULL AND active_warehouse_pallet_id=warehouse_pallet_id) OR (status<>'ACTIVE' AND active_warehouse_pallet_id IS NULL)),
CONSTRAINT chk_dispatch_physical_owner CHECK((dispatch_order_id IS NOT NULL AND draft_token IS NULL AND draft_container_id IS NULL) OR (dispatch_order_id IS NULL AND draft_token IS NOT NULL AND draft_container_id IS NOT NULL))
) ENGINE=InnoDB COMMENT='同车共享且跨车排他的物理实托占用';
CREATE TABLE IF NOT EXISTS ll_dispatch_pallet_lock (
id BIGINT NOT NULL COMMENT '主键ID',
physical_lock_id BIGINT NULL COMMENT '实际物理实托占用ID,非物理来源为空',
customer_id VARCHAR(128) NOT NULL COMMENT '客户租户ID',
source_pallet_key VARCHAR(160) NOT NULL COMMENT '来源托盘业务键',
active_key VARCHAR(160) NULL COMMENT '生效中的资源排他键',
active_warehouse_pallet_id BIGINT NULL COMMENT '活动占用的真实仓库托盘,释放后为空,跨客户及来源别名唯一',
plan_id BIGINT NULL COMMENT '入仓计划ID',
plan_pallet_id BIGINT NULL COMMENT '计划托盘ID',
warehouse_pallet_id BIGINT NULL COMMENT '仓库实物托盘ID',
@@ -2021,10 +2079,10 @@ SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE tab
PRIMARY KEY (id),
UNIQUE KEY uk_ll_dispatch_active_pallet (customer_id,active_key),
UNIQUE KEY uk_ll_dispatch_active_warehouse_pallet (active_warehouse_pallet_id),
KEY idx_dispatch_logical_physical (physical_lock_id,status),
KEY idx_ll_dispatch_pallet_lock_order (customer_id,dispatch_order_id,status),
KEY idx_ll_dispatch_pallet_lock_source (customer_id,source_pallet_key,status)
) ENGINE=InnoDB COMMENT='派车托盘排他锁';
) ENGINE=InnoDB COMMENT='客户逻辑运输来源占用';
CREATE TABLE IF NOT EXISTS ll_dispatch_draft (
id BIGINT NOT NULL COMMENT '主键ID', draft_token VARCHAR(64) NOT NULL COMMENT '智能排车草稿随机标识',
@@ -2137,8 +2195,10 @@ CREATE TABLE IF NOT EXISTS ll_dispatch_pda_pick_order (
product_quantity BIGINT NOT NULL DEFAULT 0 COMMENT '产品数量', created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
return_receipt_id BIGINT NULL COMMENT '明确选用的真实退回入仓来源',
return_carton_id BIGINT NULL COMMENT '原生退货箱来源ID,与实收来源互斥',
dispatch_item_source_id BIGINT NULL COMMENT '换标实际来源贡献快照ID,与其他三类真实凭据互斥',
KEY idx_dispatch_pick_return_receipt(customer_id,return_receipt_id),
CONSTRAINT chk_dispatch_pick_receipt_source CHECK((receipt_id IS NOT NULL) + (return_receipt_id IS NOT NULL) + (return_carton_id IS NOT NULL) = 1),
KEY idx_dispatch_pick_item_source(customer_id,dispatch_item_source_id),
CONSTRAINT chk_dispatch_pick_receipt_source CHECK((receipt_id IS NOT NULL) + (return_receipt_id IS NOT NULL) + (return_carton_id IS NOT NULL) + (dispatch_item_source_id IS NOT NULL) = 1),
PRIMARY KEY (id), KEY idx_ll_dispatch_pick_order_pick (customer_id,pick_id),
@@ -1,6 +1,6 @@
openapi: 3.0.3
info:
title: 共用车次准备与拼车连续处理
title: 外接登记与整车履约衔接
version: 1.0.0
security:
- bearerAuth: []
@@ -63,19 +63,3 @@ paths:
components:
securitySchemes:
bearerAuth: {type: http, scheme: bearer, bearerFormat: JWT}
schemas:
Prepare:
type: object
required: [dispatchNos, idempotencyKey]
properties:
tripNo: {type: string, nullable: true, maxLength: 64}
recordVersion: {type: integer, format: int64, nullable: true, minimum: 0}
plan:
allOf:
- {$ref: './fleet-trips-v1.yaml#/components/schemas/Create'}
nullable: true
description: 仅新建提交,实际创建幂等键使用外层idempotencyKey。
vehicleId: {type: string, nullable: true}
driverId: {type: string, nullable: true}
dispatchNos: {type: array, minItems: 1, maxItems: 100, uniqueItems: true, items: {type: string, maxLength: 64}}
idempotencyKey: {type: string, minLength: 8, maxLength: 128}
@@ -3,27 +3,16 @@ info:
title: 平台运输车次与资源分配
version: 1.0.0
description: >-
车次是一次实际运输的稳定业务编号,客户排车、库存和派送单继续保留各自客户归属。
本文件定义计划、资源分配及客户排车单关联命令;分配或关联不会扣库存或标记发车。
创建可暂不指定车与司机,幂等键按创建人隔离;相同键相同内容返回同一车次,不同内容拒绝。
正式分配要求在役海外车辆及已确认的托位/载重/容积,以及海外司机;司机按预计任务结束时间重新核验且验证证照文件。
发车预览与实际发车重新核对司机当前海外区域和身份;分配后档案变更不能沿用原分配时的资格结果。
一个车辆或司机同时只能占用一个未释放车次;当前不提供多个未来时段的并行预约。
改派先取得新资源,成功后释放旧资源;整次写入与历史处于同一事务。
司机预计结束包含承担的返程/转场;修改预计结束须重新核验司机,所有写命令使用recordVersion。
普通计划接口不提供修改发车或签收状态的入口;PDA统一发车,结案检查所有客户派送终态及实发数量。
货物结案不释放车辆或司机;结束各资源任务独立提交实际结束时间、地点和原因,车辆另确认可用/维修/停用/已归还状态。
结案和结束任务命令携带版本及幂等键;结束司机任务不要求其证照仍有效,也不自动恢复其派车资格。
关联要求已分配车和司机,客户排车单同起运仓且未开始拣货;可跨客户关联但不改变客户数据归属。
同一排车单唯一关联一个车次;关联、改派、解除及尚未执行的派送单车/司机快照同步使用同一事务。
关联后子排车不能独立编辑、取消或单独发车;取消车次前须解除关联,已开工不允许直接解除或变更路线。
发车前允许在车次统一换车、换司机或调整时间,保留全部拣货事实与客户归属;已确认装载须能容纳于替换车辆。
改派或调整计划使原装载确认失效,发车前须重新确认;不支持用计划接口处理在途换车或撤销已执行货物。
关联只建立执行单据关系,不代表实际装载量、容量核验或审核已完成。
每张客户排车单调度审核通过后允许新拣货;整车确认实际装载并通过理货审核后允许发车。
审核仅通过或打回,通过意见选填、打回原因必填;无需额外提交或不同审核人。
换车换司机、修改路线或时间使调度与理货审核待审;仅修改备注保留审核及装载。
关联变更、重新确认装载或重新审核客户排车单使理货审核待审;保留全部拣货事实及历史审核快照。
排车列表是一趟整车作业的唯一主入口,一张排车单对应唯一车次资源记录;同一起运仓允许多个客户和目的地。
整车主单与任务不属于单一客户,货物明细、扫码归属、出库和派送单分别保留真实客户边界。
本文件保留资源占用查询、历史详情、计划容量、外接预订、结案及车辆/司机任务结束等附加能力。
不提供独立派送车次创建、多排车单手工绑定、旧调度/理货审核或装车写入口;审核和装发使用排车主单接口。
已绑定排车主单的资源与路线调整由排车主单执行;零真实扫码时显式退回装车前,修改后重新两级审核。
车辆和司机资格、容量与实际占用由服务端复验;候选可用不表示已预留,临时外配证据依排车主单规则核验。
调度审核后经理货审核才可真实扫码;PDA拣货核平后,平台和PDA均可确认装车完成及实际发车。
发车前整车派送安排须完整,正常签收汇总推进排车派送完成;既有异常业务和附加资源能力保留。
货物结案不自动释放车辆或司机;各资源任务分别提交实际结束时间、地点和原因,车辆另确认结束状态。
版本、幂等、客户隔离及事务要求以各实际端点及排车公共契约为准;历史数量不授权当前分配。
security:
- bearerAuth: []
paths:
@@ -350,7 +339,7 @@ components:
dispatches: {type: array, items: {$ref: '#/components/schemas/DispatchBinding'}}
previousDispatches:
type: array
description: 原绑定历史中已不在当前绑定的批次、客户及来源引用,按最新有效证据去重;历史数量不作为当前装载或可分配数量
description: 原绑定历史中已不在当前绑定的批次及其客户、来源引用,按最新有效证据去重;历史数量不作为当前装载或可分配数量
items: {$ref: '#/components/schemas/PreviousDispatch'}
appointmentHistoryUnavailableReason:
type: string
@@ -656,20 +645,6 @@ components:
manifestHash: {type: string, pattern: '^[0-9a-f]{64}$'}
pallets: {type: array, minItems: 1, maxItems: 1000, items: {$ref: '#/components/schemas/Measurement'}}
reason: {type: string, minLength: 1, maxLength: 1000}
BindingCommand:
type: object
required: [recordVersion, dispatchNo, reason]
properties:
recordVersion: {type: integer, format: int64, minimum: 0}
dispatchNo: {type: string, minLength: 1, maxLength: 64}
reason: {type: string, minLength: 1, maxLength: 1000}
Review:
type: object
required: [recordVersion, decision]
properties:
recordVersion: {type: integer, format: int64, minimum: 0}
decision: {type: string, enum: [APPROVED, REJECTED]}
reason: {type: string, nullable: true, maxLength: 1000, description: 通过选填;打回必填}
ReviewState:
type: object
required: [status]
@@ -685,17 +660,15 @@ components:
properties:
appointmentBatches: {type: array, items: {$ref: 'overseas-business-v1.yaml#/components/schemas/DispatchBatchReference'}}
dispatchNo: {type: string}
customerId: {type: string, description: 排车单自身客户归属,由服务端解析}
packageCount: {type: integer, description: 关联时待发运箱数,不是实物托位数}
boundBy: {type: string}
boundAt: {type: string, format: date-time}
review: {$ref: '#/components/schemas/ReviewState'}
PreviousDispatch:
type: object
required: [dispatchNo, customerId, recordVersion, recordedAt, appointmentBatches]
required: [dispatchNo, recordVersion, recordedAt, appointmentBatches]
properties:
dispatchNo: {type: string}
customerId: {type: string}
recordVersion: {type: integer, format: int64, description: 原绑定历史的车次版本}
recordedAt: {type: string, format: date-time}
appointmentBatches: {type: array, items: {$ref: 'overseas-business-v1.yaml#/components/schemas/DispatchBatchReference'}}
@@ -712,16 +685,6 @@ components:
name: {type: string, minLength: 1, maxLength: 128}
address: {type: string, nullable: true, maxLength: 500}
destinationKey: {type: string, nullable: true, maxLength: 160, description: 卸货站匹配Loading货物的destinationKey;未配置时可以保存计划但不能确认装载}
Create:
type: object
required: [warehouseId, plannedDepartureAt, expectedDriverEndAt, stops, idempotencyKey]
properties:
warehouseId: {type: string, pattern: '^[1-9][0-9]*$'}
plannedDepartureAt: {type: string, format: date-time}
expectedDriverEndAt: {type: string, format: date-time}
stops: {type: array, minItems: 2, maxItems: 200, items: {$ref: '#/components/schemas/Stop'}}
remark: {type: string, nullable: true, maxLength: 1000}
idempotencyKey: {type: string, minLength: 8, maxLength: 128}
Plan:
type: object
required: [recordVersion, plannedDepartureAt, expectedDriverEndAt, stops, reason]
@@ -4038,10 +4038,6 @@ components:
type: string
format: date-time
nullable: true
vehicleAppointment:
allOf:
- $ref: '#/components/schemas/DispatchAppointmentReference'
nullable: true
remark:
type: string
nullable: true
@@ -5602,6 +5598,10 @@ components:
items:
$ref: '#/components/schemas/DispatchBatchAllocation'
nullable: true
sourceOrigin:
allOf:
- $ref: '#/components/schemas/DispatchSourceOrigin'
nullable: true
required:
- dispatchItemId
- customerId
@@ -5630,6 +5630,7 @@ components:
- grossWeightKg
- volumeCbm
- batchAllocations
- sourceOrigin
DispatchCommandResult:
type: object
x-java-record: DispatchContracts.CommandResult
@@ -5797,7 +5798,6 @@ components:
sourceType:
allOf:
- $ref: '#/components/schemas/DispatchSourceType'
nullable: true
planPalletId:
type: string
pattern: ^[0-9]+$
@@ -5815,7 +5815,9 @@ components:
nullable: true
sourceVersion:
type: string
nullable: true
required:
- sourceType
- sourceVersion
DispatchCreate:
type: object
x-java-record: DispatchCommands.Create
@@ -5857,22 +5859,6 @@ components:
- idempotencyKey
- warehouseId
description: 同一起运仓,允许空单或多客户、多目的仓。客户和来源归属由服务端解析,临时资源不生成假档案。
DispatchAppointmentReference:
type: object
x-java-record: DispatchCommands.AppointmentReference
properties:
referenceNo:
type: string
nullable: true
recordVersion:
oneOf:
- type: string
pattern: ^[0-9]+$
- type: integer
minimum: 0
description: 已有单写入必填;0合法。响应Long按十进制字符串输出。
required:
- recordVersion
DispatchAddCargo:
type: object
x-java-record: DispatchCommands.AddCargo
@@ -6351,24 +6337,6 @@ components:
- status
- confirmedAt
- blockReason
DispatchVehicleAppointment:
type: object
x-java-record: DispatchViews.VehicleAppointment
properties:
referenceNo:
type: string
nullable: true
status:
type: string
nullable: true
appointmentAt:
type: string
format: date-time
nullable: true
required:
- referenceNo
- status
- appointmentAt
DispatchDispatchInfo:
type: object
x-java-record: DispatchViews.DispatchInfo
@@ -6393,10 +6361,6 @@ components:
items:
$ref: '#/components/schemas/DispatchFbaAppointment'
nullable: true
vehicleAppointment:
allOf:
- $ref: '#/components/schemas/DispatchVehicleAppointment'
nullable: true
appointmentBatches:
type: array
items:
@@ -6408,7 +6372,6 @@ components:
- departedAt
- estimatedArrivalAt
- fbaAppointments
- vehicleAppointment
- appointmentBatches
DispatchDocuments:
type: object
@@ -6479,6 +6442,12 @@ components:
sourceKey:
type: string
nullable: true
sourceBusinessType:
type: string
nullable: true
sourceBusinessNo:
type: string
nullable: true
required:
- customerId
- customerName
@@ -6490,6 +6459,8 @@ components:
- volumeCbm
- containerNo
- sourceKey
- sourceBusinessType
- sourceBusinessNo
DispatchDetail:
type: object
x-java-record: DispatchViews.Detail
@@ -6660,6 +6631,14 @@ components:
items:
$ref: '#/components/schemas/DispatchReturnCarton'
nullable: true
sourceKey:
type: string
sourceBusinessType:
type: string
nullable: true
sourceBusinessNo:
type: string
nullable: true
required:
- dispatchItemId
- customerId
@@ -6670,6 +6649,9 @@ components:
- pickedPackages
- positions
- returnCartons
- sourceKey
- sourceBusinessType
- sourceBusinessNo
DispatchPosition:
type: object
x-java-record: DispatchViews.Position
@@ -6970,6 +6952,11 @@ components:
items:
type: string
nullable: true
selectionGroup:
allOf:
- $ref: '#/components/schemas/DispatchSelectionGroup'
required:
- selectionGroup
DispatchCandidateList:
type: object
x-java-record: DispatchPlanningModels.CandidateList
@@ -7860,5 +7847,132 @@ components:
sizeBytes:
type: string
pattern: ^[0-9]+$
DispatchSelectionGroup:
type: object
x-java-record: DispatchPlanningModels.SelectionGroup
properties:
groupKey:
type: string
groupVersion:
type: string
sources:
type: array
items:
$ref: '#/components/schemas/DispatchSelectionGroupSource'
pallets:
type: array
items:
$ref: '#/components/schemas/DispatchSelectionGroupPallet'
complete:
type: boolean
blockReasons:
type: array
items:
type: string
required:
- groupKey
- groupVersion
- sources
- pallets
- complete
- blockReasons
description: 服务端按完整实托及整换标申请计算未被页面筛选截断的来源集合;版本绑定组成、完工轮次、实际位置和各来源版本。complete=false或blockReasons非空禁止选入。
DispatchSelectionGroupSource:
type: object
x-java-record: DispatchPlanningModels.SelectionGroupSource
properties:
selection:
allOf:
- $ref: '#/components/schemas/DispatchCargoSelection'
sourceKey:
type: string
customerId:
type: string
customerName:
type: string
nullable: true
sourceBusinessType:
type: string
nullable: true
sourceBusinessNo:
type: string
nullable: true
packages:
type: string
pattern: ^[0-9]+$
required:
- selection
- sourceKey
- customerId
- customerName
- sourceBusinessType
- sourceBusinessNo
- packages
description: 客户和换标业务号按逻辑来源保留;selection携带本来源权威版本,正式建单和加货显式提交完整组,不从展示sourceKey推业务号。
DispatchSelectionGroupPallet:
type: object
x-java-record: DispatchPlanningModels.SelectionGroupPallet
properties:
warehousePalletId:
type: string
pattern: ^[0-9]+$
palletNo:
type: string
sourceKeys:
type: array
items:
type: string
packageCount:
type: string
pattern: ^[0-9]+$
required:
- warehousePalletId
- palletNo
- sourceKeys
- packageCount
description: 每实托只列一次,sourceKeys列出全部逻辑贡献;实际装载按实托测量,不能把整托容量重复计到各来源。
DispatchSourceOrigin:
type: object
x-java-record: DispatchContracts.SourceOrigin
properties:
dispatchItemSourceId:
type: string
pattern: ^[0-9]+$
nullable: true
relabelApplicationId:
type: string
pattern: ^[0-9]+$
nullable: true
relabelItemId:
type: string
pattern: ^[0-9]+$
nullable: true
sourceInventoryBalanceId:
type: string
pattern: ^[0-9]+$
nullable: true
sourceInboundOrderId:
type: string
pattern: ^[0-9]+$
nullable: true
sourceInboundOrderNo:
type: string
nullable: true
sourceInboundCode:
type: string
nullable: true
productQuantity:
type: string
pattern: ^[0-9]+$
nullable: true
required:
- dispatchItemSourceId
- relabelApplicationId
- relabelItemId
- sourceInventoryBalanceId
- sourceInboundOrderId
- sourceInboundOrderNo
- sourceInboundCode
- productQuantity
securitySchemes:
bearerAuth: { type: http, scheme: bearer, bearerFormat: JWT }