利用轻易云平台完成聚水潭与畅捷通T+系统的数据ETL过程

  • 轻易云集成顾问-陈洁琳
### 聚水潭数据集成到畅捷通T+: 调拨入库单对接其他入库单 在系统集成项目中,数据的无缝流动和准确性至关重要。本案例将分享如何通过轻易云数据集成平台,实现聚水潭调拨入库单的数据高效、精准对接到畅捷通T+的其他入库单。 为了实现这一目标,我们重点关注以下几个技术要点: 1. **定时可靠的抓取聚水潭接口数据**:通过定时任务调用聚水潭API `/open/allocate/query`,确保每个调拨入库单都被及时抓取,不遗漏任何记录。 2. **批量数据快速写入同步**:使用轻易云的数据处理引擎,将从聚水潭获取的大量数据信息,通过API `/tplus/api/v2/otherReceive/Create` 批量高效地写入到畅捷通T+系统。 3. **分页和限流处理**:由于实际业务场景中可能存在大量数据,为了避免接口超时或性能问题,我们设计了分页抓取和限流机制来稳健地处理大规模的数据请求。 4. **格式差异转化与映射**:考虑到不同系统之间的数据结构不完全一致,我们需进行必要的数据格式转换及自定义字段映射,以满足畅捷通T+特有的业务需求。利用轻易云的平台功能,能够灵活配置这些规则并实时应用于各个流程环节。 具体方案将在后续详细讲解,包括异常处理机制、日志监控策略以及重试机制等,以确保整个对接过程透明可控,并具备较高容错能力。 ![钉钉与ERP系统接口开发配置](https://pic.qeasy.cloud/D7.png~tplv-syqr462i7n-qeasy.image) ### 调用聚水潭接口/open/allocate/query获取并加工数据 在数据集成的生命周期中,第一步是调用源系统的API接口获取原始数据。本文将详细探讨如何通过轻易云数据集成平台调用聚水潭的接口`/open/allocate/query`,并对获取的数据进行初步加工。 #### 接口配置与调用 我们需要配置和调用聚水潭的`/open/allocate/query`接口,该接口主要用于查询调拨入库单信息。以下是元数据配置的详细说明: ```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", "value": "{{LAST_SYNC_TIME|datetime}}"}, {"field": "modified_end", "label": "修改结束时间", "type": "string", "value": "{{CURRENT_TIME|datetime}}"}, {"field": "page_index", "label": "第几页", "type": "string", "value":"1"}, {"field": "page_size", "label":"每页多少条","type":"string","describe":"默认30,最大50","value":"30"}, {"field":"type","label":"调拨类型","type":"string","value":"调拨入"} ], "autoFillResponse": true } ``` #### 请求参数解析 1. **modified_begin** 和 **modified_end**:这两个字段分别表示查询的起始和结束时间。通过模板变量`{{LAST_SYNC_TIME|datetime}}`和`{{CURRENT_TIME|datetime}}`动态填充,确保每次请求都能获取到最新的数据。 2. **page_index** 和 **page_size**:分页参数,用于控制每次请求返回的数据量。默认情况下,每页返回30条记录,最大支持50条。 3. **type**:固定值为“调拨入”,用于指定查询的调拨类型。 #### 数据请求与清洗 在调用接口获取数据后,需要对返回的数据进行初步清洗和加工,以便后续处理。假设我们从接口获得了如下JSON响应: ```json { "code": 0, "message": "", "data":{ "total_count":100, "page_index":1, "page_size":30, ... } } ``` 我们需要关注以下几个关键点: 1. **total_count**:总记录数,用于计算分页请求次数。 2. **data数组**:包含具体的调拨入库单信息。 #### 数据转换与写入 在完成数据请求和初步清洗后,我们需要将数据转换为目标系统所需的格式,并写入目标系统。在这个过程中,可以利用轻易云平台提供的数据转换工具,将聚水潭的数据结构映射到畅捷通系统所需的格式。 例如,将聚水潭的调拨入库单字段映射到畅捷通的其他入库单字段: ```json { // 聚水潭字段 -> 畅捷通字段映射示例 // 聚水潭 io_id -> 畅捷通 entry_id // 聚水潭 name -> 畅捷通 bill_name } ``` #### 自动填充响应 在元数据配置中,我们设置了`autoFillResponse: true`,这意味着平台会自动处理响应数据,并填充到相应的数据模型中。这一特性极大简化了开发工作,使得我们可以专注于业务逻辑而非底层实现。 通过以上步骤,我们实现了从聚水潭系统获取调拨入库单数据,并将其转换为畅捷通系统所需格式并写入目标系统。这不仅提高了数据处理效率,也确保了数据的一致性和准确性。 ![轻易云数据集成平台金蝶集成接口配置](https://pic.qeasy.cloud/S22.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将聚水潭调拨入库单转换并写入畅捷通T+API接口的技术案例 在本案例中,我们将详细探讨如何使用轻易云数据集成平台,将聚水潭系统中的调拨入库单数据进行ETL转换,并最终通过畅捷通T+API接口写入目标平台。本文将重点关注ETL过程中的技术细节和API接口的具体配置。 #### 数据请求与清洗 首先,我们需要从聚水潭系统中获取调拨入库单的数据。这一步骤包括数据请求和清洗,确保获取的数据符合目标平台的要求。在此过程中,我们可以利用轻易云平台提供的全透明可视化操作界面,实时监控数据流动和处理状态。 #### 数据转换与写入 接下来是关键的ETL转换步骤。我们需要将已经集成的源平台数据转换为畅捷通T+API接口所能够接收的格式,并最终写入目标平台。以下是元数据配置及其详细解析: ```json { "api": "/tplus/api/v2/otherReceive/Create", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "ExternalCode", "label": "外部单据号", "type": "string", "describe": "外部单据号,后台做唯一性检查。用于防止重复提交,和外系统数据对应。", "value": "{io_id}" }, { "field": "VoucherType", "label": "单据类型", "type": "string", "describe": "单据类型。默认值{Code:\"ST1024\"}", "value": "ST1004", "parser": { "name": "ConvertObjectParser", "params": "Code" } }, { "field": "VoucherDate", "label": "单据日期", "type": "string", "describe": "", "value": "{io_date}" }, { "field": "BusiType", ... } ], ... } ``` ##### 字段解析与转换 1. **ExternalCode(外部单据号)**: - 类型:`string` - 描述:外部单据号用于防止重复提交,并与外系统数据对应。 - 值:`{io_id}`,即从源系统获取的调拨入库单ID。 2. **VoucherType(单据类型)**: - 类型:`string` - 描述:默认值为`ST1004`,表示其他入库单。 - 转换器:`ConvertObjectParser`,参数为`Code`。 3. **VoucherDate(单据日期)**: - 类型:`string` - 值:`{io_date}`,即从源系统获取的调拨入库日期。 4. **BusiType(业务类型)**: - 类型:`string` - 描述:业务类型编码,取值范围包括13(其他)和14(其他退库)。 - 值:固定为13。 - 转换器:`ConvertObjectParser`,参数为`Code`。 5. **Warehouse(仓库信息)**: - 类型:`string` - 值:`{wms_co_id}`,即从源系统获取的仓库ID。 - 转换器:`ConvertObjectParser`,参数为`Code`。 - 映射关系:目标仓库ID `66d687ab2f3fde34df428d6d`. 6. **Memo(表头备注)**: - 类型:`string` - 值:`{remark}`,即从源系统获取的备注信息。 7. **DynamicPropertyKeys 和 DynamicPropertyValues**: - 用于动态属性键值对的配置。 - 转换器分别为 `StringToArray`, 参数为`,` 和 `<`. 8. **RdStyle(入库类别)**: - 类型:`string` - 值:固定为113。 - 转换器: `ConvertObjectParser`, 参数为 `Code`. 9. **RDRecordDetails(单据明细信息)**: 包含多个子字段,如存货信息、主计量单位数量、成本金额、成本单价等。这些字段都需要根据源系统的数据进行相应的转换和映射。 ##### 示例请求体 ```json { ... { ... { field: 'RDRecordDetails', label: '单据明细信息', type: 'array', value: 'items', children: [ { field: 'Inventory', label: '存货信息', type: 'string', value: '{sku_id}', parser: { name: 'ConvertObjectParser', params: 'Code' } }, { field: 'BaseQuantity', label: '主计量单位数量', type: 'string', value: '{qty}' }, ... ] } } } ``` 通过上述配置,我们可以确保从聚水潭系统获取的数据经过清洗和转换后,能够准确地映射到畅捷通T+API接口所需的数据格式中。最终,通过POST请求,将这些数据写入到畅捷通T+系统中,实现了不同系统间的数据无缝对接。 在实际操作中,需要根据具体业务需求和数据结构进行适当调整,以确保数据准确性和完整性。通过轻易云平台提供的全生命周期管理功能,可以有效监控和优化整个数据集成过程,提高业务透明度和效率。 ![钉钉与ERP系统接口开发配置](https://pic.qeasy.cloud/T12.png~tplv-syqr462i7n-qeasy.image)