采购入库单数据ETL处理及同步至金蝶云星空的实践

  • 轻易云集成顾问-吴伟

聚水潭数据集成到金蝶云星空案例分享

在本技术案例中,我们将详细探讨如何通过轻易云数据集成平台,实现聚水潭采购入库单数据同步至金蝶云星空。该方案于实际运行中的名称为:[自动]-采购入库单同步[关联]-V1.0。本文重点关注以下几个方面的技术实现和优化:

确保集成过程中的准确性与高效性

为了保证聚水潭的数据能够精准无误地写入到金蝶云星空,我们首先需要有效调用其开放API接口 /open/purchasein/query,从而获取采购入库单的详细信息。在这个过程中,需要特别注意处理分页与限流问题,确保抓取的数据不漏单且符合业务需求。

批量数据快速写入

当大量的数据被成功抓取后,下一个关键环节是如何高效地批量写入到金蝶云星空。这通过使用 batchSave API 接口来实现,该接口支持同时保存多个记录,从而显著提升了数据写入的效率。然而,在此过程中对接可能会遇到多种异常情况,因此我们还引入了错误重试机制,以确保稳定可靠的数据传输。

数据格式差异处理

聚水潭与金蝶云星空之间存在着一定的数据格式差异,这就要求我们在数据映射上进行定制化处理。例如,不同字段之间可能存在命名或类型上的不一致,通过轻易云平台提供的可视化配置界面,可以直观清晰地完成这些映射操作,大大减少了开发和调试时间。

实时监控与日志管理

整个集成流程结束后,为了进一步保障系统对接的稳健运行,还需设置实时监控和日志记录功能。这样可以及时发现并解决潜在的问题,例如网络波动导致的数据丢失或延迟。通过详尽的日志记录,每个步骤都能追踪溯源,有问题可第一时间回顾分析并采取补救措施。

以上几大技术要点勾勒出了本次系统对接项目的重要脉络。在随后的具体实施部分,将进一步探讨每一个细节及代码实例,以供深度参考和借鉴。 企业微信与ERP系统接口开发配置

调用聚水潭接口/open/purchasein/query获取并加工数据的技术案例

在数据集成生命周期的第一步,我们需要从源系统获取数据。本文将详细探讨如何使用轻易云数据集成平台调用聚水潭接口/open/purchasein/query,并对获取的数据进行加工处理。

接口调用配置

首先,我们需要了解接口的基本配置和元数据定义。以下是接口的元数据配置:

{
  "api": "/open/purchasein/query",
  "effect": "QUERY",
  "method": "POST",
  "number": "io_id",
  "id": "io_id",
  "idCheck": true,
  "request": [
    {
      "field": "page_index",
      "label": "第几页,从1开始",
      "type": "string",
      "describe": "第几页,从1开始",
      "value": "1"
    },
    {
      "field": "page_size",
      "label": "默认30,最大不超过50",
      "type": "string",
      "describe": "默认30,最大不超过50",
      "value": "50"
    },
    {
      "field": "modified_begin",
      "label": "修改起始时间",
      "type": "string",
      "describe": 
        "
        修改起始时间,起始时间和结束时间必须同时存在,时间间隔不能超过七天,与采购单号不能同时为空
        ",
      "
        value
        ": "{{LAST_SYNC_TIME|datetime}}"
    },
    {
      "
        field
        ": "
        modified_end
        ",
      "
        label
        ": "
        修改结束时间
        ",
      "
        type
        ": "
        string
        ",
      "
        describe
        ": 
          "
          修改起始时间,起始时间和结束时间必须同时存在,时间间隔不能超过七天,与采购单号不能同时为空
          ",
          "
          value
          ": "{{CURRENT_TIME|datetime}}"
    }
  ],
  "
  omissionRemedy
  ": {
    "
    crontab
    ": 
    "
    2 6-7 * * *
    ",
    "
    takeOverRequest
    ": [
      {
        "
        field
        ": 
          "
          modified_begin
          ",
          "
          value
          ": "{{DAYS_AGO_2|datetime}}",
          "
          type
          ": 
            "
            string
            ",
            "
            label
            ": 
              "
              接管字段
              ",
              "
              formModel
              ": {
                enable: false},
                tableModel: {enable: false},
                physicalModel: {enable: false}
              }
            ]
          },
          condition: [[{"field":"wms_co_id","logic":"neqv2","value":"10404759"}]]
}

请求参数解析

在调用该接口时,我们需要传递以下几个关键参数:

  • page_index: 表示请求的页码,从1开始。
  • page_size: 每页返回的数据条数,默认值为30,最大不超过50。
  • modified_begin: 数据修改的起始时间。
  • modified_end: 数据修改的结束时间。

这些参数确保了我们能够分页获取数据,并且可以根据修改时间范围进行筛选。

时间参数动态生成

为了确保数据同步的准确性,我们使用了动态生成的时间参数:

  • {{LAST_SYNC_TIME|datetime}}: 上次同步的时间。
  • {{CURRENT_TIME|datetime}}: 当前请求的时间。

这两个参数保证了每次请求的数据都是最新的,并且不会重复获取已经处理过的数据。

异常处理与补偿机制

