BOM 物料清单同步实战:金蝶云星空 → 四化智造 MES 修改场景深度拆解

这个策略解决什么问题

在制造业 ERP + MES 的双系统架构里,BOM(物料清单)是车间领料、齐套分析、成本核算的源头。某制造企业的 ERP 端 BOM 一旦变更(用量调整、新增替代料、损耗率修订),MES 端如果不能及时反映,车间就会按旧版本投产,导致工单报废和库存虚增。本策略专门处理 BOM 的修改同步 :把金蝶云星空已审核或已关闭的 BOM,按修改/审批时间增量推到四化智造 MES 的 editBom 接口,确保车间侧始终拿着最新版工艺路线。

数据流向与字段映射

数据流向:金蝶云星空(BOM) → 轻易云数据集成平台 → 四化智造 MES(BOM editBom)。

平台作为中间层,负责取数、清洗、转换和下发,不持久化业务主数据。关键字段对照如下:

目标字段(MES) 源字段/规则(金蝶) 映射类型 说明
companyCode 固定常量 CONSTANT 公司代码
erpId FID DIRECT 金蝶 BOM 主键
erpParentId "0" CONSTANT 根节点固定为 0
materialUuid FMATERIALID DIRECT 父项物料主键
outerPartNo FMATERIALID_FNumber DIRECT 父项物料编码
doseSon "1" CONSTANT 用量分子(可改为 FNUMERATOR)
doseMom "1" CONSTANT 用量分母(可改为 FDENOMINATOR)
lossRate FSCRAPRATE DIRECT 变动损耗率
source FITEMPPROPERTY DIRECT 1 外购 / 2 自制 / 3 委外
property "1" CONSTANT 固定为实物
bomVersion FNumber DIRECT BOM 版本号
createName FCreatorId DIRECT 创建人
createTime REPLACE(FCreateDate,'T',' ') TRANSFORM ISO 时间转 YYYY-MM-DD HH:mm:ss
updateName FCreatorId DIRECT 修改人(可改为 FModifierId)
updateTime "" CONSTANT 可改为 REPLACE(FModifyDate,'T',' ')
items refund_order_list COLLECTION 子项集合,需单独配置

在轻易云上如何配置

在 Qeasy 轻易云数据集成平台里,这条策略对应一个独立的「同步方案」,配置分三块:

  1. 源端 :executeBillQuery(ENG_BOM)POST 查询,过滤条件为 FDocumentStatus in ('C','D') 且 FModifyDate|FApproveDate >= LAST_SYNC_TIME。LAST_SYNC_TIME 由平台自动维护,无需人工干预。
  2. 目标端 :WebAPI POST /api/bom/editBom,idCheck=true,意味着平台在写入前会拿 erpId 去 MES 端校验存在性,避免误创建。
  3. 字段映射 :表头走「字段对照」配置,表体(items)走「子项集合」配置,平台支持嵌套数组结构。_function REPLACE 直接写在表达式框里即可,平台还提供 _findCollection(跨方案联查)和 _mongoQuery(复杂条件)作为高级工具。

实施步骤

  • T0 增量起点 :首次上线时,把 LAST_SYNC_TIME 设为项目启动日 00:00:00,先跑一次「全量回灌」,把已审核 BOM 一次性推过去,确保两边基线一致。
  • T1 全量触发:在轻易云方案上点「全量执行」按钮,平台会忽略时间戳过滤,按当前过滤条件把符合状态的全部 BOM 推到 MES。建议放在凌晨业务低峰。
  • T2 调度频率 :crontab 设为 * 7-22 * * *,即每天 7:00--22:00 每整点执行一次。覆盖白班作业时间,夜间停机检修期避免无效调用。
  • T3 灰度与回滚:先用 1--2 个 BOM 单据验证表头+表体字段无误,再放开全量。轻易云每条同步都有运行日志,失败可单条重跑,不影响后续增量。
  • T4 监控告警:平台自带成功率看板,建议给「BOM 修改同步」单独建一个看板,失败率 > 1% 触发企业微信告警。

踩坑复盘

  1. 首坑:createTime 格式不一致 。金蝶返回的是 ISO 8601(2025-12-12T11:21:50),MES 接口要 YYYY-MM-DD HH:mm:ss。稳妥做法是直接用 _function REPLACE('{``{FCreateDate}}','T',' '),平台表达式框支持嵌套,不要在前置脚本里改,否则换环境会丢。
  2. 次坑:用量分子分母被默认成 1 。模板里 doseSon、doseMom 写死为 1,上线后才发现金蝶的 FNUMERATOR/FDENOMINATOR 没传过去,导致工单齐套全错。建议方案评审时就检查「未映射字段清单」,把用量、损耗这些业务强相关字段全部映射。
  3. updateName 错拿创建人 。修改场景下 updateName 取的是 FCreatorId,等于永远显示最初创建人。金蝶有 FModifierId 字段,正确做法是改 {``{FModifierId.FName}},这样审计追溯才准。
  4. 依赖物料未先同步 。BOM 的 materialUuid、outerPartNo 依赖父项物料已在 MES 存在。轻易云客户常见的应对模式是把这类依赖做成「序列 A→B」:先跑物料主数据(策略 A),再跑 BOM(策略 B),通过 depends_on 字段声明依赖,平台会自动等待。
  5. 表头表体分阶段上线。BOM 是父子结构,items 子项包含子物料、用量、损耗、行号等。一开始就表头表体一起推,出问题很难定位。稳妥做法是先表头后表体:第一阶段只推表头,验证 erpId/materialUuid;第二阶段再开 items,逐字段比对。

适用场景与不适用场景

适用 :ERP(已审核/已关闭状态)→ MES 的 BOM 修改同步,数据量在万级以内,字段映射相对稳定。不适用:BOM 新增(应走 createBom 策略);MES → ERP 反向同步;多级 BOM 层级关系(FParentRowId 未映射);需要实时(秒级)触发的场景(整点调度存在最长 1 小时延迟)。

相关推荐
淡海水4 小时前
03-03-架构篇-SGen GC架构解析
unity·架构·c#·gc·sgen
/**书香门第*/5 小时前
Cocos Creator 打螺丝游戏的实现
游戏引擎·cocos2d·螺丝·打螺丝
萌萌的提莫队长1 天前
Unity相机捕捉,图像识别,抠像+合成
opencv·unity
mxwin2 天前
Unity Shader 光线追踪原理与实战案例
unity·游戏引擎
地狱为王2 天前
Unity使用DPDFNet实现实时语音增强(降噪)
unity·语音增强·降噪·dpdfnet
平行云PVT2 天前
国产信创实时云渲染解决方案:如何实现数字孪生与三维应用云化部署?
unity·webrtc·unreal engine·实时云渲染·国产信创·摩尔线程·砺算科技
夏炎黄2 天前
Terrain地形剪裁
unity
小贺儿开发2 天前
DeepSeek + Codex + MCP:Unity 游戏开发实测
科技·游戏·unity·ai·程序员·编程·deepseek
新的瑞拉公主2 天前
Cocos plist 粒子一键导入 Unity:Editor 工具实现与参数映射
unity·游戏开发·cocos2d-x·粒子系统·editor工具