轻松掌握金蝶云星空与旺店通对接:接口配置与数据写入详解

  • 轻易云集成顾问-贺强

金蝶云星空数据集成到旺店通·企业奇门:实战分享与技术细节

在现代信息化系统的构建过程中,各类业务系统之间数据的无缝对接成为关键环节。本文将详细介绍如何通过轻易云数据集成平台,进行金蝶云星空的数据整合并推送到旺店通·企业奇门。本案例聚焦于“金蝶分布式调出单=>旺店通调出单(3000云仓组织内)”的具体实现。我们将在以下内容中深入探讨一些关键技术点,包括API调用、分页处理、数据格式转换以及异常处理机制。

为了确保从金蝶云星空获取的数据不漏单,我们使用了executeBillQuery接口,它可高效地抓取每一条目标记录。同时,为了适应岭长时间段和大批量数据同步操作,我们设计了一套定时可靠的数据抓取策略,通过增量更新机制减少重复传输和网络压力。

在写入端,使用wdt.stockout.transfer.push接口,将抓取到的调出单快速安全地写入至旺店通·企业奇门。从而保证大量订单能够实时、高效地反映在最终业务场景中。

分页限流是跨系统高频次、大批量数据交互中的一个重要问题。在本方案中,对来自金蝶云星空执行executeBillQuery接口时进行了合理分页,并设置限流参数以避免因瞬间大规模请求造成服务堵塞。此外,两者间不同的数据格式也需要精心处理,通过定制化数据映射方案,实现字段规范的一致性转换,这样使得原始记录能准确落盘至目标系统。

面对可能发生的对接异常,我们引入了错误重试机制。当任意步骤出现故障或通信失败时,自动触发重新尝试过程,从而提高整个流程的鲁棒性和稳定性。而关于实时监控,每个步骤均伴随日志记录,让运维人员能够方便地追踪问题并进行诊断,提高整体透明度及管控效率。

下一部分内容我们将详述具体实现的方法论及代码示例,以便读者更直观了解实际操作过程。请继续关注! 如何对接用友BIP接口

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

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

接口配置与调用

首先,我们需要配置和调用金蝶云星空的executeBillQuery接口。根据提供的元数据配置,我们可以看到该接口采用POST方法,主要用于查询操作(effect: QUERY)。

{
  "api": "executeBillQuery",
  "effect": "QUERY",
  "method": "POST",
  "number": "FBillNo",
  "id": "FSTKTRSOUTENTRY_FEntryID",
  ...
}

请求参数配置

在请求参数中,我们需要关注以下几个关键字段:

  • FormId: 表单ID,必须填写金蝶的表单ID,如:STK_TRANSFEROUT
  • FieldKeys: 查询字段集合,格式为数组,但需要转换为逗号分隔的字符串
  • FilterString: 过滤条件,用于限定查询范围
  • LimitStartRow: 分页参数,用于控制查询结果的分页

以下是一个示例请求参数配置:

{
  "FormId": "STK_TRANSFEROUT",
  "FieldKeys": [
    "FSTKTRSOUTENTRY_FEntryID", 
    "FID", 
    "FBillNo", 
    ...
  ],
  "FilterString": "FApproveDate>='2023-01-01' and FTransferBizType = 'InnerOrgTransfer' and FOwnerID.FNumber = '3000' and FDestStockID.FNumber='1104'",
  "Limit": 100,
  "StartRow": 0
}

数据请求与清洗

调用接口后,我们会得到一组原始数据。为了便于后续处理,需要对这些数据进行清洗和初步加工。具体步骤如下:

  1. 字段映射与转换:根据元数据配置,将返回的数据字段映射到我们需要的字段上,并进行必要的类型转换。
  2. 数据过滤:进一步过滤不符合业务需求的数据。例如,只保留状态为已审核(FDocumentStatus = 'C')的记录。
  3. 异常处理:处理可能出现的数据异常,如缺失值、格式错误等。

以下是一个简单的数据清洗示例:

def clean_data(raw_data):
    cleaned_data = []
    for record in raw_data:
        if record['FDocumentStatus'] == 'C':
            cleaned_record = {
                'EntryID': record['FSTKTRSOUTENTRY_FEntryID'],
                'BillNo': record['FBillNo'],
                'Date': record['FDate'],
                ...
            }
            cleaned_data.append(cleaned_record)
    return cleaned_data

