轻松实现源数据到畅捷通T+API接口的转换与写入

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

聚水潭到畅捷通T+的数据集成案例分享

在本篇技术案例中,我们将探讨如何实现聚水潭的调拨出库单数据集成到畅捷通T+的其他出库单。通过使用轻易云数据集成平台,我们能够有效地解决两者之间的数据对接问题,实现高效、可靠且大规模的数据传输。

首先,确保从聚水潭获取数据不漏单是我们面临的一项重要挑战。为此,我们采用了定时任务机制,通过周期性调用聚水潭接口 /open/allocate/query 来抓取最新的调拨出库单数据。同时,为了解决分页和限流问题,我们设计了一个循环处理方案,在每次请求后根据返回结果中的分页信息逐步读取所有需要的数据。

一旦成功获取到聚水潭的调拨出库单数据,下一步就是快速而准确地写入畅捷通T+。这里我们利用批量处理的方式,将整理好的数据通过其API接口 /tplus/api/v2/otherReceive/Create 写入系统中。在这个过程中,对接过程中的异常处理与错误重试机制也显得尤为关键。例如,当某条记录因网络原因或接口响应异常导致写入失败时,系统会自动进行多次重试,并在达到最大尝试次数后记录详细日志供后续分析。

此外,由于聚水潭和畅捷通T+使用不同的数据格式,需要对各类字段进行精确映射和转换。这要求我们在配置元数据信息时特别注意不同字段类型及值域范围,以保证最终写入的数据能被正确解析和存储。同时,整个过程都伴随着实时监控与日志记录,可以及时发现并排除潜在的问题,从而保障数据流转顺利无误。

综上所述,这个案例展示了从创建连接、抓取源头数据,到目标系统大量快速写入,再到异常捕获与用户提示等一系列步骤中的具体实施方法,为类似需求提供了一套行之有效的技术参考。 用友与CRM系统接口开发配置

调用聚水潭接口/open/allocate/query获取并加工数据

在数据集成生命周期的第一步,调用源系统接口获取数据是至关重要的一环。本文将详细探讨如何通过轻易云数据集成平台调用聚水潭的/open/allocate/query接口,获取调拨出库单数据,并进行初步加工。

接口配置与请求参数

首先,我们需要了解/open/allocate/query接口的基本配置和请求参数。根据提供的元数据配置,以下是该接口的详细信息:

  • API路径: /open/allocate/query
  • 请求方法: POST
  • 功能: 查询调拨出库单
  • 主要字段:
    • io_id: 出库单编号
    • name: 出库单名称
    • modified_begin: 修改起始时间
    • modified_end: 修改结束时间
    • page_index: 第几页
    • page_size: 每页多少条(默认30,最大50)
    • type: 调拨类型(固定值为“调拨出”)

请求参数设置

在实际操作中,我们需要根据业务需求动态设置请求参数。以下是一个典型的请求参数配置示例:

{
  "modified_begin": "{{LAST_SYNC_TIME|datetime}}",
  "modified_end": "{{MINUTE_AGO_10|datetime}}",
  "page_index": "1",
  "page_size": "30",
  "type": "调拨出"
}
  • modified_beginmodified_end: 用于指定查询时间范围。{{LAST_SYNC_TIME|datetime}}表示上次同步时间,而{{MINUTE_AGO_10|datetime}}表示当前时间前10分钟。
  • page_index: 分页索引,初始值为1。
  • page_size: 每页记录数,默认30条。
  • type: 固定值“调拨出”,表示查询调拨出库单。

数据请求与清洗

在发送请求后,我们会收到聚水潭返回的数据。为了确保数据质量和一致性,需要对原始数据进行清洗和初步处理。这包括但不限于以下步骤:

  1. 字段映射与转换: 根据元数据配置,将返回的数据字段映射到目标系统所需的字段。例如,将io_id映射为目标系统中的订单编号。

  2. 数据过滤与校验: 对返回的数据进行过滤,剔除不符合业务规则或格式错误的数据。例如,检查每条记录的必填字段是否为空。

  3. 分页处理: 如果返回的数据量较大,需要处理分页逻辑,确保所有数据都能被完整获取。这通常涉及循环调用API,并逐页处理返回的数据。

实际案例分析

假设我们需要将聚水潭的调拨出库单数据集成到畅捷通系统中,具体操作步骤如下:

  1. 初始化请求参数: 根据上次同步时间和当前时间初始化查询参数。

  2. 发送API请求并接收响应: 使用轻易云平台提供的POST方法发送请求,并接收聚水潭返回的数据。

  3. 处理响应数据: 对响应数据进行清洗、转换和校验。例如,将每条记录中的io_idname字段提取出来,并检查其有效性。

  4. 分页处理: 如果返回结果包含多页数据,则继续发送下一页请求,直到所有数据都被获取完毕。

  5. 写入目标系统: 将处理后的数据写入畅捷通系统中的其他出库单模块,实现无缝对接。

通过上述步骤,我们可以高效地从聚水潭获取调拨出库单数据,并将其集成到目标系统中。这不仅提高了业务流程的自动化程度,也确保了数据的一致性和准确性。 如何开发用友BIP接口

使用轻易云数据集成平台将源数据转换并写入畅捷通T+API接口

在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL转换,转为目标平台畅捷通T+API接口所能够接收的格式,并最终写入目标平台。本文将详细介绍如何利用元数据配置实现这一过程。

配置元数据

在轻易云数据集成平台中,元数据配置是关键的一环。以下是我们使用的元数据配置:

