解析ETL转换过程及对接旺店通·企业奇门API

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

金蝶云星空数据集成到旺店通·企业奇门:盘亏单对接其他出库单

在本案例中,我们将分享如何通过轻易云数据集成平台,将金蝶云星空中的盘亏单数据高效、稳定地对接到旺店通·企业奇门的其他出库单。方案命名为“盘亏单对接其他出库单==>金蝶—旺店通”,以下是具体的技术解析。

首先,需要利用金蝶云星空提供的API接口executeBillQuery从系统中抓取需要处理的数据。在这个过程中,要特别注意分页和限流问题,以确保大批量数据能顺利获取。采用定时任务,可靠地抓取金蝶云星空接口数据,同时实时监控抓取过程,确保不漏掉任何一个待处理的盘亏单。

成功获取到原始数据后,下一步是进行必要的数据格式转换。这部分工作尤为重要,因为需要处理金蝶云星空与旺店通·企业奇门之间的数据格式差异。例如,在字段名称、字段类型以及结构化信息上的映射,都需根据业务场景进行精细调整。可以采用定制化的数据映射策略,使得转换后的数据符合目标系统要求,并最终能够被正确解读和使用。

在完成上述准备工作之后,通过调用旺店通·企业奇门的API接口wdt.stockout.order.push将转换后的出库单写入目标系统。在这一过程中,为了应对可能出现的网络波动或异常情况,需要设计并实现一套健壮的异常处理与错误重试机制,以保证整个写入过程具有高度可靠性。此外,还要考虑大量并发写入操作的性能优化问题,这样才能在短时间内快速、高效地处理海量交易库存记录。

最后,针对整个流程实现全生命周期管理,包括详细日志记录及实时监控。这不仅有助于及时发现并解决潜在问题,也能提高整个集成方案运营维护效率,使业务运行更加透明可控。 数据集成平台API接口配置

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

在数据集成过程中,调用源系统的API接口是至关重要的一步。本文将详细介绍如何使用轻易云数据集成平台调用金蝶云星空的executeBillQuery接口,以获取盘亏单的数据,并进行初步加工。

接口配置与调用

首先,我们需要根据元数据配置来设置API请求参数。以下是关键参数及其配置:

  • API名称: executeBillQuery
  • 请求方法: POST
  • 业务对象表单ID: STK_StockCountLoss
  • 过滤条件: FDocumentStatus='C' and FStockId.FNumber='001' and FApproveDate>='{{LAST_SYNC_TIME|dateTime}}'
  • 需查询的字段key集合:
    [
    "FBillEntry_FEntryID",
    "FID",
    "FBillNo",
    "FDocumentStatus",
    "FStockOrgId.FNumber",
    "FDate",
    "FBillTypeID",
    "FStockerId.FNumber",
    "FCreatorId",
    "FCreateDate",
    "FModifierId",
    "FModifyDate",
    "FApproverId",
    "FApproveDate",
    "FNoteHead",
    "FMaterialId.FNumber",
    "FUnitID",
    "FAcctQty",
    "FCountQty",
    "FLossQty",
    "FStockId.FNumber",
    "FStockStatusId",
    "FOwnerid.FNumber",
    "FPrice",
    "FAmount"
    ]

请求示例

以下是一个完整的请求示例:

{
  "api": "executeBillQuery",
  "method": "POST",
  "FormId": "STK_StockCountLoss",
  "FilterString": {
      "$and": [
          {"field": "FDocumentStatus", "$eq": "'C'"},
          {"field": "FStockId.FNumber", "$eq": "'001'"},
          {"field": "FApproveDate", "$gte": "{{LAST_SYNC_TIME|dateTime}}"}
      ]
  },
  "FieldKeys": [
      {"field": ["FBillEntry_FEntryID", 
                 ... // 其他字段
                ]}
  ],
  ...
}

数据处理与清洗

在成功获取数据后,下一步是对数据进行清洗和初步加工。以下是一些常见的数据处理步骤:

  1. 字段映射与转换:

    • 将金蝶云返回的数据字段映射到目标系统所需的字段。
    • 对日期格式、数值精度等进行转换。
  2. 数据过滤与校验:

    • 根据业务需求过滤掉不必要的数据记录。
    • 校验关键字段,如单据编号、物料编码等,确保数据完整性和准确性。
  3. 异常处理:

    • 捕获并记录API调用过程中的异常,如网络错误、权限不足等。
    • 对于返回的数据中存在的异常情况(如缺失关键字段),进行相应的处理或记录日志。

示例代码

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

import requests
import json

