异常处理与数据转换:轻易云整合金蝶云与马帮系统

  • 轻易云集成顾问-冯潇

案例分享:拆卸单(父项)金蝶=》马帮(待写入测试)

在本技术案例中,我们将详细介绍如何通过轻易云数据集成平台,实现金蝶云星空的数据无缝对接到马帮系统,具体涉及拆卸单(父项)的集成。本次方案主要聚焦于以下几个关键点:

  1. 定时可靠的抓取金蝶云星空接口数据
    我们采用了定期调度机制,通过调用executeBillQuery API接口,从金蝶云星空精准获取最新的拆卸单信息。为了避免漏单现象产生,每次检索都会记录上一次成功获取的位置,并进行增量式的数据提取。

  2. 处理分页和限流问题
    金蝶云星空API具有分页限制,为确保稳定性和高效性,我们在设计流程时加入了智能分页读取策略,同时对限流情况进行了充分考量与优化,保证了大规模数据抓取的平稳运行。

  3. 大量数据快速写入到马帮
    在完成从金蝶云星空的数据抽取后,将批量整理后的拆卸单信息通过调用马帮提供的warehouse-do-add-storage-out API接口,高效地导入到目标系统。这一步骤特别注重传输速度和数据完整性,以满足商业需求中的及时更新要求。

  4. 应对数据格式差异与映射挑战
    由于两个系统间的数据结构存在显著差异,本方案在中间环节实施了自定义字段映射逻辑,对源数据进行必要转换,使其符合目标API接受标准。这种灵活且准确的数据映射保障了跨系统整合的一致性。

  5. 异常处理与错误重试机制
    数据集成过程中不可避免会遇到异常状况,如网络不稳定或API响应失败等。为此我们设置了一套详细的错误捕捉和重试机制,一旦出现问题即刻报警并自动启动重试程序,以最大化提高整体操作的可靠性。此外,还引入多级日志记录功能,用以实时监控各个环节,便于事后审计及问题追溯。

这只是技术实现的一部分开篇说明,在接下来的部分里,我们将深入展示完整流程配置步骤及实际操作细节。 金蝶与SCM系统接口开发配置

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

在轻易云数据集成平台的生命周期管理中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过调用金蝶云星空接口executeBillQuery来获取并加工数据,以实现拆卸单(父项)的数据集成。

接口配置与请求参数

首先,我们需要配置元数据以便正确调用金蝶云星空的API。以下是我们使用的元数据配置:

