ETL转换并写入聚水潭API接口的技术实现

  • 轻易云集成顾问-林峰

畅捷通T+数据集成到聚水潭案例分析: T+其他入库单-->聚水潭其他入库单--ikk

在现代企业的数字化运作中,跨系统的数据集成是经常面对的一项挑战。本文将深入探讨一次实际运行的系统对接方案,即如何使用轻易云数据集成平台,将畅捷通T+中的"其他入库单"无缝地迁移到聚水潭。

集成背景和目标

畅捷通T+作为一个广泛应用的ERP解决方案,在许多企业中扮演着核心的业务处理角色。而另一方面,聚水潭专注于电商物流管理。因此,实现两者之间的数据流动,对于提升整体业务效率有着重要意义。本次案例针对的是从畅捷通T+获取"其他入库单",并且批量写入到聚水潭对应接口,从而实现数据共享与同步更新。

技术细节及挑战

  1. API接口调用

    • 从畅捷通T+获取数据必须调用其提供的/v2/OtherReceiveOpenApi/FindVoucherList接口,这个API函数能够批量抓取指定条件下所有满足要求的“其他入库单”。
    • 写入操作需要通过调用聚水潭开放API /open/jushuitan/otherinout/upload来实现,这样才能确保对应关系准确且高效地将数据导入目标系统。
  2. 分页与限流处理

    • 在大量数据交互过程中,我们要特别注意分页机制,不然容易导致网络请求超时或被限制频率。同时,还需根据接口文档进行限流控制。例如,在每次请求前,可以检查当前剩余配额,以便合理分配每秒请求数(QPS)。
  3. 异常处理与重试机制

    • 为了保证整个过程不被突发状况打断,每一步都设计了详尽的异常捕捉、日志记录以及错误重试机制。确保当某一阶段出现如网络波动、服务器响应缓慢等情况时,能自动进行一定次数耗时可控范围内的重试操作。
  4. 数据格式差异

    • 畅捷通和聚水潭之间存在不同的数据格式,为此构建了一套定制化映射规则,使得源头和终端字段相对齐全匹配,无论是在内容结构还是具体命名均无冲突。这既包括基础字段如ID、数量,也涉及更复杂的信息类型转换,例如日期格式。
  5. 实时监控与日志记录

    • 实现全过程透明可视化管理,通过搭建实时监测工具链,从而随时掌握任务状态,包括成功率、失败原因等详细指标。此外,为 轻易云数据集成平台金蝶集成接口配置

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

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

接口调用配置

首先,我们需要配置元数据以便调用畅捷通T+接口。以下是具体的元数据配置:

{
  "api": "/tplus/api/v2/OtherReceiveOpenApi/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
    },
    {
      "field": "paramDic_1",
      "label": "paramDic参数",
      "type": "object",
      ...
    }
  ],
  ...
}

请求参数解析

  1. selectFields: 指定查询的字段,这里我们选择了 VoucherCode
  2. pageIndex: 分页索引,用于控制分页查询。
  3. pageSize: 每页返回的数据条数,这里设置为10。
  4. paramDic_1: 包含多个键值对,用于传递复杂的查询条件。例如,keyRDRecord__VoucherDatevalue{{LAST_SYNC_TIME|date}},{{CURRENT_TIME|date}},表示查询单据日期在上次同步时间和当前时间之间的数据。

数据请求与清洗

在完成元数据配置后,我们可以通过轻易云平台发起POST请求,获取所需的数据。以下是一个示例请求体:

{
  selectFields: 'VoucherCode',
  pageIndex: '1',
  pageSize: '10',
  paramDic_1: {
    key: 'RDRecord__VoucherDate',
    value: '2023-01-01,2023-12-31'
  },
  paramDic_2: {
    key: 'RDRecord__VoucherState__Code',
    value: '01,01'
  }
}

该请求将返回符合条件的其他入库单列表。接下来,我们需要对返回的数据进行清洗和转换,以便后续处理。

数据转换与写入

在获取到原始数据后,需要对其进行必要的转换。例如,将 VoucherCode 转换为目标系统所需的格式,并根据业务需求进行进一步处理。以下是一个简单的转换示例:

function transformData(data) {
  return data.map(item => ({
    voucherCode: item.VoucherCode,
    // 添加其他需要转换的字段
  }));
}

转换后的数据可以直接写入目标系统,例如聚水潭其他入库单接口。

实际应用案例

