制造

让 ERP 和 MES 说同一种话

150 人的制造企业,工单在 MES、物料在 ERP,报工靠人抄。我们没换系统,只在中间加了一层。

150 人企业规模
2 套ERP 与 MES 打通
1 层自建中间层
CONTEXT / 当时的问题

客户的 ERP 管物料与财务,MES 管工单与工序,两套系统各自成立,但之间没有接口。工单在 MES 里开工,领料要回 ERP 里手工录;工序报工由班组长填纸质单,月底再有人统一录进 ERP。结果是一批货的实际耗料和系统里的数字对不上,成本核算要反复核对,生产计划也不敢完全信系统。

APPROACH / 我们怎么做的

我们没有替换任何一方,而是在中间做了一层对接:先把物料、工单、工序三个对象的主数据对齐,定义唯一编号规则;再按「工单下发、领料申请、工序报工、完工入库」四个事件做接口,每个事件都带幂等键,重复推送不会重复记账。上线时先让历史工单在两边并行跑一个月,确认数字一致后再关闭人工录入。中间层独立部署,任何一侧系统升级都不影响另一侧。

DETAIL / 更多细节

问题:两套系统都「对」,但拼不到一起

这家企业约 150 人,做的是多品种、小批量的加工制造。ERP 用了几年,物料、库存、成本都在里面;MES 是后来上的,主要解决车间工单和工序进度。两个系统各自的报表都挺好看,但坐在一起开会就会吵架:

  • 车间说「我这边工单已经完工了」
  • 仓库说「系统里没看到领料」
  • 财务说「这个月的材料成本对不上」

根源不在系统,而在中间那段靠人搬运的数据。纸质报工单 → 月底集中录入,等于把实时数据变成了月度数据,中间还夹着抄错、漏抄、事后回忆。

做法:不动两边,中间架一层

1. 先对齐三个对象

工单、物料、工序——这三个东西在两个系统里都有,但编号规则不同。我们先把它们定成一组唯一编号,作为两边交流的「普通话」。这一步不做,后面所有接口都会歪。

2. 只做四个事件

不做全量同步(那会变成两套系统的镜像,维护成本极高),只做业务真正需要的四个动作:

  • 工单下发:ERP 建单后推给 MES
  • 领料申请:MES 发起,ERP 记账
  • 工序报工:MES 现场报,实时回传 ERP
  • 完工入库:MES 完工触发,ERP 入库

每个事件都带幂等键。车间网络不稳、接口重试,都不会造成重复扣料或重复入库。

3. 并行一个月再切换

最危险的不是接口能不能通,而是「通了以后数字对不对」。所以上线策略是:新工单走接口,同时保留人工录入,一个月后逐项比对,一致才关掉人工入口。

结果

报工数据从「月底集中录入」变成「现场实时回传」,成本核算不再依赖回忆;两套系统各自的报表第一次能对上。中间层独立部署,后续任一侧升级都不影响另一侧。

这个项目里我们做的最重要的一件事,其实是说服客户不要换系统——两套系统都在正常运转,问题只在那段没有接口的缝隙。