利用轻易云平台完成ETL并同步至旺店通API

  • 轻易云集成顾问-何语琴

案例分享:金蝶云星空数据集成到旺店通·企业奇门

在本次技术案例中,我们将重点探讨如何通过轻易云数据集成平台,实现金蝶云星空系统的退料通知单与旺店通·企业奇门采购退货单的数据同步对接。此项工作旨在确保两大系统之间高效、准确的数据传输和处理,为此需要精细配置多个API接口,保证整个流程无缝衔接。

为了实现这一目标,首先我们需要调用金蝶云星空提供的executeBillQuery API接口抓取退料通知单数据,这一过程必须定时可靠地进行,以避免漏单现象。同时针对庞大的数据量,我们设计了批量集成方式,将获取的数据快速写入到旺店通·企业奇门,并使用其提供的wdt.purchase.return.push API接口完成相关操作。

在具体实施过程中,需要特别注意处理两个系统间的数据格式差异。例如,在从金蝶云星空提取数据后,对应字段可能与旺店通·企业奇门系统的不完全一致,因此需要前期对这些映射关系进行定制化配置。另外,还需考虑如何应对分页和限流的问题,通过适当控制请求频率以防止触发API使用限制,从而保障整合过程的顺利完成。

一个值得关注的重要环节是异常处理机制。在实际运行过程中,无论是由于网络抖动还是其他原因导致的数据同步失败,都需要有强大的错误重试机制来确保不遗漏任何关键信息。这方面,我们采用了实时监控和日志记录功能,不仅能够及时发现异常情况,还能为后续排查问题提供详实依据。

通过以上方案配置,可以有效解决多种复杂情况下的数据对接挑战,使得由轻易云平台驱动下的跨系统集成更加稳定、高效。 打通企业微信数据接口

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

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

接口配置与请求参数

首先,我们需要配置元数据,以便正确调用金蝶云星空的API接口。以下是元数据配置的关键部分:

{
  "api": "executeBillQuery",
  "method": "POST",
  "number": "FBillNo",
  "id": "FEntity_FEntryID",
  "pagination": {
    "pageSize": 100
  },
  "idCheck": true,
  "request": [
    {"field":"FEntity_FEntryID","label":"FEntity_FEntryID","type":"string","value":"FEntity_FEntryID"},
    {"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"},
    {"field":"FID","label":"FID","type":"string","value":"FID"},
    {"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"},
    {"field":"FBillTypeID_Fnumber","label":"单据类型","type":"string","value":"FBillTypeID.Fnumber"},
    {"field":"FDate","label":"申请日期","type":"string","value":"FDate"},
    {"field":"FPURCHASEORGID_Fnumber","label":"采购组织","type":"string","value":"FPURCHASEORGID.Fnumber"},
    {"field":"FRMTYPE","label":"退料类型","type":"string","value":"FRMTYPE"},
    {"field":"FAPPORGID_Fnumber","label":"申请组织","type":"string","value":"FAPPORGID.Fnumber"},
    {"field":"FAPPDEPTID_Fnumber","label":"申请部门","type":"string","value":"FAPPDEPTID.Fnumber"}
  ],
  "otherRequest": [
    {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
    {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
    {"field": "FilterString", 
     "label": "过滤条件", 
     "type": "string", 
     "describe": 
     `示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=`, 
     `value`: `FApproveDate>='{{LAST_SYNC_TIME|dateTime}}' and (FPURCHASEORGID.Fnumber='106' or FPURCHASEORGID.Fnumber='114')`
   },
   {
      field: 'FieldKeys',
      label: '需查询的字段key集合',
      type: 'array',
      describe: '金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber',
      parser: {name: 'ArrayToString', params: ','}
   },
   {
      field: 'FormId',
      label: '业务对象表单Id',
      type: 'string',
      describe: '必须填写金蝶的表单ID如:PUR_PurchaseOrder',
      value: 'PUR_MRAPP'
   }
 ]
}

请求构建与发送

根据上述元数据配置,我们可以构建一个POST请求来调用executeBillQuery接口。以下是一个示例请求体:

{
  "FormId": "PUR_MRAPP",
  "FieldKeys": [
    ...
  ],
  "FilterString": `FApproveDate>='2023-01-01' and (FPURCHASEORGID.Fnumber='106' or FPURCHASEORGID.Fnumber='114')`,
  ...
}

在这个请求体中,FormId指定了业务对象表单的类型,FieldKeys定义了需要查询的字段集合,而FilterString则用于过滤符合条件的数据。

数据清洗与转换

获取到原始数据后,需要对其进行清洗和转换,以便后续处理和写入目标系统。以下是一些常见的数据清洗和转换操作:

  1. 字段映射:将源系统中的字段名映射到目标系统中的字段名。例如,将FBillNo映射为目标系统中的订单编号。
  2. 数据格式转换:将日期、金额等字段的数据格式转换为目标系统所需的格式。例如,将日期从字符串格式转换为标准日期格式。
  3. 数据过滤:根据业务需求过滤掉不需要的数据。例如,只保留状态为“已审核”的记录。

示例代码

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

import requests
import json

# 配置请求头和URL
url = 'https://api.kingdee.com/executeBillQuery'
headers = {'Content-Type': 'application/json'}

# 构建请求体
payload = {
    'FormId': 'PUR_MRAPP',
    'FieldKeys': ['FBillNo', 'FID', ...],
    'FilterString': `FApproveDate>='2023-01-01' and (FPURCHASEORGID.Fnumber='106' or FPURCHASEORGID.F.number='114')`,
}

# 发起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 = {
            '订单编号': record['FBillNo'],
            ...
        }
        cleaned_data.append(cleaned_record)

else:
    print(f"Error: {response.status_code}")

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

通过以上步骤,我们可以成功调用金蝶云星空接口获取退料通知单的数据,并对其进行初步加工,为后续的数据写入和处理打下基础。 金蝶与CRM系统接口开发配置

利用轻易云数据集成平台进行ETL转换并同步至旺店通·企业奇门API接口

在数据集成生命周期的第二步,关键任务是将已经集成的源平台数据进行ETL(提取、转换、加载)处理,并转化为目标平台——旺店通·企业奇门API接口所能够接收的格式,最终写入目标平台。本文将详细介绍如何利用轻易云数据集成平台完成这一过程。

数据请求与清洗

首先,我们需要从源系统中提取退料通知单的数据。这一步通常涉及到对源数据的清洗和预处理,以确保数据的完整性和一致性。在此过程中,可能会使用到一些基本的数据操作,如去除重复项、填补缺失值等。

数据转换与写入

在完成数据请求与清洗之后,接下来就是将这些数据转换为旺店通·企业奇门API接口所能接受的格式,并通过API接口将其写入目标系统。以下是具体的元数据配置及其应用:

{
  "api": "wdt.purchase.return.push",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "method": "merge",
    "field": "FBillNo,FStockId_Fnumber,FSUPPLIERID_Fnumber",
    "bodyName": "details_list",
    "bodySum": ["FMRAPPQTY"],
    "header": ["FBillNo", "FStockId_Fnumber", "FSUPPLIERID_Fnumber", "FRemarks"],
    "body": ["FMATERIALID_Fnumber", "FMRAPPQTY", "FAPPROVEPRICE_F", "FNOTE_M"]
  },
  "request": [
    {
      "field": "provider_no",
      "label": "供应商编号",
      "type": "string",
      "describe": "供应商编号",
      "value": "{FSUPPLIERID_Fnumber}"
    },
    {
      "field": "outer_no",
      "label": "外部单号",
      "type": "string",
      ...
    }
  ],
  ...
}

