利用轻易云实现聚水潭API数据对接与转换

  • 轻易云集成顾问-钟家寿

星辰-采购退货到聚水潭:高效数据集成实践

在本次项目中,我们专注于如何将金蝶云星辰V2的采购退货数据集成至聚水潭,方案名称为"星辰-采购退货-->聚水潭-采购退货单"。通过有效利用轻易云的数据集成平台,我们实现了两大系统间无缝、高效的数据处理与传输。

首先,在确保金蝶云星辰V2的数据不漏单方面,我们采用了定时抓取接口 /jdy/v2/scm/pur_ret 的方案。该接口支持分页和限流,通过合理配置参数,可以稳定地获取完整的采购退货信息。此外,为保障批量数据快速写入到聚水潭,我们使用其提供的API /open/jushuitan/purchaseout/upload,结合可靠的异步写入机制,有效提升了数据处理速度和效率。

整个流程还需要应对不同系统之间的数据格式差异问题。在这部分工作中,主要通过定义自适应映射规则,并借助平台提供的可视化映射工具,实现两大系统间字段及结构转变上的精准对应。同时,对于可能出现的问题如异常处理与错误重试机制,也进行了严格设计,以保证任何突发情况下依然能够及时修复并继续后续操作。这些步骤不仅提升了整体性能,还全面保证了数据一致性和实时响应能力。

接下来,将分别详细阐述各个关键环节以及技术细节,包括如何调度任务、调用API、管理日志与监控等核心内容。 如何对接企业微信API接口

调用金蝶云星辰V2接口获取并加工数据

在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星辰V2接口/jdy/v2/scm/pur_ret,获取并加工采购退货单的数据。

接口概述

金蝶云星辰V2提供了丰富的API接口以支持各种业务需求。本文聚焦于采购退货单的查询接口/jdy/v2/scm/pur_ret。该接口采用GET方法,主要用于查询采购退货单的相关信息。

元数据配置解析

根据提供的元数据配置,我们可以详细了解该接口的请求参数和响应处理方式。