{
  "api": "/tplus/api/v2/otherReceive/Create",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {"field":"ExternalCode","label":"外部单据号","type":"string","describe":"外部单据号,后台做唯一性检查。用于防止重复提交,和外系统数据对应。","value":"{io_id}-1"},
    {"field":"VoucherType","label":"单据类型","type":"string","describe":"单据类型。默认值{Code:\"ST1024\"}","value":"ST1024","parser":{"name":"ConvertObjectParser","params":"Code"}},
    {"field":"VoucherDate","label":"单据日期","type":"string","describe":"111","value":"{io_date}"},
    {"field":"BusiType","label":"业务类型","type":"string","describe":"业务类型编码。取值范围: 13--其他  14--其他退库","value":"13","parser":{"name":"ConvertObjectParser","params":"Code"}},
    {"field":"Warehouse","label":"仓库信息","type":"string","describe":"111","value":"{wms_co_id}","parser":{"name":"ConvertObjectParser","params":"Code"},"mapping":{"target":"66d687ab2f3fde34df428d6d","direction":"positive"}},
    {"field":"Memo","label":"表头备注","type":"string","describe":"111","value":"{remark}"},
    {"field":"DynamicPropertyKeys","label":"DynamicPropertyKeys","type": "string", "value": "pubuserdefnvc3,pubuserdefnvc4", "parser": {"name": "StringToArray", "params": ","}},
    {"field": "DynamicPropertyValues", "label": "DynamicPropertyValues", "type": "string", "value": "13<{io_id}", "parser": {"name": "StringToArray", "params": "<"}},
    {"field": "RdStyle", "label": "出库类别", "type": "string", "value": "113", "parser": {"name": "ConvertObjectParser", "params": "Code"}},
    {
      "field": "RDRecordDetails",
      "label": "单据明细信息",
      "type": "array",
      "describe": "111",
      "value": "items",
      children: [
        {"field": “Inventory”, “label”: “存货信息”, “type”: “string”, “value”: “{sku_id}”, “parser”: {“name”: “ConvertObjectParser”, “params”: “Code”}},
        {"field”: “BaseQuantity”, “label”: “主计量单位数量”, “type”: “string”, “value”: “{qty}”},
        {"field”: “Amount”, “label”: “成本金额”, “type”: “string”},
        {"field”: “Price”, “label”: “成本单价”, “type”: “string”},
        {"field”: ”Project”, ”label”:”项目”,”type”:”string”,”value”:”805”,”parser”:{“name”:”ConvertObjectParser”,”params”:”Code”}}
      ]
    }
  ],
  otherRequest: [
    {“field”:”dataKey”,”label”:”dataKey”,”type”:”string”,”describe”:”111”,”value”:dto}
  ]
}

数据转换与写入

  1. 外部单据号(ExternalCode)

    • 将源平台中的io_id字段加上后缀-1,确保每个外部单据号的唯一性。
    • 示例:"ExternalCode" : "{io_id}-1"
  2. 单据类型(VoucherType)

    • 默认值设置为ST1024,通过ConvertObjectParser进行解析。
    • 示例:"VoucherType" : ST1024
  3. 单据日期(VoucherDate)

    • 从源平台获取io_date字段直接赋值。
    • 示例:"VoucherDate" : "{io_date}"
  4. 业务类型(BusiType)

    • 固定值为13,表示其他业务类型,通过解析器进行解析。
    • 示例:"BusiType" : 13
  5. 仓库信息(Warehouse)

    • 从源平台获取仓库ID wms_co_id,并通过映射和解析器转换为目标平台可识别的格式。
    • 示例:"Warehouse" : "{wms_co_id}"
  6. 表头备注(Memo)

    • 从源平台获取备注字段 remark,直接赋值。
    • 示例:"Memo" : "{remark}"
  7. 动态属性键和值(DynamicPropertyKeys 和 DynamicPropertyValues)

    • 使用 StringToArray 解析器将字符串转换为数组形式。
    • 示例:
      {
      `"DynamicPropertyKeys"`: `"pubuserdefnvc3,pubuserdefnvc4"`
      `"DynamicPropertyValues"`: `"13<{io_id}"`
      }
  8. 出库类别(RdStyle)

    • 固定值为 113, 表示出库类别,通过解析器进行解析。
    • 示例: "RdStyle" : 113
  9. 单据明细信息(RDRecordDetails)

    • 包含多个子字段,如存货信息、主计量单位数量、成本金额、成本单价和项目等。
    • 每个子字段都从源平台对应字段中获取,并通过必要的解析器进行转换。

实际应用案例

假设我们有以下源数据:

{
  io_id: '12345',
  io_date: '2023-10-01',
  wms_co_id: 'WH001',
  remark: 'Test Remark',
  items: [
    { sku_id: 'SKU001', qty: '10' },
    { sku_id: 'SKU002', qty: '20' }
  ]
}

经过上述元数据配置和ETL处理后,将生成如下符合畅捷通T+API接口要求的数据格式:

{
  ExternalCode: '12345-1',
  VoucherType: 'ST1024',
  VoucherDate: '2023-10-01',
  BusiType: '13',
  Warehouse: 'WH001',
  Memo: 'Test Remark',
  DynamicPropertyKeys: ['pubuserdefnvc3', 'pubuserdefnvc4'],
  DynamicPropertyValues: ['13', '12345'],
  RdStyle: '113',
  RDRecordDetails:[
    {
      Inventory:'SKU001',
      BaseQuantity:'10'
    },
    {
      Inventory:'SKU002',
      BaseQuantity:'20'
    }
  ],
}

通过以上步骤,我们成功将聚水潭调拨出库单的数据转换为畅捷通T+其他出库单所需的数据格式,并通过API接口写入到目标系统中。这一过程不仅保证了数据的一致性和准确性,还大大提高了系统间的数据交互效率。 电商OMS与ERP系统接口开发配置

更多系统对接方案