轻易云平台实现ETL转换并写入金蝶云星空

  • 轻易云集成顾问-彭萍
### 旺店通·企业奇门数据集成到金蝶云星空:销售出库(寄售业务)案例分享 在企业信息化系统对接过程中,实现数据的无缝流转、确保不遗漏单据和快速批量写入是至关重要的。本文将详细阐述如何通过轻易云数据集成平台,成功完成旺店通·企业奇门与金蝶云星空之间的销售出库(寄售业务)数据对接。 首先,我们需要实现从旺店通获取销售信息,此过程利用了API接口`wdt.stockout.order.query.trade`。该接口能够高效地从旺店通中提取所需订单数据,同时应注意处理分页和限流机制以保障API调用的稳定性。在实际项目中,通过定时任务可靠抓取这些接口上的最新销售信息,是确保不会漏单的重要手段。 其次,面对大量订单数据,我们必须执行快速、准确的数据写入到金蝶云星空。这一环节使用了金蝶提供的`batchSave` API,该接口允许批量导入记录,从而极大提升了操作效率。不过,在进行批量导入时,需要特别留意源系统与目标系统间的数据格式差异问题,这就要求我们在映射过程中实施相应的数据转换策略。此外,为保证集成过程中的可靠性,还加入了异常处理与错误重试机制,以防止因意外错误引发的大规模失败。 值得一提的是,为进一步提高透明度和可控性,我们在整个对接流程中实现了实时监控与日志记录。通过这样的设置,可以动态追踪每一个步骤的数据处理状态,有助于及时发现并解决潜在的问题。 综上,通过科学合理地应用API及相关技术手段,我们成功完成了一次复杂但高效的系统对接集成。从而不仅满足了企业对于销售信息及时、高效录入ERP系统需求,也充分展示了轻易云平台强大的功能和灵活性。在后续部分,将进一步深入探讨具体实施细节,以及各关键环节代码示例及配置要点。 ![电商OMS与WMS系统接口开发配置](https://pic.qeasy.cloud/D12.png~tplv-syqr462i7n-qeasy.image) ### 调用旺店通·企业奇门接口wdt.stockout.order.query.trade获取并加工数据 在数据集成的生命周期中,调用源系统API接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口`wdt.stockout.order.query.trade`,并对获取的数据进行初步加工。 #### 接口调用配置 首先,我们需要配置元数据,以确保能够正确调用接口并获取所需数据。以下是关键的元数据配置: ```json { "api": "wdt.stockout.order.query.trade", "method": "POST", "number": "order_no", "id": "stockout_id", "pagination": { "pageSize": 100 }, "idCheck": true, "condition": [ [ { "field": "shop_no", "logic": "like", "value": "JS" } ] ], "request": [ { "field": "start_time", "label": "开始时间", "type": "datetime", "describe": "增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss", "value": "{{LAST_SYNC_TIME|datetime}}" }, { "field": "end_time", "label": "结束时间", "type": "datetime", "describe": "增量获取数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss", "value": "{{CURRENT_TIME|datetime}}" }, { "field": "status", ... } ], ... } ``` #### 请求参数解析 - **start_time** 和 **end_time**:用于增量获取数据,分别代表上次同步时间和当前时间。 - **status**:订单状态,可以过滤特定状态的订单。 - **shop_no** 和 **warehouse_no**:分别代表店铺编号和仓库编号,用于区分不同店铺和仓库的数据。 这些参数通过POST请求发送到`wdt.stockout.order.query.trade`接口,以获取销售出库(寄售业务)的相关订单信息。 #### 数据分页处理 由于接口返回的数据可能非常庞大,因此需要分页处理。配置中的`pagination`字段设置了每页返回的数据条数为100条。分页参数如下: - **page_size**:每页返回的数据条数,默认为100。 - **page_no**:页号,从0开始。 在实际调用过程中,需要循环递增`page_no`,直到所有数据都被成功拉取。 #### 数据清洗与转换 在获取到原始数据后,需要对其进行清洗和转换,以便后续处理和存储。以下是一些常见的清洗与转换操作: 1. **字段映射**:将源系统的字段映射到目标系统。例如,将`stockout_no`映射为目标系统中的出库单号。 2. **数据格式转换**:将日期时间字段从字符串格式转换为标准的日期时间对象。 3. **异常值处理**:过滤掉不符合业务规则的异常值,例如状态为“已取消”的订单。 示例代码片段: ```python def clean_and_transform(data): cleaned_data = [] for record in data: if record['status'] != '5': # 排除已取消订单 transformed_record = { 'order_number': record['order_no'], 'stockout_number': record['stockout_no'], 'shop_code': record['shop_no'], 'warehouse_code': record['warehouse_no'], 'order_date': datetime.strptime(record['start_time'], '%Y-%m-%d %H:%M:%S') } cleaned_data.append(transformed_record) return cleaned_data ``` #### 数据写入 经过清洗和转换后的数据可以写入目标数据库或其他存储系统。这一步通常涉及到批量插入操作,以提高效率。 示例代码片段: ```python def write_to_database(cleaned_data, db_connection): with db_connection.cursor() as cursor: for record in cleaned_data: cursor.execute( """ INSERT INTO sales_orders (order_number, stockout_number, shop_code, warehouse_code, order_date) VALUES (%s, %s, %s, %s, %s) """, (record['order_number'], record['stockout_number'], record['shop_code'], record['warehouse_code'], record['order_date']) ) db_connection.commit() ``` 通过上述步骤,我们实现了从旺店通·企业奇门接口获取销售出库(寄售业务)订单数据,并对其进行清洗、转换和写入目标数据库的全过程。这一过程不仅确保了数据的一致性和完整性,还极大地提升了业务处理效率。 ![企业微信与OA系统接口开发配置](https://pic.qeasy.cloud/S12.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口 在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)转换,并将其转为目标平台——金蝶云星空API接口所能够接收的格式,最终写入目标平台。以下将详细介绍如何利用轻易云数据集成平台实现这一过程。 #### 1. API接口配置 首先,我们需要配置金蝶云星空的API接口。根据提供的元数据配置,我们使用`batchSave` API,方法为`POST`,并启用ID检查(`idCheck: true`)。 ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, ... } ``` #### 2. 请求参数配置 请求参数包括单据编号、单据类型、业务类型等字段。每个字段都需要根据源数据进行相应的转换和映射。例如: - `FBillNo`: 单据编号,直接从源数据中的`order_no`字段获取。 - `FBillTypeID`: 单据类型,固定值为`ZJDB07_SYS`。 - `FSaleOrgId`: 销售组织,根据不同的店铺名称(`shop_name`)进行映射。 ```json { "field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "{order_no}" }, { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型", "value": "ZJDB07_SYS", ... }, { ... } ``` #### 3. 数据转换逻辑 对于复杂的数据转换逻辑,例如销售组织(`FSaleOrgId`)和结算组织(`FSettleOrgId`),我们使用条件语句进行映射: ```json { "field": "FSaleOrgId", ... "value": "_function case when '{shop_name}' like '%古神%' then 102 when '{shop_name}' like '%广州格物%' then 101 when '{shop_name}' like '%绿星%' then 104 when '{shop_name}' like '%蓝阳%' then 105 when '{shop_name}' like '%金秋%' then 106 when '{shop_name}' like '%广西格物%' then 103 ELSE 100 end" }, { ... } ``` 这种方式确保了不同店铺名称对应到正确的组织ID。 #### 4. 明细信息处理 明细信息(`FBillEntry`)是一个数组,每个元素包含物料编码、调拨数量等字段。我们需要对每个字段进行相应的解析和转换: ```json { ... { "field":"FBillEntry", ... { ... { "field":"FMaterialId", ... value":"{{details_list.spec_no}}" }, { ... value":"{{details_list.num}}" }, { ... } } } } ``` 通过这种方式,可以确保每条明细记录都被正确地解析和传递。 #### 5. 提交与审核 最后,我们需要设置一些额外的请求参数,如表单ID、操作类型等,并指定是否自动提交和审核: ```json { ... { field":"FormId", label":"业务对象表单Id", type":"string", describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder", value":"STK_TransferDirect" }, { field":"Operation", label":"执行的操作", type":"string", value":"Save" }, { field":"IsAutoSubmitAndAudit", label":"提交并审核", type":"bool", value":"true" } } ``` 通过这些设置,可以确保数据在写入金蝶云星空后自动提交并审核,提高了处理效率。 #### 总结 通过以上步骤,我们可以利用轻易云数据集成平台,将源平台的数据经过ETL转换后,成功写入到金蝶云星空API接口。这一过程不仅实现了不同系统间的数据无缝对接,还保证了数据的一致性和准确性。 ![用友与WMS系统接口开发配置](https://pic.qeasy.cloud/T24.png~tplv-syqr462i7n-qeasy.image)