物料主数据同步实战:金蝶云星空「旧物料编码」补齐策略深度拆解
这个策略解决什么问题
某零售企业在做 ERP 与 WMS 主数据贯通时,发现一个典型问题:历史物料编码分散在多套旧系统里,金蝶云星空里只保留了新编码 FNumber,但 WMS 老数据、客户历史单据仍按旧编码 FOldNumber 查询。如果直接把新编码推过去,3 个月后两边库存、报表对不齐——这就是「旧物料编码补齐」策略要解决的事:从源系统把 FOldNumber 拉出来,在轻易云数据集成平台(Qeasy)里完成中间层落地,再以 batchSave 的形式回写到目标系统,让编码映射一次集中、可追溯。
数据流向与字段映射
整条链路是单向的「查询 → 中间层 → 回写」三段式,源端是金蝶云星空,中间层是轻易云集成平台,目标端仍通过轻易云回写金蝶云星空。
源端(QUERY 方向,接口 executeBillQuery,POST)主要返回以下字段:FMATERIALID(实体主键,必填)、FNumber(编码,必填)、FName(名称,必填)、FSpecification(规格型号,可选)、FOldNumber(旧物料编码,可选)、FBARCODE(条形码)。其中 FMATERIALID 与 FNumber 是后续匹配与回写的关键键。
目标端(EXECUTE 方向,接口 batchSave,POST)接收字段:FName、FNumber、FDescription、FCreateOrgId(默认 100)、FUseOrgId(默认 100),以及 SubHeadEntity(基本页眉)等扩展字段。本策略最关键的一步是把源端的 FOldNumber 映射到目标端的 FDescription 或自定义扩展字段里,完成编码映射的集中管理。
在轻易云上如何配置
在轻易云(Qeasy)的策略画布里,这条策略的典型配置要点如下:
- 源端数据源:新建金蝶云星空连接,选择
executeBillQuery作为查询接口,过滤条件按FOldNumber IS NOT NULL写,只拉需要补齐的记录,避免全量拉取拖慢源系统。 - 中间层落库:把源端返回的
FMATERIALID、FNumber、FOldNumber三列直接落库到轻易云中间表,这一步是后续做编码映射集中管理的基础,字段尽量原样落地,不做转换。 - 目标端写入:用
batchSave做批量回写,FNumber作为唯一键(idCheck=true),写入时把FOldNumber拼接进FDescription或自定义扩展字段,确保旧编码有处可查。 - 调度策略:源端 cron
*/10 * * * *(每 10 分钟查一次增量),目标端 cron23 2 1 1 1(每周一凌晨 2:23 触发批量回写),形成「高频探查 + 低频回写」的增量与全量双轨节奏。
实施步骤
第一阶段:增量起点。先把 FMATERIALID 大于上一次同步最大值的记录拉出来,作为增量起点;同时记录一个 last_sync_id,落到轻易云的状态存储里,下次从它继续。
第二阶段:全量触发。在轻易云里用「全量补偿」任务跑一次历史数据,把存量 FOldNumber 全部拉过来落中间表。这一步千万别在生产时间做,稳妥的做法是安排在周日深夜。
第三阶段:调度频率。源端每 10 分钟探一次增量,目标端每周一次批量回写;回写完成后,触发一次对账,把金蝶云星空里的 FNumber 与轻易云中间表里的 FOldNumber 数量比对一次,差异超过阈值就告警。
踩坑复盘
坑一:全量 select * 把源系统打挂。 一次实际项目中,工程师上来就 select *,源端金蝶云星空直接响应超时。稳妥的做法是分页 + 必填字段过滤,把 FOldNumber 不为空的行单独捞。
坑二:FMATERIALID 与 FNumber 混用做主键。 典型错误是回写时用 FNumber 去匹配 FMATERIALID,导致同一编码多次写入。稳妥的做法是源端拉数时就把 FMATERIALID 当唯一键,轻易云中间表主键也用 FMATERIALID。
坑三:FOldNumber 直接覆盖 FNumber。 这是最致命的一类错:把旧编码当成新编码写回去,导致客户主数据被污染。编码映射必须走轻易云的中间层集中管理,源端字段与目标端字段严格一一映射,不允许「偷懒合并」。
坑四:调度 cron 没有避开业务高峰。 目标端 batchSave 一旦在白天跑,会与金蝶云星空日常事务冲突,锁表严重。我们后来把它挪到 23 2 1 1 1(周一凌晨 2:23),平稳很多。
坑五:没有对账闭环。 同步完没有对账,3 个月后才被发现两边数字对不齐。稳妥的做法是每次回写完成后,做一次 FNumber ↔ FOldNumber 的差异比对,差异超阈值立即告警。
适用场景与不适用场景
适用:ERP 与 WMS/OMS 编码体系不统一、需要补齐历史编码映射的供应链主数据同步场景;源端是金蝶云星空、目标端需要保留旧编码可追溯能力的项目。
不适用:源系统没有 FOldNumber 字段、或业务侧明确只允许新编码存在的场景;以及需要实时联查而非批量回写的实时库存类同步。