从抓取到写入:如何实现数据的无缝对接

  • 轻易云集成顾问-胡秀丛

采购入库同步-(Life-Space)厦门众之健技术案例分享

在本篇文章中,我们将深入探讨如何通过轻易云数据集成平台,完成汤臣倍健营销云数据到金蝶云星辰V2的高效对接。本次案例的核心是"采购入库同步 -(Life-Space)厦门众之健",它涉及多个复杂的数据处理环节和接口,并需要解决各种实际应用中的常见问题。从数据获取,到数据转换,再到最终写入目标系统,每个步骤都是确保无缝连接的重要环节。

数据获取与API调用

为了实现从汤臣倍健营销云抓取最新的采购入库订单信息,我们使用了其提供的标准接口:/erp/api/order/query/purInWarehsOrder。这一过程不但要保证定时自动拉取,还需处理分页和限流问题,以避免漏单现象。

GET /erp/api/order/query/purInWarehsOrder?date=2023-10-01&page=1&limit=100

通过精细化配置API参数,可以按时间、分页等条件进行灵活查询。此外,在轻易云平台上,配置定制化任务计划,实现一个稳定可靠的数据抓取频率,例如每小时一次,确保所有新生成或更新的订单及时被捕捉。

数据格式转换及映射

获取到原始订单数据后,下一个重要步骤即为数据格式转换。这一步骤旨在将汤臣倍健营销云返回的不规则JSON结构转化为符合金蝶云星辰V2要求的数据格式。不同系统间的数据结构差异,是导致对接失败的重要原因之一,因此精准且高效地映射字段至关重要。以下是两者主要字段对应关系示例:

{
    "source_order_id": "original_order_number",
    "product_sku": "item_code",
    ...
}

基于以上映射关系,通过轻易云内置的脚本功能,动态生成满足需求的新JSON对象,为下游系统写入操作做好准备。

高速批量写入金蝶云星辰V2

经过上述处理后,将整理好的批量数据快速上传至金蝶云星辰V2,需要借助其指定API:/jdy/v2/scm/pur_inbound。这一过程中,不仅要考虑高并发情况,还需具备异常处理与错误重试机制,以保证每一条记录都能正确落地目标数据库。

POST /jdy/v2/scm/pur_inbound
Content-Type: application/json
{
  "data": [
     { ... }, 
     { ... }
  ]
}

我们利用轻易云强大的日志监控 金蝶云星空API接口配置

调用源系统汤臣倍健营销云接口获取并加工数据

在数据集成的生命周期中,第一步是调用源系统接口获取数据。本文将详细探讨如何通过调用汤臣倍健营销云的/erp/api/order/query/purInWarehsOrder接口来获取采购入库数据,并进行初步加工。

接口调用配置

我们需要通过POST方法调用/erp/api/order/query/purInWarehsOrder接口,以获取采购入库订单的数据。以下是元数据配置的关键字段和参数:

  • tenantId: 经销商ID,必填项,用于标识具体的经销商。
  • yxyNumber: 营销云销售订单号,传此参数时其他时间状态等条件无效。
  • number: 系统订单号,传此参数时其他时间状态等条件无效。
  • status: 订单状态,0表示未审核,1表示已审核(已出库)。
  • beginTime: 开始时间,根据创建时间或更新时间查询。
  • endTime: 结束时间,根据创建时间或更新时间查询。
  • pageNo: 页码,默认值为1。
  • pageSize: 每页条数,默认值为30。
  • timeType: 时间段标志,0表示基于创建时间查询,1表示基于更新时间查询。

以下是一个典型的请求示例:

{
  "tenantId": "08e2fd9d074f4ef7b5e6416b74d006d6",
  "status": "1",
  "beginTime": "{{LAST_SYNC_TIME|datetime}}",
  "endTime": "{{CURRENT_TIME|datetime}}",
  "pageNo": "1",
  "pageSize": "30",
  "timeType": "1"
}

数据请求与清洗

在获取到原始数据后,需要对数据进行清洗和初步处理。轻易云平台提供了自动填充响应(autoFillResponse)的功能,可以简化这一过程。以下是一些常见的数据清洗操作:

  1. 字段过滤与重命名:根据业务需求,仅保留必要的字段,并对字段进行重命名以符合目标系统的要求。例如,将materialNumber重命名为itemCode

  2. 数据格式转换:将日期、金额等字段转换为目标系统所需的格式。例如,将日期格式从YYYY-MM-DD HH:mm:ss转换为ISO标准格式。

  3. 条件过滤:根据特定条件过滤掉不需要的数据。例如,通过配置条件过滤器(condition_bk),可以排除掉物料编号包含"F.A"的记录。

{
  "condition_bk": [
    [
      {
        "field": "itemList.materialNumber",
        "logic": "notlike",
        "value": "F.A"
      }
    ]
  ]
}

