企业级数据集成:金蝶云星空对接旺店通实战指南

  • 轻易云集成顾问-钟家寿

金蝶采购入库单=>旺店通采购入库单(ok)技术案例分享

在企业信息化进程中,系统对接和数据集成的需求日益迫切。本文将聚焦于一个具体的系统对接集成案例,即如何通过金蝶云星空的数据API接口executeBillQuery,将采购入库单无缝导入到旺店通·企业奇门中,并通过其API接口wdt.stockin.purchase.push实现批量写入。

背景与挑战

首先,我们需要解决大量数据从金蝶云星空快速写入至旺店通·企业奇门的问题。这不仅要求高吞吐量的数据处理能力,还要确保在高负载情况下,数据准确传输不漏单。此外,两大系统之间存在着不同的数据格式和结构,这就要求我们有灵活且自定义的数据转换逻辑,以保持业务流程的一致性。同时,对于跨平台集成过程中不可避免的异常状况,需要设计可靠的错误重试机制和全面的监控告警体系。

技术方案概述

  1. 数据抓取:利用executeBillQuery API根据指定条件定期抓取金蝶云星空中的采购入库单数据。
  2. 转换逻辑:基于双方系统提供的字段规范,对抓取到的数据进行必要的转换,包括但不限于字段映射、值替换及格式调整。
  3. 分页与限流处理:巧妙地处理API限制,通过对请求进行分页控制,合理配置并行任务,从而优化整体运行效率。
  4. 实时监控与日志记录:部署集中监控和日志分析模块,实现全过程透明化管理,并及时捕捉可能出现的问题。
  5. 异常处理与重试机制:针对潜在网络波动、服务宕机等情况,引入自动重试策略,确保每笔交易安全落地。

通过这些技术手段,我们成功构建了一套稳健、高效且可扩展的数据集成解决方案,为企业多系统联动奠定了坚实基础。接下来将详细介绍各个环节中的具体实施步骤及关键细节。 电商OMS与WMS系统接口开发配置

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

在数据集成的生命周期中,第一步是调用源系统接口获取数据,并对其进行初步加工。本文将详细探讨如何使用轻易云数据集成平台调用金蝶云星空的executeBillQuery接口来获取采购入库单数据,并进行必要的数据处理。

接口配置与调用

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

  • api: executeBillQuery
  • method: POST
  • number: FBillNo
  • id: FInStockEntry_FEntryId
  • pagination: 每页500条记录
  • idCheck: true

请求参数包括:

  • FieldKeys: 需查询的字段key集合
  • FormId: 业务对象表单Id,如STK_InStock
  • FilterString: 过滤条件,用于筛选特定的数据
  • Limit: 最大行数
  • StartRow: 开始行索引

以下是一个具体的请求示例:

{
    "api": "executeBillQuery",
    "method": "POST",
    "number": "FBillNo",
    "id": "FInStockEntry_FEntryId",
    "pagination": {"pageSize": 500},
    "idCheck": true,
    "request": [
        {"field": "FInStockEntry_FEntryId", "label": "id", "type": "string", "value": "FInStockEntry_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"}
        // 其他字段省略...
    ],
    // 其他请求参数省略...
}

数据过滤与分页

为了确保我们只获取到需要的数据,可以使用FilterString参数进行过滤。例如,我们可以根据供应商编号和审核日期来筛选数据:

{
    // 其他参数省略...
    {
        field: 'FilterString',
        label: '过滤条件',
        type: 'string',
        describe: '示例写法 FSupplierId.FNumber = \'VEN00010\' and FApproveDate>=',
        value: 'FApproveDate>=\'{{LAST_SYNC_TIME|dateTime}}\' and FPurchaseOrgId.FNumber in ( \'7000\',\'3000\') and FISGENFORIOS=0'
    }
}

分页参数则通过LimitStartRow来控制,每次请求最多返回500条记录,从指定行索引开始。

数据处理与转换

