销售退货单数据的ETL过程及API接口实现案例

  • 轻易云集成顾问-蔡威

聚水潭·奇门数据集成到金蝶云星空:高效销售退货单同步方案

在本文中,我们将分享一个实际运行的系统对接集成案例,展示如何通过轻易云数据集成平台,实现聚水潭·奇门的数据与金蝶云星空的无缝对接。具体来说,本次案例涉及将【聚水潭】销售退货单数据集成到【金蝶】销售退货单,并确保整个过程高效、可靠且透明。

该解决方案依赖于两大关键API接口:首先,通过调用聚水潭·奇门的jushuitan.refund.list.query API获取销售退货单信息;然后,使用金蝶云星空的batchSave API实现批量写入。这一过程中,不仅要应对分页和限流等常见挑战,还需处理不同系统之间的数据格式差异。此外,为了确保每步操作都正确无误,从而避免漏单问题,还实现了实时监控与日志记录。

主要特性包括:

  • 大量数据快速写入金蝶云星空:利用优化后的批量写入机制,大幅提升数据传输效率。
  • 定时可靠抓取聚水潭·奇门接口数据:通过定时任务确保数据能够按计划自动获取,减少人工干预。
  • 分页和限流处理策略:针对API返回的大量记录,实现分页处理,并应用限流策略保障接口稳定性。
  • 异常处理与重试机制:完善的错误捕获及重试逻辑,保证即使出现暂时性故障,也能顺利完成最终目标。

本技术文章将详细介绍从配置元数据、调用API,到处理不同系统间的数据映射,以及设立实时监控和日志记录各个环节。希望通过这一实战案例,可以为其他类似需求提供有价值的参考。 金蝶与外部系统打通接口

调用聚水潭·奇门接口获取并加工数据的技术案例

在数据集成过程中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用聚水潭·奇门接口jushuitan.refund.list.query来获取销售退货单数据,并进行初步的数据加工。

接口调用配置

首先,我们需要配置接口的元数据,以便正确地请求和处理数据。以下是元数据配置的详细信息:

{
  "api": "jushuitan.refund.list.query",
  "effect": "QUERY",
  "method": "POST",
  "number": "{as_id}{modified}",
  "id": "{as_id}{modified}",
  "name": "as_id",
  "idCheck": true,
  "request": [
    {"field": "page_index", "label": "第几页", "type": "int", "describe": "从第一页开始,默认1", "value": "1"},
    {"field": "page_size", "label": "每页多少条", "type": "int", "describe": "默认30,最大50", "value": "50"},
    {"field": "start_time", "label": "修改起始时间{{DAYS_AGO_1|date}} 00:00:00", 
        "type": "string", 
        "describe": 
        "起始时间,和结束时间必须同时存在,时间间隔不能超过七天,与线上单号不能同时为空",
        "value":"2024-09-07 00:00:00"
    },
    {"field": "end_time", 
        "label":"修改结束时间{{CURRENT_TIME|datetime}}",
        "type":"string",
        "describe":"结束时间,和起始时间必须同时存在,时间间隔不能超过七天,与线上单号不能同时为空",
        "value":"2024-09-07 23:59:59"
    },
    {"field":"date_type","label":"时间类型","type":"int","describe":"修改时间:0 ; 创建时间:1; 确认时间: 2;非必填,默认0"},
    {"field":"good_status","label":"货物状态","type":"string","describe":"(BUYER_NOT_RECEIVED:买家未收到货,BUYER_RECEIVED:买家已收到货,BUYER_RETURNED_GOODS:买家已退货,SELLER_RECEIVED:卖家已收到退货","value":"SELLER_RECEIVED"}
  ],
  ...
}

请求参数解析

在上述配置中,我们定义了多个请求参数:

  • page_indexpage_size:用于分页控制。
  • start_timeend_time:用于指定查询的时间范围,这两个参数必须同时存在且间隔不超过七天。
  • date_type:用于指定查询的时间类型,例如修改时间、创建时间或确认时间。
  • good_status:用于过滤特定状态的退货单,例如“卖家已收到退货”。

这些参数确保我们能够精确地获取所需的数据,并避免不必要的数据传输。

数据请求与清洗

在调用接口获取数据后,我们需要对返回的数据进行初步清洗和过滤。以下是一个示例代码片段,用于处理返回的数据:

import requests
import json

# 定义请求URL和头部信息
url = 'https://api.jushuitan.com/openapi/xxx'
headers = {'Content-Type': 'application/json'}

# 定义请求体
payload = {
    'page_index': 1,
    'page_size': 50,
    'start_time': '2024-09-07 00:00:00',
    'end_time': '2024-09-07 23:59:59',
    'date_type': 0,
    'good_status': 'SELLER_RECEIVED'
}

