ETL转换在数据集成生命周期中的应用:对接旺店通API

  • 轻易云集成顾问-李国敏

金蝶云星空数据集成到旺店通·旗舰版技术案例分享

在采购订单管理中,准确和高效的数据对接对于提高业务运营的透明度和效率至关重要。本案例将详细讨论如何使用轻易云数据集成平台,将金蝶云星空中的采购订单取消数据(新-取消参数0)无缝集成到旺店通·旗舰版的解决方案。核心关注点包括调用金蝶云星空接口executeBillQuery检索订单信息,以及通过旺店通·旗舰版API purchase.PurchaseOrder.cancelByType完成取消操作。

首先,我们解决了确保不漏单的问题,通过定时可靠地抓取金蝶云星空接口数据,每隔一定时间段精准获取最新的采购订单状态。在调用executeBillQuery过程中,我们利用分页处理机制,有效应对大量订单查询请求,并采用限流策略防止接口过载。

其次,大量数据需要快速写入到旺店通·旗舰版。我们实现了批量集成方案,对从金蝶云星空获取的数据进行预处理,统一转换为符合旺店通要求的数据格式,以便更高效地调用purchase.PurchaseOrder.cancelByType接口执行批量取消命令。同时,我们建立了健全的异常处理与错误重试机制,在遭遇网络波动或其他意外情况时自动重试并记录日志,确保每一条指令都被正确执行。

此外,为了解决两套系统间的数据格式差异问题,我们配置了自定义映射规则,将金蝶云星空复杂、多样化的数据结构转换为标准化字段,使其能够兼容于旺店通·旗舰版的数据库设计。这不仅提高了一次性传输成功率,也方便后续维护与优化调整。

综上所述,此技术案例展示了完整且高效的系统对接流程,有赖于精准地 API 调用、实时监控及全面日志记录等关键环节,实现了跨系统之间稳定而快速的数据同步。 企业微信与ERP系统接口开发配置

调用金蝶云星空接口executeBillQuery获取并加工数据

在数据集成的生命周期中,第一步是从源系统获取数据并进行初步加工。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口来实现这一过程。

接口配置与调用

首先,我们需要配置和调用金蝶云星空的executeBillQuery接口。以下是元数据配置中的关键字段:

  • api: "executeBillQuery"
  • method: "POST"
  • number: "FBillNo"
  • id: "FPOOrderEntry_FEntryId"
  • name: "FBillNo"
  • idCheck: true

这些字段定义了我们将要调用的API以及其基本参数和方法。具体请求参数如下:

{
  "FormId": "PUR_PurchaseOrder",
  "FieldKeys": ["FBillNo", "FPOOrderEntry_FEntryId", "FDate", "FSupplierId.FNumber", ...],
  "FilterString": "FPurchaseOrgId.FNumber = '100' and FCloseStatus = 'B' and FCloseDate>='{{LAST_SYNC_TIME|datetime}}'",
  "Limit": "{PAGINATION_PAGE_SIZE}",
  "StartRow": "{PAGINATION_START_ROW}",
  "TopRowCount": 0
}

请求参数详解

  1. FormId: 表单ID,指定业务对象为采购订单(PUR_PurchaseOrder)。
  2. FieldKeys: 查询字段集合,包括单据编号(FBillNo)、采购订单条目ID(FPOOrderEntry_FEntryId)、采购日期(FDate)等。
  3. FilterString: 过滤条件,筛选出采购组织编号为100、关闭状态为B且关闭日期大于上次同步时间的记录。
  4. Limit: 最大行数,控制每次查询返回的数据量。
  5. StartRow: 开始行索引,用于分页查询。
  6. TopRowCount: 返回总行数,用于统计查询结果的总数。

数据请求与清洗

通过上述配置,我们可以发送POST请求到金蝶云星空的API接口以获取原始数据。接下来,我们需要对返回的数据进行清洗和初步加工。这一步主要包括以下操作:

  1. 字段映射与转换:将API返回的数据字段映射到目标系统所需的字段格式。例如,将供应商编号(FSupplierId.FNumber)转换为目标系统中的供应商ID。
  2. 数据过滤与校验:根据业务需求进一步过滤不符合条件的数据,并进行必要的数据校验。例如,确保所有必填字段都有值,且数据格式正确。
  3. 异常处理:对于API调用失败或返回异常数据的情况,需要进行错误处理和日志记录,以便后续排查问题。

示例代码

以下是一个示例代码片段,用于调用API并处理返回的数据:

import requests
import json

# API URL
url = 'https://api.kingdee.com/executeBillQuery'

# 请求头
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
}

