轻易云平台ETL转换和数据写入KIS私有云的实现

  • 轻易云集成顾问-孙传友
### 聚水潭数据集成到KIS私有云的技术实现 在本文中,我们将深入探讨如何使用轻易云数据集成平台,实现聚水潭系统的数据无缝对接到KIS私有云。特别是关于“聚水潭-调出——>KIS-其他出库Done”这一实际运行方案的具体实现。在这个案例中,重点解决的是确保订单不漏单、大量数据快速写入、可靠抓取接口数据以及处理分页与限流等问题。 首先,通过调用聚水潭提供的数据获取API:`/open/allocate/query`,我们可以实时地从聚水潭系统中抓取所需的数据。在此过程中,为了避免因大批量请求导致接口响应缓慢或超时,需要专门设计一个定时任务来分段获取数据,并且要确保每次请求都能成功执行。这种方式不仅提升了数据抓取的稳定性,还有效应对了分页和限流的问题。 按照上述方式获取到的原始数据,因为存在格式差异,需要进行适当的转换才能匹配KIS私有云的要求。通过定制化的数据映射规则,将聚水潭中的字段精确对应到KIS系统,以保证两者之间的数据一致性。同时,我们开发了一套错误重试机制,当出现网络异常或其他导致提交失败情况时,该机制能够自动重试,最大程度减少人工干预。 接下来,就是向KIS私有云进行大量数据高效写入。利用其提供的数据写入API:`/koas/app007104/api/miscellaneousdelivery/create`,结合批量操作策略,可以显著提升写入速度和准确度。此外,为确保整个过程透明可监控,我们设立了详细日志记录系统,对每一步操作都进行了全程跟踪。从而使得任何一个环节出现问题,都能及时发现并修正。 最后一种重要特性是在两套系统之间建立实时监控机制,通过访问轻易云平台自带的一系列工具,可随时查看当前流程状态及历史记录。这不仅让整个集成过程更加透明,也为后续完善和优化打下扎实基础。 以上便是本技术案例开头部分内容的介绍,在后续章节中会继续详细解析各个具体步骤及实施细节,包括代码示例和最佳实践方法等。 ![电商OMS与WMS系统接口开发配置](https://pic.qeasy.cloud/D27.png~tplv-syqr462i7n-qeasy.image) ### 调用聚水潭接口/open/allocate/query获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用聚水潭接口`/open/allocate/query`来获取并加工数据。 #### 接口配置与调用 首先,我们需要配置元数据以便正确调用聚水潭的API接口。以下是该接口的元数据配置: ```json { "api": "/open/allocate/query", "effect": "QUERY", "method": "POST", "number": "io_id", "id": "io_id", "name": "name", "idCheck": true, "request": [ {"field": "modified_begin", "label": "修改起始时间", "type": "string", "describe": "修改起始时间", "value": "{{LAST_SYNC_TIME|datetime}}"}, {"field": "modified_end", "label": "修改结束时间", "type": "string", "describe": "修改结束时间", "value": "{{CURRENT_TIME|datetime}}"}, {"field": "page_index", "label": "第几页", "type": "string", "describe": "第几页", "value":"1"}, {"field": "page_size", "label":"每页多少条","type":"string","describe":"默认30,最大50","value":"30"}, {"field":"type","label":"调拨类型","type":"string","describe":"调拨类型","value":"调拨出"}, {"field":"date_type","label":"date_type","type":"string","value":"2"} ], "autoFillResponse": true, "condition":[[{"field":"wms_co_id","logic":"in","value":"14132797,14133381"}]] } ``` #### 请求参数解析 1. **modified_begin** 和 **modified_end**:这两个字段用于指定查询的时间范围,分别表示修改起始时间和结束时间。通过使用模板变量`{{LAST_SYNC_TIME|datetime}}`和`{{CURRENT_TIME|datetime}}`,可以动态地获取上次同步时间和当前时间。 2. **page_index** 和 **page_size**:分页参数,用于控制每次请求返回的数据量。默认情况下,每页返回30条记录,最大可设置为50条。 3. **type**:指定调拨类型,这里设置为“调拨出”。 4. **date_type**:设置为2,表示查询的是按日期类型过滤的数据。 #### 条件过滤 在条件过滤部分,我们使用了一个简单的逻辑条件: ```json "condition":[[{"field":"wms_co_id","logic":"in","value":"14132797,14133381"}]] ``` 这个条件表示只查询仓库ID为`14132797`或`14133381`的数据。 #### 数据请求与清洗 在发送请求后,轻易云平台会自动处理响应数据(由于配置了`autoFillResponse: true`),并将其转换为标准格式供后续处理使用。这一步骤包括对原始数据进行清洗、去重、校验等操作,以确保数据质量。 #### 数据转换与写入 在完成数据清洗后,下一步是将数据转换为目标系统所需的格式,并写入到目标系统中。在本案例中,目标系统是KIS-其他出库模块。轻易云平台提供了丰富的数据转换工具,可以根据业务需求进行灵活配置。 例如,可以通过映射规则将聚水潭返回的数据字段映射到KIS系统所需的字段,并进行必要的数据类型转换和格式化处理。 #### 实时监控与日志记录 为了确保整个过程的透明度和可追溯性,轻易云平台提供了实时监控和日志记录功能。每个步骤都会生成详细的日志信息,包括请求参数、响应结果、处理状态等。这些信息对于排查问题和优化流程非常有帮助。 通过以上步骤,我们实现了从聚水潭系统获取调拨出库数据,并将其无缝集成到KIS系统中的全过程。这不仅提高了数据处理效率,还确保了数据的一致性和准确性。 ![打通用友BIP数据接口](https://pic.qeasy.cloud/S22.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入KIS私有云API接口的技术案例 在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台 KIS 私有云 API 接口所能够接收的格式,最终写入目标平台。以下是详细的技术实现过程。 #### 1. API接口配置 首先,我们需要配置 KIS 私有云 API 接口的信息。根据提供的元数据配置,目标 API 接口为 `/koas/app007104/api/miscellaneousdelivery/create`,请求方法为 `POST`。在请求体中,需要包含多个字段和对象,这些字段和对象将从源平台的数据中提取并转换后填充。 #### 2. 请求体结构 请求体主要包含两个部分:`AccountDB` 和 `Object`。其中 `Object` 又分为 `Head` 和 `Entry` 两部分。 ```json { "AccountDB": "001", "Object": { "Head": { "FBillNo": "{io_id}", "Fdate": "_function REPLACE ('{{io_date|datetime}}',' ','T')", "FDeptID": "16921", "FBillTypeID": "1001", "FTranType": "", "FDCStockID": "{wms_co_id}-{wh_id}", "FManagerID": "{wms_co_id}", "FSManagerID": "{wms_co_id}", "FFManagerID": "{wms_co_id}", "FBillerID": "{wms_co_id}", "FEmpID": "{wms_co_id}", "FMarketingStyle": 12530, "FSaleStyle": 101, "FExplanation": "调拨出库{io_id}", "FSupplyID": 13643 }, "Entry": [ { "FItemID": "_mongoQuery 30fa1b2b-6cfc-31c2-90a3-5a497b7812bd findField=content.FItemID where={\"content.F_103\":{\"$eq\":\"{sku_id}\"}}", "Fauxqty": "{{items.qty}}", "FSecCoefficient": 1, "FSecQty": "{{items.qty}}", "Famount": "{item_cost_price}", "FDCStockID": "{wms_co_id}-{wh_id}", "FUnitID": "_mongoQuery 30fa1b2b-6cfc-31c2-90a3-5a497b7812bd findField=content.FProductUnitID where={\"content.F_103\":{\"$eq\":\"{sku_id}\"}}", "FMTONo": 1, "FPlanMode": 14036 } ] } } ``` #### 3. 数据提取与转换 在数据提取与转换过程中,我们需要对源平台的数据进行处理,以符合目标 API 的要求。以下是一些关键字段的处理方式: - **日期格式转换**:使用 `_function REPLACE ('{{io_date|datetime}}',' ','T')` 将日期格式从常规格式转换为符合 ISO8601 标准的格式。 - **仓库 ID 映射**:通过 `{wms_co_id}-{wh_id}` 的方式,将源平台中的仓库 ID 转换为目标平台所需的格式,并使用映射规则确保正确性。 - **产品代码查询**:使用 `_mongoQuery` 查询 MongoDB 数据库,以获取产品代码和物料单位等信息。例如: ```json "_mongoQuery 30fa1b2b-6cfc-31c2-90a3-5a497b7812bd findField=content.FItemID where={\"content.F_103\":{\"$eq\":\"{sku_id}\"}}" ``` #### 4. 数据写入 完成数据提取与转换后,将生成的 JSON 数据通过 POST 请求写入 KIS 私有云 API 接口。确保请求头中包含必要的认证信息和内容类型设置,例如: ```http POST /koas/app007104/api/miscellaneousdelivery/create HTTP/1.1 Host: kis.example.com Content-Type: application/json Authorization: Bearer <token> { // 请求体内容 } ``` #### 技术要点总结 通过以上步骤,我们实现了从源平台到目标平台的数据 ETL 转换,并成功将数据写入 KIS 私有云 API 接口。在这个过程中,关键技术点包括日期格式转换、字段映射、数据库查询以及 API 请求构建。这些操作确保了数据在不同系统间的无缝对接和高效传输。 ![用友与CRM系统接口开发配置](https://pic.qeasy.cloud/T5.png~tplv-syqr462i7n-qeasy.image)