轻易云
注册体验

金蝶云星空采购订单交期回复回写 MES:单策略深度实战教程

· 陈洁琳· 集成方案库· 21 次浏览· 约 4 分钟读完
MySQL金蝶云星空采购订单交期回写MES供应链

这个策略解决什么问题

在制造业里,采购员在金蝶云星空里下完单,供应商把回复交期填回去之后,MES 这边要立刻看到——只有这样,车间排产、齐套检查、来料计划才能往下走。我们这次的策略只做一件事:从金蝶云星空按单据号查明细,把"销售回复交期"和"销售订单二次交期回复"写回 MES 的采购订单行表。听起来很轻,但交期回写这类小链路往往是供应链数字化的"最后一公里"。

数据流向与字段映射

流向:金蝶云星空(源)→ 轻易云数据集成平台(中间编排与映射层)→ MySQL MES 库(目标)。

源侧关键字段(金蝶云星空 executeBillQuery):

字段含义用途
FBillNo单据编号主键 / 定位
FPOOrderEntry_FEntryID采购订单明细 ID行级定位,写回用
F_ReplyDeliveryDateBySale销售订单交期回复待回写值 1
F_ReplyDeliveryDate2BySale销售订单二次交期回复待回写值 2

目标侧 SQL(MySQL WebAPI execute):

update ty_mes.mt_po_line
set REPLY_DELIVERY_DATE=:REPLY_DELIVERY_DATE,
    REPLY_DELIVERY_DATE2=:REPLY_DELIVERY_DATE2
where KINGDEE_ENTRYID=:KINGDEE_ENTRYID

映射对应表:

源字段(Kingdee)目标列(MySQL)备注
FPOOrderEntry_FEntryIDKINGDEE_ENTRYID定位行
F_ReplyDeliveryDateBySaleREPLY_DELIVERY_DATE首次回复
F_ReplyDeliveryDate2BySaleREPLY_DELIVERY_DATE2二次回复

在轻易云上如何配置

在 Qeasy 平台里,这条策略的形态是"源 Query + 目标 Execute"的组合,配置要点我都习惯这么定:

  • 源接口:金蝶云星空的 executeBillQuery,方法 POST,单据号 FBillNo 作为请求条件,明细 ID 作为返回定位字段。注意把 Limit 设为 5000,避免一次拉太多行被服务端截断。
  • 目标接口:MySQL 的 WebAPI execute,走 main_sql 模板,把 :REPLY_DELIVERY_DATE、:REPLY_DELIVERY_DATE2、:KINGDEE_ENTRYID 三个参数从源数据里塞进去。
  • 编码映射:源里的明细 ID 是金蝶内部键,我一般在轻易云的映射层集中维护一份"金蝶 EntryID ↔ MES 行号"的对照,避免每个策略都重写一次 SQL。
  • 响应处理:源端 autoFillResponse 打开即可,目标端是 UPDATE,没有返回行也正常。

实施步骤

分阶段调度,建议这样铺:

  1. 首次全量回灌:用一张历史单据号清单做驱动,把近三个月的采购订单交期一次性拉回来,确保 MES 里至少有一份"基准交期"。这一步先于调度上线。
  2. 增量起点:以系统当前时间为基准,从这一刻开始只处理新增 / 变更的明细。源 Query 用 FBillNo 限定本次扫描范围即可。
  3. 调度频率:源 8,18,28,38,48,58 * * * *(每 10 分钟一次,分钟点 8 偏置),目标 9,19,29,39,49,59 * * * *(比源晚 1 分钟)。两次都错开分钟点,是为了让源先落库、目标再追写,避免瞬时竞争。
  4. 监控与对账:在轻易云的运行日志里盯失败行,把 UPDATE 影响行数 = 0 的行捞出来,往往是 KINGDEE_ENTRYID 没对上——也就是接下来要说的踩坑。

踩坑复盘

  1. EntryID 漂移最常见。典型错误是直接拿金蝶的 FEntryID 当目标主键写进去,结果 MES 这边一查对不上。稳妥的做法是:在轻易云里专门维护一张 ID 映射表,源端的 FPOOrderEntry_FEntryID 只作为回查条件,不直接当业务键写库。
  2. 空值把 UPDATE 写空了。源里如果交期没填,返回的就是空字符串而不是 NULL,UPDATE 进去会把原本的日期清掉。建议在目标 SQL 里加 WHERE (:REPLY_DELIVERY_DATE IS NOT NULL AND :REPLY_DELIVERY_DATE <> '') 之类的过滤,或者在映射层做兜底。
  3. 调度频率踩点撞车。源和目标都用 * 通配的整分钟,遇到大单据时两边并发跑同一行,目标 UPDATE 会被源的前一次读取覆盖。我们当时是把目标整体延后 1 分钟,问题就消失了。
  4. Limit 截断不报警。金蝶那侧一次最多返回 5000 行,超过就静默截断。看似正常跑完,实则漏了行。稳妥的做法是在轻易云的分页器里显式翻页,或者按 FBillNo 切片多次拉。
  5. 二次交期被忽略。很多项目上线后才发现,F_ReplyDeliveryDate2BySale 这条字段从来没被映射,因为测试数据只填了首次交期。复盘时建议把两条字段都纳入测试用例。

适用场景与不适用场景

适用:金蝶云星空与 MES 都需要采购订单行级交期数据、供应商回复后需要尽快回写、且已有明细 ID 映射基础的制造型项目。 不适用:源端交期字段命名在升级后变更、目标表没有 KINGDEE_ENTRYID 这种稳定定位键,或者需要把整张采购订单(含表头审批流、付款条款)都同步过来的场景——那是另一个层级的策略。

本文为原创内容,转载请注明出处:https://www.qeasy.cloud/insights/solutions/strat-mysql-kingdee-cloud-2246-mom-cgdd-31878dc9

评论