# API请求参数
url = 'https://api.kingdee.com/executeBillQuery'
headers = {'Content-Type': 'application/json'}
payload = {
  'FormId': 'STK_StockCountLoss',
  'FilterString': 'FDocumentStatus=\'C\' and FStockId.FNumber=\'001\' and FApproveDate>=\'2023-01-01\'',
  'FieldKeys': 'FBillEntry_FEntryID,FID,FBillNo,FDocumentStatus,FStockOrgId.FNumber,FDate,FBillTypeID,FStockerId.FNumber,FCreatorId,FCreateDate,FModifierId,FModifyDate,FApproverId,FApproveDate,FNoteHead,FMaterialId.FNumber,FUnitID,FAcctQty,FCountQty,FLossQty,FStockId.FNumber,FStockStatusId,FOwnerid.FNumber,FPrice,FAmount'
}

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

# 检查响应状态码
if response.status_code == 200:
    data = response.json()

    # 数据清洗与加工
    for record in data:
        # 示例:将日期字符串转换为日期对象
        record['FDate'] = datetime.strptime(record['FDate'], '%Y-%m-%d')

        # 示例:计算总成本
        record['TotalCost'] = float(record['FAcctQty']) * float(record['FPrice'])

        # 更多处理逻辑...
else:
    print(f"Error: {response.status_code}, {response.text}")

通过上述步骤,我们可以高效地从金蝶云星空获取盘亏单数据,并进行初步加工,为后续的数据转换与写入做好准备。这一过程不仅提升了数据处理效率,也确保了数据质量,为业务决策提供了可靠的数据支持。 用友与WMS系统接口开发配置

数据集成与ETL转换:轻易云平台对接旺店通·企业奇门API接口技术案例

在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是至关重要的一环。本文将详细探讨如何通过轻易云数据集成平台,将源平台的数据进行ETL转换,并最终写入目标平台——旺店通·企业奇门API接口。

API接口配置与元数据解析

在本案例中,我们需要将盘亏单对接到其他出库单,并通过wdt.stockout.order.push接口将数据推送至旺店通。以下是该接口的元数据配置:

{
  "api": "wdt.stockout.order.push",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "outer_no",
      "label": "外部单号",
      "type": "string",
      "describe": "外部系统的唯一单据编号,避免重复推送数据",
      "value": "{FBillNo}"
    },
    {
      "field": "warehouse_no",
      "label": "仓库编号",
      "type": "string",
      "describe": "代表仓库所有属性的唯一编码,用于仓库区分,ERP内支持自定义(ERP仓库界面设置)",
      "value": "{FStockId_FNumber}"
    },
    {
      "field": "remark",
      "label": "备注",
      "type": "string",
      "describe": "其他出库单备注",
      "value": "盘亏出库"
    },
    {
      "field": "reason",
      "label": "",
      ...

数据请求与清洗

首先,我们从源平台提取数据。假设源平台提供的数据如下:

{
  ...
  // 源数据示例
  {
    FBillNo: 'PKD20231001',
    FStockId_FNumber: 'WH001',
    FMaterialId_FNumber: 'MAT001',
    FLossQty: '100'
  }
}

在这个阶段,我们需要确保提取的数据完整且准确。

数据转换与写入

接下来是关键的ETL转换步骤。我们需要根据元数据配置,将提取到的数据转换为目标格式:

  1. 外部单号 (outer_no):映射为 FBillNo
  2. 仓库编号 (warehouse_no):映射为 FStockId_FNumber
  3. 备注 (remark):固定值“盘亏出库”
  4. 货品列表节点 (detail_list):
    • 商家编码 (spec_no):映射为 FMaterialId_FNumber
    • 出库数量 (num):映射为 FLossQty

经过转换后的数据格式如下:

{
  ...
  // 转换后的目标格式示例
  {
    outer_no: 'PKD20231001',
    warehouse_no: 'WH001',
    remark: '盘亏出库',
    detail_list: [
        {
          spec_no: 'MAT001',
          num: '100'
        }
    ],
    is_check: '1'
  }
}

推送至目标平台

最后一步是通过HTTP POST请求,将转换后的数据推送至旺店通·企业奇门API接口。代码实现如下:

import requests

url = 'https://api.wangdiantong.com/wdt.stockout.order.push'
headers = {'Content-Type': 'application/json'}
data = {
  ...
}

response = requests.post(url, json=data, headers=headers)

if response.status_code == 200:
    print("Data pushed successfully")
else:
    print(f"Failed to push data: {response.text}")

自动审核

根据元数据配置,我们还需要设置自动审核字段is_check1,确保推送的数据能够自动审核并生效。

以上就是使用轻易云数据集成平台进行ETL转换,并将数据写入旺店通·企业奇门API接口的详细技术案例。通过这种方式,可以实现不同系统间的数据无缝对接,提高业务效率和透明度。 数据集成平台可视化配置API接口

更多系统对接方案