# 请求体
payload = {
    "FormId": "PUR_PurchaseOrder",
    "FieldKeys": ["FBillNo", "FPOOrderEntry_FEntryId", "FDate", "FSupplierId.FNumber"],
    "FilterString": "FPurchaseOrgId.FNumber = '100' and FCloseStatus = 'B' and FCloseDate>='2023-01-01'",
    "Limit": 100,
    "StartRow": 0,
    "TopRowCount": 0
}

# 发起POST请求
response = requests.post(url, headers=headers, data=json.dumps(payload))

# 检查响应状态码
if response.status_code == 200:
    data = response.json()
    # 数据清洗与转换逻辑
    cleaned_data = []
    for record in data:
        cleaned_record = {
            'bill_no': record['FBillNo'],
            'entry_id': record['FPOOrderEntry_FEntryId'],
            'date': record['FDate'],
            'supplier_id': record['FSupplierId.FNumber']
        }
        cleaned_data.append(cleaned_record)
else:
    print(f"Error: {response.status_code}, {response.text}")

# 输出清洗后的数据
print(cleaned_data)

总结

通过上述步骤,我们成功地从金蝶云星空获取了采购订单相关的数据,并进行了初步清洗和加工。这一过程不仅确保了数据的一致性和准确性,还为后续的数据转换与写入奠定了基础。在实际应用中,可以根据具体业务需求进一步优化和扩展此流程,以实现更复杂的数据集成任务。 企业微信与OA系统接口开发配置

数据集成生命周期中的ETL转换:将源平台数据转为旺店通·旗舰版API接口格式

在轻易云数据集成平台的生命周期中,ETL(Extract, Transform, Load)转换是一个关键步骤,尤其是当我们需要将已经集成的源平台数据转化为目标平台——如旺店通·旗舰版API接口所能接收的格式时。本文将深入探讨如何利用元数据配置,将采购订单取消请求的数据进行有效转换和写入。

元数据配置解析

我们使用的元数据配置如下:

{
  "api": "purchase.PurchaseOrder.cancelByType",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {"field":"operate_type","label":"operate_type","type":"int","describe":"111"},
    {"field":"purchase_no_list","label":"purchase_no_list","type":"string","value":"{FBillNo}","parser":{"name":"StringToArray","params":","}},
    {"field":"allow_cancel_checked_order","label":"allow_cancel_checked_order","type":"int","value":"1"}
  ]
}

API接口解析

该配置文件定义了一个调用purchase.PurchaseOrder.cancelByType API的请求,具体参数如下:

  • operate_type: 操作类型,固定值111。
  • purchase_no_list: 采购订单编号列表,从源数据字段FBillNo中提取,并通过StringToArray解析器按逗号分隔。
  • allow_cancel_checked_order: 是否允许取消已审核订单,固定值1。

数据转换过程

  1. 提取源数据: 首先,从源平台提取包含采购订单编号的字段FBillNo。假设我们获取到的数据格式如下:

    {
     "FBillNo": "PO12345,PO12346,PO12347"
    }
  2. 字段解析与转换:

    • operate_type: 固定值111,不需要额外处理。
    • purchase_no_list: 使用StringToArray解析器,将字符串“PO12345,PO12346,PO12347”按逗号分隔,转化为数组形式:
      ["PO12345", "PO12346", "PO12347"]
    • allow_cancel_checked_order: 固定值1,不需要额外处理。
  3. 构建请求体: 根据上述解析和转换结果,构建最终的API请求体:

    {
     "operate_type": 111,
     "purchase_no_list": ["PO12345", "PO12346", "PO12347"],
     "allow_cancel_checked_order": 1
    }

数据写入目标平台

在完成数据转换后,通过POST方法将构建好的请求体发送到旺店通·旗舰版的API接口。具体实现步骤如下:

  1. 设置HTTP请求头: 确保设置正确的Content-Type(通常为application/json)和必要的认证信息。

  2. 发送HTTP请求: 使用HTTP客户端(如curl、Postman或编程语言内置库)发送POST请求:

    POST /api/purchase.PurchaseOrder.cancelByType HTTP/1.1
    Host: api.wangdian.cn
    Content-Type: application/json
    Authorization: Bearer <token>
    
    {
     "operate_type": 111,
     "purchase_no_list": ["PO12345", "PO12346", "PO12347"],
     "allow_cancel_checked_order": 1
    }
  3. 处理响应: 接收并处理目标平台返回的响应,根据响应状态码和内容判断操作是否成功,并进行相应的错误处理或日志记录。

通过以上步骤,我们成功地将源平台的数据经过ETL转换后写入到了目标平台——旺店通·旗舰版。这不仅实现了不同系统间的数据无缝对接,还确保了业务流程的高效运作。 如何开发企业微信API接口

更多系统对接方案