数据转换与写入

清洗后的数据需要进一步转换,以适应目标系统(如旺店通)的要求。这一步通常包括:

  1. 格式转换:将日期、金额等字段转换为目标系统所需的格式。
  2. 结构调整:根据目标系统的数据结构,调整字段顺序或嵌套关系。

最后,将转换后的数据写入目标系统。这一步可以通过轻易云平台提供的数据写入功能实现。

def transform_and_write(cleaned_data):
    transformed_data = []
    for record in cleaned_data:
        transformed_record = {
            'OrderNo': record['BillNo'],
            'TransferDate': format_date(record['Date']),
            ...
        }
        transformed_data.append(transformed_record)

    # 调用轻易云平台的数据写入功能
    write_to_target_system(transformed_data)

通过上述步骤,我们完成了从金蝶云星空获取调出单数据并进行初步加工,为后续的数据集成奠定了基础。 如何开发钉钉API接口

使用轻易云数据集成平台将金蝶分布式调出单转换并写入旺店通·企业奇门API接口

在数据集成生命周期的第二步,我们需要将从源平台(金蝶)获取的数据进行ETL转换,并将其转化为目标平台(旺店通·企业奇门API接口)所能接收的格式,最终写入目标平台。以下是具体的技术实现过程。

1. API接口配置

首先,我们需要配置旺店通·企业奇门API接口。根据提供的元数据配置,目标API接口为wdt.stockout.transfer.push,使用POST方法提交数据,并启用了ID检查功能。以下是具体的字段映射和请求配置:

{
  "api": "wdt.stockout.transfer.push",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "method": "merge",
    "field": "FBillNo,FSrcStockID_FNumber",
    "bodyName": "detail_list",
    "header": ["FBillNo", "FSrcStockID_FNumber", "FNOTE"],
    "body": ["FMaterialID_FNumber", "F_UHZG_JJQty", "FEntryNote", "FLOT"]
  },
  ...
}

2. 请求字段映射

根据元数据配置,我们需要将金蝶分布式调出单的数据字段映射到旺店通·企业奇门API接口的请求字段中。具体映射关系如下:

  • src_order_no 映射到 FBillNo
  • is_check 设置为 1(自动审核)
  • warehouse_no 映射到 FSrcStockID_FNumber
  • outer_no 映射到 FBillNo
  • remark 映射到 FNOTE
  • goods_list 映射到调拨出库货品详情,其中包括:
    • spec_no 映射到 detail_list.FMaterialID_FNumber
    • num 映射到 detail_list.F_UHZG_JJQty
    • remark 映射到 detail_list.FEntryNote
    • batch_no 映射到 detail_list.FLOT

3. 数据清洗与转换

在数据清洗与转换阶段,我们需要确保从金蝶系统获取的数据能够正确映射并符合旺店通·企业奇门API接口的要求。以下是一个示例代码片段,展示如何进行数据清洗和转换:

def transform_data(source_data):
    transformed_data = {
        'src_order_no': source_data['FBillNo'],
        'is_check': '1',
        'warehouse_no': source_data['FSrcStockID_FNumber'],
        'outer_no': source_data['FBillNo'],
        'remark': source_data['FNOTE'],
        'goods_list': []
    }

    for item in source_data['detail_list']:
        transformed_item = {
            'spec_no': item['FMaterialID_FNumber'],
            'num': item['F_UHZG_JJQty'],
            'remark': item['FEntryNote'],
            'batch_no': item['FLOT']
        }
        transformed_data['goods_list'].append(transformed_item)

    return transformed_data

4. 数据写入目标平台

完成数据转换后,我们需要将转换后的数据通过POST请求写入旺店通·企业奇门API接口。以下是一个示例代码片段,展示如何发送HTTP请求:

import requests

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

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

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

source_data = {
    # 假设这是从金蝶系统获取的数据
}

transformed_data = transform_data(source_data)
push_to_wdt(transformed_data)

通过上述步骤,我们成功地将金蝶分布式调出单的数据转换为旺店通·企业奇门API接口所能接收的格式,并写入目标平台。这一过程充分利用了轻易云数据集成平台的强大功能,实现了不同系统间的数据无缝对接。 企业微信与ERP系统接口开发配置

更多系统对接方案