{
  "api": "executeBillQuery",
  "method": "POST",
  "number": "FBillNo",
  "id": "FEntity_FEntryID",
  "pagination": {
    "pageSize": 500
  },
  "idCheck": true,
  "request": [
    {"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":"FOwnerTypeIdHead","label":"成品货主类型","type":"string","value":"FOwnerTypeIdHead"},
    {"field":"FOwnerIdHead_FNumber","label":"成品货主","type":"string","value":"FOwnerIdHead.FNumber"},
    {"field":"FAffairType","label":"事务类型","type":"string","value":"FAffairType"},
    {"field":"FEE","label":"费用","type":"string","value":"FEE"},
    {"field":"FDeptID_FNumber","label":"部门","type":"string","value":"FDeptID.FNumber"},
    {"field":"FNote","label":"备注","type":"string","value":"FNote"},
    {"field":...}
  ],
  "otherRequest": [
    {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
    {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
    {"field":...}
  ]
}

请求示例

为了获取拆卸单的数据,我们需要构建一个POST请求,包含必要的字段和过滤条件。以下是一个示例请求体:

{
  "FormId": "STK_AssembledApp",
  "FieldKeys": [
    "FID", 
    "FBillNo", 
    ...
  ],
  "FilterString": "FApproveDate>='2023-01-01' and FAFFAIRTYPE = 'Dassembly'",
  ...
}

数据清洗与转换

在接收到来自金蝶云星空的数据后,我们需要对其进行清洗和转换,以确保数据符合目标系统(如马帮)的要求。

  1. 字段映射:将金蝶返回的数据字段映射到目标系统所需的字段。例如,将FBillNo映射为目标系统中的订单编号。
  2. 数据格式转换:根据目标系统的要求,对日期、数字等字段进行格式转换。例如,将日期格式从YYYY-MM-DD转换为MM/DD/YYYY
  3. 数据过滤:根据业务需求,过滤掉不必要的数据。例如,只保留状态为“已审核”的记录。

实际案例

假设我们需要将金蝶云星空中的拆卸单(父项)数据写入到马帮系统中,以下是一个实际操作步骤:

  1. 调用API:使用上述配置和请求体,通过轻易云平台调用金蝶云星空的executeBillQuery接口。
  2. 处理响应:解析API响应,提取所需的数据字段,并进行清洗和转换。
  3. 写入目标系统:将处理后的数据通过轻易云平台写入到马帮系统中。
import requests
import json

# 构建请求体
payload = {
  ...
}

# 调用API
response = requests.post("https://api.kingdee.com/executeBillQuery", data=json.dumps(payload))

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

    # 数据清洗与转换
    cleaned_data = []

    for record in data['Result']:
        cleaned_record = {
            '订单编号': record['FBillNo'],
            '日期': record['FDate'],
            ...
        }
        cleaned_data.append(cleaned_record)

    # 写入目标系统(例如马帮)
else:
    print(f"Error: {response.status_code}")

通过以上步骤,我们可以高效地实现从金蝶云星空到马帮系统的数据集成。 金蝶与SCM系统接口开发配置

使用轻易云数据集成平台进行ETL转换并写入马帮API接口

在数据集成生命周期的第二阶段,我们需要将源平台的数据进行ETL转换,使其符合目标平台(马帮API接口)的要求,并最终写入目标平台。以下是一个详细的技术案例,展示如何利用轻易云数据集成平台配置元数据,实现这一过程。

1. 配置元数据

首先,我们需要根据提供的元数据配置文件,了解目标API接口的要求。以下是我们要处理的元数据配置:

{
    "api": "warehouse-do-add-storage-out",
    "effect": "EXECUTE",
    "method": "POST",
    "idCheck": true,
    "operation": {
        "method": "merge",
        "field": "FBillNo",
        "bodyName": "goods_list",
        "header": ["FBillNo", "FNote", "FStockID_FNumber"],
        "body": ["FMaterialID_FNumber", "FQty"]
    },
    "request": [
        {
            "field": "warehouseName",
            "label": "仓库名称",
            "type": "string",
            "value": "_findCollection find name from edd9129b-4566-36f5-b5f0-84e12a4414fd where finance_code={FStockID_FNumber}"
        },
        {
            "field": "employeeName",
            "label": "员工名称",
            "type": "string",
            "value": "金蝶单据同步"
        },
        {
            "field": "remark",
            "label": "备注",
            "type": "string",
            "value": "{FNote}"
        },
        {
            "field": "data",
            ...

2. 数据请求与清洗

在这个阶段,我们从源系统(金蝶)请求相关数据,并对其进行清洗。假设我们从金蝶系统获取到如下原始数据:

{
    ...
}

3. 数据转换

接下来,我们根据马帮API接口的要求,对数据进行ETL转换。具体步骤如下:

  1. 提取并映射字段

    • 从金蝶系统中提取字段 FBillNo, FNote, FStockID_FNumber, FMaterialID_FNumberFQty
    • 映射这些字段到马帮API所需的字段。
  2. 生成请求体

    • 根据元数据配置中的operation部分,将提取到的数据重新组织为马帮API所需的格式。
    • 例如,将 FBillNo 映射为请求头中的 FBillNo,将 goods_list 中的 FMaterialID_FNumberFQty 分别映射为 stockSkuquantity

以下是生成的请求体示例:

{
    ...
}

4. 写入目标平台

最后一步是将转换后的数据通过HTTP POST方法发送到马帮API接口。我们使用轻易云的数据集成平台提供的HTTP客户端功能来实现这一点。

import requests

url = 'https://api.mabang.com/warehouse-do-add-storage-out'
headers = {'Content-Type': 'application/json'}
data = {
    ...
}

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

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

小结

通过以上步骤,我们成功地将源平台(金蝶)的数据经过ETL转换后,写入到了目标平台(马帮)。在整个过程中,轻易云数据集成平台提供了全透明可视化操作界面和实时监控功能,使得每个环节都清晰易懂,大大提升了业务透明度和效率。 钉钉与MES系统接口开发配置

更多系统对接方案