{
  "api": "/jdy/v2/scm/pur_ret",
  "effect": "QUERY",
  "method": "GET",
  "number": "bill_no",
  "id": "id",
  "name": "bill_no",
  "idCheck": true,
  "request": [
    {"field":"dept_id","label":"部门ID","type":"string","describe":"部门ID"},
    {"field":"supplier_id","label":"供应商ID","type":"string","describe":"供应商ID"},
    {"field":"customeri_d","label":"客户ID","type":"string","describe":"客户ID"},
    {"field":"bill_status","label":"单据状态","type":"string","describe":"所有:“”,已审核:“C”,未审核:“Z”","value":"C"},
    {"field":"create_start_time","label":"创建开始时间","type":"string","describe":"格式:“时间戳”,-1表示不过滤"},
    {"field":"create_end_time","label":"创建结束时间","type":"string","describe":"格式:“时间戳”,-1表示不过滤"},
    {"field":"modify_start_time","label":"修改开始时间","type":"string","describe":"格式:“时间戳”,-1表示不过滤","value":"_function {LAST_SYNC_TIME}000*1"},
    {"field":"modify_end_time","label":"修改结束时间","type":"string","describe":"格式:“时间戳”,-1表示不过滤","value":"_function {CURRENT_TIME}000*1"},
    {"field":"start_bill_date","label":"单据开始日期","type":"string","describe":"格式:“yyyy-MM-dd”,为空表示不过滤"},
    {"field":"end_bill_date","label":"单据结束日期","type":"string","describe":"格式:“yyyy-MM-dd”,为空表示不过滤"},
    {"field":"selectfields","label":"自定义查询字段","type": "string", "describe": "例:material_entity.materialid.id"},
    {"field": "search", "label": "模糊搜索", "type": "string", "describe": "支持供应商名称、职员名称、商品名称、单据编码"},
    {"field": "page", "label": "当前页", "type": "string", "describe": "默认1", "value": "1"},
    {"field": "pagesize", "label": "每页显示条数,", "type": "string", "describe":"默认10,最大值100", 
![打通用友BIP数据接口](https://pic.qeasy.cloud/S5.png~tplv-syqr462i7n-qeasy.image)
### 使用轻易云数据集成平台进行ETL转换并写入聚水潭API接口

在数据集成生命周期的第二步,我们需要将已经从源平台集成的数据进行ETL(Extract, Transform, Load)转换,并将其转化为目标平台聚水潭API接口所能够接收的格式,最终写入目标平台。本文将深入探讨如何利用轻易云数据集成平台实现这一过程。

#### 聚水潭API接口配置

我们将要使用的聚水潭API接口为`/open/jushuitan/purchaseout/upload`,该接口用于上传采购退货单。以下是元数据配置:

```json
{
  "api": "/open/jushuitan/purchaseout/upload",
  "effect": "EXECUTE",
  "method": "POST",
  "number": "external_id",
  "id": "external_id",
  "name": "external_id",
  "idCheck": true,
  "request": [
    {"field":"is_confirm","label":"是否自动确认","type":"string","describe":"是否自动确认","value":"false"},
    {"field":"wms_co_id","label":"分仓编号","type":"string","describe":"分仓编号","value":"_function LEFT( '{{material_entity.stock_number}}' , 8)"},
    {"field":"supplier_id","label":"供应商编号","type":"string","describe":"供应商编号","value":"{supplier_number}"},
    {"field":"po_id","label":"采购单号","type":"string","describe":"采购单号"},
    {"field":"external_id","label":"外部单号","type":"string","describe":"外部单号","value":"{bill_no}"},
    {"field":"remark","label":"备注","type":"string","describe":"备注","value":"{remark}"},
    {"field":"warehouse","label":"仓库编号","type":"int","value":"_function CASE '{{material_entity.stock_name}}' WHEN '恩比仓主仓' THEN '1' WHEN '恩比仓销退仓' THEN '2' WHEN '恩比仓进货仓' THEN '3' WHEN '恩比仓次品仓' THEN '4' ELSE '' END"},
    {"field":"items","label":"商品集合","type":"array","describe":"商品集合","value":"material_entity", 
      "children":[
        {"field": "sku_id", "label": "商品编码", "type": "string", "describe": "商品编码", "value": "{{material_entity.material_number}}"},
        {"field": "qty", "label": "数量", "type": "string", "describe": "数量", "value": "{{material_entity.qty}}"},
        {"field": "price", "label": "单价", "type": "string", "describe": "单价", "value": "{{material_entity.price}}"},
        {"field": "batch_id", "label": "批次单号", "type": "string",  },
        {"field": "produced_date",  }
      ]
    }
  ]
}

数据转换与写入

  1. 提取数据:首先,从源系统中提取原始数据。这一步通常已经在生命周期的第一步完成。

  2. 数据清洗与转换

    • is_confirm字段默认设置为false,表示不自动确认。
    • wms_co_id字段通过函数LEFT('{{material_entity.stock_number}}', 8)截取前8位字符。
    • supplier_id字段直接映射为源数据中的supplier_number
    • po_idexternal_id分别对应采购单号和外部单号。
    • remark字段映射为备注信息。
    • warehouse字段通过CASE语句根据不同的库存名称映射到相应的仓库编号。
    • items字段是一个数组,其中包含多个商品信息,每个商品信息包括商品编码、数量、单价、批次单号和生产日期。
  3. 生成请求体: 根据上述配置生成请求体,例如:

{
  "_function LEFT( '{{material_entity.stock_number}}' , 8)": "",
  "{supplier_number}":"",
  "{bill_no}":"",
  "{remark}":"",
}
  1. 发送请求: 将生成的请求体通过POST方法发送到聚水潭API接口。确保请求头中包含必要的认证信息,如API密钥等。

  2. 处理响应: 接收并处理聚水潭API返回的响应,确保数据成功写入目标系统。如果出现错误,根据错误信息进行调试和修正。

技术细节

  • 函数应用:在元数据配置中,我们使用了函数如LEFT和CASE来对数据进行动态处理,这些函数在实际应用中非常关键,可以根据具体需求灵活调整。
  • 数组处理:对于复杂的数据结构如商品集合,通过定义子字段来实现嵌套数组的数据传递,这是实现复杂数据结构转换的重要手段。
  • 实时监控与调试:利用轻易云平台提供的实时监控功能,可以随时查看数据流动和处理状态,快速发现并解决问题。

通过以上步骤,我们可以高效地将源平台的数据转换为聚水潭API所需的格式,并成功写入目标系统。这不仅提高了业务透明度和效率,也确保了不同系统间的数据无缝对接。 打通企业微信数据接口

更多系统对接方案