在获取到原始数据后,需要对其进行初步加工,以便后续的数据转换和写入。以下是一些常见的数据处理操作:

  1. 字段映射:将源系统的字段映射到目标系统的字段。例如,将金蝶云星空中的FBillNo映射到旺店通中的采购入库单编号。
  2. 数据清洗:去除无效或重复的数据,确保数据质量。
  3. 格式转换:将日期、金额等字段转换为目标系统所需的格式。

例如,我们可以使用以下代码对获取到的数据进行初步处理:

def process_data(raw_data):
    processed_data = []
    for record in raw_data:
        processed_record = {
            'purchase_order_no': record['FBillNo'],
            'entry_id': record['FInStockEntry_FEntryId'],
            'status': record['FDocumentStatus'],
            'organization': record['FStockOrgId_FNumber'],
            'date': convert_date_format(record['FDate']),
            # 其他字段处理...
        }
        processed_data.append(processed_record)
    return processed_data

def convert_date_format(date_str):
    # 将日期字符串转换为目标格式
    return datetime.strptime(date_str, '%Y-%m-%d').strftime('%d/%m/%Y')

实时监控与日志记录

为了确保数据集成过程的透明度和可追溯性,实时监控和日志记录是必不可少的。通过轻易云平台提供的可视化界面,可以实时监控数据流动和处理状态,并记录每一步操作的详细日志。

例如,可以在每次API调用前后记录日志:

import logging

logging.basicConfig(level=logging.INFO)

def fetch_and_process_data():
    logging.info('开始调用金蝶云星空接口...')

    raw_data = call_kingdee_api()

    logging.info(f'获取到{len(raw_data)}条记录')

    processed_data = process_data(raw_data)

    logging.info('数据处理完成')

    return processed_data

通过上述步骤,我们可以高效地调用金蝶云星空接口获取采购入库单数据,并对其进行必要的加工,为后续的数据转换和写入做好准备。 打通企业微信数据接口

使用轻易云数据集成平台进行ETL转换并写入旺店通·企业奇门API接口

在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)转换,转为目标平台能够接收的格式,并最终写入目标平台。本文将详细探讨如何使用轻易云数据集成平台,将金蝶采购入库单的数据转换为旺店通·企业奇门API接口所能接收的格式,并写入目标平台。

1. API接口配置

在进行ETL转换时,首先需要了解目标API接口的配置。根据提供的元数据配置,旺店通·企业奇门API接口wdt.stockin.purchase.push采用POST方法,要求传递多个字段,其中一些字段是必填项。


{
    "api": "wdt.stockin.purchase.push",
    "effect": "EXECUTE",
    "method": "POST",
    "idCheck": true,
    "request": [
        {"field":"purchase_no","label":"采购单号","type":"string","value":"{{details.FSRCBillNo}}"},
        {"field":"outer_no","label":"外部单号","type":"string","value":"{FBillNo}"},
        {"field":"is_create_batch","label":"是否创建批次","type":"string","value":"1"},
        {"field":"is_check","label":"是否审核","type":"string","value":"1"},
        {"field":"warehouse_no","label":"仓库编号","type":"string","value":"{{details.FStockId_FNumber}}"},
        {"field":"logistics_code","label":"物流编号","type":"string"},
        {"field":"logistics_no","label":"物流单号","type":"string"},
        {"field":"post_fee","label":"邮资","type":"string"},
        {"field":"other_fee","label":"其他费用","type":"string"},
        {"field":"remark","label":"备注","type":"string","value":"{FNote}"},
        {
            "field": "details_list",
            "label": "入库货品列表节点",
            "type": "array",
            "value": "details",
            "children": [
                {"field": "spec_no", "label": "商家编码", "type": "string", "value": "{{details.FMaterialId_FNumber}}"},
                {"field": "stockin_num", "label": "入库数量", "type": "string", "value": "{{details.FPriceUnitQty}}"},
                {"field": "stockin_price", "label": "入库价", "type": "string", "value": "{{details.FAmount}}"},
                {"field": "tax_price", 
![金蝶云星空API接口配置](https://pic.qeasy.cloud/T9.png~tplv-syqr462i7n-qeasy.image)
更多系统对接方案