标签搜索

金蝶ERP与数据中心同步数据方案

basil
2024-04-09 / 154 阅读

为什么要建设中间件?

不能完全去掉金蝶ERP

  • 公司早期没有上计划、采购、生产、仓库等系统,都在ERP上面进行,因此基础资料、计划、采购、生产、销售、仓库、财务等数据都在ERP上,数据比较完整且准确
  • 虽然上线VPS、MES、WMS、SRM、QMS系统后,计划、生产、采购、仓库可以使用这些系统代替,但是仍然需要依赖金蝶ERP的MRP运算以及财务模块
  • 将ERP作为结果数据的汇集中心,将各个系统的产生结果数据回写到ERP,将ERP作为公司各个业务模块数据分析报表的数据来源。

需要搭建供应链以及销售端相关系统与ERP数据同步的桥梁

为什么不直接连接ERP数据库读取和写入数据

ERP没有本地化,只能通过接口的方式读写数据

初期ERP托管在金蝶的云服务,考虑成本预算问题,并没有买断部署到本地,因此没有数据库的操作权限,只能通过金蝶ERP的webapi接口进行同步。

直接写入数据到ERP数据库需要对ERP内部逻辑完全熟悉

直接写入数据到erp数据这种方式会对ERP系统形成入侵,开发工作量巨大,同时一不小心就会影响ERP运行,是不合理的方式。

实现系统间数据同步统一管控

  • 避免每个系统重复开发同步功能,节省开发成本
  • 方便对数据同步进行统一管理,例如可视化、异常处理、限流等等

怎么建设中间件?

架构

中间价架构图
基于上述的背景,中间件的架构如上图,它的作用主要是通过api的方式定时从ERP拉取数据到中间件数据库,其它系统从中间件数据库读取数据,回写数据时,其它系统通过中间件的接口投递消息到回写队列,回写队列再通过ERP的api同步数据到ERP

遇到的问题与解决方案

ERP数据删除操作是物理删除

因为是物理删除,涉及的单据多,没有删除通知功能,其它系统无法知道ERP删除了单据,加上没有数据库权限,不能添加触发器,所以一开始找了金蝶ERP的工程师开发了插件,把删除的数据标记起来

漏数据

第三方插件不完善
增量时间不触发
分页问题
数据同频问题(vps)
erp触发全量数据更新,同步很慢
同一个单由于事务原因以及多次获取数据的原因,导致部分行没有同步到下游系统
批量投放生产订单,同时产生的生产用料清单数据量很大,同步时每次请求erp查询时间很长,最后更新字段也要加索引优化

解决办法

本地部署ERP

打触发器

不分页获取

0