使用ETL技术将金蝶数据转换并写入到旺店通企业奇门

  • 轻易云集成顾问-谢楷斌

金蝶云星空数据集成到旺店通·企业奇门 - 实现系统无缝对接的技术方案

在本文中,将分享如何实现金蝶云星空的数据高效稳定地集成到旺店通·企业奇门,通过实际运行的“金蝶分布式调出单=>旺店通调拨单(3000云仓组织内)”方案展开详细介绍。

首先,为了确保从金蝶云星空获取的数据不漏单,我们使用了executeBillQuery接口进行定时可靠的数据抓取。在调用该接口时,特别注意处理分页和限流问题,以确保数据完整性与请求的成功率。通过设置合理的分页参数与灵活调整接口调用频次,有效避免了可能产生的API限流错误。

其次,针对大量数据需要快速写入到旺店通·企业奇门这一需求,我们采用了批量操作的方法来提高效率,即利用wdt.stock.transfer.push接口进行一次性的大量数据传输。同时,通过定制化的数据映射,对不同系统间的数据格式差异进行了细致处理,使得信息能够准确无误地被识别并存储。另外,在此过程中还引入了一套完善的异常处理机制,一旦出现对接异常,可自动触发错误重试策略,极大提升了整体流程的鲁棒性。

在业务操作透明度方面,将实时监控与日志记录纳入整个数据处理链条,对于每个环节都提供清晰直观的信息反馈。这不仅便于管理人员随时掌握数据流动情况,也为快速定位和解决问题提供有力支持。通过上述多种技术手段协同应用,实现了两大平台之间高效、稳定、安全的数据对接。 如何对接用友BIP接口

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

在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细介绍如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口来获取并加工数据。

接口配置与请求参数

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

