轻易云数据集成平台案例:ETL转换盘亏单数据至旺店通WMS

  • 轻易云集成顾问-叶威宏
### 金蝶云星空数据集成到旺店通WMS案例分享:盘亏单=>其他出库单-1 在金蝶云星空与旺店通WMS系统对接的具体场景中,我们实施了“盘亏单=>其他出库单-1”的数据集成方案,以满足业务需求。在此次任务中,确保数据不漏单、高效写入以及处理接口分页和限流问题是关键点。 首先,通过调用金蝶云星空提供的`executeBillQuery` API接口,我们能够定时、可靠地抓取需要同步的盘亏单数据。为解决大量数据传输过程中的分页和限流限制,设计了一个根据时间戳分段获取记录的机制。另外,为防止漏单及重复读取,还实现了断点续传功能,每次成功抓取后将最新时间戳存储以备下次查询时使用。 在获得所需的数据后,接着面临的问题就是如何正确地转换并写入至旺店通WMS系统。这里我们通过自定义的数据映射策略,将金蝶云星空不同格式的数据准确无误地转化为旺店通可识别的结构,从而顺利调用`WDT_WMS_STOCKOUT_CREATE` API执行批量插入操作。 由于两套系统之间存在一定的数据格式差异,因此特别注意规范字段类型转换,并引入实时监控与日志记录模块,实现流程过程中的精确跟踪。一旦检测到异常情况,例如API请求失败或返回错误码,我们立即触发对应的重试机制,并将详细日志记载下来供事后分析与调优使用。同时,这样使得我们的对接过程可以自动修复错误,从而大幅提升整体运作效率和稳定性。 通过以上步骤,有力确保了从金蝶云星空到旺店通WMS全流程环节清晰透明,同时高效完成业务需求,使得企业仓储管理更显便捷智能。在以下部分内容中,将进一步深入探讨具体技术实现细节及优化策略。 ![用友与CRM系统接口开发配置](https://pic.qeasy.cloud/D26.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在轻易云数据集成平台的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过调用金蝶云星空的`executeBillQuery`接口来获取盘亏单数据,并对其进行初步加工。 #### 接口配置与调用 首先,我们需要配置并调用金蝶云星空的`executeBillQuery`接口。以下是元数据配置中的关键参数: - **API**: `executeBillQuery` - **Method**: `POST` - **FormId**: `STK_StockCountLoss` - **FieldKeys**: 需查询的字段key集合 - **FilterString**: 过滤条件 - **Pagination**: 分页参数 这些参数定义了我们要从金蝶云星空系统中提取的数据范围和具体字段。 #### 请求参数设置 根据元数据配置,我们需要构建请求体,以便正确地调用`executeBillQuery`接口。以下是一个示例请求体: ```json { "FormId": "STK_StockCountLoss", "FieldKeys": "FBillEntry_FEntryID,FID,FBillNo,FDocumentStatus,FStockOrgId.FNumber,FDate,FBillTypeID,FStockerId,FCreatorId,FCreateDate,FModifierId,FModifyDate,FApproverId,FApproveDate,FNoteHead,FMaterialId.FNumber,FUnitID,FAcctQty,FCountQty,FLossQty,FStockId.FNumber,FStockStatusId,FOwnerid.FNumber,FPrice,FAmount,Fnote,FBomId,FMtoNo,FStockFlag,FStockLocId,FLOT.FNumber,FProduceDate,FExpiryDate", "FilterString": "FApproveDate>='{{MINUTE_AGO_30|datetime}}' and FStockId.F_JZJ_CheckBox=1", "Limit": 500, "StartRow": 0 } ``` #### 数据请求与清洗 在发送请求后,我们会收到一组原始数据。这些数据需要经过清洗和转换,以便后续处理。以下是一些常见的数据清洗步骤: 1. **字段映射与重命名**:将原始字段名映射为目标系统所需的字段名。例如,将`FBillEntry_FEntryID`映射为`FEntryID`。 2. **数据类型转换**:确保所有字段的数据类型符合目标系统的要求。例如,将日期字符串转换为标准日期格式。 3. **缺失值处理**:处理可能存在的缺失值或异常值,确保数据完整性。 #### 数据转换与写入 清洗后的数据需要进一步转换,以适应目标系统的数据结构。以下是一个示例转换逻辑: ```python def transform_data(raw_data): transformed_data = [] for record in raw_data: transformed_record = { "entry_id": record["FBillEntry_FEntryID"], "bill_no": record["FBillNo"], "status": record["FDocumentStatus"], "org_number": record["FStockOrgId_FNumber"], "date": convert_date(record["FDate"]), # 更多字段转换... } transformed_data.append(transformed_record) return transformed_data ``` 在完成数据转换后,我们可以将其写入目标系统,完成整个数据集成过程。 #### 实时监控与日志记录 为了确保数据集成过程的透明度和可追溯性,我们需要对每个环节进行实时监控,并记录详细的日志信息。这有助于快速定位和解决潜在问题,提高整体效率。 通过以上步骤,我们成功地调用了金蝶云星空的`executeBillQuery`接口,获取并加工了盘亏单数据。这只是轻易云数据集成平台生命周期中的第一步,但却是至关重要的一步,为后续的数据处理和业务决策提供了坚实基础。 ![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/S17.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台ETL转换至旺店通WMSAPI接口技术案例 在数据集成过程中,将源平台的数据转换为目标平台能够接收的格式是关键步骤。本文将详细探讨如何使用轻易云数据集成平台将盘亏单数据转换为旺店通WMSAPI接口所需的其他出库单格式,并最终写入目标平台。 #### 元数据配置解析 首先,我们需要理解元数据配置的结构和内容。以下是元数据配置的主要部分: ```json { "api": "WDT_WMS_STOCKOUT_CREATE", "method": "POST", "idCheck": true, "operation": { "method": "merge", "field": "FBillNo,FStockId_FNumber", "bodyName": "details", "bodySum": ["FLossQty"], "header": ["FStockId_FNumber", "FBillNo", "FDate"], "body": ["FMaterialId_FNumber", "FLossQty", "FLOT_FNumber", "FBillEntry_FEntryID", "FProduceDate", "FExpiryDate"] }, "request": [ { "label": "出库单信息", "field": "deliveryOrder", "type": "object", "children": [ {"parent": "deliveryOrder", "label": "出库单号", "field": "deliveryOrderCode", "type": "string", "value":"{FBillNo}"}, {"parent": "deliveryOrder", "label": "出库单类型", "field":"orderType","type":"string","value":"QTCK"}, {"parent":"deliveryOrder","label":"出库单创建时间","field":"createTime","type":"string","value":"{FDate}"}, {"parent":"deliveryOrder","label":"仓库编码","field":"warehouseCode","type":"string","value":"{FStockId_FNumber}"} ] }, { ... } ] } ``` #### 数据请求与清洗 在生命周期的第一步中,已经完成了从源系统的数据请求与清洗,确保了数据的准确性和一致性。接下来,我们将这些清洗后的数据进行ETL转换。 #### 数据转换与写入 1. **定义API接口和请求方法**: - API接口:`WDT_WMS_STOCKOUT_CREATE` - 请求方法:`POST` 2. **头部信息映射**: - 出库单号:映射到`deliveryOrderCode`,值为`{FBillNo}` - 出库单类型:固定值`QTCK` - 出库单创建时间:映射到`createTime`,值为`{FDate}` - 仓库编码:映射到`warehouseCode`,值为`{FStockId_FNumber}` 3. **明细信息映射**: - 商家编码:映射到`itemCode`,值为`{{details.FMaterialId_FNumber}}` - 单据行号:映射到`orderLineNo`,值为`{{details.FBillEntry_FEntryID}}` - 应发商品数量:映射到`planQty`,值为`{{details.FLossQty}}` - 批次:映射到`batchCode`,值为`{{details.FLOT_FNumber}}` - 生产日期:映射到`productDate`, 值为 `{{details.FProduceDate|date}}` - 过期日期:映射到 `expireDate`, 值为 `{{details.FExpiryDate|date}}` 4. **操作方法**: - 合并(merge):基于字段 `FBillNo, FStockId_FNumber` - 汇总字段(bodySum):汇总字段 `FLossQty` #### 实际操作案例 假设我们从源系统获取到了以下盘亏单数据: ```json { ![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/T26.png~tplv-syqr462i7n-qeasy.image)