轻易云与旺店通接口的ETL数据转换技术分享

  • 轻易云集成顾问-林峰
### 金蝶云星空数据与旺店通·企业奇门对接技术方案分享 在复杂的业务环境中,不同系统之间的数据对接对于提升整体运作效率至关重要。本案例将深入探讨如何高效地集成金蝶云星空中的生产退料单数据到旺店通·企业奇门系统,具体实现方式是通过`executeBillQuery`接口抓取金蝶云星空数据,并利用`wdt.stockout.order.push`接口推送到旺店通。 首先,为确保数据不漏单,我们采用定时可靠的抓取机制,通过轻易云平台配置周期性任务调用金蝶云星空的API `executeBillQuery`。这个策略使得我们能够实时监控生产退料单的数据状态,并能灵活应对分页和限流问题,从源头上保证了完整性与准确性。 为了大量数据快速写入到旺店通·企业奇门,我们采取批量处理及并发写入的方法。在轻易云平台强大的调度能力下,经由适当的数据映射,对齐两者间格式差异后,将处理好的数据通过 `wdt.stockout.order.push` API 高效传输到目标系统。此外,面对可能出现的异常情况,我们设计了一套完善的错误重试机制,实现自动化纠错,大幅降低人工介入频率。 以上几个核心环节共同构筑起稳健、安全、高效的数据集成流程,在最大程度上保障了生产退料单从金蝶云星空无缝衔接至旺店通·企业奇门。接下来将详细阐述各步骤实现方法及实际操作注意事项。 ![如何对接用友BIP接口](https://pic.qeasy.cloud/D29.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成过程中,调用源系统的API接口是关键的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来获取生产退料单的数据,并进行初步加工。 #### API接口调用配置 根据元数据配置,我们需要通过POST方法调用`executeBillQuery`接口。以下是主要的请求参数及其配置: - **api**: `executeBillQuery` - **method**: `POST` - **number**: `FBillNo` - **id**: `FEntity_FEntryID` - **idCheck**: `true` 请求参数包括实体主键、单据编号、生产组织、收料组织等字段。以下是部分关键字段的配置示例: ```json { "field": "FID", "label": "实体主键", "type": "string", "describe": "实体主键", "value": "FID" }, { "field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "FBillNo" }, { "field": "FPrdOrgId", "label": "生产组织", "type": "string", "describe": "生产组织", "value": "FPrdOrgId.FNumber" } ``` #### 构建请求体 在构建请求体时,需要根据业务需求选择合适的字段,并设置过滤条件。例如,我们可以设置过滤条件为查询状态为已审核且仓库编号为001的记录: ```json { "FilterString": "FDocumentStatus='C' and FStockId.FNumber='001' and FApproveDate>='{{LAST_SYNC_TIME|dateTime}}'" } ``` 此外,还需指定分页参数以控制查询结果的大小和起始位置: ```json { "Limit": "{PAGINATION_PAGE_SIZE}", "StartRow": "{PAGINATION_START_ROW}" } ``` #### 数据清洗与转换 获取到原始数据后,需要对数据进行清洗和转换,以便后续处理。以下是一些常见的数据清洗与转换操作: 1. **字段映射**:将金蝶云星空返回的数据字段映射到目标系统所需的字段。例如,将`FMaterialId.FNumber`映射为目标系统中的物料编码。 2. **数据格式转换**:将日期格式从金蝶云星空的格式转换为目标系统所需的格式。 3. **数据过滤**:根据业务逻辑过滤掉不需要的数据记录。 示例代码如下: ```python def clean_and_transform(data): cleaned_data = [] for record in data: transformed_record = { 'material_code': record['FMaterialId.FNumber'], 'quantity': record['FQty'], 'date': convert_date_format(record['FDate']), # 添加更多字段映射和转换逻辑 } cleaned_data.append(transformed_record) return cleaned_data def convert_date_format(date_str): # 实现日期格式转换逻辑 pass ``` #### 数据写入 经过清洗和转换后的数据可以写入目标系统。在轻易云数据集成平台中,可以通过配置相应的写入操作来实现这一过程。具体操作步骤包括: 1. 配置目标系统的API接口信息。 2. 设置写入操作所需的字段映射关系。 3. 确保数据写入过程中的事务一致性和错误处理机制。 示例代码如下: ```python def write_to_target_system(cleaned_data): for record in cleaned_data: response = target_system_api.write(record) if not response.success: handle_error(response.error) ``` #### 总结 通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口,可以高效地获取生产退料单的数据,并进行必要的数据清洗与转换。这一过程不仅提高了数据处理的效率,也确保了不同系统间的数据一致性和准确性。 ![用友与CRM系统接口开发配置](https://pic.qeasy.cloud/S4.png~tplv-syqr462i7n-qeasy.image) ### 利用轻易云数据集成平台实现ETL转换并写入旺店通·企业奇门API接口 在数据集成生命周期的第二步,我们将已经集成的源平台数据进行ETL转换,并转为目标平台——旺店通·企业奇门API接口所能够接收的格式,最终写入目标平台。本文将详细探讨这一过程中的技术细节和实现方法。 #### 数据请求与清洗 首先,我们需要从源平台(如金蝶)获取生产退料单的数据。这些数据经过初步清洗和整理后,将作为ETL转换的输入。假设我们已经完成了这一阶段,接下来我们重点关注如何将这些清洗后的数据进行ETL转换,并通过API接口推送到旺店通·企业奇门。 #### ETL转换与写入 为了实现数据从金蝶到旺店通·企业奇门的无缝对接,我们需要遵循旺店通·企业奇门API接口的规范。以下是具体的元数据配置: ```json { "api": "wdt.stockout.order.push", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "outer_no", "label": "外部单号", "type": "string", "describe": "外部系统的唯一单据编号,避免重复推送数据", "value": "{FBillNo}" }, { "field": "warehouse_no", "label": "仓库编号", "type": "string", "describe": "代表仓库所有属性的唯一编码,用于仓库区分,ERP内支持自定义(ERP仓库界面设置)", "value": "{FStockId}" }, { "field": "remark", "label": "备注", "type": "string", "describe": "其他出库单备注" }, { "field": "reason", "label": "其他出库原因", "type": "string", "describe": "其他出库原因" }, { "field": "detail_list", ... ``` ##### 配置字段解析 1. **outer_no(外部单号)**: - 类型:`string` - 描述:外部系统的唯一单据编号,用于避免重复推送。 - 值:`{FBillNo}`,对应金蝶系统中的单据编号。 2. **warehouse_no(仓库编号)**: - 类型:`string` - 描述:代表仓库所有属性的唯一编码,用于区分不同仓库。 - 值:`{FStockId}`,对应金蝶系统中的仓库ID。 3. **remark(备注)**: - 类型:`string` - 描述:其他出库单备注信息。 4. **reason(其他出库原因)**: - 类型:`string` - 描述:说明出库原因。 5. **detail_list(货品列表节点)**: - 类型:`array` - 描述:包含其他出库单所有货品属性信息的数据节点。 - 子节点包括: - **spec_no(商家编码)**: - 类型:`string` - 描述:商家编码。 - 值:`{FMaterialId}`,对应金蝶系统中的物料ID。 - **num(出库数量)**: - 类型:`string` - 描述:出库数量。 - 值:`{FQty}`,对应金蝶系统中的数量。 - **price(价格)**: - 类型:`string` - 描述:价格信息。 - **batch_no(批次)**: - 类型:`string` - 描述:批次信息。 6. **is_check(自动审核)**: - 类型:`string` - 描述:是否自动审核。 - 值:“true”,表示自动审核。 ##### 数据转换与推送 在轻易云数据集成平台中,我们可以使用上述元数据配置来进行ETL转换。具体步骤如下: 1. **映射字段**: 将源平台(金蝶)的字段映射到目标平台(旺店通·企业奇门)的字段。例如,将金蝶中的 `FBillNo` 映射到 `outer_no`, `FStockId` 映射到 `warehouse_no` 等等。 2. **构建请求体**: 根据映射关系构建API请求体。例如: ```json { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... ![如何对接钉钉API接口](https://pic.qeasy.cloud/T28.png~tplv-syqr462i7n-qeasy.image)