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

  • 轻易云集成顾问-钟家寿
### 星辰-采购退货到聚水潭:高效数据集成实践 在本次项目中,我们专注于如何将金蝶云星辰V2的采购退货数据集成至聚水潭,方案名称为"星辰-采购退货-->聚水潭-采购退货单"。通过有效利用轻易云的数据集成平台,我们实现了两大系统间无缝、高效的数据处理与传输。 首先,在确保金蝶云星辰V2的数据不漏单方面,我们采用了定时抓取接口 `/jdy/v2/scm/pur_ret` 的方案。该接口支持分页和限流,通过合理配置参数,可以稳定地获取完整的采购退货信息。此外,为保障批量数据快速写入到聚水潭,我们使用其提供的API `/open/jushuitan/purchaseout/upload`,结合可靠的异步写入机制,有效提升了数据处理速度和效率。 整个流程还需要应对不同系统之间的数据格式差异问题。在这部分工作中,主要通过定义自适应映射规则,并借助平台提供的可视化映射工具,实现两大系统间字段及结构转变上的精准对应。同时,对于可能出现的问题如异常处理与错误重试机制,也进行了严格设计,以保证任何突发情况下依然能够及时修复并继续后续操作。这些步骤不仅提升了整体性能,还全面保证了数据一致性和实时响应能力。 接下来,将分别详细阐述各个关键环节以及技术细节,包括如何调度任务、调用API、管理日志与监控等核心内容。 ![如何对接企业微信API接口](https://pic.qeasy.cloud/D17.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星辰V2接口获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星辰V2接口`/jdy/v2/scm/pur_ret`,获取并加工采购退货单的数据。 #### 接口概述 金蝶云星辰V2提供了丰富的API接口以支持各种业务需求。本文聚焦于采购退货单的查询接口`/jdy/v2/scm/pur_ret`。该接口采用GET方法,主要用于查询采购退货单的相关信息。 #### 元数据配置解析 根据提供的元数据配置,我们可以详细了解该接口的请求参数和响应处理方式。 ```json { "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_id`和`external_id`分别对应采购单号和外部单号。 - `remark`字段映射为备注信息。 - `warehouse`字段通过CASE语句根据不同的库存名称映射到相应的仓库编号。 - `items`字段是一个数组,其中包含多个商品信息,每个商品信息包括商品编码、数量、单价、批次单号和生产日期。 3. **生成请求体**: 根据上述配置生成请求体,例如: ```json { "_function LEFT( '{{material_entity.stock_number}}' , 8)": "", "{supplier_number}":"", "{bill_no}":"", "{remark}":"", } ``` 4. **发送请求**: 将生成的请求体通过POST方法发送到聚水潭API接口。确保请求头中包含必要的认证信息,如API密钥等。 5. **处理响应**: 接收并处理聚水潭API返回的响应,确保数据成功写入目标系统。如果出现错误,根据错误信息进行调试和修正。 #### 技术细节 - **函数应用**:在元数据配置中,我们使用了函数如LEFT和CASE来对数据进行动态处理,这些函数在实际应用中非常关键,可以根据具体需求灵活调整。 - **数组处理**:对于复杂的数据结构如商品集合,通过定义子字段来实现嵌套数组的数据传递,这是实现复杂数据结构转换的重要手段。 - **实时监控与调试**:利用轻易云平台提供的实时监控功能,可以随时查看数据流动和处理状态,快速发现并解决问题。 通过以上步骤,我们可以高效地将源平台的数据转换为聚水潭API所需的格式,并成功写入目标系统。这不仅提高了业务透明度和效率,也确保了不同系统间的数据无缝对接。 ![打通企业微信数据接口](https://pic.qeasy.cloud/T26.png~tplv-syqr462i7n-qeasy.image)