使用轻易云平台实现旺店通到金蝶云星空的ETL过程

  • 轻易云集成顾问-冯潇
### 旺店通调拨入库-金蝶直接调拨单数据集成案例分享 在本次技术案例中,我们将深入探讨如何通过轻易云数据集成平台,将旺店通·企业奇门的数据高效、可靠地集成到金蝶云星空系统。这一过程中,核心挑战主要集中在API接口调用、数据的实时监控以及异常处理等环节。 首先,我们需要确保从旺店通·企业奇门系统获取到的数据能够准确无误地传输。为此,使用`wdt.stockin.order.query`接口进行调拨入库订单查询是关键的一步。在这一过程中,必须特别注意处理分页和限流问题,以避免遗漏或重复数据。同时,通过定时任务保证接口调用的稳定性和及时性,是实现可靠抓取的重要手段。 接下来的重点是如何将大量的数据快速且批量写入到金蝶云星空。利用其提供的`batchSave` API,可以显著提升写入效率。然而,在实际操作中我们还需解决多个层面的技术问题,例如两套系统之间的数据格式差异,以及对接过程中的异常处理机制。通过自定义数据映射与对接配置,可以使得不同结构的数据无缝转换并实现顺畅交互。另外,为应对可能出现的错误情况,实现错误重试机制则能进一步提高整个流程的健壮性。 此外,为了确保整个集成过程透明可控,我们应用了实时监控和详细日志记录功能,这不仅有助于即时发现和解决潜在问题,也为后期优化提供了宝贵的数据支持。 总之,本篇文章将围绕上述关键技术点,通过具体实例展示高效、安全及可扩展的数据集成方案,有力推动业务系统间的信息互联与协同运作。若要了解完整步骤与细节,请继续阅读以下内容…… ![用友与外部系统接口集成开发](https://pic.qeasy.cloud/D25.png~tplv-syqr462i7n-qeasy.image) ### 调用旺店通·企业奇门接口wdt.stockin.order.query获取并加工数据 在数据集成生命周期的第一步,我们需要从源系统获取数据,并对其进行初步处理。本文将深入探讨如何通过调用旺店通·企业奇门接口`wdt.stockin.order.query`来实现这一目标。 #### 接口调用配置 首先,我们需要配置接口调用的元数据。以下是关键的元数据配置项: - **API**: `wdt.stockin.order.query` - **请求方法**: `POST` - **分页大小**: 每页返回的数据条数,默认为50 - **ID检查**: `true` - **条件过滤**: 根据不同仓库名称和订单类型进行过滤 #### 请求参数 请求参数是接口调用的核心部分,决定了我们能够获取到哪些数据。以下是主要的请求参数及其描述: 1. **开始时间 (`start_time`)** - 类型:`datetime` - 描述:增量获取数据,格式为`yyyy-MM-dd HH:mm:ss` - 示例值:`{{LAST_SYNC_TIME|datetime}}` 2. **结束时间 (`end_time`)** - 类型:`datetime` - 描述:增量获取数据,格式为`yyyy-MM-dd HH:mm:ss` - 示例值:`{{CURRENT_TIME|datetime}}` 3. **状态 (`status`)** - 类型:`string` - 描述:入库单状态,如10已取消、20编辑中、80已完成等 - 默认值:80(已完成) 4. **上层单据编号 (`src_order_no`)** - 类型:`string` - 描述:上层单据编号,默认为采购单号 5. **仓库编号 (`warehouse_no`)** - 类型:`string` - 描述:代表仓库所有属性的唯一编码,用于区分不同仓库 6. **分页大小 (`page_size`)** - 类型:`string` - 描述:每页返回的数据条数,默认值为40 - 示例值:`{PAGINATION_PAGE_SIZE}` 7. **页号 (`page_no`)** - 类型:`string` - 描述:页号,不传值默认从0页开始 - 示例值:`{PAGINATION_START_PAGE}` #### 条件过滤 为了确保我们获取的数据符合业务需求,需要设置条件过滤。以下是具体的条件配置: ```json "condition":[ [{"field":"warehouse_name","logic":"like","value":"七遇云仓"},{"field":"order_type_name","logic":"in","value":"调拨入库"}], [{"field":"warehouse_name","logic":"like","value":"百媚"},{"field":"order_type_name","logic":"in","value":"调拨入库"}], [{"field":"warehouse_name","logic":"like","value":"委外"},{"field":"order_type_name","logic":"in","value":"调拨入库"}], [{"field":"warehouse_name","logic":"like","value":"江苏淮安"},{"field":"order_type_name","logic":"in","value":"调拨入库"}], [{"field":"warehouse_name","logic":"like","value":"菜鸟物流专用虚拟仓"},{"field":"order_type_name","logic":"in","value":"调拨入库"}], [{"field":"warehouse_name","logic":"like","value":"云浮仓(物流专用)"},{"field":"order_type_name","logic":"in","value":"调拨入库"}], [{"field":"warehouse_name","logic":"like","value":"七遇云浮工厂"},{"field":"order_type_name","logic":"in","value":"调拨入库"}] ] ``` #### 数据请求与清洗 在调用接口并获取原始数据后,需要对数据进行清洗和初步加工。这一步骤包括但不限于: 1. **去重**: 确保没有重复的数据记录。 2. **字段映射**: 将源系统字段映射到目标系统字段。 3. **格式转换**: 将日期、时间等字段转换为目标系统所需的格式。 例如,对于日期字段,可以使用如下代码进行格式转换: ```python from datetime import datetime def convert_date_format(date_str): return datetime.strptime(date_str, '%Y-%m-%d %H:%M:%S').strftime('%Y-%m-%dT%H:%M:%SZ') ``` #### 数据转换与写入 在清洗完数据后,需要将其转换为目标系统所需的格式,并写入目标系统。这一步骤通常包括: 1. **字段匹配**: 确保所有必要字段都已正确映射。 2. **批量处理**: 对大批量数据进行分批处理,以提高效率。 3. **错误处理**: 记录并处理任何可能出现的错误。 例如,可以使用如下代码将清洗后的数据写入目标系统: ```python def write_to_target_system(data): for record in data: try: # 假设有一个函数 send_to_target_system 用于发送数据 send_to_target_system(record) except Exception as e: # 记录错误日志 log_error(e, record) ``` 通过以上步骤,我们可以高效地调用旺店通·企业奇门接口获取并加工数据,为后续的数据集成工作打下坚实基础。 ![如何开发用友BIP接口](https://pic.qeasy.cloud/S9.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现旺店通调拨入库至金蝶云星空API接口的数据转换与写入 在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(提取、转换、加载)处理,以符合目标平台金蝶云星空API接口所能接收的格式,并最终写入目标平台。本文将深入探讨如何使用轻易云数据集成平台完成这一过程。 #### 元数据配置解析 在本案例中,我们需要将旺店通调拨入库的数据转换为金蝶云星空API接口能够接收的格式。以下是元数据配置的详细解析: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 20, "method": "batchArraySave" }, "request": [ { "field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "{order_no}" }, { ... } ], ... } ``` #### 数据请求与清洗 首先,我们从源平台(旺店通)提取所需的数据。假设我们已经完成了数据请求与清洗阶段,接下来我们重点关注如何将这些清洗后的数据进行转换并写入金蝶云星空。 #### 数据转换与写入 1. **API接口配置**: - `api`: 指定调用的金蝶云星空API为`batchSave`。 - `method`: 使用HTTP POST方法进行请求。 - `idCheck`: 启用ID检查,确保数据唯一性。 - `operation`: 配置批量保存操作,设置每次提交的行数为20。 2. **字段映射与转换**: - `FBillNo`(单据编号):直接映射为`{order_no}`。 - `FBillTypeID`(单据类型):固定值为`ZJDB01_SYS`,并通过`ConvertObjectParser`解析为内部编码。 - `FBizType`(业务类型):固定值为`NORMAL`。 - `FTransferDirect`(调拨方向):固定值为`GENERAL`。 - `FTransferBizType`(调拨类型):根据不同仓库编号动态生成,通过SQL-like语句进行条件判断。 3. **组织信息**: - `FSaleOrgId`, `FSettleOrgId`, `FStockOutOrgId`, `FStockOrgId`: 使用`ConvertObjectParser`解析组织编码,并根据映射规则进行转换。 4. **日期与备注**: - `FDate`: 使用模板语法将日期字段格式化为符合金蝶要求的格式,如:`{{check_time|datetime}}`。 - `FNote`: 将源订单ID作为备注信息传递。 5. **明细信息处理**: 明细信息通过嵌套数组形式传递,每个明细项包含多个字段,如物料编码、调拨数量、调出仓库等。例如: ```json { "field": "FBillEntry", ... "children": [ { ... "field": "FMaterialId", ... "value": "{{details_list.spec_no}}" }, { ... "field": "FQty", ... "value": "{{details_list.right_num}}" }, ... ] } ``` 6. **其他请求参数**: - `FormId`: 指定业务对象表单ID为`STK_TransferDirect`。 - `IsAutoSubmitAndAudit`: 设置为true,表示自动提交并审核单据。 - `IsVerifyBaseDataField`: 设置为true,验证所有基础资料有效性。 #### 实际应用案例 假设我们从旺店通获取到如下数据: ```json { "order_no": "TB20231001", ... "details_list": [ { ... "spec_no": "MAT001", ... "right_num": 100 } ], ... } ``` 通过上述元数据配置和轻易云平台的ETL功能,我们可以将这些数据转换并写入到金蝶云星空系统中。具体步骤包括: 1. 提取源数据并按照元数据配置进行字段映射和转换。 2. 调用金蝶云星空API接口,将转换后的数据批量提交。 最终,通过轻易云数据集成平台,我们实现了从旺店通到金蝶云星空的数据无缝对接,大大提高了业务处理效率和准确性。 ![金蝶与CRM系统接口开发配置](https://pic.qeasy.cloud/T15.png~tplv-syqr462i7n-qeasy.image)