ETL转换与写入旺店通WMSAPI接口的实战指南

  • 轻易云集成顾问-何语琴
### 金蝶云星空数据集成到旺店通WMS案例分享:盘盈单=>其他入库单-1 在系统对接和数据集成领域,确保不同平台之间的数据无缝流动是关键任务。本文将详细介绍如何使用轻易云数据集成平台,将金蝶云星空的"盘盈单"数据有效地同步至旺店通WMS系统中的“其他入库单”。 **一、金蝶云星空接口调用** 为了实现从金蝶云星空获取有效的盘盈单数据,我们需要调用其提供的API `executeBillQuery`。该接口允许我们按指定的业务条件进行查询,并分页返回结果。在实际操作中,需要特别处理以下两点: 1. **分页处理**:由于每次API调用返回的数据量有限,因此需实现分页抓取机制,以确保所有相关记录不漏掉。 2. **限流控制**:为避免触发金蝶云星空API服务端限制,请求频率需合理设置。 ```python # 示例代码片段 - 调用executeBillQuery API def fetch_data_from_kingdee(pagination_params): response = requests.post( url="https://api.kingdee.com/executeBillQuery", data=json.dumps(pagination_params), headers={"Content-Type": "application/json"} ) return response.json() ``` **二、批量写入到旺店通WMS** 当成功获取到金蝶云星空盘盈单后,下一步便是将这些数据高效地写入到旺店通WMS的“其他入库单”模块中。这里我们使用 `WDT_WMS_ENTRYORDER_CREATE` 接口来完成这一目标。 ```python # 示例代码片段 - 调用 WDT_WMS_ENTRYORDER_CREATE API def write_data_to_wdt(data_batch): response = requests.post( url="https://api.wangdiantong.com/WDT_WMS_ENTRYORDER_CREATE", data=json.dumps(data_batch), headers={"Content-Type": "application/json"} ) return response.json() ``` 在这个过程中,有几项技术挑战值得关注: 1. **数据格式转换**: 金蝶与旺店通系统间的数据格式可能有较大差异,此时必须进行定制化的数据映射和调整。例如字段名和结构上的不同。 2. **错误重试机制**: 考虑网络环境等各种可能引起请求失败的问题,构建一个可靠的错误重试机制非常重要,确保每条记录都能够故障自动恢复并被正确写入。 3. **实时监控与日志记录**: 为了保证整个过程透明可追溯,每一步操作及异常情况都应详尽地记录日志,这不仅方便问题排查,也为 ![如何对接用友BIP接口](https://pic.qeasy.cloud/D29.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星空接口`executeBillQuery`,获取并加工盘盈单数据,以实现与其他入库单的无缝对接。 #### 接口调用配置 首先,我们需要配置接口调用的元数据。根据提供的元数据配置,我们可以看到以下关键参数: - **API**: `executeBillQuery` - **Method**: `POST` - **Pagination**: 每页500条记录 - **ID Check**: `true` - **Operation Method**: `merge` 这些参数定义了我们如何从金蝶云星空系统中请求数据,并且如何处理和合并这些数据。 #### 请求字段配置 在请求字段部分,我们需要特别注意以下字段: ```json [ {"field":"FBillEntry_FEntryID","label":"FEntryID","type":"string","value":"FBillEntry_FEntryID"}, {"field":"FID","label":"实体主键","type":"string","value":"FID"}, {"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"}, {"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"}, {"field":"FStockOrgId_FNumber","label":"库存组织","type":"string","value":"FStockOrgId.FNumber"}, {"field":"FDate","label":"日期","type":"string","value":"FDate"}, {"field":"FBillTypeID","label":"单据类型","type":"string","value":"FBillTypeID"}, {"field":"FStockerId","label":"仓管员","type":"string","value":"FStockerId"}, {"field":"FCreatorId","label":"创建人","type":"string","value":"FCreatorId"}, {"field":"FCreateDate","label":"创建日期","type":"string","value":"FCreateDate"}, {"field":"FModifierId","label":"最后修改人","type":"string","value":"FModifierId"}, {"field": "FModifyDate", "label": "最后修改日期", "type": "string", "value": "FModifyDate" }, // ...省略其他字段 ] ``` 这些字段定义了我们需要从金蝶云星空系统中提取的数据内容,包括单据编号、库存组织、日期等信息。 #### 分页与过滤条件 为了高效地处理大量数据,我们使用分页机制,每次请求500条记录。同时,通过过滤条件来限定查询范围,例如: ```json { "FilterString": "FApproveDate>='{{MINUTE_AGO_30|datetime}}' AND FStockId.F_JZJ_CheckBox=1" } ``` 这个过滤条件确保我们只获取最近30分钟内审核通过且特定仓库的盘盈单数据。 #### 数据处理与合并 在获取到原始数据后,需要进行清洗和转换。根据元数据配置中的操作方法,我们将使用`merge`方法,将分录明细合并到主表中。具体操作如下: ```json { "method": "merge", "field": "FBillEntry_FEntryID", "bodyName": "details", "header": ["FBillNo", "FBillEntry_FEntryID"], "body": ["FMaterialId_FNumber", "FGainQty"] } ``` 这一步骤确保每个盘盈单的明细项(如物料编码和盘盈数量)正确地关联到对应的主表记录中。 #### 实际案例操作步骤 1. **配置API请求**:在轻易云平台上,创建一个新的API请求任务,选择`POST`方法,并填写API地址为`executeBillQuery`。 2. **设置请求参数**:根据元数据配置,设置请求体中的各个字段和分页参数。 3. **执行请求并获取响应**:发送请求后,平台会返回包含盘盈单信息的数据集。 4. **数据清洗与转换**:使用预定义的操作方法,将分录明细合并到主表记录中。 5. **写入目标系统**:将处理后的数据写入目标系统,实现盘盈单与其他入库单的数据对接。 通过以上步骤,我们可以高效地从金蝶云星空系统中提取并处理盘盈单数据,为后续的数据集成奠定基础。这种全透明可视化的操作方式,不仅提升了业务透明度,还极大提高了工作效率。 ![金蝶与CRM系统接口开发配置](https://pic.qeasy.cloud/S22.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台生命周期的第二步:ETL转换与写入旺店通WMSAPI接口 在数据集成过程中,ETL(提取、转换、加载)是至关重要的一环。本文将详细探讨如何使用轻易云数据集成平台,将源平台的数据进行ETL转换,并最终写入目标平台——旺店通WMSAPI接口。 #### 数据请求与清洗 在开始ETL之前,我们需要从源平台获取数据并进行初步清洗。假设我们已经完成了这一步,接下来将重点介绍如何将清洗后的数据转换为旺店通WMSAPI接口所能接受的格式。 #### 数据转换与写入 我们需要将盘盈单的数据转换为旺店通WMS的其他入库单格式,并通过API接口进行数据写入。以下是具体的元数据配置和操作步骤: ##### 元数据配置解析 ```json { "api": "WDT_WMS_ENTRYORDER_CREATE", "method": "POST", "idCheck": true, "operation": { "method": "merge", "field": "FBillNo,FStockId_FNumber", "bodyName": "details", "bodySum": ["FGainQty"], "header": ["FStockId_FNumber", "FBillNo"], "body": ["FMaterialId_FNumber", "FGainQty"] }, "request": [ { "label": "入库单信息", "field": "entryOrder", "type": "object", "children": [ {"parent": "entryOrder", "label": "入库单号", "field": "entryOrderCode", "type": "string", "value":"{FBillNo}"}, {"parent": "entryOrder", "label": "仓库编码", "field":"warehouseCode", "type":"string","value":"{FDestStockId_FNumber}"}, {"parent":"entryOrder","label":"业务类型","field":"orderType","type":"string","value":"QTRK"} ] }, { "label":"单据信息", "field":"orderLines", "type":"array", "value":"details", "children":[ { "field":"orderLine", "label":"orderLine", "type":"object", "parent":"orderLines", "children":[ {"parent":"orderLines","label":"商家编码","field":"itemCode","type":"string","value":"{{details.FMaterialId_FNumber}}"}, {"parent":"orderLines","label":"应收商品数量","field":"planQty","type":"string","value":"{{details.FQty}}"}, {"parent":"orderLines","label":"入库单的行号","field":"orderLineNo","type":"string","value":"{{details.FBillEntry_FEntryID}}"}, {"parent":"orderLines","label":"库存类型","field":"inventoryType","type":"string","value":"ZP"}, {"parent":"orderLines","label":"批次","field":"batchCode","type":"string","value": "{{details.FDestLot}}"}, {"parent": "orderLines", "label": "生产日期", "field": "productDate", "type": "string", "value": "{{details.FProduceDate|date}}" }, {"parent": orderLines, label: 过期日期, field: expireDate, type: string, value: {{details.FExpiryDate|date}} } ] } ] } ] } ``` ##### 数据转换逻辑 1. **定义API请求参数**: - `api`字段指定了目标API接口为`WDT_WMS_ENTRYORDER_CREATE`。 - `method`字段指定了HTTP请求方法为`POST`。 - `idCheck`字段设置为`true`,表示在执行操作前会进行ID校验。 2. **操作配置**: - `operation`部分定义了如何处理数据,包括合并字段(`merge`方法)、合并依据(`FBillNo,FStockId_FNumber`)、以及需要处理的表头和表体字段。 3. **请求结构**: - `request`部分定义了具体的请求结构,包括两个主要部分:入库单信息和单据信息。 4. **入库单信息**: - `entryOrderCode`: 对应源数据中的`FBillNo`。 - `warehouseCode`: 对应源数据中的`FDestStockId_FNumber`。 - `orderType`: 固定值为“QTRK”(其他入库)。 5. **单据信息**: - 包含一个数组,每个元素代表一行订单明细。 - 每个订单明细包含多个字段,如商家编码(对应源数据中的物料编号)、应收商品数量、行号、库存类型(固定值为“ZP”)、批次、生产日期和过期日期等。 ##### 实际操作步骤 1. **提取原始数据**:从源系统中提取盘盈单的数据,包括物料编号、数量、仓库编码等信息。 2. **清洗与预处理**:对提取的数据进行必要的清洗和预处理,例如格式化日期字段,确保所有字段符合目标API要求。 3. **构建请求报文**:根据元数据配置,将清洗后的数据映射到目标API的请求结构中。使用模板语言将源字段值填充到目标字段中。 4. **发送请求**:通过HTTP POST方法,将构建好的请求报文发送到旺店通WMSAPI接口,完成数据写入操作。 通过上述步骤,我们可以高效地将源平台的数据转换并写入到旺店通WMS,实现不同系统间的数据无缝对接。这不仅提升了业务流程的自动化程度,还确保了数据的一致性和准确性。 ![用友与SCM系统接口开发配置](https://pic.qeasy.cloud/T10.png~tplv-syqr462i7n-qeasy.image)