假设我们需要将畅捷通T+中的其他入库单同步到聚水潭系统。首先,通过上述接口获取原始数据,然后使用自定义函数进行数据转换,最后通过聚水潭API将处理后的数据写入目标系统。

const rawData = fetchDataFromTPlus(); // 调用轻易云平台API获取原始数据
const transformedData = transformData(rawData); // 转换数据
writeToJushuitan(transformedData); // 写入聚水潭系统

以上代码展示了一个完整的数据集成流程,从调用源系统接口获取数据,到清洗、转换,再到写入目标系统。

通过这种方式,我们可以实现不同系统间的数据无缝对接,确保业务流程的高效运行。 企业微信与ERP系统接口开发配置

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

在数据集成生命周期的第二步,我们将已经集成的源平台数据进行ETL(提取、转换、加载)转换,转为目标平台聚水潭API接口所能够接收的格式,并最终写入目标平台。以下是详细的技术实现过程。

API接口配置与元数据解析

我们需要将源平台的数据通过ETL过程转换为聚水潭API接口所需的数据格式。根据提供的元数据配置,聚水潭API接口的路径为/open/jushuitan/otherinout/upload,请求方法为POST。

元数据配置如下:

{
  "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":"RDRecordDetails",
     "children":[
       {"field":"sku_id","label":"商品编码","type":"string",
        "value":"{{RDRecordDetails.Inventory.Code}}"},
       {"field":"qty","label":"入库数量","type":"string",
        "value":"{{RDRecordDetails.Quantity}}"},
       {"field":"sale_price","label":"单价","type":"bool",
        "value":"{{RDRecordDetails.Price}}"}
     ]}
  ]
}

数据字段映射与转换逻辑

  1. 是否确认单据 (is_confirm): 固定值"1",表示确认单据。
  2. 是否审核单据 (excute_confirming): 固定值"true",表示审核单据。
  3. 仓库编号 (warehouse): 根据源平台的仓库编码进行条件判断,当仓库编码为"2"时,转换为"4",否则转换为"1"。
  4. 出入库类型 (type): 固定值"in",表示入库类型。
  5. 外部单号 (external_id): 映射源平台的单号字段 {Code}
  6. 备注 (remark): 映射源平台的备注字段 {Memo}
  7. 商品明细数组 (items):
    • 商品编码 (sku_id): 映射 RDRecordDetails.Inventory.Code
    • 入库数量 (qty): 映射 RDRecordDetails.Quantity
    • 单价 (sale_price): 映射 RDRecordDetails.Price

实际操作步骤

  1. 提取数据:从源平台提取原始数据,例如T+系统中的其他入库单数据。假设我们获得了以下示例数据:
{
  "Code": "IN20231001",
  "Memo": "",
    "Warehouse.Code": 2,
    "RDRecordDetails":[
        {"Inventory.Code":"SKU12345", 
            "Quantity":10, 
            "Price":100}
    ]
}
  1. 数据清洗与转换:根据上述元数据配置,将提取的数据进行清洗和转换。使用轻易云的数据处理功能,可以编写相应的脚本或规则来完成这一过程。例如:
{
    "is_confirm": 1,
    "excute_confirming": true,
    "warehouse": (Warehouse.Code == '2') ? '4' : '1',
    "type": 'in',
    "external_id": Code,
    "remark":"",
    "items":[
        {
            "sku_id":"SKU12345",
            "qty":"10",
            "sale_price":"100"
        }
   ]
}
  1. 加载数据:将转换后的数据通过POST请求发送到聚水潭API接口 /open/jushuitan/otherinout/upload。可以使用轻易云的平台功能或编写自定义代码来实现这一点。例如,使用Python和requests库:
import requests

url = 'https://api.jushuitan.com/open/jushuitan/otherinout/upload'
headers = {'Content-Type': 'application/json'}
data = {
    'is_confirm': '1',
    'excute_confirming': 'true',
    'warehouse': '4', # assuming Warehouse.Code is '2'
    'type': 'in',
    'external_id': 'IN20231001',
    'remark': '',
    'items': [
        {
            'sku_id': 'SKU12345',
            'qty': '10',
            'sale_price': '100'
        }
    ]
}

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

通过以上步骤,我们成功地将源平台的数据经过ETL处理后,转换为聚水潭API接口所需的格式,并完成了数据写入。这一过程不仅确保了不同系统之间的数据无缝对接,还提高了业务流程的自动化和效率。 系统集成平台API接口配置

更多系统对接方案