使用轻易云平台转换并写入金蝶云星空销售退货单数据

  • 轻易云集成顾问-曾平安

金蝶云星空数据集成案例分享:金蝶云星空到金蝶云星空

在本文中,我们将详细探讨如何使用轻易云数据集成平台,实现金蝶云星空与金蝶云星空之间的数据无缝对接,特别是针对“其他入库单--销售退货单(虚拟客户1元)-箱包DK包”的业务场景。此技术案例主要聚焦于API接口调用的细节和解决方案,以确保高效且可靠的数据交换。

我们采用了多种关键技术手段来保证集成过程的顺利进行。首先,通过配置executeBillQuery API接口从源系统获取所需的业务数据,这一步骤要求准确处理分页和限流问题,以应对大规模数据请求场景。此外,我们利用轻易云提供的自定义数据转换逻辑模块,将源系统的数据格式转换为目标系统可接收的标准化格式。

针对批量写入需求,采用了batchSave API接口以支持高吞吐量的大规模数据导入。这不仅提升了整体效率,还降低了网络延迟带来的影响。同时,为防止在传输过程中出现漏单情况,我们设置了集中监控和告警机制,实时跟踪任务状态并及时处理潜在异常。

为了进一步保证数据质量,在整个流程中还添加了自动化的异常检测与重试机制。一旦触发错误或超时现象,该机制能够立即启用预设策略进行快速响应,从而最大程度地保障业务连续性。此外,通过实时日志记录功能,各环节操作都被详细记录,为事后审计和问题排查提供了可靠依据。

综合应用上述技术手段及工具,使得“其他入库单--销售退货单”这一具体案例中的各项挑战得以成功应对,并显著提高了两套系统间的数据交互效率。 金蝶与外部系统打通接口

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

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

接口配置与调用

首先,我们需要配置接口的元数据。根据提供的元数据配置,接口的基本信息如下:

  • API: executeBillQuery
  • Method: POST
  • FormId: STK_MISCELLANEOUS
  • Pagination: 支持分页,每页500条记录

请求参数包括实体主键、单据编号、单据状态等多个字段。以下是一个典型的请求体示例:

{
  "FormId": "STK_MISCELLANEOUS",
  "FieldKeys": "FEntity_FEntryID,FID,FBillNo,FDocumentStatus,FStockOrgId.FNumber,FDate,FBillTypeID,FSUPPLIERID.FNumber,FNOTE,FMATERIALID.FNumber,FSTOCKID,FQty,FPrice,FAmount,FBOMID,FPRODUCEDATE,FEXPIRYDATE,FMTONO,FProjectNo,FSTOCKSTATUSID,FOWNERID,FSTOCKFLAG,FJoinQty,FExpperiod,FExpUnit,FSRCBILLTYPEID,FSRCBILLNO,FLOT,FEntryNote,FStockLocId,FCMKBarCode,FInStockType",
  "FilterString": "FDate >='{{LAST_SYNC_TIME|date}}' and FBillTypeID.FNumber='QTRKD07_SYS' and FStockOrgId.FNumber= '204'",
  "Limit": 500,
  "StartRow": 0
}

数据请求与清洗

在请求到数据后,需要对数据进行清洗和初步处理。这一步骤至关重要,因为它确保了后续的数据转换和写入能够顺利进行。

  1. 字段映射与转换:根据业务需求,将金蝶返回的数据字段映射到目标系统所需的字段。例如,将FEntity_FEntryID映射为目标系统中的EntryID
  2. 数据格式化:对日期、金额等字段进行格式化处理,确保符合目标系统的要求。例如,将日期格式从YYYY-MM-DD转换为YYYYMMDD
  3. 过滤无效数据:剔除不符合业务规则的数据,例如单据状态为“草稿”的记录。

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

def clean_data(raw_data):
    cleaned_data = []
    for record in raw_data:
        if record['FDocumentStatus'] != 'Z':
            cleaned_record = {
                'EntryID': record['FEntity_FEntryID'],
                'BillNo': record['FBillNo'],
                'Date': record['FDate'].replace('-', ''),
                'Amount': float(record['FAmount']),
                # 其他字段映射...
            }
            cleaned_data.append(cleaned_record)
    return cleaned_data

数据转换与写入

在完成数据清洗后,下一步是将数据转换为目标系统所需的格式,并写入目标系统。这一步通常涉及到调用目标系统的API或数据库操作。

  1. 构建请求体:根据目标系统API的要求,构建相应的请求体。例如,如果目标系统要求以JSON格式提交数据,则需要将清洗后的数据转换为JSON格式。
  2. 批量写入:为了提高效率,可以采用批量写入的方式,将多条记录一次性提交给目标系统。

以下是一个示例代码,用于将清洗后的数据批量写入目标系统:

import requests

def write_to_target_system(cleaned_data):
    url = "https://target-system-api.com/endpoint"
    headers = {"Content-Type": "application/json"}

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

    if response.status_code == 200:
        print("Data successfully written to target system.")
    else:
        print(f"Failed to write data: {response.text}")

