轻易云平台ETL转换与聚水潭API接口对接教程

  • 轻易云集成顾问-吕修远
### 案例分享:金蝶云星辰V2到聚水潭的采购退货单集成 在本案例中,我们将详细探讨如何通过轻易云数据集成平台实现金蝶云星辰V2与聚水潭系统之间的采购退货单数据集成。具体目标是从金蝶云星辰V2的数据接口(/jdy/v2/scm/pur_ret)抓取采购退货数据,并无缝写入到聚水潭的API接口(/open/jushuitan/purchaseout/upload)。 为了确保整个流程的高效性和可靠性,以下几个关键技术点被重点考虑并加以实施: #### 1. 定时可靠的数据抓取 为了确保不会错过任何一条重要记录,我们设置了定时任务,从金蝶云星辰V2按固定周期抓取最新的采购退货数据。采用分页拉取模式解决大量数据读取的问题,同时避免因接口限流造成的数据丢失。 #### 2. 自定义数据转换逻辑 由于金蝶云星辰V2与聚水潭系统对接过程中存在格式差异,我们针对业务需求编写了自定义转换逻辑,将源数据适配成符合目的端要求的数据结构。这一步骤不仅包括字段名称和类型的匹配,还涉及一些复杂规则计算和业务逻辑调整。 #### 3. 实时监控与日志记录 为确保整个集成过程透明可追溯,我们利用集中监控系统实时跟踪每个任务执行情况,提供详细日志记录,包括成功、失败及异常状态。此举帮助我们迅速识别并解决潜在问题。 #### 4. 批量快速写入能力 针对大规模数据传输需求,我们特别优化了批量处理机制,以提升向聚水潭系统上传内容效率。同时,通过设计合理的重试机制,应对偶发网络或服务错误,实现稳健运行。 以上方案中的各项技术措施,不仅显著提高了业务透明度和处理效率,也彰显了轻易云平台灵活应对各种复杂场景的数据整合能力。在后续章节中,将会更详尽地介绍上述各步骤的具体实现方法及相关代码示例。 ![如何对接金蝶云星空API接口](https://pic.qeasy.cloud/D19.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星辰V2接口/jdy/v2/scm/pur_ret获取并加工数据的技术案例 在数据集成过程中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星辰V2接口`/jdy/v2/scm/pur_ret`,获取采购退货数据并进行初步加工。 #### 接口配置与请求参数 首先,我们需要配置元数据,以便正确调用接口并获取所需的数据。以下是该接口的元数据配置: ```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", "value": 100} ], ... } ``` #### 请求参数详解 在请求参数中,我们需要特别注意以下几个字段: - `bill_status`: 默认值为“C”,表示只查询已审核的单据。 - `modify_start_time` 和 `modify_end_time`: 分别使用函数`{LAST_SYNC_TIME}`和`{CURRENT_TIME}`来动态获取上次同步时间和当前时间。 - `page` 和 `pagesize`: 用于分页查询,确保每次请求的数据量可控。 #### 数据请求与清洗 通过配置上述元数据,我们可以发起GET请求来获取采购退货单的数据。假设我们需要获取某个特定供应商在某个时间段内的所有已审核采购退货单,可以构造如下请求: ```http GET /jdy/v2/scm/pur_ret?bill_status=C&supplier_id=12345&create_start_time=1672531200&create_end_time=1672617600&page=1&pagesize=100 ``` 在实际操作中,我们可以利用轻易云平台的自动化功能,将这些参数动态填充到请求URL中,从而实现自动化的数据拉取。 #### 数据转换与写入 在获取到原始数据后,需要对其进行清洗和转换,以便写入目标系统。在这个过程中,可以使用轻易云平台提供的可视化工具,对数据进行以下处理: 1. **字段映射**:将源系统中的字段映射到目标系统对应的字段。例如,将`bill_no`映射到目标系统中的`order_number`。 2. **数据过滤**:根据业务需求过滤掉不需要的数据。例如,过滤掉备注中包含“不传输”的记录。 3. **格式转换**:将日期、金额等字段转换为目标系统所需的格式。 通过这些步骤,我们可以确保从金蝶云星辰V2接口获取的数据能够无缝对接到目标系统,实现高效的数据集成。 #### 实际应用案例 假设我们需要将金蝶云星辰V2中的采购退货单数据集成到聚水潭系统中,可以按照以下步骤进行操作: 1. **配置元数据**:如上所述,配置好接口元数据。 2. **发起请求**:通过轻易云平台发起GET请求,获取采购退货单数据。 3. **清洗与转换**:对返回的数据进行清洗和转换,确保符合聚水潭系统的要求。 4. **写入目标系统**:将处理后的数据写入聚水潭系统。 通过上述步骤,我们可以高效地实现不同系统间的数据集成,提高业务透明度和效率。 ![如何对接用友BIP接口](https://pic.qeasy.cloud/S17.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入聚水潭API接口的技术案例 在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,并转为目标平台聚水潭API接口所能够接收的格式,最终写入目标平台。本文将详细探讨如何使用轻易云数据集成平台完成这一过程。 #### 元数据配置与API接口 在本案例中,我们将使用以下元数据配置来实现星辰-采购退货到聚水潭-采购退货单的集成: ```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":"{{material_entity.stock_number}}"}, {"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":"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":"remark","label":"备注","type":"string","describe":"备注","value":"{remark}"}, {"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”, “describe”: “批次单号”}, {"field”: “produced_date”, “label”: “生产日期”, “type”: “string”, “describe”: “生产日期”} ] } ] } ``` #### 数据请求与清洗 在进行ETL转换之前,首先需要从源系统中请求并清洗数据。这一步骤通常涉及从数据库、文件或其他API接口中提取原始数据,并对其进行初步处理,例如去除无效记录、标准化字段格式等。 #### 数据转换 在数据转换阶段,我们需要根据目标平台聚水潭API接口的要求,将清洗后的数据进行格式化和映射。以下是具体步骤: 1. **字段映射**:将源系统中的字段映射到目标系统所需的字段。例如,将`stock_number`映射到`wms_co_id`,将`supplier_number`映射到`supplier_id`等。 2. **值转换**:根据业务逻辑对某些字段的值进行转换。例如,使用CASE语句将`stock_name`转换为相应的`warehouse`编号。 3. **嵌套结构处理**:处理复杂的数据结构,例如嵌套数组。在本例中,需要将商品集合(items)中的每个商品详细信息(如SKU、数量、价格等)进行相应的映射和转换。 #### 数据写入 完成上述转换后,使用POST方法调用聚水潭API接口,将处理好的数据写入目标系统。以下是一个示例请求体: ```json { “is_confirm”: false, “wms_co_id”: “12345”, “supplier_id”: “67890”, “po_id”: ”PO123456”, “external_id”: ”EXT123456”, “warehouse”: 1, ”remark”: ”退货备注”, ”items”: [ { ”sku_id”: ”SKU12345”, ”qty”: ”10”, ”price”: ”100.00”, ”batch_id”: ”BATCH001”, ”produced_date”: ”2023-01-01” }, ... ] } ``` 通过上述步骤,我们可以确保源系统中的采购退货数据经过ETL转换后,成功写入到聚水潭系统中,实现不同系统间的数据无缝对接。 ![用友BIP接口开发配置](https://pic.qeasy.cloud/T26.png~tplv-syqr462i7n-qeasy.image)