ETL与API集成:通过轻易云实现旺店通到金蝶云的数据转换

  • 轻易云集成顾问-彭萍

调拨单旺店通到金蝶明细调拨和单品调拨的数据集成技术案例

在企业数字化背景下,系统对接与数据实时共享成为提升业务效率的关键需求。本篇文章将分享一个涉及将旺店通·企业奇门(以下简称 "旺店通")的数据集成到金蝶云星空的具体案例。我们主要探讨如何通过轻易云数据集成平台实现从抓取、处理到写入的全生命周期管理,以及应对大规模数据传输过程中遇到的问题和解决方案。

首先,我们来了解一下此次项目中使用的重要接口:

  • 旺店通获取数据APIwdt.stock.transfer.query
  • 金蝶云星空写入数据APIbatchSave

一、确保集成过程中的不漏单问题

为了确保每一条记录都能准确无误地从旺店通转移至金蝶云星空,在设计上我们采用了定时任务机制,通过触发器定时可靠地调用wdt.stock.transfer.query接口,周期性抓取最新的调拨单信息。为避免在高并发情况下出现请求超时或失败导致的数据遗漏,还实施了一套完备的异常重试机制。据此,即便在网络波动或接口限流等情况下,也能够保障所有需要同步的数据全部成功提取。

二、大量数据快速写入与批量处理策略

针对大规模的明细调拨和单品调拨信息,我们采用了分批次合并的方法进行处理。在拿到分页后的原始数据信息后,将其按一定规则批量整理,再通过调用金蝶云星空提供的 batchSave 接口进行集中式写入。这不仅提高了整个操作流程中的效率,同时也减少了频繁小批次操作可能带来的性能瓶颈。

三、应对分页和限流问题

由于 API 调用过程中存在分页限制,以防止过大的请求给服务器造成压力,因此需特别注意分页参数的配置与合理控制。当一次性获取大量记录时,通过持续跟踪页码并动态调整页面大小,可有效减小每次获取的数据体积,从而缓冲网络负载,并降低接口返回错误率。此外,为应付可能出现的大量 API 请求限制情况,建立适当延迟以及重试机制也是必不可少的一环,这可以显著提高整体运行稳定性。

以上介绍仅是本技术案例的一部分概要内容,下文将进一步深入剖析更多详细步骤及配置策略,包括如何处理两端之间的数据格式差异,以及如何实现实时监控与日志记录等功能,为读者全面呈现一个完整、真正可行且高效的数据集成解决方案。 打通钉钉数据接口

调用旺店通·企业奇门接口wdt.stock.transfer.query获取并加工数据

在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.stock.transfer.query,获取并加工调拨单数据,以实现与金蝶系统的无缝对接。

接口调用配置

首先,我们需要配置元数据以正确调用wdt.stock.transfer.query接口。以下是关键的元数据配置项:

