@@ -28,7 +28,7 @@ paths:
/api/platform/v1/last-leg/local-looseboard-orders/{orderNo}/review:
post:
summary : 审核散板并创建唯一入仓履约单
description : 权限platform:overseas-business:looseboard:status;通过后送货到仓进入PDA收货,仓库上门取货进入取货排车;审核后即可从散板需求添加申报货物;上门取货沿取货排车上传取货与到仓凭证,实收到仓后原单进入PENDING_DISPATCH并交接原排车货量。客户及幂等键严格校验。
description : 权限platform:overseas-business:looseboard:status; 仅冻结成功可通过审核,通过和驳回均释放原预算预占; 通过后送货到仓进入PDA收货,仓库上门取货进入取货排车;审核后即可从散板需求添加申报货物;上门取货沿取货排车上传取货与到仓凭证,实收到仓后原单进入PENDING_DISPATCH并交接原排车货量。客户及幂等键严格校验。
security : [ { bearerAuth : [ ] }]
parameters:
- { name : orderNo, in : path, required : true, schema : { type : string } }
@@ -2754,20 +2754,20 @@ paths:
/api/merchant/v1/last-leg/local-looseboard-orders:
get:
summary : 客户分页查询自己的本土散板订单
description : 权限 merchant:cross-border:pallet-shipping:list;客户范围只取认证 Token,不接收 customerId。
description : 权限 merchant:cross-border:pallet-shipping:list;客户范围只取认证 Token,不接收 customerId;状态筛选、分页计数和显示共用真实运输进度。PENDING_ACCEPTANCE 为待审核,审核通过尚未排车为 PENDING_DISPATCH(待排车);已排车待取货为 DISPATCHED;取货到仓车次出发或已取货未到仓为 PICKING_UP(取货中),到仓后等待后续排车;直接取货送货取货完成后为 IN_TRANSIT(派送中)。内部收货与合托状态不作为客户筛选项 。
security : [ { bearerAuth : [ ] }]
parameters:
- { name : page, in : query, schema : { type : integer, minimum : 1, default : 1 } }
- { name : size, in : query, schema : { type : integer, minimum : 1, maximum : 200, default : 20 } }
- { name : orderNo, in : query, schema : { type : string } }
- { name : routeKeyword, in : query, schema : { type : string } }
- { name : status, in : query, schema : { $ref : '#/components/schemas/LooseboardStatus' } }
- { name : status, in : query, schema : { $ref : '#/components/schemas/Merchant LooseboardStatus' } }
- { name : requestedFrom, in : query, schema : { type : string, format : date } }
- { name : requestedTo, in : query, schema : { type : string, format : date } }
responses : { '200' : { description : 当前客户本土散板订单分页, content : { application/json : { schema : { $ref : '#/components/schemas/LooseboardPageResponse' } } } } }
post:
summary : 客户创建本土散板订单
description : 权限 merchant:cross-border:pallet-shipping:create; 新单固定进入 PENDING_ACCEPTANCE, 客户不能调用平台状态推进端点。
description : 权限 merchant:cross-border:pallet-shipping:create; 散板金额必填,预算与订单和冻结指令同事务保存;新单进入 FUNDING_PENDING, Finance按余额优先、授信补足冻结,成功进入 PENDING_ACCEPTANCE,失败进入 FUNDING_FAILED,支持原单重试。审核通过、取消或驳回申请释放预占,不自动扣款; 客户不能调用平台状态推进端点。
security : [ { bearerAuth : [ ] }]
requestBody : { required : true, content : { application/json : { schema : { $ref : '#/components/schemas/LooseboardCreate' } } } }
responses : { '200' : { description : 本土散板订单详情, content : { application/json : { schema : { $ref : '#/components/schemas/LooseboardDetailResponse' } } } }, '409' : { description : 幂等冲突 } }
@@ -2775,12 +2775,12 @@ paths:
parameters : [ { name : orderNo, in : path, required : true, schema : { type : string } }]
get:
summary : 客户查询自己的本土散板订单详情
description : 权限 merchant:cross-border:pallet-shipping:list;不泄露其他客户订单。
description : 权限 merchant:cross-border:pallet-shipping:list;不泄露其他客户订单; summary.status 使用 MerchantLooseboardStatus,与列表运输状态及筛选一致 。
security : [ { bearerAuth : [ ] }]
responses : { '200' : { description : 当前客户本土散板订单详情, content : { application/json : { schema : { $ref : '#/components/schemas/LooseboardDetailResponse' } } } }, '404' : { description : 当前客户下订单不存在 } }
put:
summary : 客户编辑待接单 的本土散板订单
description : 权限 merchant:cross-border:pallet-shipping:edit;仅 PENDING_ACCEPTANCE 可编辑,version 必填;不能修改状态。
summary : 客户编辑待审核 的本土散板订单
description : 权限 merchant:cross-border:pallet-shipping:edit;仅 PENDING_ACCEPTANCE 可编辑,version 必填;已冻结的预算金额与币种不能通过编辑更改; 不能修改状态。
security : [ { bearerAuth : [ ] }]
requestBody : { required : true, content : { application/json : { schema : { $ref : '#/components/schemas/LooseboardUpdate' } } } }
responses : { '200' : { description : 更新后的订单详情, content : { application/json : { schema : { $ref : '#/components/schemas/LooseboardDetailResponse' } } } }, '409' : { description : 版本或状态冲突 } }
@@ -4897,15 +4897,19 @@ components:
destinationContactPhone : { type : string, nullable : true }
pickupAt : { type : string, format : date-time, nullable : true, description : 当地日期时间不带时区;按分钟输入 }
deliveryAt : { type : string, format : date-time, nullable : true, description : 当地日期时间,不能早于取货时间 }
status : { $ref : '#/components/schemas/LooseboardStatus' }
status:
description : 客户读取为运输状态 MerchantLooseboardStatus,平台读取保留内部作业状态 LooseboardStatus。
anyOf:
- { $ref : '#/components/schemas/LooseboardStatus' }
- { $ref : '#/components/schemas/MerchantLooseboardStatus' }
version : { type : integer, format : int64 }
createdAt : { type : string, format : date-time }
updatedAt : { type : string, format : date-time }
fleetArrangement : { $ref : '#/components/schemas/FleetArrangement' }
LooseboardDetail:
type : object
description : 承运安排位于summary.fleetArrangement,与列表摘要使用同一真实来源;根对象不重复该字段 。池来源状态只能由实际履约推进。
required : [ summary, histories]
description : 承运安排位于summary.fleetArrangement; dispatchNos独立按本客户散板原单的真实来源返回全部有效排车,不依赖车队预订,同车多托去重、分车全部展示、取消排车排除;未排车返回空数组 。池来源状态只能由实际履约推进。
required : [ summary, histories, dispatchNos ]
properties:
summary : { $ref : '#/components/schemas/LooseboardSummary' }
originAddress : { type : string, nullable : true }
@@ -4913,6 +4917,7 @@ components:
remark : { type : string, nullable : true }
createdBy : { type : string, nullable : true }
histories : { type : array, items : { $ref : '#/components/schemas/BusinessHistory' } }
dispatchNos : { type : array, uniqueItems : true, items : { type : string }, description : 本客户当前散板单关联的全部有效排车单号,不授予客户整车详情访问权限 }
FleetArrangement:
type : object
nullable : true
@@ -5291,7 +5296,11 @@ components:
pickupAt : { type : string, format : date-time, description : '取货日期时分,使用无偏移量的本地时间,不转换时区' }
deliveryAt : { type : string, format : date-time, description : '送货日期时分,不能早于取货时间,不转换时区' }
remark : { type : string, nullable : true, maxLength : 1000 }
LooseboardStatus : { type : string, enum : [ PENDING_ACCEPTANCE, WAITING_INBOUND, RECEIVING, WAITING_CONSOLIDATION, PENDING_DISPATCH, DISPATCHED, IN_TRANSIT, COMPLETED, CANCELLED] }
LooseboardStatus : { type : string, enum : [ FUNDING_PENDING, FUNDING_FAILED, PENDING_ACCEPTANCE, WAITING_INBOUND, RECEIVING, WAITING_CONSOLIDATION, PENDING_DISPATCH, DISPATCHED, IN_TRANSIT, COMPLETED, CANCELLED] }
MerchantLooseboardStatus:
type : string
description : 订单受理中、订单处理失败、待审核、待排车、待取货、取货中、派送中、已完成、已取消;只读运输进度,不作为平台状态推进命令。
enum : [ FUNDING_PENDING, FUNDING_FAILED, PENDING_ACCEPTANCE, PENDING_DISPATCH, DISPATCHED, PICKING_UP, IN_TRANSIT, COMPLETED, CANCELLED]
LooseboardStatusChange:
type : object
required : [ version, status, idempotencyKey]
@@ -5302,7 +5311,7 @@ components:
remark : { type : string, nullable : true, maxLength : 1000 }
LooseboardCreate:
type : object
required : [ operatingWarehouseId, deliveryMode, destinationContactName, destinationContactPhone, pickupAt, deliveryAt, destination, estimatedPalletCount, packageCount, totalWeightKg, totalVolumeCbm, idempotencyKey]
required : [ operatingWarehouseId, deliveryMode, destinationContactName, destinationContactPhone, pickupAt, deliveryAt, destination, estimatedPalletCount, packageCount, totalWeightKg, totalVolumeCbm, budgetAmount, idempotencyKey]
properties:
deliveryMode : { type : string, enum : [DELIVERY_TO_WAREHOUSE, WAREHOUSE_PICKUP], description : 送货到仓或仓库上门取货 }
operatingWarehouseId : { type : string, description : 实际收货海外仓ID }
@@ -5321,7 +5330,7 @@ components:
packageCount : { type : integer, minimum : 0 }
totalWeightKg : { type : number, minimum : 0 }
totalVolumeCbm : { type : number, minimum : 0 }
budgetAmount : { type : number, nullable : true, minimum : 0 }
budgetAmount : { type : number, minimum : 0, multipleOf : 0.01 }
currency : { type : string, minLength : 3, maxLength : 3, default : USD }
originContactName : { type : string, minLength : 1, maxLength : 128 }
originContactPhone : { type : string, minLength : 1, maxLength : 128 }
@@ -6771,6 +6780,7 @@ components:
DispatchOrderDetail:
type : object
x-java-record : DispatchViews.OrderDetail
description : 散板按客户和权威商业订单汇总一行,实托去重计数;重量体积仅完整可分摊时汇总,未知不补零。普通来源保持原展示语义。
properties:
customerId:
type : string
@@ -6808,6 +6818,11 @@ components:
sourceBusinessNo:
type : string
nullable : true
sourceKeys:
type : array
items:
type : string
description : 本展示行包含的全部原来源键,只用于只读关联,不能作为新增或删除货物的命令身份。
required:
- customerId
- customerName
@@ -6821,6 +6836,7 @@ components:
- sourceKey
- sourceBusinessType
- sourceBusinessNo
- sourceKeys
DispatchDetail:
type : object
x-java-record : DispatchViews.Detail
@@ -8504,7 +8520,9 @@ components:
pattern : ^[1-9][0-9]*$
returnSelections:
type : array
description : 退回海外仓必填。来源必须属于本车派送,箱数不超过原拣货及未签收余量 。
description : 退回海外仓必填,可同时选择同一派送下多张原订单,每个deliveryNo和lastMileOrderId组合只允许一项,各原单分别生成异常。同一派送在行锁内核验批次总退回量不超过未签收余量;所有来源属于本车及对应原单,任一失败整批回滚,原幂等键重放不重复建单或冻结 。
minItems : 1
maxItems : 200
items:
type : object
required : [ deliveryNo, lastMileOrderId, items]