ERP · MES · WMS 三系统联动
三套系统各自独立完整、可单独交付,联合部署时又能自动协同运转——本文详细介绍 ERP(企业资源计划)、MES(制造执行)、WMS(仓储管理) 三个系统之间的联动关系。
一、三个系统各自是什么
| 系统 | 定位 | 核心能力 |
|---|---|---|
| ERP 企业资源计划 | 企业经营大脑:管钱、管订单、管账面 | 采购管理、销售管理、库存核算、财务收付款、经营报表 |
| WMS 仓储管理 | 仓库现场:管实物 | 入库、出库、移库、盘点、库内作业、实物库存 |
| MES 制造执行 | 车间现场:管生产 | 生产工单、工艺路线、报工、领料、完工产出、来料/制程/出货检验、设备管理 |
三个系统在代码层面完全独立、互不依赖:可以只买其中一套单独使用,也可以三套联合部署,还可以用第三方同类系统替换其中任何一套,其余两套无需任何改动。
二、联动总览
三系统通过事件驱动方式联动:任何一个系统完成一项业务动作(如"采购订单审核通过"),都会向集成事件总线发布一条标准事件,关心这件事的其他系统自动接收并处理。发布方不需要知道谁在消费,没有消费者时系统照常运行。
┌─────────────┐ ┌──────────────────────┐ ┌─────────────┐
│ ERP 系统 │ │ │ │ WMS 系统 │
│ 订单/账面 │◄────►│ 集成事件总线(MQ) │◄────►│ 实物/作业 │
└──────┬──────┘ │ · 标准事件契约 │ └──────┬──────┘
│ │ · 可靠投递(不丢单) │ │
│ │ · 幂等消费(不重单) │ │
│ └──────────┬───────────┘ │
│ │ │
│ ┌───────────────┴───────────┐ │
└───────►│ MES 系统 │◄────────────┘
│ 生产/质检/设备 │
└───────────────────────────┘四条核心原则:
| 原则 | 说明 |
|---|---|
| 事件驱动 | 系统间只通过标准事件交互,彼此零依赖 |
| 契约统一 | 事件格式由公共契约包统一定义,谁实现契约谁就能接入 |
| 最终一致 | 联动允许秒级延迟,但通过本地事件表 + 幂等 + 对账保证不丢单、不重单 |
| 可分可合 | 总开关可整体关闭,关闭后各系统行为与独立部署完全一致 |
三、主数据同步(一处维护,三处生效)
联合部署时,基础主数据只需在一个系统维护,自动同步到其他系统:
| 主数据 | 权威源 | 同步到 | 对齐方式 |
|---|---|---|---|
| 物料 | ERP | WMS、MES | 以 ERP 产品编码为全局物料键,三系统精确对齐 |
| 客户 / 供应商 | ERP | WMS、MES | 编码以 ERP 为准,自动建档/更新 |
| 仓库 | WMS | ERP、MES | 联合部署时实物仓库以 WMS 为准 |
| BOM(物料清单) | MES | 不下发 | BOM 属于 MES 的工艺资产,由完工事件携带用量明细 |
- 主数据缺失时消费侧自动创建兜底(如默认分类、默认单位),不阻塞业务链路
- 单独交付某个系统时,主数据权威源配置为"本地",各管各的,行为与传统单系统一致
四、业务联动场景(13 条链路)
4.1 采购协同链
ERP 采购订单审核通过 → 仓库备货 + 车间待检 → 收货完成回传记账
- ERP 采购订单审核通过,事件同时送达 WMS 和 MES:
- WMS 自动预生成一张"采购入库单"(关联采购订单号),仓库据此收货
- MES 自动生成"到货通知单",明细默认免检直接收货;需要来料检验(IQC)的物料可人工开启"是否检验"开关进入待检
- 仓库在 WMS 完成收货 → WMS 发布入库完成事件 → ERP 自动生成采购入库单并审核,账面库存增加,同时按行回写采购订单的已入库数量
- 若走了 MES 来料检验,检验完成后按合格数 / 不合格数回传 ERP:合格数入库,不合格数生成退货建议
4.2 销售与生产协同链
ERP 销售订单 → MES 排产 → 车间领料生产 → 完工入库 → 仓库发货 → 回传记账
- ERP 销售订单审核通过 → MES 自动生成销售发货通知,并可选自动创建生产工单(工单关联销售订单号)
- 车间领料:MES 领料单完成 → WMS 自动生成"生产出库单",物料从仓库发到产线
- 车间报工完工:MES 发布完工事件 → WMS 自动生成"生产入库单",成品入仓库;同时 ERP 自动生成其它入库单(生产入库),账面增加
- 仓库发货:WMS 销售出库完成 → ERP 自动生成销售出库单并审核,账面扣减、回写销售订单已发货数量
- 出货检验(OQC):MES 出货检验结果回传 ERP,可配置为不合格阻断发货
4.3 退货协同链
- ERP 采购退货审核 → WMS 自动生成退货出库单
- ERP 销售退货审核 → WMS 自动生成退货入库单(货品退回仓库)
IMPORTANT
反审批操作约定:当前联动仅覆盖正向流转——ERP 反审批(取消审核)不会自动撤回下游已生成的单据。已在下游产生入库/退货记录的订单,ERP 会自动禁止反审批;处于「已审核未执行」窗口期的订单,请先在 WMS/MES 人工删除对应的未执行单据,再进行反审批,避免产生孤立单据。
4.4 库存对账
每日凌晨自动对账任务,比对三系统的单据量与库存快照,差异自动告警;管理后台「基础设施 → 集成监控」提供集成事件查询、失败事件重发等治理工具(详见下文第九节)。
场景速查表
| # | 链路 | 触发方 | 自动动作 |
|---|---|---|---|
| 1 | 采购订单审核 | ERP | WMS 预生成采购入库单 |
| 2 | 采购订单审核 | ERP | MES 生成到货通知 + IQC 待检 |
| 3 | WMS 采购入库完成 | WMS | ERP 生成采购入库单并审核、回写订单数量 |
| 4 | MES 收货/来料检验完成 | MES | ERP 按合格数入库 |
| 5 | 销售订单审核 | ERP | MES 生成发货通知,可选自动建生产工单 |
| 6 | MES 领料完成 | MES | WMS 生成生产出库单 |
| 7 | MES 报工完工 | MES | WMS 生产入库 + ERP 其它入库 |
| 8 | WMS 销售出库完成 | WMS | ERP 生成销售出库单并审核、回写订单数量 |
| 9 | WMS 库存变动(可选) | WMS | ERP 账面同步(默认关闭,推荐仅对账用) |
| 10 | MES 出货检验结果 | MES | ERP 标记质检结果,可阻断发货 |
| 11 | 采购退货审核 | ERP | WMS 生成退货出库单 |
| 12 | 每日对账 | 定时任务 | 三系统差异比对与告警 |
| 13 | 销售退货审核 | ERP | WMS 生成退货入库单 |
五、库存怎么管?——"三本账"各记各的,事件保持一致
三个系统的库存用途不同,因此各自记账、互不替代:
| 系统 | 库存定位 | 用途 |
|---|---|---|
| ERP | 财务账面库存 | 成本核算、收付款、销售可发货量 |
| WMS | 实物作业库存 | 收货、拣货、移库、盘点的执行依据 |
| MES | 线边现场库存 | 工单用料、在制品、产出暂存 |
联合部署时的规则:
- 实物动作权威在 WMS:所有真实的出入库都发生在仓库现场(WMS)
- ERP 账面靠单据回传驱动:仓库每完成一张入库/出库单,ERP 自动生成对应单据并审核记账——账务有完整单据可追溯
- MES 只管线边:领料从仓库"发"到线边、报工按 BOM 消耗线边、完工从线边入仓库
- 盘点在 WMS 做:盘盈亏结果通过事件让 ERP 生成对应调整单
- 每日对账兜底,保证三本账账实一致
六、可独立交付,也可被替换
| 交付形态 | 说明 |
|---|---|
| 单独交付 ERP / WMS / MES | 任一系统可独立交付客户,关闭集成开关即可,无任何残留依赖 |
| 三系统联合部署 | 全链路自动协同,各链路可按需开关(如客户只要"采购→入库"联动) |
| 用第三方系统替换任一套 | 客户已有金蝶/用友 ERP?第三方按事件契约发布采购/销售事件,即可驱动本平台 WMS+MES;同理可替换 WMS 或 MES,其余系统零改动 |
两种第三方接入方式:
- Java 接入:引入事件契约 jar 包,直接发送/消费标准事件
- 异构系统接入:按 JSON 格式直连消息队列,或经平台网关的 REST 转发接口
七、实施配置参考
pointlion:
integration:
enabled: true # 集成总开关(单独交付时设为 false)
mode: rocketmq # rocketmq | local(无 MQ 环境演示用)
master-source:
material: erp # 物料权威源:erp | wms | mes | local
partner: erp # 客户/供应商权威源
warehouse: wms # 仓库权威源
consumer:
auto-approve: true # 回传生成的单据是否自动审核
inventory-sync: false # 库存变动同步(与单据回传记账互斥,默认关闭仅对账)
sale-to-work-order: false # 销售订单自动创建生产工单(默认关闭)
wms-authority: pointlion-wms # MES 库存记账模式(联合部署/单独交付 MES 时不同)
outbox:
batch-size: 100 # 事件发送每轮扫描条数
max-retry: 5 # 发送失败最大重试次数实施说明:集成行为由上述配置控制——总开关、主数据权威源、单据自动审核、库存同步、销售订单自动建工单等均可按需配置;联动生成的单据带"集成来源"标记,与手工单据可区分。
八、可靠性保障(不丢单、不重单)
| 机制 | 说明 |
|---|---|
| 本地事件表(outbox) | 业务单据落库与事件记录在同一事务写入,后台任务可靠投递,MQ 短暂不可用时事件先落库不丢失 |
| 消费幂等 | 消费端按事件 ID 幂等,重复投递自动忽略 |
| 分批收货累加 | 一张采购订单分多次到货时,数量自动累加到同一张下游单据,并校验不超订单数量 |
| 重试 + 死信告警 | 消费失败自动重试,超限进入死信并告警 |
| 每日对账 | 自动比对三系统单据与库存,差异告警并生成调整建议 |
| 管控台 | 管理后台「集成监控」可查询全部集成事件、消费情况与失败原因,一键重发(见第九节) |
九、集成监控与事件治理(管理后台)
联合部署后,管理后台「基础设施 → 集成监控」下提供两个子页面,实时查看三系统之间的事件流转与消费情况,是排查联动问题的第一入口,无需登录数据库。
9.1 集成发件箱
记录每一个已发布的集成事件及其投递状态:
| 列 | 说明 |
|---|---|
| 事件类型 | 如 INTEGRATION_PURCHASE_ORDER_APPROVED(采购订单审核) |
| 来源 | 发布方系统:ERP / WMS / MES |
| 聚合ID(单号) | 关联的业务单号(如采购订单号),支持模糊搜索 |
| 状态 | 待发送(已落库、等待投递任务发送)/ 已发送(成功送达消息队列)/ 发送中 / 失败(重试超限,红色) |
| 重试次数 / 失败原因 | 投递异常时记录具体原因 |
| 最后发送时间 / 创建时间 | 投递与业务发生时间 |
支持按事件类型、状态、来源、单号、时间范围组合筛选;点击详情可查看事件完整 JSON 报文(含明细行、数量、单位等业务信息)。
重发操作:状态为「已发送 / 发送中 / 失败」的事件可点击重发,事件将重新置回待发送队列并在一分钟内投递。重发投递的是同一事件 ID,已成功消费的下游系统按幂等记录自动跳过,不会产生重复单据。典型用途:
- 消费端故障恢复后补发(消息已过重试期限、进入死信)
- 发送失败(状态=失败)的问题修复后重新投递
9.2 集成消费记录
记录每个系统对每个事件的消费情况(事件 ID + 消费方唯一)。判断「下游为什么没生成单据」时:
- 先在发件箱按单号找到事件,确认状态为「已发送」(投递正常)
- 再在消费记录按事件 ID 查询,看哪个消费方缺失——缺失的一方就是问题环节
常见缺失原因:依赖的主数据(供应商/物料)尚未同步,消费端正在自动重试等待中;主数据补齐后,下一次重试会自动完成落单,超时未完成则回发件箱手工重发。
事件 ID 点击即可复制,便于在两个页面之间比对。
9.3 典型排查路径(示例)
场景:ERP 审核了采购订单,WMS 里没有出现采购入库单。
| 步骤 | 操作 | 结论 |
|---|---|---|
| 1 | 发件箱搜订单号 → 事件存在、状态=已发送 | 投递正常,问题在消费端 |
| 2 | 消费记录查该事件 → 缺 wms-purchase-order-approved | WMS 消费失败或重试中,后端日志有具体原因(如"供应商未同步") |
| 3 | ERP 补齐主数据(编辑供应商保存触发同步) | 重试自动完成;若已超时,回发件箱点重发补单 |
9.4 权限与菜单
| 权限标识 | 说明 |
|---|---|
infra:integration-outbox:query | 发件箱查询 |
infra:integration-outbox:resend | 事件重发 |
infra:integration-consumed:query | 消费记录查询 |
菜单位于「基础设施 → 集成监控」目录下,角色分配对应菜单权限后可见。
📖 相关文档:
