可靠的数据同步:从旺店通到金蝶采购的实践方法

  • 轻易云集成顾问-吴伟
### 案例分享:旺店通销售出库到金蝶采购入库的数据集成 在本文中,我们将探讨如何通过轻易云数据集成平台实现将旺店通·企业奇门系统的销售出库数据高效、安全地对接和导入至金蝶云星空进行采购入库处理。此项目主要聚焦于一件代发业务场景,实现了两个系统间复杂的数据流转与同步。 首先,为确保在这个接口调用流程中的每个环节都无漏单现象,我们重点采用了定时、可靠抓取旺店通·企业奇门接口`wdt.stockout.order.query.trade`,并结合实时监控与日志记录。在批量获取大量订单数据同时,还需克服分页及API限流的问题。具体策略包括设置合理的抓取频率和并发数,避免因超时或请求频繁而导致的数据丢失。 其次,在向金蝶云星空写入数据时,我们利用其提供的API `batchSave` 进行批量快速写入操作。为了保证大型交易量环境下的性能稳定性,特意进行了分批处理,并加入异常处理与错误重试机制。这不仅防止了突发性的网络问题造成整批失败,也提升了整体操作鲁棒性。 同时,需要特别注意的是,两套系统之间存在的数据格式差异。在实际方案中,通过定制化映射规则,将从旺店通获取的数据精准转换为符合金蝶要求的格式,使二者能够高效、高质地完成信息传递。此外,对于不同字段匹配不符等特殊情况,还引入了一些自定义转换逻辑,以增强兼容性和灵活度。 最后,对整个实施过程进行了全方位监控,包括任务状态、数据流动及异常日志。这不仅提高透明度,更能及时发现潜在问题,从而迅速做出响应调整。 以上概述部分即是此次技术案例的一些关键点,下文我们将逐步揭示详细实现过程与解决方法。 ![用友与MES系统接口开发配置](https://pic.qeasy.cloud/D34.png~tplv-syqr462i7n-qeasy.image) ### 调用旺店通·企业奇门接口获取并加工数据 在轻易云数据集成平台的生命周期中,调用源系统接口是关键的第一步。本文将详细探讨如何通过调用旺店通·企业奇门接口`wdt.stockout.order.query.trade`来获取并加工数据,以实现销售出库到金蝶采购入库的一件代发业务。 #### 接口配置与调用 首先,我们需要配置接口的元数据,以确保能够正确地请求和处理数据。以下是该接口的元数据配置: ```json { "api": "wdt.stockout.order.query.trade", "effect": "QUERY", "method": "POST", "number": "order_no", "id": "stockout_id", "name": "order_no", "idCheck": true, "request": [ {"field": "start_time", "label": "开始时间", "type": "datetime", "describe": "增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss", "value": "{{LAST_SYNC_TIME|datetime}}"}, {"field": "end_time", "label": "结束时间", "type": "datetime", "describe": "增量获取数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss", "value": "{{CURRENT_TIME|datetime}}"}, {"field": "status", "label": "状态", "type": "string", "describe":"5已取消,55已审核,95已发货,105 部分打款,110已完成,113:异常发货","value":"95,105,110,113"}, {"field":"src_order_no","label":"系统订单编号","type":"string","describe":"系统订单编号"}, {"field":"src_tid","label":"原始单号","type":"string","describe":"原始单号"}, {"field":"stockout_no","label":"出库单号","type":"string","describe":"出库单号"}, {"field":"shop_no","label":"店铺编号","type":"string","describe":"代表店铺所有属性的唯一编码,用于店铺区分,ERP内支持自定义(ERP店铺界面设置),用于获取指定店铺单据数据信息"}, {"field":"warehouse_no","label":"仓库编号","type":"string","describe":"代表仓库所有属性的唯一编码,用于仓库区分,ERP内支持自定义(ERP仓库界面设置),用于获取指定仓库单据数据信息(不支持一次推送多个仓库编号)"}, {"field":"is_by_modified","label":"is_by_modified","type":"string","describe":"is_by_modified"} ], ... } ``` #### 请求参数详解 1. **start_time 和 end_time**: 用于增量获取数据。`start_time`表示上次同步的时间点,而`end_time`表示当前时间点。这两个字段确保我们只获取在这段时间内发生变化的数据。 2. **status**: 用于过滤订单状态。我们关注的是状态为“已发货”、“部分打款”、“已完成”和“异常发货”的订单。 3. **其他字段**: 如`src_order_no`、`src_tid`、`stockout_no`等,用于进一步筛选和标识订单信息。 #### 数据请求与清洗 在发送请求时,我们使用POST方法,将上述参数传递给API。以下是一个示例请求: ```json { "start_time": "{{LAST_SYNC_TIME|datetime}}", "end_time": "{{CURRENT_TIME|datetime}}", ... } ``` 响应的数据将包含多个字段,我们需要对这些字段进行清洗和转换,以便后续处理。例如: - 将日期格式统一转换为目标系统所需的格式。 - 对数值字段进行单位转换或舍入处理。 - 根据业务需求过滤掉不必要的数据。 #### 数据转换与写入 清洗后的数据需要转换为目标系统可接受的格式,并写入到金蝶采购入库系统中。这一步通常涉及以下操作: 1. **字段映射**: 将源系统中的字段映射到目标系统中的相应字段。例如,将源系统中的`order_no`映射到目标系统中的采购订单号。 2. **数据类型转换**: 确保所有字段的数据类型符合目标系统的要求。例如,将字符串类型的日期转换为日期类型。 3. **批量处理**: 为了提高效率,可以将多条记录打包成一个批次进行处理。 通过以上步骤,我们可以实现从旺店通销售出库到金蝶采购入库的一件代发业务的数据集成。这不仅提高了业务流程的自动化程度,还确保了数据的一致性和准确性。 ![打通钉钉数据接口](https://pic.qeasy.cloud/S27.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口 在数据集成的生命周期中,ETL(提取、转换、加载)是关键步骤之一。本文将深入探讨如何利用轻易云数据集成平台,将已集成的源平台数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。 #### 元数据配置解析 元数据配置是实现ETL转换的重要基础。以下是针对金蝶云星空API接口的元数据配置解析: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "RKD10_SYS" }, ... ], ... } ``` #### 核心字段解析与转换 1. **单据类型(FBillTypeID)** - 字段描述:单据类型 - 类型:字符串 - 转换器:`ConvertObjectParser` - 值:`RKD10_SYS` 在这里,我们使用了`ConvertObjectParser`来将内部编码转换为金蝶系统所需的编码格式。 2. **单据编号(FBillNo)** - 字段描述:单据编号 - 类型:字符串 - 值:从源系统获取 3. **收料组织(FStockOrgId)** - 字段描述:收料组织 - 类型:字符串 - 转换器:`ConvertObjectParser` - 值:固定值 `100` 4. **采购组织(FPurchaseOrgId)** - 字段描述:采购组织 - 类型:字符串 - 转换器:`ConvertObjectParser` - 值:固定值 `100` 5. **供应商(FSupplierId)** - 字段描述:基础资料 - 类型:字符串 - 转换器:`ConvertObjectParser` - 动态值获取: ```json "_mongoQuery 0b4a68c1-941b-3f66-9ffb-2ac23a096168 findField=content.F_UXLV_Base where={\"content.FNumber\":{\"$eq\":\"{warehouse_no}\"}}" ``` 6. **入库日期(FDate)** - 字段描述:日期 - 类型:字符串 - 值:从源系统获取 `{consign_time}` 7. **明细信息(FInStockEntry)** 明细信息是一个数组,包含多个子字段,如物料编码、实收数量、含税单价等。每个子字段都有相应的解析和转换规则。 #### 数据请求与清洗 在处理数据请求与清洗时,我们需要确保从源系统提取的数据能够正确映射到目标系统所需的字段。例如: ```json { "field": "FMaterialId", "label": "物料编码", "type": "string", "describe": "基础资料", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "{{details_list.spec_no}}" } ``` 在上述配置中,我们将源系统中的物料编码 `spec_no` 转换为金蝶系统中的 `FNumber` 格式。 #### 数据转换与写入 一旦完成所有字段的映射和转换,下一步就是通过API接口将数据写入目标平台。我们使用POST方法进行批量保存操作: ```json { ... "operation": { ... "method": "batchArraySave" } } ``` 在这个过程中,确保所有必要的字段都已正确映射,并且数据格式符合目标平台要求。 #### 提交并审核 为了简化操作流程,可以设置自动提交并审核功能: ```json { ... {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","describe":"提交并审核","value":"true"} } ``` 此设置确保在数据成功写入后,自动触发提交和审核操作,提高效率。 ### 总结 通过详细解析元数据配置和具体字段映射,我们可以高效地将源平台的数据转换为金蝶云星空API接口所需的格式,并成功写入目标平台。这不仅提高了数据处理的准确性和效率,也确保了业务流程的顺畅运行。 ![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/T16.png~tplv-syqr462i7n-qeasy.image)