Skip to content

ERP · MES · WMS 三系统联动 ​

三套系统各自独立完整、可单独交付,联合部署时又能自动协同运转——本文详细介绍 ERP(企业资源计划)、MES(制造执行)、WMS(仓储管理) 三个系统之间的联动关系。

一、三个系统各自是什么 ​

系统定位核心能力
ERP 企业资源计划企业经营大脑:管钱、管订单、管账面采购管理、销售管理、库存核算、财务收付款、经营报表
WMS 仓储管理仓库现场:管实物入库、出库、移库、盘点、库内作业、实物库存
MES 制造执行车间现场:管生产生产工单、工艺路线、报工、领料、完工产出、来料/制程/出货检验、设备管理

三个系统在代码层面完全独立、互不依赖:可以只买其中一套单独使用,也可以三套联合部署,还可以用第三方同类系统替换其中任何一套,其余两套无需任何改动。

二、联动总览 ​

三系统通过事件驱动方式联动:任何一个系统完成一项业务动作(如"采购订单审核通过"),都会向集成事件总线发布一条标准事件,关心这件事的其他系统自动接收并处理。发布方不需要知道谁在消费,没有消费者时系统照常运行。

┌─────────────┐      ┌──────────────────────┐      ┌─────────────┐
│   ERP 系统   │      │                      │      │   WMS 系统   │
│  订单/账面    │◄────►│   集成事件总线(MQ)     │◄────►│  实物/作业    │
└──────┬──────┘      │  · 标准事件契约        │      └──────┬──────┘
       │             │  · 可靠投递(不丢单)     │             │
       │             │  · 幂等消费(不重单)     │             │
       │             └──────────┬───────────┘             │
       │                        │                         │
       │        ┌───────────────┴───────────┐             │
       └───────►│        MES 系统           │◄────────────┘
                │   生产/质检/设备            │
                └───────────────────────────┘

四条核心原则:

原则说明
事件驱动系统间只通过标准事件交互,彼此零依赖
契约统一事件格式由公共契约包统一定义,谁实现契约谁就能接入
最终一致联动允许秒级延迟,但通过本地事件表 + 幂等 + 对账保证不丢单、不重单
可分可合总开关可整体关闭,关闭后各系统行为与独立部署完全一致

三、主数据同步(一处维护,三处生效) ​

联合部署时,基础主数据只需在一个系统维护,自动同步到其他系统:

主数据权威源同步到对齐方式
物料ERPWMS、MES以 ERP 产品编码为全局物料键,三系统精确对齐
客户 / 供应商ERPWMS、MES编码以 ERP 为准,自动建档/更新
仓库WMSERP、MES联合部署时实物仓库以 WMS 为准
BOM(物料清单)MES不下发BOM 属于 MES 的工艺资产,由完工事件携带用量明细
  • 主数据缺失时消费侧自动创建兜底(如默认分类、默认单位),不阻塞业务链路
  • 单独交付某个系统时,主数据权威源配置为"本地",各管各的,行为与传统单系统一致

四、业务联动场景(13 条链路) ​

4.1 采购协同链 ​

ERP 采购订单审核通过 → 仓库备货 + 车间待检 → 收货完成回传记账

  1. ERP 采购订单审核通过,事件同时送达 WMS 和 MES:
    • WMS 自动预生成一张"采购入库单"(关联采购订单号),仓库据此收货
    • MES 自动生成"到货通知单",明细默认免检直接收货;需要来料检验(IQC)的物料可人工开启"是否检验"开关进入待检
  2. 仓库在 WMS 完成收货 → WMS 发布入库完成事件 → ERP 自动生成采购入库单并审核,账面库存增加,同时按行回写采购订单的已入库数量
  3. 若走了 MES 来料检验,检验完成后按合格数 / 不合格数回传 ERP:合格数入库,不合格数生成退货建议

4.2 销售与生产协同链 ​

ERP 销售订单 → MES 排产 → 车间领料生产 → 完工入库 → 仓库发货 → 回传记账

  1. ERP 销售订单审核通过 → MES 自动生成销售发货通知,并可选自动创建生产工单(工单关联销售订单号)
  2. 车间领料:MES 领料单完成 → WMS 自动生成"生产出库单",物料从仓库发到产线
  3. 车间报工完工:MES 发布完工事件 → WMS 自动生成"生产入库单",成品入仓库;同时 ERP 自动生成其它入库单(生产入库),账面增加
  4. 仓库发货:WMS 销售出库完成 → ERP 自动生成销售出库单并审核,账面扣减、回写销售订单已发货数量
  5. 出货检验(OQC):MES 出货检验结果回传 ERP,可配置为不合格阻断发货

