订单履约流程

订单履约流程

本文档整理跨境电商订单从多平台接入到最终完结的完整履约流程,包含状态管理、异常处理、分仓选物流逻辑等。


一、订单履约八步流程

第 1 步:多平台订单接入落库

定时拉取各平台订单,按「平台 + 平台订单号」做幂等校验,校验通过写入原始订单主表、子表。

第 2 步:数据标准化,生成 ERP 标准订单

对原始订单数据清洗、字段映射,统一币种、时区、SKU,生成 ERP 标准订单主表、子表、地址表。

第 3 步:订单校验,生成待审核单

依次校验以下规则:

  • 订单数量超额
  • 收货地址不全或违法
  • 买家邮件黑名单
  • 全仓库存不足
  • 买家存在留言

校验不通过标记原因,流转人工审核。

第 4 步:智能分仓,库存预占

自动 / 人工执行最优分仓策略,按分配仓库生成销售出库单及出库明细,完成库存预占锁定。

第 5 步:包裹装箱,物流预下单

自动 / 人工根据出库单拆分包裹;调用物流商接口预下单,获取物流追踪号并生成快递面单。

第 6 步:下发 WMS,接收拣货回调

将出库单、包裹信息、面单下发至 WMS 系统;WMS 完成拣货打包后,回调 OMS 通知状态变更。

第 7 步:平台标记发货,释放锁定库存

收到 WMS 打包完成回调后,向电商平台推送发货通知,同时释放预占锁定库存,二次向仓储发送确认指令确保不产生非法出库。

第 8 步:物流轨迹跟踪,订单完结

定时拉取包裹物流轨迹,持续更新包裹运输状态;所有包裹签收完成,订单正式完结。


二、涉及的单据主状态

单据 状态
平台订单 待付款、待发货、部分发货、已发货、已取消
ERP 订单 待审核、待发货、已发货、已完成、终止
出库单 待发货、已发货、终止
包裹单 待发货、运输中、已签收

三、异常情况处理

异常 1:物流商面单申请失败 / 仓库实际出库失败

释放库存,取消面单,作废涉及包裹单、出库单,订单重新走待审核流程,记录异常事件。

异常 2:收到买家修改 SKU、数量、地址、取消订单

根据 ERP 订单当前状态分别处理:

当前状态 处理方式
待审核 给订单打上异常事件标签,重新进行审核修改,甚至取消订单
待发货 触发拦截,回调仓库撤回全部出库单发货指令,成功时释放库存,取消面单,作废涉及包裹单、出库单,订单重新走待审核流程,记录异常事件
其他状态 不予执行修改,走售后流程

四、设计原则

  • 内置状态机,强行校验状态流程
  • 状态变化时订单级别的锁
  • 数据库更新时乐观锁 SQL 语句
  • 写操作幂等判断
  • 事务一致性原则
  • 订单状态变化和下游事件同事务
  • 每一步状态变化留痕可追溯

五、最优分仓、选物流逻辑

刚性原则(必须满足)

  • 库存可用刚性原则
  • 时效满足原则

优化原则

在满足整单最少拆原则下,做时效优先、成本优先原则的取舍,或取得综合平衡。

本质就是穷举候选仓库与可发物流,选排名中位数方案。


六、标发逻辑

标发填入底层物流商、追踪号、以及包裹明细。


七、物流对接逻辑

物流对接对接了云途(国内货代,屏蔽底层物流商对接),传入:

  • 业务订单号
  • 业务包裹号
  • 收发货地址
  • 包裹尺寸
  • 商品明细

得到面单和追踪号。

关于贪心背包算法,实际上呢就是首先用最大的箱子去将所有商品分组,分组之前呢所有商品都按体积从大到小排序,并且旋转得到长宽高的边,之后呢从大到小一件一件的往最大的箱子里塞。在此时呢要判断重量和剩余体积是不是超限,分完组之后呢,再将每一组用最小的包裹去进行适配,最终得到最优的装箱策略,装箱和装卡车是一个逻辑。这样呢就实现了包裹数,最少并且包裹最少。

相关推荐
yuniko-n15 小时前
【JVM】强、软、弱、虚引用
jvm
01二进制代码漫游日记19 小时前
[C++]之内存管理(一)
jvm·c++·学习
明天也要努力学习2 天前
深入理解 JVM 垃圾回收(GC)
java·jvm
铁链鞭策大师2 天前
jvm基础
jvm
香蕉大香蕉(06敬畏市场)3 天前
高频八股 · JVM(8)
java·jvm·面试·八股·大厂实习
北冥you鱼3 天前
Go 语言 GORM 使用 Preload:从关联查询到嵌套预加载的完整实践
开发语言·jvm·golang
兔头?3 天前
JVM学习文档
jvm·学习
wuminyu3 天前
JVM规范学习总结:class执行性能差异
java·linux·c语言·jvm·c++
EVEN-09133 天前
Linux-线程控制
linux·jvm
刚入门的大一新生4 天前
Linux-线程概念
linux·jvm