{
  "api": "executeBillQuery",
  "method": "POST",
  "number": "FBillNo",
  "id": "FSTKTRSOUTENTRY_FEntryID",
  "pagination": {
    "pageSize": 500
  },
  "idCheck": true,
  "request": [
    {"field":"FSTKTRSOUTENTRY_FEntryID","label":"FEntryID","type":"string","value":"FSTKTRSOUTENTRY_FEntryID"},
    {"field":"FID","label":"实体主键","type":"string","value":"FID"},
    {"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"},
    {"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"},
    {"field":"FStockOrgID_FNumber","label":"调入库存组织","type":"string","value":"FStockOrgID.FNumber"},
    {"field":"FDate","label":"日期","type":"string","value":"FDate"},
    {"field":"FBillTypeID","label":"单据类型","type":"string","value":"FBillTypeID"},
    {"field":"FTransferDirect","label":"调拨方向","type":"string","value":"FTransferDirect"},
    {"field":"FNOTE","label":"备注","type":"string","value":"FNOTE"},
    {"field":"FCreateDate","label":"创建日期","type":"string","value":"FCreateDate"},
    {"field":"FApproveDate","label":"审核日期","type":"string","value":"FApproveDate"},
    {"field":...}
  ],
  "otherRequest": [
    {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
    {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
    {"field":...}
  ]
}

请求参数详解

  1. API和方法:我们使用POST方法调用executeBillQuery API。
  2. 分页设置:每次请求返回500条记录,通过LimitStartRow控制分页。
  3. 过滤条件:通过FilterString字段设置过滤条件,例如:
    FApproveDate >= '{{LAST_SYNC_TIME|dateTime}}' and FTransferBizType = 'InnerOrgTransfer' and FOwnerID.FNumber = '3000'
  4. 字段选择:通过FieldKeys指定需要查询的字段集合。

数据请求与清洗

在轻易云平台上,我们可以使用可视化界面配置上述元数据,并发起请求。以下是一个示例请求体:

{
  "FormId": "STK_TRANSFEROUT",
  "FieldKeys": [
    ...
  ],
  "FilterString": "...",
  ...
}

发送请求后,系统会返回符合条件的数据集。接下来,我们需要对这些数据进行清洗和转换,以便后续处理。

数据转换与写入

清洗后的数据需要进行格式转换,以适应目标系统的要求。例如,将日期格式从YYYY-MM-DD转换为目标系统所需的格式,或者将某些字段值进行映射。

在轻易云平台上,可以通过拖拽组件实现这些转换操作。例如:

  1. 日期格式转换
    • 使用“日期转换”组件,将YYYY-MM-DD格式转换为MM/DD/YYYY格式。
  2. 字段映射
    • 使用“字段映射”组件,将源系统中的字段名映射到目标系统中的字段名。

实际案例

假设我们需要将金蝶分布式调出单的数据集成到旺店通调拨单中,具体操作如下:

  1. 配置元数据:按照上述步骤配置元数据,包括API、方法、分页、过滤条件和字段选择。
  2. 发起请求:通过轻易云平台发起请求,获取符合条件的数据。
  3. 数据清洗:对返回的数据进行清洗,例如去除无效记录、标准化字段值等。
  4. 数据转换:根据目标系统要求进行格式转换和字段映射。
  5. 写入目标系统:将处理后的数据写入旺店通调拨单中。

通过以上步骤,我们实现了从金蝶云星空到旺店通的数据集成,确保了不同系统间的数据无缝对接。 如何对接金蝶云星空API接口

轻易云数据集成平台:ETL转换与写入旺店通·企业奇门API接口

在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是至关重要的一步。本文将详细探讨如何将已经集成的源平台数据(如金蝶分布式调出单)通过ETL转换,转为目标平台旺店通·企业奇门API接口所能够接收的格式,并最终写入目标平台。

数据转换与写入配置

在进行数据转换与写入时,我们需要根据目标平台的API接口要求进行相应的元数据配置。以下是针对旺店通·企业奇门API接口wdt.stock.transfer.push的数据请求和字段映射配置。

{
    "api": "wdt.stock.transfer.push",
    "method": "POST",
    "idCheck": true,
    "operation": {
        "method": "merge",
        "field": "FBillNo,FSrcStockID_FNumber,FDestStockID_FNumber",
        "bodyName": "detail_list",
        "header": ["FBillNo", "FSrcStockID_FNumber", "FDestStockID_FNumber", "FNOTE"],
        "body": ["FMaterialID_FNumber", "F_UHZG_JJQty", "FEntryNote", "FLOT"]
    },
    "request": [
        {
            "field": "outer_no",
            "label": "外部单号",
            "type": "string",
            "describe": "外部单据唯一标识,用于避免同一数据重复推送",
            "value": "{FBillNo}"
        },
        {
            "field": "from_warehouse_no",
            "label": "源仓库调出仓库",
            "type": "string",
            "describe": "货品被调出的仓库",
            "value": "{FSrcStockID_FNumber}"
        },
        {
            "field": "to_warehouse_no",
            "label": "目标仓库调入仓库",
            "type": "string",
            "describe": "货品被调入的仓库",
            "value": "{FDestStockID_FNumber}"
        },
        {
            ...

请求字段解析

  1. 外部单号(outer_no)

    • 字段描述:外部单据唯一标识,用于避免同一数据重复推送。
    • 映射值:{FBillNo}
  2. 源仓库调出仓库(from_warehouse_no)

    • 字段描述:货品被调出的仓库。
    • 映射值:{FSrcStockID_FNumber}
  3. 目标仓库调入仓库(to_warehouse_no)

    • 字段描述:货品被调入的仓库。
    • 映射值:{FDestStockID_FNumber}
  4. 备注(remark)

    • 字段描述:备注信息。
    • 映射值:{FNOTE}
  5. 是否审核(autocheck)

    • 字段描述:1:审核,0:不审核,默认为0。
    • 映射值:固定为1
  6. 货品列表节点(skus)

    • 字段描述:调拨单货品列表节点。
    • 子节点配置:
      • 商家编码(spec_no):映射值为{{detail_list.FMaterialID_FNumber}}
      • 调拨数量(num):映射值为{{detail_list.F_UHZG_JJQty}}
      • 明细备注(remark):映射值为{{detail_list.FEntryNote}}
      • 批次号(batch_no):映射值为{{detail_list.FLOT}}

数据转换过程

在实际操作中,首先需要从源系统(金蝶分布式调出单)提取原始数据,然后按照上述元数据配置进行字段映射和转换。以下是一个简化的伪代码示例:

def transform_data(source_data):
    transformed_data = {
        'outer_no': source_data['FBillNo'],
        'from_warehouse_no': source_data['FSrcStockID_FNumber'],
        'to_warehouse_no': source_data['FDestStockID_FNumber'],
        'remark': source_data.get('FNOTE', ''),
        'autocheck': '1',
        'skus': []
    }

    for detail in source_data['detail_list']:
        sku = {
            'spec_no': detail['FMaterialID_FNumber'],
            'num': detail['F_UHZG_JJQty'],
            'remark': detail.get('FEntryNote', ''),
            'batch_no': detail.get('FLOT', '')
        }
        transformed_data['skus'].append(sku)

    return transformed_data

数据写入目标平台

完成数据转换后,通过HTTP POST请求将数据写入旺店通·企业奇门API接口。以下是一个使用Python requests 库发送POST请求的示例:

import requests

def push_to_wdt(transformed_data):
    url = 'https://api.wangdian.cn/openapi2/wdt.stock.transfer.push'
    headers = {'Content-Type': 'application/json'}

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

    if response.status_code == 200:
        print('Data pushed successfully:', response.json())
    else:
        print('Failed to push data:', response.text)

# 示例调用
source_data = {...}  # 从金蝶系统获取的数据
transformed_data = transform_data(source_data)
push_to_wdt(transformed_data)

通过上述步骤,可以实现从金蝶分布式调出单到旺店通·企业奇门API接口的数据ETL转换和写入。此过程不仅确保了数据的一致性和准确性,也提升了系统间的数据交互效率。 如何对接金蝶云星空API接口

更多系统对接方案