4.3 退货协同链 ​

  • ERP 采购退货审核 → WMS 自动生成退货出库单
  • ERP 销售退货审核 → WMS 自动生成退货入库单(货品退回仓库)

IMPORTANT

反审批操作约定:当前联动仅覆盖正向流转——ERP 反审批(取消审核)不会自动撤回下游已生成的单据。已在下游产生入库/退货记录的订单,ERP 会自动禁止反审批;处于「已审核未执行」窗口期的订单,请先在 WMS/MES 人工删除对应的未执行单据,再进行反审批,避免产生孤立单据。

4.4 库存对账 ​

每日凌晨自动对账任务,比对三系统的单据量与库存快照,差异自动告警;管理后台「基础设施 → 集成监控」提供集成事件查询、失败事件重发等治理工具(详见下文第九节)。

场景速查表 ​

#链路触发方自动动作
1采购订单审核ERPWMS 预生成采购入库单
2采购订单审核ERPMES 生成到货通知 + IQC 待检
3WMS 采购入库完成WMSERP 生成采购入库单并审核、回写订单数量
4MES 收货/来料检验完成MESERP 按合格数入库
5销售订单审核ERPMES 生成发货通知,可选自动建生产工单
6MES 领料完成MESWMS 生成生产出库单
7MES 报工完工MESWMS 生产入库 + ERP 其它入库
8WMS 销售出库完成WMSERP 生成销售出库单并审核、回写订单数量
9WMS 库存变动(可选)WMSERP 账面同步(默认关闭,推荐仅对账用)
10MES 出货检验结果MESERP 标记质检结果,可阻断发货
11采购退货审核ERPWMS 生成退货出库单
12每日对账定时任务三系统差异比对与告警
13销售退货审核ERPWMS 生成退货入库单

五、库存怎么管?——"三本账"各记各的,事件保持一致 ​

三个系统的库存用途不同,因此各自记账、互不替代:

系统库存定位用途
ERP财务账面库存成本核算、收付款、销售可发货量
WMS实物作业库存收货、拣货、移库、盘点的执行依据
MES线边现场库存工单用料、在制品、产出暂存

联合部署时的规则:

  • 实物动作权威在 WMS:所有真实的出入库都发生在仓库现场(WMS)
  • ERP 账面靠单据回传驱动:仓库每完成一张入库/出库单,ERP 自动生成对应单据并审核记账——账务有完整单据可追溯
  • MES 只管线边:领料从仓库"发"到线边、报工按 BOM 消耗线边、完工从线边入仓库
  • 盘点在 WMS 做:盘盈亏结果通过事件让 ERP 生成对应调整单
  • 每日对账兜底,保证三本账账实一致

六、可独立交付,也可被替换 ​

交付形态说明
单独交付 ERP / WMS / MES任一系统可独立交付客户,关闭集成开关即可,无任何残留依赖
三系统联合部署全链路自动协同,各链路可按需开关(如客户只要"采购→入库"联动)
用第三方系统替换任一套客户已有金蝶/用友 ERP?第三方按事件契约发布采购/销售事件,即可驱动本平台 WMS+MES;同理可替换 WMS 或 MES,其余系统零改动

两种第三方接入方式:

  1. Java 接入:引入事件契约 jar 包,直接发送/消费标准事件
  2. 异构系统接入:按 JSON 格式直连消息队列,或经平台网关的 REST 转发接口

七、实施配置参考 ​

yaml
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 + 消费方唯一)。判断「下游为什么没生成单据」时:

  1. 先在发件箱按单号找到事件,确认状态为「已发送」(投递正常)
  2. 再在消费记录按事件 ID 查询,看哪个消费方缺失——缺失的一方就是问题环节

常见缺失原因:依赖的主数据(供应商/物料)尚未同步,消费端正在自动重试等待中;主数据补齐后,下一次重试会自动完成落单,超时未完成则回发件箱手工重发。

事件 ID 点击即可复制,便于在两个页面之间比对。

9.3 典型排查路径(示例) ​

场景:ERP 审核了采购订单,WMS 里没有出现采购入库单。

步骤操作结论
1发件箱搜订单号 → 事件存在、状态=已发送投递正常,问题在消费端
2消费记录查该事件 → 缺 wms-purchase-order-approvedWMS 消费失败或重试中,后端日志有具体原因(如"供应商未同步")
3ERP 补齐主数据(编辑供应商保存触发同步)重试自动完成;若已超时,回发件箱点重发补单

9.4 权限与菜单 ​

权限标识说明
infra:integration-outbox:query发件箱查询
infra:integration-outbox:resend事件重发
infra:integration-consumed:query消费记录查询

菜单位于「基础设施 → 集成监控」目录下,角色分配对应菜单权限后可见。


📖 相关文档: