使用轻易云平台实现ETL转换:从T+到聚水潭的数据写入方案

  • 轻易云集成顾问-彭萍

畅捷通T+数据集成到聚水潭的技术实现:T+进货单【蓝字】-->聚水潭其他入库单--ikk

在实际业务操作中,系统间的数据对接常常会遇到极大的挑战与复杂性。本文将结合一个具体的案例——如何将畅捷通T+系统中的进货单(蓝字)数据精确、高效地集成到聚水潭中的其他入库单。这一过程不仅涉及数据抓取、转换和写入,还需考虑接口调用、分页处理及错误重试等多方面的问题。

首先,在进行定时可靠的数据抓取方面,我们采用了畅捷通T+提供的API接口/tplus/api/v2/PurchaseArrivalOpenApi/FindVoucherList,该接口支持批量获取指定日期范围内的所有已审核进货单。为了确保没有漏单,同时应对大量数据带来的压力,通过分页和限流机制来逐步提取需要同步的数据。

{
  "startDate": "2023-01-01",
  "endDate": "2023-02-01",
  "pageIndex": 1,
  "pageSize": 100
}

如上示例请求参数所示,通过设定起止时间并按页请求,可以有效解决一次读取过多数据而导致的性能问题。同时,为防范网络波动或服务器异常引发的数据丢失情况,我们实现了详细的日志记录和错误重试机制,对每次调用状态进行实时监控,确保即使发生故障也能保障数据完整传输。

在成功读取畅捷通T+的数据后,需要将其映射并转换为符合聚水潭API /open/jushuitan/otherinout/upload格式的数据,再进行写入。在这个过程中,不同系统间字段格式差异较大,这就要求我们进行精准的数据匹配及必要的信息补充。例如,将"供应商名称"从通过映射表找到对应ID,并根据业务规则生成必需附加字段,从而满足目标系统需求。

此外,为进一步提高效率,当批量处理完成且所有校验无误后,一次性提交多个仓储记录至聚水潭。这种“批量模式”显著缩短了处理周期,并降低了重复调用带来的额外开销。然而,这也意味着任何一步出错都可能造成全部失败,因此我们设计了一套健全的事务管理和回滚策略,以便及时发现问题并快速恢复正常操作。

综上,通过轻易云平台灵活高效地配置元数据模型,以及严密把控各环节操作细节,我们得以高效、安全地完成这一跨平台集成任务。在接下来的部分,将针对上述提及各功能点展开更为详细 电商OMS与WMS系统接口开发配置

调用畅捷通T+接口获取并加工数据的技术案例

在数据集成过程中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用畅捷通T+接口/tplus/api/v2/PurchaseArrivalOpenApi/FindVoucherList,并对获取的数据进行加工处理。

接口配置与调用

首先,我们需要配置元数据,以便正确调用畅捷通T+的API接口。以下是针对FindVoucherList接口的元数据配置:

{
  "api": "/tplus/api/v2/PurchaseArrivalOpenApi/FindVoucherList",
  "effect": "QUERY",
  "method": "POST",
  "number": "Code",
  "id": "Code",
  "idCheck": true,
  "request": [
    {
      "field": "selectFields",
      "label": "查询字段",
      "type": "string",
      "describe": "部门编码",
      "value": "VoucherCode"
    },
    {
      "field": "pageIndex",
      "label": "pageIndex",
      "type": "string",
      "describe": "部门名称"
    },
    {
      "field": "pageSize",
      "label": "pageSize",
      "type": "string",
      "describe": "指定返回字段",
      "value": "10"
    },
    {
      ...
    }
  ],
  ...
}

该配置定义了API的基本信息和请求参数,其中包括查询字段、分页信息和过滤条件等。

请求参数详解

  1. selectFields: 指定需要查询的字段,这里设置为VoucherCode
  2. pageIndex: 当前页码,用于分页请求。
  3. pageSize: 每页返回的数据条数,这里设置为10。
  4. paramDic_1: 用于过滤业务类型,设置为PurchaseArrival__BusinessType__Code,值为01,01
  5. paramDic_2: 用于过滤单据状态,设置为PurchaseArrival__VoucherState__Code,值为01,01
  6. paramDic_3: 用于过滤单据日期,设置为当前同步时间和当前时间。

这些参数确保我们能够精确地从畅捷通T+系统中获取所需的进货单数据。

数据请求与清洗

在发送请求后,我们会收到一个包含进货单列表的响应。此时,需要对响应数据进行清洗和初步加工,以便后续的数据转换与写入操作。以下是一个简单的数据清洗示例:

def clean_data(response):
    cleaned_data = []
    for item in response['data']:
        cleaned_item = {
            'voucher_code': item['VoucherCode'],
            'business_type': item['BusinessType'],
            'voucher_state': item['VoucherState'],
            'voucher_date': item['VoucherDate']
        }
        cleaned_data.append(cleaned_item)
    return cleaned_data

该函数提取了响应中的关键字段,并将其转换为更易于处理的格式。

数据转换与写入

在完成数据清洗后,我们需要将其转换为目标系统所需的格式,并写入目标系统。在本案例中,我们将清洗后的进货单数据转换为聚水潭其他入库单格式,并通过相应的API接口写入聚水潭系统。

def transform_and_write(cleaned_data):
    transformed_data = []
    for item in cleaned_data:
        transformed_item = {
            'entry_code': item['voucher_code'],
            'entry_type': item['business_type'],
            'entry_status': item['voucher_state'],
            'entry_date': item['voucher_date']
        }
        transformed_data.append(transformed_item)

    # 调用聚水潭API写入数据
    write_to_jushuitan(transformed_data)