配置解析

  1. API接口及方法

    • api: wdt.purchase.return.push
    • method: POST
    • idCheck: true
  2. 操作配置

    • method: merge 表示合并操作。
    • field: 合并依据的字段,包括FBillNo, FStockId_Fnumber, FSUPPLIERID_Fnumber
    • bodyName: 明细列表节点名称为details_list
    • bodySum: 汇总字段为FMRAPPQTY
    • header: 包含头部信息字段,如FBillNo, FStockId_Fnumber, FSUPPLIERID_Fnumber, FRemarks
    • body: 包含明细信息字段,如FMATERIALID_Fnumber, FMRAPPQTY, FAPPROVEPRICE_F, FNOTE_M
  3. 请求参数配置

    • 供应商编号:映射为 {FSUPPLIERID_Fnumber}
    • 外部单号:映射为 {FBillNo}
    • 是否审核:固定值为 "1"(自动审核)。
    • 出库仓库编号:映射为 {FStockId_Fnumber}
    • 备注:映射为 {FRemarks}
  4. 明细列表节点配置

    • 商家编码:映射为 {details_list.FMATERIALID_Fnumber}
    • 退货数量:映射为 {details_list.FMRAPPQTY}
    • 单价:映射为 {details_list.FAPPROVEPRICE_F}
    • 备注:映射为 {details_list.FNOTE_M}

实际应用

通过上述配置,我们可以将源系统中的退料通知单数据成功转换并推送到旺店通·企业奇门API接口。以下是一个具体的例子:

{
  ...
  {
    "provider_no": "{FSUPPLIERID_Fnumber}",
    ...
    {
      ...
      {
        ...
        {
          ...
          {
            ...
            {
              ...
              {
                ...
                {
                  ...
                  {
                    ...
                    {
                      ...
                      {
                        ...
                        {
                          ...
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

通过这种方式,我们实现了源平台到目标平台的数据无缝对接,确保了数据的一致性和完整性,同时提高了业务处理效率。 电商OMS与ERP系统接口开发配置

更多系统对接方案