# 示例调用
raw_data = fetch_from_kingdee()  # 假设这是从金蝶获取的数据
cleaned_data = clean_data(raw_data)
write_to_target_system(cleaned_data)

通过上述步骤,我们实现了从金蝶云星空接口获取并加工数据,并最终将其写入目标系统。这一过程不仅确保了数据的一致性和准确性,还极大地提升了业务流程的自动化程度。 钉钉与MES系统接口开发配置

使用轻易云数据集成平台将销售退货单数据转换并写入金蝶云星空API接口

在使用轻易云数据集成平台进行数据集成的生命周期中,第二步至关重要,即将已经集成的源平台数据进行ETL(提取、转换、加载)转换,使其符合目标平台——金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨这一过程中的技术细节,特别是如何利用元数据配置来实现这一目标。

数据请求与清洗

在数据请求阶段,我们从源系统中获取销售退货单的数据。假设我们已经完成了这一阶段,并且得到了包含所有必要字段的数据。接下来,我们需要对这些数据进行清洗和预处理,以确保它们能够顺利地通过ETL流程。

数据转换与写入

为了将销售退货单的数据转换为金蝶云星空API接口所能接收的格式,我们需要根据提供的元数据配置进行详细的字段映射和转换。

元数据配置解析

以下是关键的元数据配置部分:

{
  "api": "batchSave",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "method": "merge",
    "field": "FBillNo,FDate,FBillTypeID,FSUPPLIERID_FNumber,FDEPTID,FDJZDYyongtu_FNumber,F_POIH_Text_FNumber",
    "bodyName": "details",
    "bodySum": ["FQty"],
    "header": ["FBillNo", "FDate", "FBillTypeID", "FSUPPLIERID_FNumber", "FDEPTID", "FDJZDYyongtu_FNumber", "FStockOrgId_FNumber", "F_POIH_Text_FNumber", "FNOTE"],
    "body": ["FMATERIALID_FNumber", "FQty", "FStockOrgId_FNumber", "FEntryNote"]
  },
  ...
}

该配置文件定义了如何将源系统的数据映射到金蝶云星空API接口所需的字段。具体来说:

  • apimethod 指定了要调用的API和HTTP方法。
  • idCheck 用于检查记录是否存在。
  • operation 部分详细描述了如何合并和处理数据,包括头部信息(header)和明细信息(body)。
字段映射

根据元数据配置,我们需要将源系统中的字段映射到目标系统中的相应字段。例如:

  • FBillNo 对应源系统中的单据编号。
  • FDate 对应日期。
  • FBillTypeID 固定为 "XSTHD01_SYS",表示销售退货单类型。
  • FSaleOrgId, FStockOrgId, 等等,这些字段都需要根据业务需求进行相应的映射和转换。
数据处理逻辑
  1. 头部信息处理:首先,我们需要提取并处理头部信息,将其转换为目标系统所需的格式。例如:

    {
     "FBillNo": "{FBillNo}",
     "FDate": "{FDate}",
     ...
    }
  2. 明细信息处理:然后,我们处理明细信息,将每一条明细记录转换为目标系统所需的格式。例如:

    {
     "FMATERIALID_FNumber": "{{details.FMATERIALID_FNumber}}",
     ...
    }
  3. 组合请求体:最后,我们将头部信息和明细信息组合成一个完整的请求体,准备发送到金蝶云星空API接口。

示例代码

以下是一个示例代码片段,用于生成请求体并调用金蝶云星空API接口:

import requests
import json

# 构建请求头部
header = {
    'FBillNo': '123456',
    'FDate': '2023-10-01',
    'FBillTypeID': 'XSTHD01_SYS',
    # 更多字段...
}

# 构建请求明细
details = [
    {
        'FMATERIALID_FNumber': 'MAT001',
        'FQty': 10,
        # 更多字段...
    },
    # 更多明细...
]

# 合并头部和明细
request_body = {
    'FormId': 'SAL_RETURNSTOCK',
    'Operation': 'Save',
    'IsAutoSubmitAndAudit': False,
    'IsVerifyBaseDataField': False,
    'SubSystemId': '21',
    'Model': {
        **header,
        'SubHeadEntity': {
            # 财务信息...
        },
        'Entity': details
    }
}

# 调用金蝶云星空API接口
response = requests.post(
    url='https://api.kingdee.com/batchSave',
    headers={'Content-Type': 'application/json'},
    data=json.dumps(request_body)
)

# 检查响应状态
if response.status_code == 200:
    print('Data successfully saved to Kingdee Cloud.')
else:
    print('Failed to save data:', response.text)

总结

通过上述步骤,我们成功地将销售退货单的数据从源系统提取、清洗,并通过ETL流程转换为金蝶云星空API接口所能接收的格式,最终写入目标平台。这一过程充分利用了元数据配置,确保了每个环节都高效且准确地完成。 钉钉与WMS系统接口开发配置

更多系统对接方案