def write_to_jushuitan(data):
    api_url = '/jushuitan/api/v1/OtherEntry/Create'
    response = requests.post(api_url, json=data)
    if response.status_code == 200:
        print("Data written successfully")

通过上述步骤,我们实现了从畅捷通T+到聚水潭系统的数据集成,包括数据请求、清洗、转换和写入全过程。

总结

本文详细介绍了如何通过轻易云数据集成平台调用畅捷通T+接口获取进货单数据,并对其进行清洗和加工处理。通过合理配置元数据和编写相应的处理逻辑,可以高效地实现不同系统间的数据无缝对接。这一过程不仅提升了业务透明度和效率,也确保了数据的一致性和准确性。 打通钉钉数据接口

使用轻易云数据集成平台进行ETL转换并写入聚水潭API接口的技术案例

在数据集成生命周期的第二步中,数据从源平台经过清洗和转换后,需要按照目标平台的要求进行格式化处理,并通过API接口写入目标系统。本文将重点探讨如何使用轻易云数据集成平台,将T+进货单的数据转换为聚水潭其他入库单格式,并通过API接口上传到聚水潭系统。

API接口配置

在本案例中,目标平台为聚水潭,其API接口配置如下:

{
  "api": "/open/jushuitan/otherinout/upload",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {"field": "is_confirm", "label": "是否确认单据", "type": "string", "value": "1"},
    {"field": "excute_confirming", "label": "是否审核单据", "type": "string", "value": "true"},
    {"field": "warehouse", "label": "仓库编号", "type": "int", 
      "value": "_function case '{{Warehouse.Code}}' when '2' then '4' else '1' end"},
    {"field": "type", "label": "出入库类型", "type": "string", 
      "value": "'in'"},
    {"field": "external_id", "label": "外部单号", 
      "type": "string", 
      "value":"{Code}"},
    {"field":"remark","label":"备注","type":"string","value":"{Memo}"},
    {"field":"items","label":"items","type":"array","value":"Details",
      children":[
        {"field":"sku_id","label":"商品编码","type":"string",
          value:"{{Details.Inventory.Code}}"},
        {"field":"qty","label":"入库数量","type":"string",
          value:"{{Details.Quantity}}"},
        {"field":"sale_price","label":"单价","type":"bool",
          value:"{{Details.OrigTaxPrice}}"}
      ]
    }
  ]
}

数据字段映射与转换

为了将T+进货单的数据转换为聚水潭其他入库单格式,需要对字段进行映射和转换。以下是具体的字段映射关系及其转换逻辑:

  1. 是否确认单据 (is_confirm)

    • 类型:字符串
    • 固定值:1
  2. 是否审核单据 (excute_confirming)

    • 类型:字符串
    • 固定值:true
  3. 仓库编号 (warehouse)

    • 类型:整数
    • 转换逻辑:根据源数据中的仓库代码(Warehouse.Code),如果值为2,则目标值为4,否则为1。
      _function case '{{Warehouse.Code}}' when '2' then '4' else '1' end
  4. 出入库类型 (type)

    • 类型:字符串
    • 固定值:in
  5. 外部单号 (external_id)

    • 类型:字符串
    • 源字段映射:{Code}
  6. 备注 (remark)

    • 类型:字符串
    • 源字段映射:{Memo}
  7. 商品明细项 (items)

    • 类型:数组
      • 商品编码 (sku_id)
      • 类型:字符串
      • 源字段映射:{{Details.Inventory.Code}}
      • 入库数量 (qty)
      • 类型:字符串
      • 源字段映射:{{Details.Quantity}}
      • 单价 (sale_price)
      • 类型:布尔型(实际应为数值型)
      • 源字段映射:{{Details.OrigTaxPrice}}

数据处理流程

  1. 数据请求与清洗: 在第一阶段,数据从T+系统中提取,并经过必要的清洗操作,如去除无效记录、标准化日期格式等。

  2. 数据转换与写入: 在第二阶段,使用轻易云数据集成平台提供的ETL工具,将清洗后的数据按照上述字段映射和转换逻辑进行处理,并生成符合聚水潭API接口要求的数据格式。

  3. API调用: 最后,通过配置好的API接口,将处理后的数据发送到聚水潭系统,实现最终的数据写入。

示例代码片段

以下是一个示例代码片段,用于展示如何通过轻易云平台进行上述ETL操作:

import requests

# 配置API请求头和URL
url = 'https://api.jushuitan.com/open/jushuitan/otherinout/upload'
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
}

# 构建请求体数据
payload = {
    'is_confirm': '1',
    'excute_confirming': 'true',
    'warehouse': 4 if source_data['Warehouse']['Code'] == '2' else 1,
    'type': 'in',
    'external_id': source_data['Code'],
    'remark': source_data['Memo'],
    'items': [
        {
            'sku_id': item['Inventory']['Code'],
            'qty': item['Quantity'],
            'sale_price': item['OrigTaxPrice']
        } for item in source_data['Details']
    ]
}

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

# 检查响应状态码及内容
if response.status_code == 200:
    print('Data uploaded successfully:', response.json())
else:
    print('Failed to upload data:', response.status_code, response.text)

通过上述配置和代码实现,我们可以高效地将T+进货单的数据转化并上传到聚水潭系统,从而实现不同系统间的数据无缝对接。 轻易云数据集成平台金蝶集成接口配置

更多系统对接方案