轻易云
注册体验

金蝶云星空物料主数据推送 MES:单一策略同步实战教程

· 系统管理员· 集成方案库· 16 次浏览· 约 4 分钟读完
四化智造MES(API)金蝶云星空物料主数据MES基础资料同步增量同步编码映射

这个策略解决什么问题

物料主数据是 ERP 与 MES 的「共用字典」。在一次实际项目中,某制造企业把金蝶云星空作为物料主数据的唯一来源,要求所有新增、修改的物料按小时推到 MES。一旦两边编码或分类对不上,车间领料、BOM 绑定、库存扣减都会出问题。我们用轻易云数据集成平台(Qeasy)承接,把这套「物料同步」做成一条独立的策略,做到源端改了,目标端一小时内可见。

数据流向与字段映射

数据流向非常直接:金蝶云星空(BD_MATERIAL)→ 轻易云中间层 → 四化智造 MES(/api/createMaterialInfo)。源端通过 executeBillQuery 拉取物料,中间层做字段映射与过滤,目标端按 idCheck=true 校验后写入。

关键字段对照如下:

目标字段源字段 / 规则映射类型说明
materialUuidFMasterIdDIRECT金蝶物料主键作为 MES 物料流水
partNoFNumberDIRECT物料编码
gradeNameFNameDIRECT物料名称
specFSpecificationDIRECT规格型号
classifyNoFMaterialGroupDIRECT物料分类流水,依赖物料分组先同步
parentClassifyNoFMaterialGroupDIRECT最父级分类,通常与 classifyNo 同值
unitUuidFBaseUnitIdDIRECT计量单位流水
purchaseUnitUuidFBaseUnitIdDIRECT采购单位流水,与计量单位一致
erpClassifyCodeFCategoryID.FNumberDIRECT存货类别编码透传
companyCode固定常量CONSTANT公司代码

值得注意的几处:classifyNo 与 parentClassifyNo 都直接取 FMaterialGroup——这里有个隐含依赖,物料分类方案必须先跑完。quality、brand、picNo 等字段当前都用空常量占位,后续可按需扩展。

在轻易云上如何配置

在轻易云上,这条策略的典型配置包含四个要点:

  1. 源端设置:平台选 Kingdee.Cloud,API 用 executeBillQuery,表单 BD_MATERIAL,分页 Limit=2000TopRowCount=0 不返回总行数以减少开销。
  2. 过滤条件:源端 WHERE 子句固定为 FUseOrgId.fnumber='100' AND FModifyDate>='{{LAST_SYNC_TIME}}' AND FMaterialGroup.FNumber!='virtual'。三段条件缺一不可:限定组织、增量时间戳、排除虚拟物料。
  3. 目标端设置:平台选四化智造 MES,API 路径 /api/createMaterialInfo,idCheck=true,materialUuid + partNo 作为去重键。
  4. 编码映射集中管理:本方案未启用 _findCollection/_mongoQuery,所有目标字段都是 DIRECT 或 CONSTANT。如果未来 MES 单位流水格式与金蝶不一致,可在轻易云的「编码映射」里加一张单位映射表,而不是散落在策略里——这是轻易云客户常见的应对模式之一。

实施步骤

实际落地建议分三步走:

第一步:增量起点初始化。第一次上线前,先在金蝶端按 FModifyDate>='某个起点时间' 做一次冷启动,把历史物料一次性补齐。轻易云的 LAST_SYNC_TIME 会自动记录每次执行的最大修改时间,后续按它继续追增量。

第二步:全量触发。客户现场我们一般建议在凌晨低峰期手动跑一次全量校验,确认两边数字对得上。轻易云支持手动触发的「全量重跑」,跑完后会自动写回 LAST_SYNC_TIME

第三步:调度频率。源端给的是 crontab: * 7-22 * * *,即每天 7:00 到 22:00 每整点一次。物料主数据变更不会秒级发生,整点调度足够覆盖;若业务方需要更快,可压到 30 分钟一次,但一般不建议低于 15 分钟,容易打满源端 API 配额。

另外一条关键依赖:物料分类策略要先于本策略执行。因为 classifyNo 直接拿 FMaterialGroup 作为分类流水,如果分类还没推过去,物料就会引用到不存在的分类流水。

踩坑复盘

  1. 物料分组没先同步,直接跑物料策略。典型错误是「两个策略一起上线」。稳妥的做法是分阶段上线:先跑物料分组,观察一周无异常,再开放物料同步。
  2. 忘了排除虚拟物料。素材里特意写了 FMaterialGroup.FNumber!='virtual',但客户现场有同事拷贝策略时漏掉这一行,导致 MES 里多了一堆虚拟物料,后续清理很麻烦。
  3. 修改时间字段理解错。金蝶的 FModifyDate 是「最后修改时间」,如果用户反审核-修改-再审核,这个时间会更新。如果业务方要求「审核后才同步」,应该改用 FAuditDate,这是另一个常见踩点。
  4. 分页参数 TopRowCount=0 容易被误改成 1100,改成非零值会让源端多返回一次全量计数,大表场景下显著拖慢首屏。保持 0 是正确选择。
  5. 公司代码用错常量companyCode 在素材里给了固定常量值,实际项目里这个值往往每个组织不同,而且客户改组织后会要求更新。建议把它从常量改成「按当前用户组织动态取」,不要硬编码。

适用场景与不适用场景

适用:金蝶作为物料主数据唯一来源、目标 MES 物料分类/单位与金蝶 ID 兼容、多组织但只需要同步单一组织的场景。不适用:MES 与金蝶使用完全不同的 ID 体系(需要大量 COLLECTION 映射)、物料变更要求秒级可见(应改用变更通知机制)、或者物料数据来源本身就是 MES 端(流向反过来)。

本文为原创内容,转载请注明出处:/insights/solutions/strat-mes-api-kingdee-cloud-5066-mes-23cf905b

评论