← 返回文章列表

两个业务系统怎样对接:从订单编号和字段归属开始

销售系统有订单,仓库系统有出库记录,直接互相复制容易造成编号错配和状态覆盖。本文用一张订单说明字段归属、编号对应、同步失败与对账规则,并提供可填写的对接清单。

直接结论:系统对接先确定每项数据由谁负责,再建立稳定的编号对应;发送成功、目标受理和业务完成必须分别核对。

适用读者:需要连接订单、仓库、客户或其他已有系统,且不准备整体替换软件的团队。

同一张订单,在两个系统里可能有两个编号

假设销售系统中的订单 SO1047,客户编号为 C018,订购商品 P03 共 100 件。仓库系统接收后生成单号 WH2086,并已出库 40 件。两边都记录订单信息,但承担的工作不同:销售系统负责客户订购了什么,仓库系统负责实际发出了什么。

对接需要保存 SO1047 与 WH2086 的对应关系。客户名称和商品名称可以用于展示,不能仅凭它们建立匹配:名称可能重名、简称不同,也可能被后续修改。如果没有稳定编号,先建立并确认映射表,再讨论自动同步。

每个字段只能有清楚的数据归属

示例:销售与仓库的字段归属
字段负责系统对接处理
客户、商品、订购数量销售系统仓库接收确认后的订单数据
实际出库数量、出库日期仓库系统回传销售端用于查看履约进度
订单取消或数量修改销售端发起业务变更已出库时转人工处理,不能覆盖历史
两端编号对应关系对接记录保存来源编号、目标编号与处理状态

在例子中,订购 100 件与已出库 40 件并不冲突。若直接把两个系统同名的“数量”字段双向覆盖,就可能把订购数量错误改为 40。字段名称相似,不代表业务含义相同。

把一次同步拆成可追踪的几个阶段

建议为每次操作记录来源订单号、操作类型和业务版本。流程先读取 SO1047 的已确认版本,再检查客户和商品映射,随后发送创建请求,最后记录仓库单号并核对关键字段。正式接口通常把底层数据封装为服务能力,应遵循其字段、权限和状态约定,而不是直接猜测数据库结构。

如果目标返回“已受理”,任务应停留在等待结果。Microsoft 的 API 设计资料说明,异步请求被受理与处理完成是不同状态。对于订单创建,取得目标单号后,还要核对商品、数量与目标业务状态,才有足够依据更新本次对接记录。

超时之后,先查有没有创建成功

最容易制造重复订单的情况是:仓库已经创建 WH2086,但回传途中断开,销售端只看到超时。此时直接重发“新建订单”,可能生成第二张单。对接设计应优先使用接口明确支持的去重或幂等机制;若没有,就按来源订单号查询目标系统,并在无法判断时转入待核查队列。

删除与取消也不能当成同一动作。销售人员取消 SO1047 时,仓库若已出库 40 件,应触发业务确认,保留发生过的出库事实。对接程序负责传递变更请求和显示结果,不自行决定退货、冲销或删除历史。

先做一份不写入的差异报告

接入前先取一批真实但经适当脱敏的订单,只读取两端数据,生成三类结果:编号无法对应、关键字段不一致、仅一端存在。假设抽取 20 张订单,其中 16 张一致、2 张商品映射缺失、2 张未出现在仓库,这份报告说明下一步需要修复什么;它不能直接证明后两张都应该新建。

完成映射和业务确认后,再用少量获准订单验证创建、更新、重复请求与中途失败。日常对账继续按来源编号比较,而不是只检查“两边总数相同”。两个系统各有 20 张单,也可能缺了不同的订单。

两系统对接约定表

来源系统:[名称]
目标系统:[名称]
第一期业务:[已确认订单同步]
稳定标识:[来源订单编号、目标单号、商品编号、客户编号]
字段归属:[订购数量归销售;已出库数量归仓库]
映射表:[来源编号、目标编号、确认人、更新时间]
触发条件:[哪个业务状态允许发送]
操作记录:[来源单号、操作类型、业务版本、目标单号、处理状态]
超时处理:[查询目标结果;无法判断时转人工;禁止直接重复新建]
变更限制:[已出库订单的取消和数量调整处理方式]
核对规则:[关键字段差异、仅单端存在、映射缺失]
首轮验证:[创建、更新、重复请求、超时、业务拒绝]

可直接选中文本,手动复制。

参考来源

遇到业务难题?我们一起寻找解决方案

告诉我们当前的问题与期望效果,为您提供切实可行的优化建议。

描述我的需求