轻易云数据集成平台的ETL转换与聚水潭API写入

  • 轻易云集成顾问-胡秀丛
### 集成金蝶云星辰V2与聚水潭:采购入库单的高效对接 在实现企业数据系统间的数据互通时,集成金蝶云星辰V2和聚水潭两个平台是一个富有挑战且技术性极强的任务。本文将分享如何通过轻易云数据集成平台,将金蝶云星辰V2中的采购入库单(/jdy/v2/scm/pur_inbound接口)高效地写入到聚水潭系统(/open/jushuitan/purchasein/upload接口),并解决包括确保数据不漏单、大规模数据批量处理、定时抓取以及分页限流等诸多问题。 首先,为了保证每一笔采购入库记录能够准确无误地传输至聚水潭,我们需要设计一个稳健的数据拉取机制。在此过程中,对于金蝶云星辰V2的API调用限制和分页处理是必须克服的首要难题。通过编写自定义脚本,我们可以优雅地解决这一问题,使得每次调用都充分利用查询参数,在最短时间内获取最大数量的数据。 其次,大量数据从金蝶云快速而稳定地写入至聚水潭也成为核心任务之一。我们采用批量处理方式,将获取到的大批量采购入库信息分块进行并行上传,从而不仅提高了传输效率,也有效降低了由于网络波动可能引发的失败率。同时,加之重试机制,确保即使发生异常情况,每条记录最终都能被成功处理。 此外,两大平台之间存在着不同程度的数据格式差异,这就要求我们在映射规则上进行调整,以保证数据的一致性与完整性。这些定制化映射需求通过轻易云灵活配置功能得到完美解决,不仅简化了复杂操作,还提升了整体项目运行效率。 最后但同样重要的是,对接过程中的实时监控与日志管理,使得整个流程透明可视,可及时发现并修正任何潜在的问题,从而保障系统持续稳定运行。在这套方案中,无论是从技术架构还是具体实现,都提供了一套完善且实用的方法论,希望对类似需求有所裨益。 ![如何对接用友BIP接口](https://pic.qeasy.cloud/D31.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星辰V2接口/jdy/v2/scm/pur_inbound获取并加工数据 在轻易云数据集成平台中,调用源系统接口是数据处理生命周期的第一步。本文将详细探讨如何通过调用金蝶云星辰V2接口`/jdy/v2/scm/pur_inbound`获取采购入库单数据,并进行初步的数据加工。 #### 接口概述 金蝶云星辰V2提供的`/jdy/v2/scm/pur_inbound`接口用于查询采购入库单信息。该接口支持GET请求,返回符合条件的采购入库单数据。以下是该接口的元数据配置: ```json { "api": "/jdy/v2/scm/pur_inbound", "effect": "QUERY", "method": "GET", "number": "bill_no", "id": "id", "name": "bill_no", "idCheck": true, "request": [ {"field": "enable", "label": "可用状态", "type": "string", "describe": "可用状态,1:可用,0:禁用,-1:全部", "value": "1"}, {"field": "search", "label": "模糊搜索", "type": "string", "describe": "模糊搜索-名称、编码、规格、条形码"}, {"field": "parent_id", "label": "商品类别", "type": "string", "describe": "商品类别ID"}, {"field": "isdataperm", "label": "数据权限", "type":"string","describe":"是否添加数据权限校验,默认false"}, {"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}*1000"}, {"field":"modify_end_time","label":"修改结束时间戳","type":"string","describe":"结束时间(格式:“时间戳”,-1表示不过滤),修改时间","value":"_function {CURRENT_TIME}*1000"}, {"field":"page","label":"当前页","type":"string","describe":"当前页(默认1)","value":"1"}, {"field":"page_size","label":"每页显示条数","type":"string","describe":"每页显示条数(默认10,最大100)","value":"10"}, {"field":"bill_status","label":"单据状态","type":"string","describe":"单据状态","value":"C"} ], ... } ``` #### 请求参数解析 在调用该接口时,我们需要设置多个请求参数,以确保获取到符合条件的数据。这些参数包括但不限于: - `enable`: 设置为"1"表示只查询可用状态的数据。 - `search`: 支持模糊搜索,可以根据名称、编码、规格或条形码进行查询。 - `parent_id`: 商品类别ID,用于过滤特定类别的商品。 - `isdataperm`: 数据权限校验,默认为false。 - `create_start_time`和`create_end_time`: 用于指定创建时间范围。 - `modify_start_time`和`modify_end_time`: 用于指定修改时间范围,这里使用了函数来动态获取上次同步和当前的时间戳。 - `page`和`page_size`: 分页参数,默认第一页,每页显示10条记录。 - `bill_status`: 单据状态,这里设置为"C"表示只查询已完成的单据。 #### 数据获取与初步加工 通过上述配置,我们可以发送GET请求来获取采购入库单数据。以下是一个示例请求: ```http GET /jdy/v2/scm/pur_inbound?enable=1&modify_start_time=LAST_SYNC_TIME*1000&modify_end_time=CURRENT_TIME*1000&page=1&page_size=10&bill_status=C HTTP/1.1 Host: api.kingdee.com Authorization: Bearer <access_token> ``` 响应结果将包含符合条件的采购入库单列表。我们需要对这些数据进行初步加工,例如过滤掉不需要的数据,根据业务需求进行字段转换等。 ##### 数据过滤 根据元数据配置中的条件,我们可以过滤掉备注为“不传输”的记录: ```json "condition":[[{"field":"remark","logic":"neqv2","value":"不传输"}]] ``` 这意味着我们需要在处理响应数据时检查每条记录的备注字段,如果其值为“不传输”,则忽略该记录。 ##### 字段转换 为了适应目标系统的数据结构,我们可能需要对某些字段进行转换。例如,将金蝶云星辰中的字段名转换为聚水潭系统所需的字段名。这可以通过轻易云平台提供的映射功能来实现。 #### 实践案例 假设我们从金蝶云星辰获取到以下采购入库单数据: ```json [ { "id": 12345, "bill_no": "PO20231001", ... ... }, ... ] ``` 我们可以使用轻易云平台将这些数据映射并转换为目标系统所需的格式,然后写入聚水潭系统。具体步骤包括: 1. **调用接口**:通过配置好的请求参数调用金蝶云星辰接口获取原始数据。 2. **过滤与转换**:根据业务规则过滤掉不需要的数据,并进行必要的字段转换。 3. **写入目标系统**:将处理后的数据通过轻易云平台写入聚水潭系统。 以上过程展示了如何利用轻易云平台高效地完成从源系统到目标系统的数据集成。在实际应用中,可以根据具体业务需求进一步优化和调整配置,以确保数据准确无误地传输和处理。 ![电商OMS与WMS系统接口开发配置](https://pic.qeasy.cloud/S5.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入聚水潭API接口的技术案例 在数据集成过程中,ETL(Extract, Transform, Load)是一个关键步骤。本文将重点探讨如何使用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,转为目标平台聚水潭API接口所能够接收的格式,并最终写入目标平台。 #### 数据请求与清洗 在数据集成生命周期的第一步,我们已经从源系统星辰中获取了采购入库单的数据,并进行了必要的清洗和预处理。接下来,我们需要将这些数据转换为聚水潭API接口所能接受的格式。 #### 数据转换与写入 我们使用轻易云提供的全异步、多种异构系统支持的平台功能,将清洗后的数据进行转换并写入目标系统。以下是元数据配置及其应用示例: ```json { "api": "/open/jushuitan/purchasein/upload", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ {"field": "is_confirm", "label": "是否自动确认单据", "type": "string", "value": "false"}, {"field": "excute_confirming", "label": "是否自动审核", "type": "string", "value": "false"}, {"field": "wms_co_id", "label": "分仓编号", "type": "int", "value": "{{material_entity.stock_number}}"}, {"field": "supplier_id", "label": "供应商id", "type": "int", "value": "{supplier_number}"}, {"field": "external_id", "label": "外部采购单号", "type":"string", "describe":"单据上传成功之后对应页面外部单号", "value":"{bill_no}" }, {"field":"remark","label":"备注","type":"string","value":"{remark}"}, { "field":"items", "label":"明细列表", "type":"array", "value":"material_entity", "children":[ {"field":"sku_id","label":"商品编码","type":"string","value":"{{material_entity.material_number}}"}, {"field":"qty","label":"数量","type":"int","value":"{{material_entity.qty}}"}, {"field":"price","label":"单价","type":"float","value":"{{material_entity.tax_price}}"}, {"field":"remark","label":"明细备注","type":"string","value":"{{material_entity.comment}}"} ] } ], "buildModel": true } ``` #### 元数据配置解析 1. **API路径和请求方法**: - `api`字段指定了聚水潭的采购入库单上传接口路径:`/open/jushuitan/purchasein/upload`。 - `method`字段指定了HTTP请求方法为POST。 2. **字段映射**: - `is_confirm` 和 `excute_confirming` 字段分别表示是否自动确认和审核,默认为`false`。 - `wms_co_id` 映射到分仓编号,值来自于源数据中的 `stock_number`。 - `supplier_id` 映射到供应商ID,值来自于 `{supplier_number}`。 - `external_id` 映射到外部采购单号,值来自于 `{bill_no}`。 - `remark` 映射到备注信息,值来自于 `{remark}`。 3. **明细列表**: - `items` 字段表示采购入库单的明细列表,其值为数组类型,对应源数据中的 `material_entity`。 - 明细列表中的每个子项包括: - `sku_id`: 商品编码,对应源数据中的 `material_number`。 - `qty`: 数量,对应源数据中的 `qty`。 - `price`: 单价,对应源数据中的 `tax_price`。 - `remark`: 明细备注,对应源数据中的 `comment`。 #### 实施步骤 1. **配置元数据**:根据上述元数据配置,在轻易云平台上进行相应设置,以确保每个字段都正确映射到目标API接口所需的格式。 2. **执行ETL过程**:通过轻易云的数据处理引擎,执行ETL转换,将清洗后的源平台数据按照元数据配置进行转换。 3. **发送请求**:将转换后的数据通过POST请求发送至聚水潭的采购入库单上传接口。 #### 实际应用示例 假设我们从星辰系统中获取了如下采购入库单信息: ```json { "stock_number": 101, "{supplier_number}": 202, "{bill_no}": "PO123456", "{remark}": "", ... } ``` 以及其明细列表: ```json [ { "{material_number}": "SKU001", "{qty}": 10, "{tax_price}": 100.0, "{comment}":"", ... }, ] ``` 通过上述元数据配置和ETL过程,我们将这些信息转换为符合聚水潭API要求的格式,并成功上传至目标系统,实现了不同系统间的数据无缝对接。 这种方式不仅提高了业务流程的透明度和效率,还确保了各环节的数据准确性和一致性,为企业的数据管理提供了强有力的技术支持。 ![电商OMS与WMS系统接口开发配置](https://pic.qeasy.cloud/T29.png~tplv-syqr462i7n-qeasy.image)