Skip to content

制造企业MES系统与ERP数据对接

项目概览

项目信息详情
行业制造业(精密制造)
企业规模中型制造企业,多条生产线
项目周期3个月
产品/技术金蝶云星空 + MES系统 + C#插件开发
角色系统集成开发工程师

项目背景

客户是一家精密制造企业,已部署金蝶云星空ERP系统用于企业资源管理,同时拥有独立的MES(制造执行系统)用于车间生产管理。由于两个系统独立运行,导致:

  1. 数据孤岛:MES系统中的生产数据(设备运行数据、质检数据、工序汇报等)无法自动同步到ERP系统
  2. 人工重复录入:车间操作员需要在MES系统录入数据后,再手动在ERP系统中重复录入相同信息
  3. 数据一致性差:人工录入容易出错,导致两个系统数据不一致
  4. 决策滞后:管理层无法实时获取生产现场数据,影响决策时效性

客户迫切需要一个稳定、高效的数据对接方案,实现MES与ERP系统的数据实时同步。

核心挑战

1. 异构系统数据格式差异

MES系统和ERP系统的数据结构差异巨大:

  • MES系统使用关系型数据库存储,字段命名规范与ERP完全不同
  • ERP系统使用金蝶BOS平台的动态对象模型,需要通过WebAPI接口进行数据操作
  • 数据类型映射复杂,需要处理各种数据类型的转换

2. 实时性要求高

生产数据需要实时同步到ERP系统,延迟不能超过5分钟,否则会影响:

  • 生产进度跟踪的准确性
  • 库存数据的实时性
  • 财务成本核算的及时性

3. 数据完整性与一致性

必须确保数据在传输过程中不丢失、不重复,并且保持一致性:

  • 需要实现事务机制,确保数据要么全部成功,要么全部回滚
  • 需要处理网络中断、系统异常等异常情况
  • 需要实现数据校验机制,确保数据质量

4. 系统性能要求

生产高峰期,MES系统会产生大量数据,对接方案必须:

  • 支持批量数据处理,避免逐条处理导致的性能瓶颈
  • 实现异步处理机制,不影响MES和ERP系统的正常运行
  • 具备良好的扩展性,能够适应未来业务增长

解决方案

架构设计

采用插件化 + 中间层的架构设计:

MES系统 → 数据采集层 → 数据处理层 → 金蝶WebAPI → ERP系统
  1. 数据采集层:通过C#插件直接连接MES数据库,读取设备数据、质检数据等
  2. 数据处理层:实现数据转换、映射、校验等逻辑
  3. 接口调用层:通过金蝶WebAPI接口,将数据写入ERP系统

核心技术实现

1. 动态表单插件开发

开发金蝶云星空动态表单插件,实现:

  • 数据库连接配置:支持配置MES数据库连接信息
  • SQL查询配置:支持自定义SQL查询语句
  • 数据预览:在ERP界面中直接预览MES数据
  • 数据导入:支持单条导入和批量导入
csharp
[Description("读取设备数据表单插件"), HotUpdate]
public class MachineDataReaderFormPlugin : AbstractDynamicFormPlugIn
{
    // 数据库连接配置
    private string path = string.Empty;
    private string sql = string.Empty;
    
    // 动态元数据重构
    private void ReBuildFields()
    {
        // 根据MES数据结构动态创建ERP表单字段
    }
}

2. 动态元数据映射

实现动态元数据映射机制,自动处理字段映射:

  • 根据MES数据库表结构,动态创建ERP表单字段
  • 支持字段类型自动转换
  • 支持字段名称映射配置

3. WebAPI数据写入

通过金蝶WebAPI接口实现数据写入:

  • 构建标准的WebAPI请求JSON
  • 实现数据验证和错误处理
  • 支持批量数据提交
csharp
private string buildJson(DynamicObject data)
{
    JSONObject json = new JSONObject();
    json.Put("NeedUpDateFields", new string[0]);
    json.Put("IsDeleteEntry", true);
    
    JSONObject model = new JSONObject();
    foreach (DataColumn column in dt.Columns)
    {
        model.Put("F_TTBO_" + column.ColumnName, data[column.ColumnName]);
    }
    
    json.Put("Model", model);
    return JsonConvert.SerializeObject(json);
}

4. 异常处理与重试机制

实现完善的异常处理机制:

  • 网络异常自动重试
  • 数据验证失败详细日志记录
  • 事务回滚机制
  • 异常数据隔离处理

项目成果

指标改进前改进后提升
数据同步延迟4-8小时(人工录入)<5分钟(自动同步)提升98%
数据录入错误率3-5%<0.1%降低97%
人工录入工作量每天4-6小时0(自动化)节省100%
数据一致性70-80%99.9%提升25%
生产报表生成时间2-3小时(人工汇总)实时(自动生成)提升99%

业务价值

  1. 效率提升:彻底消除人工重复录入,车间操作员可以专注于生产任务
  2. 数据质量:数据一致性从70-80%提升到99.9%,为管理决策提供可靠依据
  3. 实时监控:管理层可以实时查看生产进度、设备状态、质检结果等关键指标
  4. 成本节约:每年节省约1200小时的人工录入时间,减少数据错误导致的损失
  5. 系统扩展:为未来MES系统升级、新增生产线提供了可复用的集成框架

技术栈

  • 开发语言:C# .NET Framework 4.7.2
  • ERP平台:金蝶云星空 BOS平台
  • 数据库:SQL Server(MES系统)+ 金蝶云星空数据库
  • 接口技术:金蝶WebAPI、RESTful API
  • 开发工具:Visual Studio 2022、金蝶BOS IDE
  • 版本控制:Git
  • 部署方式:金蝶云星空插件部署

经验总结

做得好的

  1. 插件化架构设计:采用插件化架构,使得数据对接逻辑与ERP系统解耦,便于维护和扩展
  2. 动态元数据映射:实现了动态字段映射机制,大大减少了硬编码,提高了系统的灵活性
  3. 完善的异常处理:实现了多层次的异常处理机制,确保系统稳定运行
  4. 用户友好的界面:在ERP系统中提供了直观的数据预览和导入界面,降低了用户使用门槛

可以改进的

  1. 消息队列引入:可以考虑引入消息队列(如RabbitMQ)来进一步提高数据处理的可靠性和性能
  2. 监控告警机制:可以增加数据同步监控和告警机制,及时发现和处理异常情况
  3. 数据同步日志:可以增加更详细的数据同步日志,便于问题排查和审计
  4. 配置界面优化:可以开发更友好的配置界面,让用户可以自行配置数据映射规则

本案例已经脱敏处理,不包含真实企业名称和敏感业务数据

最近更新

案例库 - 脱敏后的项目经验分享