{
  "api": "wdt.stock.transfer.query",
  "method": "POST",
  "number": "transfer_no",
  "id": "transfer_id",
  "pagination": {
    "pageSize": 100
  },
  "idCheck": true,
  "condition": [
    [
      {"field":"type","logic":"eqv2","value":"1"},
      {"field":"mode","logic":"eqv2","value":"0"},
      {"field":"from_warehouse_no","logic":"notlike","value":"JS"},
      {"field":"to_warehouse_no","logic":"notlike","value":"JS"}
    ],
    [
      {"field":"type","logic":"eqv2","value":"1"},
      {"field":"mode","logic":"eqv2","value":"2"},
      {"field":"from_warehouse_no","logic":"notlike","value":"JS"},
      {"field":"to_warehouse_no","logic":"notlike","value":"JS"}
    ]
  ],
  "request": [
    {
      "field": "start_time",
      "label": "开始时间",
      "type": "datetime",
      "describe": "增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss",
      "value": "{{LAST_SYNC_TIME|datetime}}"
    },
    {
      "field": "end_time",
      "label": "结束时间",
      "type": "datetime",
      "describe": "增量获取数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss",
      "value": "{{CURRENT_TIME|datetime}}"
    },
    {
      "field": "from_warehouse_no",
      "label": "源仓库",
      "type": "string",
      "describe": 
        用于获取指定仓库单据数据信息(不支持一次推送多个仓库编号)"
    },
    {
      ...

数据请求与清洗

在进行数据请求时,我们需要确保请求参数的准确性和完整性。以下是关键的请求参数:

  • start_timeend_time: 用于增量获取数据,分别表示开始时间和结束时间。
  • from_warehouse_noto_warehouse_no: 分别表示源仓库和目标仓库的唯一编码。
  • status: 调拨单状态,这里我们默认只获取状态为90(调拨完成)的单据。
  • typemode: 分别表示调拨类型和调拨模式。

示例请求体如下:

{
  ...
  {
    ...
    {
        field: 'start_time',
        value: '2023-01-01 00:00:00'
    },
    {
        field: 'end_time',
        value: '2023-01-31 23:59:59'
    },
    ...
}

数据转换与写入

在成功获取到调拨单数据后,需要对其进行清洗和转换,以便写入目标系统(金蝶)。以下是一个简单的数据转换示例:

def transform_data(data):
    transformed_data = []

    for record in data:
        transformed_record = {
            'transfer_id': record['transfer_id'],
            'transfer_no': record['transfer_no'],
            'from_warehouse': record['from_warehouse_no'],
            'to_warehouse': record['to_warehouse_no'],
            'status': record['status'],
            'items': []
        }

        for item in record['items']:
            transformed_item = {
                'item_code': item['item_code'],
                'quantity': item['quantity']
            }
            transformed_record['items'].append(transformed_item)

        transformed_data.append(transformed_record)

    return transformed_data

分页处理

由于接口返回的数据量可能较大,我们需要进行分页处理。通过设置page_sizepage_no参数,可以逐页获取数据:

{
  ...
  {
     field: 'page_size',
     value: '100'
   },
   {
     field: 'page_no',
     value: '0'
   }
}

在处理分页时,需要循环调用接口直到所有页面的数据都被获取完毕。

异常处理

在实际操作中,还需要考虑各种异常情况,如网络超时、接口返回错误等。以下是一个简单的异常处理示例:

try:
    response = requests.post(api_url, json=request_body)

    if response.status_code == 200:
        data = response.json()
        # 数据处理逻辑
except requests.exceptions.RequestException as e:
    print(f"Request failed: {e}")

通过以上步骤,我们可以高效地调用旺店通·企业奇门接口wdt.stock.transfer.query,并对返回的数据进行清洗和转换,为后续的数据写入做好准备。这一过程不仅提高了数据集成的效率,也确保了数据的一致性和准确性。 如何对接企业微信API接口

轻易云数据集成平台:ETL转换与金蝶云星空API接口集成案例

在数据集成过程中,将源平台的数据转换为目标平台所能接收的格式是关键步骤之一。本文将深入探讨如何利用轻易云数据集成平台,将旺店通调拨单的数据转换为金蝶云星空API接口所需的格式,并最终写入目标平台。

元数据配置解析

首先,我们需要理解元数据配置中的各个字段及其作用。以下是对主要字段的详细解析:

  • api: "batchSave" - 指定调用的API名称。
  • method: "POST" - 使用POST方法进行数据传输。
  • idCheck: true - 启用ID检查,确保数据唯一性。
  • operation: 定义批量操作的细节,如行键和方法。

请求字段配置

请求字段配置定义了从源平台到目标平台的数据映射规则。以下是部分关键字段的解析:

  1. FBillNo(单据编号)

    • field: "FBillNo"
    • label: "单据编号"
    • type: "string"
    • describe: "单据编号"
    • value: "{transfer_no}"

    该字段将源平台中的transfer_no映射到目标平台中的FBillNo

  2. FBillTypeID(单据类型)

    • field: "FBillTypeID"
    • label: "单据类型"
    • type: "string"
    • describe: "单据类型"
    • value: "{mode}"
    • mapping: "635b7696f680c55dd60aad7f"
    • mappingDirection: "positive"
    • parser: {"name": "ConvertObjectParser", "params": "FNumber"}

    该字段使用ConvertObjectParser将源平台中的mode转换为金蝶系统所需的格式,并进行正向映射。

  3. FDate(日期)

    • field: "FDate"
    • label: "日期"
    • type: "string"
    • describe: "日期"
    • value: "{modified}"

    将源平台中的修改日期modified映射到目标平台中的FDate

明细信息配置

明细信息(FBillEntry)包含多个子字段,每个子字段对应调拨单的具体明细项:

  1. FMaterialId(物料编码)

    • field: "FMaterialId"
    • label: "物料编码"
    • type: "string"
    • describe: "基础资料"
    • parser: {"name": "ConvertObjectParser", "params": "FNumber"}
    • value: "{{details_list.spec_no}}"
  2. FQty(调拨数量)

    • 同样地,将源平台中的数量字段details_list.num映射到目标平台中的调拨数量字段FQty
  3. 调出仓库和调入仓库分别通过以下配置实现:

    {
        "field": "FSrcStockId",
        "label": "调出仓库",
        ...
        "value": "{from_warehouse_no}"
    },
    {
        "field": "FDestStockId",
        ...
        "value": "{to_warehouse_no}"
    }

其他请求参数

其他请求参数如表单ID、提交并审核等,通过以下配置进行设置:

{
    ...
    {"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"STK_TransferDirect"},
    {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","value":"true"},
    ...
}

数据转换与写入流程

  1. 数据请求与清洗:通过轻易云数据集成平台获取源系统旺店通的数据。
  2. 数据转换:根据上述元数据配置,使用轻易云提供的可视化界面和内置解析器,将源数据转换为金蝶云星空API所需格式。
  3. 数据写入:调用金蝶云星空API接口,将转换后的数据批量写入目标系统。

通过以上步骤,我们实现了从旺店通到金蝶云星空的数据无缝对接,确保了业务流程的顺畅运行。 电商OMS与ERP系统接口开发配置

更多系统对接方案