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