数据集成案例:将金蝶云数据转换并写入旺店通WMS

  • 轻易云集成顾问-彭亮
### 金蝶云星空数据集成到旺店通WMS的技术案例:调拨入库=>其他入库单-1 在实现金蝶云星空与旺店通WMS的系统对接过程中,针对“调拨入库 => 其他入库单-1”的具体需求,我们设计了一套高效、稳定的数据集成方案。本案例着重解析API接口调用和大数据量处理中的关键技术点。 首先,我们利用金蝶云星空提供的数据接口`executeBillQuery`,定时抓取目标业务范围内的数据。通过合理设置分页参数,有效缓解了由于数据量大而导致的系统压力,同时避免漏单现象发生。 其次,为确保数据能够快速且准确地写入旺店通WMS系统,我们采用批量导入方式,并调用其API `WDT_WMS_ENTRYORDER_CREATE`进行插入操作。在此过程中,特别考虑到了两者之间的数据格式差异,通过自定义映射模块,实现了格式转换和字段对齐。同时,对于可能出现的接口限流问题,我们设计了智能重试机制,以提高整体可靠性。 整个流程中,每个环节均由实时监控与日志记录功能支撑,一旦发生异常能够及时预警并追溯来源,从而有效保障了整个集成过程的可控性和透明度。以下是该解决方案中重要技术实施细节与步骤解析。 ![用友与外部系统接口集成开发](https://pic.qeasy.cloud/D30.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的第一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来获取并加工数据。 #### 接口配置与请求参数 首先,我们需要配置接口及其请求参数。根据元数据配置,`executeBillQuery`接口采用POST方法,需要传递多个字段以确保正确的数据查询和返回。 以下是关键的请求参数及其配置: - **FormId**: 业务对象表单Id,必须填写金蝶的表单ID,如:`STK_TransferDirect`。 - **FieldKeys**: 需查询的字段key集合,格式为字符串数组,通过逗号分隔。 - **FilterString**: 过滤条件,用于限定查询范围,例如:`FApproveDate>='{{MINUTE_AGO_30|datetime}}' and FDestStockId.F_JZJ_CheckBox=1`。 - **Limit**: 最大行数,用于分页查询。 - **StartRow**: 开始行索引,用于分页查询。 - **TopRowCount**: 返回总行数。 #### 请求示例 以下是一个完整的请求示例: ```json { "FormId": "STK_TransferDirect", "FieldKeys": "FBillEntry_FEntryID,FID,FBillNo,FDocumentStatus,FStockOrgId.FNumber,FDate,FBillTypeID.FNumber,FTransferBizType,FStockOutOrgId.FNumber,FTransferDirect,FNote,FBizType,FSaleOrgId.FNumber,FSettleOrgId.FNumber,FCustID.FNumber,FSUPPLIERID.FNumber,FThirdSrcId,FThirdSrcBillNo,FThirdSystem,FMaterialId.FNumber,FLot.fnumber,FSrcStockId.FNumber,FSrcStockLocId,FDestStockId.FNumber,FDestStockLocId,FQty,FPrice,FAmount,FBomId,FProduceDate,FExpiryDate,FMtoNo,FSrcStockStatusId,FDestStockStatusId,FOwnerId.FNumber,FOwnerOutId.FNumber,FSrcBillTypeId,FSrcSeq,FOrderNo,FNoteEntry,FSrcBillNo,FBFLowId,FConsignPrice,FTaxPrice,FTaxRate,FDestLot.fnumber,FQmEntryId,FConvertEntryId,FSOEntryId,FThirdSrcEntryId,FISFREE", "FilterString": "FApproveDate>='{{MINUTE_AGO_30|datetime}}' and FDestStockId.F_JZJ_CheckBox=1", "Limit": 100, "StartRow": 0, "TopRowCount": 0 } ``` #### 数据清洗与转换 在获取到原始数据后,需要对数据进行清洗和转换,以便后续处理和写入目标系统。以下是一些常见的数据清洗和转换操作: 1. **字段映射**:将源系统中的字段映射到目标系统中的相应字段。例如,将`FBillNo`映射到目标系统中的单据编号字段。 2. **数据类型转换**:确保所有字段的数据类型符合目标系统的要求。例如,将日期字符串转换为标准日期格式。 3. **值校验与修正**:检查关键字段的值是否符合业务规则,并进行必要的修正。例如,确保数量字段不为空且大于零。 #### 实际案例 假设我们需要从金蝶云星空中获取调拨入库单的数据,并将其写入到其他入库单中。具体步骤如下: 1. **调用接口获取数据**: - 配置并发送上述请求,获取调拨入库单的数据。 2. **清洗与转换数据**: - 将返回的数据进行字段映射,如将`FBillNo`映射为目标系统中的单据编号。 - 转换日期格式,将`FDate`从字符串格式转换为标准日期格式。 - 校验数量字段`FQty`,确保其不为空且大于零。 3. **写入目标系统**: - 将清洗和转换后的数据通过轻易云平台写入到其他入库单中。 通过以上步骤,我们可以高效地实现从金蝶云星空到目标系统的数据集成。这不仅提高了数据处理的准确性和效率,还确保了业务流程的顺畅运行。 ![钉钉与CRM系统接口开发配置](https://pic.qeasy.cloud/S17.png~tplv-syqr462i7n-qeasy.image) ### 将源平台数据转换为旺店通WMSAPI接口格式并写入 在数据集成生命周期的第二步中,我们需要将已经从源平台获取的数据进行ETL(提取、转换、加载)处理,最终将其写入目标平台——旺店通WMS。本文将详细探讨如何通过轻易云数据集成平台实现这一过程。 #### API接口配置 首先,我们需要配置与目标平台的API接口。根据提供的元数据配置,我们使用`WDT_WMS_ENTRYORDER_CREATE`接口,通过POST方法向旺店通WMS发送数据。以下是具体的API配置细节: - **API**: `WDT_WMS_ENTRYORDER_CREATE` - **Method**: `POST` - **ID Check**: `true` #### 数据转换逻辑 在进行数据转换时,我们需要遵循以下操作逻辑: 1. **合并操作**: 使用`merge`方法,将字段`FBillNo`作为唯一标识符,确保每个入库单号唯一。 2. **主体名称**: 数据主体命名为`details`,包含表头和表体信息。 3. **表头字段**: - `FBillNo`: 入库单号 - `FDate`: 入库日期 - `FDestStockId_FNumber`: 目的仓库编码 4. **表体字段**: - `FMaterialId_FNumber`: 商品编码 - `FBillEntry_FEntryID`: 入库单行号 - `FQty`: 商品数量 - `FDestLot`: 批次号 - `FProduceDate`: 生产日期 - `FExpiryDate`: 过期日期 #### 请求体构建 根据元数据配置,我们需要构建请求体,将源平台的数据映射到目标平台所需的格式。具体映射关系如下: 1. **入库单信息(entryOrder)**: - 入库单号(entryOrderCode): `{FBillNo}` - 仓库编码(warehouseCode): `{FDestStockId_FNumber}` - 业务类型(orderType): 固定值`DBRK` 2. **单据信息(orderLines)**: 每个订单行信息包含以下字段: - 商家编码(itemCode): `{details.FMaterialId_FNumber}` - 应收商品数量(planQty): `{details.FQty}` - 入库单的行号(orderLineNo): `{details.FBillEntry_FEntryID}` - 库存类型(inventoryType): 固定值`ZP` - 批次(batchCode): `{details.FDestLot}` - 生产日期(productDate): `{details.FProduceDate|date}` - 过期日期(expireDate): `{details.FExpiryDate|date}` #### 实际案例应用 假设我们从源平台获取到如下数据: ```json { "FBillNo": "RK20230901", "FDate": "2023-09-01", "FDestStockId_FNumber": "WH001", "details": [ { "FMaterialId_FNumber": "ITEM001", "FBillEntry_FEntryID": "1", "FQty": "100", "FDestLot": "LOT20230901", "FProduceDate": "2023-08-01", "FExpiryDate": "2024-08-01" } ] } ``` 通过ETL转换后,生成的请求体应如下所示: ```json { "entryOrder": { "entryOrderCode": "RK20230901", "warehouseCode": "WH001", "orderType": "DBRK" }, "orderLines": [ { "orderLine": { "itemCode": "ITEM001", "planQty": "100", "orderLineNo": "1", "inventoryType": "ZP", "batchCode": "LOT20230901", "productDate": "2023-08-01", "expireDate": "2024-08-01" } } ] } ``` #### 数据写入 最后一步是将构建好的请求体通过POST方法发送至旺店通WMS的API接口,实现数据写入。轻易云数据集成平台提供了全透明可视化的操作界面,可以实时监控数据流动和处理状态,确保每个环节都清晰易懂。 通过以上步骤,我们成功地将源平台的数据进行了ETL转换,并写入到了目标平台旺店通WMS中。这一过程不仅提高了业务效率,还确保了数据的一致性和准确性。 ![电商OMS与ERP系统接口开发配置](https://pic.qeasy.cloud/T24.png~tplv-syqr462i7n-qeasy.image)