轻易云助力:旺店通与金蝶云的数据对接实践

  • 轻易云集成顾问-杨嫦
### 旺店通其他出库对接金蝶其他出库:技术实现与最佳实践 在业务系统的集成过程中,如何确保数据准确无误地传递是各行各业关注的重点。本文将详细分享一个实际运行中的技术案例,该案例涉及旺店通·企业奇门的数据集成到金蝶云星空,通过轻易云数据集成平台进行配置,实现了高效、可靠的数据流转。 #### API接口调用:获取与写入实现 首先,我们需要通过`wdt.stockout.order.query`接口从旺店通·企业奇门中抓取对应的出库订单数据。这个过程要求我们处理分页和限流问题,以避免API调用频率过高导致的数据丢失或访问受限。在获取数据后,将其快速且批量地写入到金蝶云星空,需要使用其提供的`batchSave`接口。这一环节不仅要求大量数据的高速写入,更需保证每条记录都被成功保存。 #### 解决分页与限流问题 为了确保不漏单,我们在处理旺店通·企业奇门API时设计了严格的分页策略,并配合适当的延迟机制来规避限流问题。例如,每次请求后等待一定时间,再发起下一页请求。同时,在每日定时可靠地抓取所有未处理完毕的数据,形成一个闭环,使得即使发生临时错误,也能通过重试机制完成补救。 #### 数据格式转换及映射 由于旺店通·企业奇门与金蝶云星空之间的数据格式存在差异,为了保证顺利对接,我们在实施方案中进行了详尽的数据映射配置。这包括字段名称、类型转换以及必要的信息补全等操作。此外,还针对特殊场景进行了定制化处理,确保每条数据能够无缝衔接进入目标系统。 #### 实时监控与异常处理 为了提升整体过程透明度和故障排查能力,我们实现了实时监控和日志记录功能。每一次API调用都会有详细的日志记录,一旦出现异常情况,可以迅速定位并执行相应措施,例如自动重试或通知相关人员手动干预,从而保持整个流程的一致性和完整性。 以上便是该项目开头部分的重要技术细节介绍,下面将继续展开具体实现方案及代码示例,以帮助读者更好理解整个集成过程。 ![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/D36.png~tplv-syqr462i7n-qeasy.image) ### 调用源系统旺店通·企业奇门接口wdt.stockout.order.query获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口`wdt.stockout.order.query`来获取并加工数据。 #### 接口配置与请求参数 首先,我们需要配置接口的元数据。根据提供的元数据配置,我们可以看到该接口使用POST方法,并且有多个请求参数需要配置。 ```json { "api": "wdt.stockout.order.query", "method": "POST", "number": "order_no", "id": "stockout_id", "pagination": { "pageSize": 30 }, "idCheck": true, "request": [ {"field":"start_time","label":"开始时间","type":"string","value":"{{LAST_SYNC_TIME|datetime}}"}, {"field":"end_time","label":"结束时间","type":"string","value":"{{CURRENT_TIME|datetime}}"}, {"field":"order_type","label":"出库单类型","type":"string","value":"7"}, {"field":"status","label":"出库单状态","type":"string"}, {"field":"warehouse_no","label":"仓库编号","type":"string"}, {"field":"src_order_no","label":"源单号","type":"string"}, {"field":"stockout_no","label":"出库单号","type":"string"} ], "otherRequest": [ {"field":"page_size","label":"分页大小","type":"string","value":"{PAGINATION_PAGE_SIZE}"}, {"field":"page_no","label":"页号","type":"string","value":"{PAGINATION_START_PAGE}"} ], "omissionRemedy": { "crontab": "2 10 * * *", "takeOverRequest": [ {"field": "start_time", "label": "开始时间", "type": "string", "value": "{{DAYS_AGO_2|datetime}}", "id": "start_timeLRHKU", "is_required": false, "physicalModel": {"enable": false}, "formModel": {"enable": false}, "tableModel": {"enable": false}, "title": "开始时间-start_time", "key": "start_timeLRHKU"} ] } } ``` #### 请求参数详解 1. **时间参数**: - `start_time` 和 `end_time`:用于指定查询的时间范围。`start_time` 使用上次同步时间,`end_time` 使用当前时间。 - 在遗漏补救机制中,`start_time` 会被设置为两天前的日期。 2. **分页参数**: - `page_size` 和 `page_no`:用于控制分页,每次请求30条记录,从第一页开始。 3. **其他业务参数**: - `order_type`: 固定值为7,表示特定类型的出库单。 - `status`, `warehouse_no`, `src_order_no`, `stockout_no`: 可选参数,用于进一步过滤查询结果。 #### 数据请求与清洗 在实际操作中,我们会通过轻易云平台发送上述配置的POST请求到旺店通·企业奇门接口。以下是一个示例请求体: ```json { "start_time": "{{LAST_SYNC_TIME|datetime}}", "end_time": "{{CURRENT_TIME|datetime}}", "order_type": "7", // 可选参数 // ... // 分页参数 "page_size": "{PAGINATION_PAGE_SIZE}", "page_no": "{PAGINATION_START_PAGE}" } ``` 返回的数据将包含多个出库订单记录。为了确保数据质量和一致性,需要对返回的数据进行清洗和转换。这包括但不限于: - **字段映射**:将返回的数据字段映射到目标系统所需的字段。 - **数据格式转换**:如日期格式、数值类型等转换。 - **异常处理**:处理缺失值、重复值等异常情况。 #### 异常处理与补救机制 为了保证数据同步的完整性,轻易云平台提供了遗漏补救机制。当某些数据由于网络或其他原因未能成功同步时,可以通过定时任务(如每天10:02)重新发起请求,以确保所有数据都能被正确处理。 ```json { // 补救机制中的开始时间设置为两天前 { field: 'start_time', value: '{{DAYS_AGO_2|datetime}}' } } ``` 通过上述步骤,我们可以高效地从旺店通·企业奇门接口获取所需的出库订单数据,并进行必要的数据清洗和转换,为后续的数据写入和业务应用打下坚实基础。 ![打通钉钉数据接口](https://pic.qeasy.cloud/S15.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台:将源数据转换并写入金蝶云星空API接口 在数据集成的生命周期中,ETL(提取、转换、加载)过程是关键的一步。本文将详细探讨如何使用轻易云数据集成平台将源平台的数据进行ETL转换,并最终写入金蝶云星空API接口。 #### 元数据配置解析 在本案例中,我们的目标是将旺店通的其他出库数据对接到金蝶云星空的其他出库单。以下是元数据配置的详细解析: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ { "field": "FBillNo", "label": "单据编号", "type": "string", "value": "{order_no}" }, { "field": "FBillTypeID", "label": "单据类型", "type": "string", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "QTCKD01_SYS" }, { ... } ], ... } ``` #### 数据请求与清洗 首先,我们需要从源系统(旺店通)获取原始数据。这一步通常通过API调用或数据库查询来完成。获取的数据可能包含各种格式和结构,需要进行初步清洗和整理。 例如,假设我们从旺店通获取到以下JSON格式的数据: ```json { "order_no": "OD12345678", ... } ``` #### 数据转换 接下来,我们使用轻易云平台提供的元数据配置进行数据转换。元数据配置定义了如何将源数据字段映射到目标系统字段,并指定了必要的转换逻辑。 1. **单据编号(FBillNo)**: - 源字段:`order_no` - 转换后:直接映射为`FBillNo` 2. **单据类型(FBillTypeID)**: - 固定值:`QTCKD01_SYS` - 使用`ConvertObjectParser`进行对象转换,参数为`FNumber` 3. **库存组织(FStockOrgId)和领用组织(FPickOrgId)**: - 源字段:`warehouse_no` - 使用`ConvertObjectParser`进行对象转换,参数为`FNumber` - 映射关系定义在`mapping`中,确保方向为正向 4. **日期(FDate)**: - 源字段:`consign_time` - 直接映射为`FDate` 5. **领料部门(FDeptId)**: - 固定值:`BM000001` - 使用`ConvertObjectParser`进行对象转换,参数为`FNumber` 6. **备注(FNote)**: - 源字段:`stockout_reason` - 拼接字符串后映射为`FNote` 7. **明细信息(FEntity)**: - 包含多个子字段,如物料编码、零售条形码、实发数量等 - 每个子字段都需要根据相应的源字段进行映射和转换 例如,对于物料编码(FMaterialId),我们使用如下配置: ```json { ... { "field": "FMaterialId", ... "value": "_function TRIM( '{{details_list.goods_no}}' )" }, ... } ``` 这里使用了一个函数来去除物料编码中的空格。 #### 数据写入 完成所有必要的转换后,我们可以通过调用金蝶云星空的API接口将处理后的数据写入目标系统。根据元数据配置,使用HTTP POST方法调用批量保存接口: ```json { ... { "api": "/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.BatchSave", ... { ... { ... // 请求体包含所有已转换的数据 } } } } ``` #### 实际操作示例 假设我们已经完成了所有步骤,并且准备好要发送的数据。最终的请求体可能如下所示: ```json { ... { ... // 已经过ETL处理的数据 } } ``` 通过上述步骤,我们实现了从旺店通到金蝶云星空的数据无缝对接。在整个过程中,轻易云平台提供了强大的元数据配置功能,使得复杂的数据转换变得简单高效。 ![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/T11.png~tplv-syqr462i7n-qeasy.image)