使用轻易云平台进行ETL转换并写入旺店通WMS系统

  • 轻易云集成顾问-钟家寿
### 金蝶云星空与旺店通WMS集成案例分享 在企业管理系统中,数据的流转和准确性至关重要。本文将详细解析如何通过轻易云数据集成平台,实现金蝶云星空到旺店通WMS的数据对接。这一案例具体涉及了其他出库单->其他出库单【出库单】OK-1方案,通过该方案我们高效完成了跨系统的数据同步工作。 首先,我们需要调用金蝶云星空的executeBillQuery接口,以定时、可靠地抓取相关接口数据。为了确保不漏单,我们设置了合理的限流机制,并处理分页问题,从而避免因大批量请求带来的性能影响。在实施过程中,实时监控和日志记录功能也发挥了关键作用,使整个过程透明可追溯。 获取到金蝶云星空的数据后,需要按特定格式转换并批量写入至旺店通WMS系统,这是重点之一。我们使用了WDT_WMS_STOCKOUT_CREATE接口进行大量数据快速写入操作,同时兼顾异常处理与错误重试机制,确保每一次写入都能成功执行。此外,为应对两者之间在数据格式上的差异,还进行了定制化的数据映射以满足业务需求。 本次集成不仅提升了业务效率,也为未来类似项目提供了一套可参照的方法论。接下来,将深入探讨具体实现步骤及技术细节,让您全面了解这一具有代表性的系统对接解决方案。 ![如何对接钉钉API接口](https://pic.qeasy.cloud/D29.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来获取并加工数据。 #### 接口调用配置 首先,我们需要配置元数据以便正确调用金蝶云星空的`executeBillQuery`接口。以下是关键配置项: - **API**: `executeBillQuery` - **方法**: `POST` - **分页**: 每页500条记录 - **ID检查**: `true` 请求字段如下: ```json [ {"field":"FEntity_FEntryID","label":"FEntryID","type":"string","value":"FEntity_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":"FNOTE","label":"备注","type":"string","value":"FNOTE"}, {"field":"FMATERIALID_FNumber","label":"物料编码","type":"string","value":"FMATERIALID.FNumber"}, {"field":"FSTOCKID_FNumber","label":"发货仓库","type":""}, {"field": "其他字段..."} ] ``` #### 请求参数解析 在请求参数中,`FieldKeys` 是一个关键字段,它定义了需要查询的字段集合。我们可以通过以下方式进行配置: ```json { "FieldKeys": [ "FID", "FBillNo", "FDocumentStatus", "FStockOrgId.FNumber", "FDate", "FBillTypeID", "FMATERIALID.FNumber", "其他字段..." ] } ``` 这些字段会被转换为逗号分隔的字符串,传递给金蝶云星空接口。 #### 分页处理 为了确保能够处理大量数据,我们采用分页机制。分页参数包括: - **Limit**: 每页最大行数(500) - **StartRow**: 开始行索引 - **TopRowCount**: 返回总行数 示例代码如下: ```json { "Limit": "{PAGINATION_PAGE_SIZE}", "StartRow": "{PAGINATION_START_ROW}", "TopRowCount": 0 } ``` #### 数据过滤 为了提高查询效率,可以使用过滤条件。例如,查询最近30分钟内的数据: ```json { "FilterString": "FApproveDate>='{{MINUTE_AGO_30|datetime}}' and FStockId.F_JZJ_CheckBox=1" } ``` #### 实际调用示例 以下是一个完整的请求示例: ```json { "api": "executeBillQuery", "method": "POST", "number": "FBillNo", "id": "FEntity_FEntryID", "pagination": { "pageSize": 500 }, "idCheck": true, "request": [ {"field": "FID", "label": "实体主键", "type": "string", "value": ""}, {"field": "FBillNo", "label": "单据编号", "type": "", value: ""}, ... ], ... } ``` #### 数据处理与写入 在获取到数据后,需要对其进行清洗和转换,然后写入目标系统。这一步通常包括以下操作: 1. **数据清洗**:去除无效或重复的数据。 2. **数据转换**:根据目标系统的要求调整数据格式。 3. **数据写入**:将处理后的数据写入目标系统。 通过上述步骤,我们可以高效地从金蝶云星空获取所需的数据,并进行相应的处理和写入操作。这不仅提高了数据集成的效率,也确保了数据的一致性和准确性。 ![用友与外部系统接口集成开发](https://pic.qeasy.cloud/S7.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入旺店通WMSAPI接口的技术案例 在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL转换,并将其转为目标平台旺店通WMSAPI接口所能够接收的格式,最终写入目标平台。本文将详细探讨这一过程中的技术细节和操作步骤。 #### 1. 数据转换与映射 首先,我们需要对源数据进行转换,以符合目标API接口的要求。根据提供的元数据配置,以下是我们需要处理的数据字段及其对应关系: - **出库单信息** - 出库单号(`deliveryOrderCode`): `{FBillNo}` - 出库单类型(`orderType`): 固定值 `QTCK` - 出库单创建时间(`createTime`): `{FDate}` - 仓库编码(`warehouseCode`): `{FSTOCKID}` - **单据信息** - 商家编码(`itemCode`): `{FMATERIALID_FNumber}` - 单据行号(`orderLineNo`): `{FEntity_FEntryID}` - 应发商品数量(`planQty`): `{FQty}` - 批次(`batchCode`): `{FLOT}` - 生产日期(`productDate`): `{{FPRODUCEDATE|date}}` - 过期日期(`expireDate`): `{{FEXPIRYDATE|date}}` #### 2. 数据请求与清洗 在实际操作中,我们需要先从源系统请求到原始数据,并对其进行清洗和预处理,以确保数据的准确性和一致性。假设我们已经完成了这一步,接下来我们将重点放在如何将清洗后的数据进行ETL转换。 #### 3. 构建请求体 根据元数据配置,我们需要构建一个符合旺店通WMSAPI接口要求的请求体。以下是一个示例请求体结构: ```json { "deliveryOrder": { "deliveryOrderCode": "SO20231001", "orderType": "QTCK", "createTime": "2023-10-01T12:00:00", "warehouseCode": "WH001" }, "orderLines": [ { "orderLine": { "itemCode": "ITEM001", "orderLineNo": "1", "planQty": "100", "batchCode": "BATCH001", "productDate": "2023-09-01", "expireDate": "2024-09-01" } }, { "orderLine": { "itemCode": "ITEM002", "orderLineNo": "2", "planQty": "200", "batchCode": "", "productDate": "", "expireDate": "" } } ] } ``` 在这个示例中,出库单信息和单据信息分别被映射到了相应的字段上。 #### 4. 数据写入目标平台 完成数据转换后,我们需要将构建好的请求体通过HTTP POST方法发送到旺店通WMSAPI接口。以下是一个Python示例代码,用于发送HTTP请求: ```python import requests import json url = 'https://api.wdt.com/WDT_WMS_STOCKOUT_CREATE' headers = {'Content-Type': 'application/json'} data = { # 构建好的请求体 } response = requests.post(url, headers=headers, data=json.dumps(data)) if response.status_code == 200: print("Data successfully written to WMS") else: print(f"Failed to write data to WMS, status code: {response.status_code}") ``` #### 技术要点总结 1. **字段映射**:确保所有字段都正确映射到目标API所需的格式。 2. **日期格式化**:使用适当的格式化函数处理日期字段。 3. **批量处理**:对于大批量的数据,可以考虑分批次发送以提高效率和稳定性。 4. **错误处理**:对API响应进行检查,并添加错误处理机制,以便及时发现和解决问题。 通过以上步骤,我们可以高效地完成从源平台到旺店通WMSAPI接口的数据ETL转换和写入过程。这不仅提高了数据处理的自动化程度,也确保了数据的一致性和准确性。 ![钉钉与ERP系统接口开发配置](https://pic.qeasy.cloud/T22.png~tplv-syqr462i7n-qeasy.image)