为了应对可能出现的数据遗漏问题,我们配置了一个定时任务(crontab),每天早上6点到7点之间执行一次补偿请求。补偿请求会使用两天前的日期作为modified_begin,确保即使某次同步失败,也能在后续补偿中重新获取遗漏的数据。

条件过滤

在实际应用中,我们可能需要对返回的数据进行进一步过滤。例如,在上述配置中,我们添加了一个条件过滤:

"condition":[[{"field":"wms_co_id","logic":"neqv2","value":"10404759"}]]

这个条件表示我们只获取wms_co_id不等于10404759的数据。这种过滤机制可以帮助我们精确控制数据集成范围,提高数据处理效率。

数据加工与清洗

在成功获取到原始数据后,需要对其进行必要的清洗和转换,以便后续写入目标系统。常见的数据清洗操作包括:

  • 去除重复记录。
  • 格式化日期和数值字段。
  • 根据业务需求合并或拆分字段。

这些操作可以通过轻易云平台提供的可视化工具实现,无需编写复杂代码,大大简化了数据处理流程。

实时监控与日志记录

为了确保整个过程透明可控,轻易云平台提供了实时监控和日志记录功能。通过这些功能,可以随时查看每个步骤的执行状态,及时发现并解决问题。

综上所述,通过合理配置聚水潭接口调用参数、动态生成时间参数、设置异常处理机制以及进行必要的数据清洗和转换,可以高效地完成数据集成生命周期中的第一步,为后续的数据转换与写入奠定坚实基础。 打通金蝶云星空数据接口

采购入库单同步至金蝶云星空API接口的ETL转换技术案例

在轻易云数据集成平台中,生命周期的第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)处理,并转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将详细探讨这一过程中涉及的技术细节和实现方法。

元数据配置解析

在本案例中,我们需要将采购入库单的数据同步至金蝶云星空。以下是元数据配置的详细解析:

{
  "api": "batchSave",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "rowsKey": "array",
    "rows": 1,
    "method": "batchArraySave"
  },
  "request": [
    {
      "field": "FBillTypeID",
      "label": "单据类型",
      "type": "string",
      "parser": {
        "name": "ConvertObjectParser",
        "params": "FNumber"
      },
      "value": "RKD01_SYS",
      ...
    }
  ],
  ...
}

数据字段映射与转换

  1. 单据类型(FBillTypeID)

    • 类型:字符串
    • 转换器:ConvertObjectParser
    • 参数:FNumber
    • 固定值:RKD01_SYS
  2. 业务类型(FBusinessType)

    • 类型:字符串
    • 固定值:CG
  3. 单据编号(FBillNo)

    • 类型:字符串
    • 动态值:{io_id}
  4. 货主类型(FOwnerTypeIdHead)

    • 类型:字符串
    • 固定值:BD_OwnerOrg
  5. 货主(FOwnerIdHead)

    • 类型:字符串
    • 转换器:ConvertObjectParser
    • 参数:FNumber
    • 动态查询:
      "_mongoQuery ea710470-3755-3c67-bb3e-ab919d96c695 findField=content.FStockOrgId_FNumber where={\"content.FBillNo\":{\"$eq\":\"{KDFNumber}\"}}"

嵌套对象与数组处理

  1. 财务信息(FInStockFin) 包含两个子字段:

    • 结算组织(FSettleOrgId)

      • 类型:字符串
      • 转换器:ConvertObjectParser
      • 参数:FNumber
      • 动态查询:
        "_mongoQuery ea710470-3755-3c67-bb3e-ab919d96c695 findField=content.FPurOrgId where={\"content.FBillNo\":{\"$eq\":\"{KDFNumber}\"}}"
    • 付款组织(FPayOrgId) 同上。

  2. 明细信息(FInStockEntry)

    包含多个子字段,如物料编码、应收数量、实收数量等。这些字段通过动态映射和查询来获取相应的数据。例如:

    • 物料编码(FMaterialId)
      {
      "field": "FMaterialId",
      ...
      "value": "{{items.sku_id}}"
      }

特殊处理与关联关系

  1. 源单类型(FSRCBILLTYPEID)源单编号(FSRCBillNo)

  2. 关联关系(FInStockEntry_Link)

该部分涉及源单表名、下推关系、源单ID及表体ID等信息,通过动态查询获取。例如:

{
  "_mongoQuery ea710470-3755-3c67-bb3e-ab919d96c695 findField=content.FDetailEntity_FEntryID where={\"content.FBillNo\":{\"$eq\":\"{KDFNumber}\"},\"content.FMaterialId\":{\"$eq\":\"{{items.sku_id}}\"}}"
}

API调用与数据提交

最终,所有字段经过转换和映射后,通过POST请求调用金蝶云星空的批量保存API接口:

{
  "api": "/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.BatchSave",
  ...
}

请求体包含所有映射后的数据,并设置必要的操作参数如自动提交审核等:

{
  ...
  {
    "field":"IsAutoSubmitAndAudit",
    ...
    ,"value":"true"
  }
}

通过以上步骤,我们实现了从源平台到目标平台的数据ETL转换,并确保了数据格式符合金蝶云星空API接口要求。 如何开发用友BIP接口

更多系统对接方案