轻松实现退换货:旺店通到金蝶云的数据集成实践

  • 轻易云集成顾问-姚缘
### 案例分析:旺店通企业奇门数据集成到金蝶云星空 — 退货不退款与订单补款管理 在本技术案例中,我们将详细探讨如何通过轻易云数据集成平台,实现从旺店通·企业奇门系统向金蝶云星空的数据对接,聚焦于“退货不退款”以及“订单补款”的管理流程。作为该方案的核心部分,我们主要解决了以下几个关键技术点: **1. 确保数据无遗漏传输** 为了保证每一笔退换订单都能准确无误地被同步到金蝶云星空系统中,我们精选并调用了`wdt.refund.query`接口实时抓取旺店通的最新退换单信息,并实施分页请求和限流策略来确保大批量数据的稳定获取。利用轻易云平台提供的全透明可视化界面,可以实时监控每个环节的数据处理状态,有效防止漏单以及延迟问题。 **2. 批量快速写入至金蝶云星空** 针对大量的退换单及其变更记录,通过优化后的API `batchSave` 将这些数据高效地写入到金蝶云星空,同时定制化实现了包括字段映射、格式转换等步骤,确保两端系统之间的数据兼容性。这不仅提高了写入速度,还减少了由于格式差异而导致的数据对接错误。 **3. 实时监控与错误重试机制实现** 实施过程中,为避免意外情况导致的数据丢失或重复提交,高度融合了实时监控和日志记录功能,不仅能跟踪整个数据处理过程,还能够在发生异常时自动触发重试机制,保障整体业务流程顺畅运行。此外,对所有操作均有详尽记录,以便后续审计和问题追溯。 总结,本案例借助轻易云强大的平台能力,实现了两个ERP系统间复杂且高效的数据同步,为退货及补款业务流程提供了一致性可靠性的保证,从而提升公司的整体运营效率。下文将更为细致剖析具体技术方案,包括如何进行API接口配置、分页处理逻辑、中转存储策略等方面内容。 ![如何开发钉钉API接口](https://pic.qeasy.cloud/D13.png~tplv-syqr462i7n-qeasy.image) ### 调用源系统旺店通·企业奇门接口wdt.refund.query获取并加工数据 在轻易云数据集成平台的生命周期管理中,调用源系统接口是关键的第一步。本文将深入探讨如何通过调用旺店通·企业奇门接口`wdt.refund.query`来获取并加工数据,以实现退换管理(退货不退款&订单补款)的集成方案。 #### 接口调用配置 首先,我们需要配置元数据以调用`wdt.refund.query`接口。该接口采用POST方法,主要参数如下: - **process_status**: 退换单处理状态,取值范围包括5(补款)、10(已取消)、20(待审核)等。 - **time_type**: 时间类型,0表示最后更新时间,1表示结算时间。 - **start_time**: 开始时间,格式为`yyyy-MM-dd HH:mm:ss`。 - **end_time**: 结束时间,格式为`yyyy-MM-dd HH:mm:ss`。 - **page_size**: 分页大小,每页返回的数据条数,默认值为40。 - **shop_no**: 店铺编号。 - **page_no**: 页号,不传值默认从0页开始。 以下是元数据配置示例: ```json { "api": "wdt.refund.query", "method": "POST", "number": "refund_no", "id": "refund_no", "pagination": { "pageSize": 20 }, "idCheck": true, "condition": [ [ {"field":"process_status","logic":"egt","value":"80","strictMode":true}, {"field":"type","logic":"eq","value":4}, {"field":"refund_amount","logic":"neqv2","value":"0"} ], [ {"field":"process_status","logic":"egt","value":"80","strictMode":true}, {"field":"type","logic":"eq","value":5}, {"field":"refund_amount","logic":"neqv2","value":"0"} ] ], "request": [ {"field":"process_status","label":"退换单处理状态","type":"string"}, {"field":"time_type","label":"时间类型","type":"string"}, {"field":"start_time","label":"开始时间","type":"string"}, {"field":"end_time","label":"结束时间","type":"string"}, {"field":"page_size","label":"分页大小","type":"string"}, {"field":"shop_no","label":"店铺编号","type":"string"}, {"field":"page_no","label":"页号","type":"string"}, {"field":"refund_no","label":"Erp内退换单编号","type":"string"}, {"field":"src_refund_no","label":"平台原始退换单号","type":"string"}, {"field":"trade_no","label":"系统订单编号","type":"string"}, {"field":"tid","label":"原始单号","type":""} ], "omissionRemedy": { "crontab": "2 */2 * * *", "takeOverRequest": [ { "field": "start_time", "value": "{{HOURE_AGO_3|datetime}}", "type": "string" }, { "field": "end_time", "value": "{{CURRENT_TIME|datetime}}", "type": "" } ] } } ``` #### 数据请求与清洗 在调用接口后,我们需要对返回的数据进行清洗和过滤。根据条件配置,我们只关心处理状态大于等于80且退款金额不为零的记录。具体条件如下: 1. `process_status >= 80` 2. `type = 4 或 type = 5` 3. `refund_amount != 0` 这些条件确保我们只获取到有效的退换单记录,并过滤掉无效或不相关的数据。 #### 数据转换与写入 在清洗后的数据基础上,我们可以进行必要的数据转换操作。例如,将时间字段格式化,将金额字段转换为统一单位等。最终,将处理好的数据写入目标系统或数据库中。 #### 异常处理与补救机制 为了确保数据集成过程的可靠性,我们还需要配置异常处理和补救机制。在元数据配置中,通过`omissionRemedy`字段定义了定时任务和接管请求参数。例如,每两小时执行一次任务,并设置了接管字段的开始和结束时间,以确保在异常情况下能够及时补救遗漏的数据。 ```json { "crontab": "2 */2 * * *", "takeOverRequest": [ { "field": "start_time", "value": "{{HOURE_AGO_3|datetime}}" }, { "field": "end_time", "value": "{{CURRENT_TIME|datetime}}" } ] } ``` 通过上述配置和操作,我们能够高效地调用旺店通·企业奇门接口获取并加工所需的退换单数据,为后续的数据集成流程打下坚实基础。 ![用友与CRM系统接口开发配置](https://pic.qeasy.cloud/S13.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将源数据转换并写入金蝶云星空API接口 在数据集成的生命周期中,ETL(提取、转换、加载)过程至关重要。本文将详细探讨如何使用轻易云数据集成平台,将已经集成的源平台数据进行转换,并最终写入金蝶云星空API接口。 #### 数据请求与清洗 在进行ETL转换之前,首先需要确保从源系统中提取的数据已经过清洗和初步处理。这包括去除冗余信息、校验数据完整性等步骤。假设我们已经完成了这些前期工作,接下来将重点放在如何将这些清洗后的数据转换为金蝶云星空API接口所能接受的格式。 #### 数据转换与写入 根据提供的元数据配置,我们需要将源平台的数据映射到目标平台金蝶云星空的API接口中。以下是具体操作步骤: 1. **定义请求参数** 根据元数据配置,定义请求参数。主要字段包括单据编号、销售组织、日期、客户、销售员、单据类型等。这些字段需要按照金蝶云星空API接口的要求进行格式化。 ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号"}, {"field":"FSaleOrgId","label":"销售组织","type":"string","describe":"销售组织","parser":{"name":"ConvertObjectParser","params":"FNumber"}}, {"field":"FDate","label":"日期","type":"string","describe":"日期"}, {"field":"FCustId","label":"客户","type":"string","describe":"客户","parser":{"name":"ConvertObjectParser","params":"FNumber"}}, {"field":"FSalerId","label":"销售员","type":"string","describe":"销售员","parser":{"name":"ConvertObjectParser","params":"FNumber"}}, {"field":"FBillTypeID","label":"单据类型","type":"string","describe": ... }, {"field":"FNote","label":"备注","type":"string","describe": ... }, ... ], ... } ``` 2. **字段映射与解析** 在字段映射过程中,需要特别注意一些字段需要通过`ConvertObjectParser`进行解析。例如,`FSaleOrgId`(销售组织)、`FCustId`(客户)、`FSalerId`(销售员)等字段,这些字段需要从源系统中的编码转换为目标系统中的编码。 ```json { "field": "FSaleOrgId", "label": "销售组织", "type": "string", "describe": "销售组织", "parser": { "name": "ConvertObjectParser", "params": "FNumber" } } ``` 3. **订单明细与财务信息** 对于复杂的数据结构,如订单明细和财务信息,需要使用嵌套数组来表示。在元数据配置中,订单明细和财务信息分别被定义为`FSaleOrderEntry`和`FSaleOrderFinance`。每个子字段也需要进行相应的映射和解析。 ```json { "field": "FSaleOrderEntry", "label": "订单明细", "type": "array", ... "children": [ {"field": "FMaterialId", ... }, {"field": "FUnitID", ... }, ... ] }, { "field": "FSaleOrderFinance", ... } ``` 4. **提交并审核** 在所有字段都正确映射并解析后,可以通过设置其他请求参数来控制操作行为。例如,可以设置`IsAutoSubmitAndAudit`为`true`,以便在提交后自动审核。 ```json { "otherRequest":[ {"field": "FormId", ... }, {"field": "Operation", ... }, {"field": "IsAutoSubmitAndAudit", ... , "value": true}, ... ] } ``` 5. **批量保存** 最后,通过调用批量保存方法,将处理后的数据写入金蝶云星空。 ```json { ... "operation":{ "rowsKey": "array", ... "method": ![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/T5.png~tplv-syqr462i7n-qeasy.image)