# 发起POST请求
response = requests.post(url, headers=headers, data=json.dumps(payload))

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

    # 数据清洗与过滤
    cleaned_data = []
    for item in data['refund_list']:
        if item['items']['r_qty'] != 0 and item['items']['is_need'] != '45454':
            cleaned_data.append(item)

    # 输出清洗后的数据
    print(json.dumps(cleaned_data, indent=2))
else:
    print(f"Error {response.status_code}: {response.text}")

在这个示例中,我们首先定义了请求的URL、头部信息和请求体,然后发起POST请求以获取数据。接着,我们对返回的数据进行清洗和过滤,仅保留符合条件的记录。

数据转换与写入

在完成初步的数据清洗后,我们可以进一步将数据转换为目标系统所需的格式,并写入到目标系统中。由于本文重点在于调用源系统接口并进行初步加工,因此不再详细讨论后续的数据转换与写入过程。

通过以上步骤,我们成功地调用了聚水潭·奇门接口获取销售退货单数据,并进行了初步的数据清洗和过滤。这为后续的数据转换与写入奠定了坚实基础。 电商OMS与ERP系统接口开发配置

轻易云数据集成平台:ETL转换与写入金蝶云星空API接口

在数据集成生命周期的第二步,我们将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,并最终写入目标平台金蝶云星空API接口。本文将详细探讨这一过程中的关键技术和操作步骤。

数据请求与清洗

在数据请求与清洗阶段,我们从源平台【聚水潭】获取销售退货单的数据。这些数据需要经过清洗和预处理,以确保其格式和内容符合目标平台的要求。

数据转换与写入

接下来,我们进入核心部分:将清洗后的数据进行转换,并通过金蝶云星空API接口写入目标平台。以下是具体的元数据配置及其解析:

{
  "api": "batchSave",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "FBillTypeID",
      "label": "单据类型",
      "type": "string",
      "describe": "单据类型",
      "parser": {
        "name": "ConvertObjectParser",
        "params": "FNumber"
      },
      "value": "XSTHD01_SYS"
    },
    {
      "field": "FBillNo",
      "label": "单据编号",
      "type": "string",
      "describe": "单据编号",
      "value": "{as_id}"
    },
    {
      ...
    }
  ],
  ...
}

核心字段解析

  1. FBillTypeID(单据类型)

    • 类型:string
    • 描述:定义单据类型为销售退货单。
    • 转换器:ConvertObjectParser,参数为FNumber
    • 固定值:XSTHD01_SYS
  2. FBillNo(单据编号)

    • 类型:string
    • 描述:唯一标识每个销售退货单。
    • 动态值:{as_id},由源系统提供。
  3. FSaleOrgId(销售组织)FStockOrgId(库存组织)

    • 类型:string
    • 描述:组织信息。
    • 转换器:ConvertObjectParser,参数为FNumber
    • 固定值:100
  4. FRetcustId(退货客户)

    • 类型:string
    • 描述:基础资料。
    • 转换器:ConvertObjectParser,参数为FNumber
    • 动态查询值:通过SQL-like语句 _findCollection find FNumber from c9504fd6-7fe5-36fe-b40a-b8347db64d2b where F_QKMS_JSTBM={shop_id} 获取。
  5. FSettleCurrId(币别)

    • 类型:string
    • 描述:货币类型。
    • 转换器:ConvertObjectParser,参数为 FNumber
    • 固定值: PRE001
  6. FDate(日期)

    • 类型: date
    • 描述: 单据日期
    • 动态值: {confirm_date}
  7. FEntity(明细信息): 包含多个子字段,如物料编码、实退数量、是否赠品等。这些字段同样需要通过特定的转换逻辑处理:

{
  ...
  {
    "field":"FMaterialId",
    ...
    },
    {
    ...
    }
}

操作配置

在完成字段配置后,还需要指定一些操作参数:

  • FormId: SAL_RETURNSTOCK
  • Operation: Save
  • IsAutoSubmitAndAudit: false
  • IsVerifyBaseDataField: true
  • SubSystemId: 21
  • BatchCount: 5

这些参数确保了数据在写入金蝶云星空时能够正确执行相应的操作。

实际应用案例

假设我们从【聚水潭】获取到如下销售退货单数据:

{
  ...
}

经过上述配置和转换后,生成的目标平台请求数据如下:

{
  ...
}

通过POST方法调用金蝶云星空API接口,将转换后的数据批量保存至目标系统,实现了不同系统间的数据无缝对接。

总结

本文深入探讨了如何使用轻易云数据集成平台,将源平台的数据进行ETL转换,并通过金蝶云星空API接口写入目标系统。关键在于合理配置元数据,并利用适当的解析器和动态查询,实现高效的数据集成。 数据集成平台API接口配置

更多系统对接方案