数据转换与写入

在完成数据清洗后,需要将数据转换为目标系统所需的格式,并写入目标系统。这一步通常涉及到复杂的数据映射和转换规则。在轻易云平台上,可以通过可视化界面配置这些规则,从而简化操作并减少出错率。

例如,将采购入库订单的数据映射到ERP系统中的相应表结构:

{
  "sourceField": "materialNumber",
  "targetField": "itemCode"
},
{
  "sourceField": "quantity",
  "targetField": "qty"
},
{
  ...
}

实时监控与日志记录

为了确保数据集成过程的透明度和可追溯性,需要对每个环节进行实时监控,并记录详细的日志信息。轻易云平台提供了强大的监控和日志功能,可以帮助用户及时发现并解决问题。

通过以上步骤,我们可以高效地调用汤臣倍健营销云接口获取采购入库订单数据,并进行初步加工,为后续的数据转换与写入打下坚实基础。 打通金蝶云星空数据接口

将源平台数据转换为金蝶云星辰V2API接口格式并写入目标平台

在数据集成过程中,ETL(Extract, Transform, Load)是关键步骤之一。本文将深入探讨如何将已经集成的源平台数据进行ETL转换,并转为金蝶云星辰V2API接口所能够接收的格式,最终写入目标平台。

数据请求与清洗

首先,我们需要从源系统中提取原始数据,并对其进行必要的清洗和预处理。假设我们已经完成了这一步,现在我们将重点放在如何将这些清洗后的数据转换为金蝶云星辰V2API接口所能接收的格式。

数据转换与写入

根据提供的元数据配置,我们需要将源数据字段映射到目标API所需的字段格式。以下是具体的字段映射和转换逻辑:

  1. 单据日期(bill_date)

    • 源数据中的审核时间字段auditTime需要转换为日期格式。
    • 使用模板表达式{{auditTime|date}}进行转换。
  2. 单据编码(bill_no)

    • 直接从源数据中获取,无需转换。
  3. 业务类型(transtype)

    • 固定值2,表示特定业务类型。
  4. 供应商编码(supplier_id)

    • 固定值1269830589104549888,表示特定供应商。
  5. 备注(remark)

    • 组合字段,包含来自营销云的备注信息和单据编码。
    • 使用模板表达式{remark}-来自营销云-{number}进行拼接。
  6. 商品分录(material_entity)

    • 这是一个数组,每个元素代表一个商品分录,需要进一步细化子字段:
      • 商品编码(material_number):直接映射源数据中的商品编码。
      • 仓库编码(stock_id):固定值1277528119946811392
      • 是否赠品(is_free):固定值false
      • 数量(qty):使用模板表达式{{itemList.opernumber}}从源数据中获取。
      • 单位(unit_id):通过查找表获取单位ID,使用模板表达式 _findCollection find base_unit_id from 72029be6-c558-39a7-8084-4b75796fcba1 where number={materialNumber}
      • 批次号(batch_no):使用模板表达式 {{itemList._Flot}}从源数据中获取。
      • 生产日期(kf_date):使用模板表达式 {{itemList._Fmfg}}从源数据中获取。
      • 保质期天数(kf_period):固定值 730天。
      • 有效日期(valid_date):使用模板表达式 {{itemList._Fexp}}从源数据中获取。
      • 保质期类型(kf_type):固定值 1,表示按天计算保质期。
      • 含税单价(tax_price):使用模板表达式 {{itemList.taxunitprice}}从源数据中获取。
      • 税率(cess):固定值 13%
      • 价税合计(all_amount):使用模板表达式 {{itemList.taxlastmoney}}从源数据中获取。

实际操作示例

以下是一个实际操作示例,通过POST请求将转换后的JSON对象发送到金蝶云星辰V2API接口:

{
  "bill_date": "2023-10-01",
  "bill_no": "PO123456",
  "transtype": "2",
  "supplier_id": "1269830589104549888",
  "remark": "采购订单-来自营销云-PO123456",
  "material_entity": [
    {
      "material_number": "M001",
      "stock_id": "1277528119946811392",
      "is_free": false,
      "qty": "100",
      "unit_id": "_findCollection find base_unit_id from 72029be6-c558-39a7-8084-4b75796fcba1 where number=M001",
      "batch_no": "BATCH001",
      "kf_date": "2023-09-01",
      "kf_period": "730",
      "valid_date": "2025-09-01",
      "kf_type": "1",
      "tax_price": "10.00",
      "cess": "13",
      "all_amount": "1130.00"
    }
  ]
}

通过上述步骤,我们成功地将源平台的数据转换为金蝶云星辰V2API接口所能接收的格式,并通过POST请求写入目标平台。这种方法确保了不同系统间的数据无缝对接,提高了业务流程的自动化程度和效率。 打通金蝶云星空数据接口

更多系统对接方案