轻易云平台在旺店通退货管理对接金蝶系统中的应用

  • 轻易云集成顾问-孙传友
### 旺店通退换管理对接金蝶销售订单(退货)的技术实现方案 在处理电商业务中的旺店通·企业奇门数据集成到金蝶云星空时,面对的是数据传输和同步的高效、安全与准确性等方面的一系列挑战。本文将深入剖析如何通过使用轻易云数据集成平台,实现旺店通退换管理系统的数据无缝对接至金蝶云星空,具体探讨相关API接口调用以及关键技术细节。 #### 集成需求及总体思路 此次集成任务主要包括从旺店通·企业奇门获取退款(退货)相关的数据,并将这些数据批量写入到金蝶云星空中对应的销售订单模块内。我们需要保障在处理过程中避免漏单现象,同时确保大量数据能够快速、可靠地传输。 #### 数据抓取与接口调用 首先,通过定时调度机制定期触发`wdt.refund.query` API,从旺店通·企业奇门系统中抓取最新的退款申请记录。这一步确保及时获取所有待处理的退款信息,而不会因为间隔时间过长而导致数据积压或延迟。通过设置合理的分页参数和限流控制,我们还可以有效应对大批量数据请求可能带来的性能问题。 #### 数据格式转换及映射 由于旺店通·企业奇门返回的数据结构与金蝶云星空所需的数据格式之间存在差异,需要进行必要的数据格式转换。在这一环节中,通过制定灵活且精确的数据映射规则,将各字段转化为符合目标系统要求的信息。同时,对于不同类型的数据项,可以利用轻易云平台提供的可视化配置工具来定义自适应转换逻辑,以最大程度减少手工干预。 #### 批量写入及异常处理 在完成了初步清洗和格式转换后,使用`batchSave` API批量提交经过加工后的退款订单信息至金蝶云星空系统内。在此过程中,为进一步提高稳定性,我们设计并实现了一套完整的异常捕获与重试机制。当某些记录因网络波动或其他原因导致提交失败,将自动触发重试操作直到成功,这样不仅提升了整体运行效率,也降低了人工介入修正错误的风险。本文章余下部分将详细介绍各个具体步骤实施过程、代码实例以及实际运用中遇见的问题解决方法。 ![钉钉与WMS系统接口开发配置](https://pic.qeasy.cloud/D27.png~tplv-syqr462i7n-qeasy.image) ### 调用旺店通·企业奇门接口wdt.refund.query获取并加工数据 在数据集成生命周期的第一步中,调用源系统接口获取数据是至关重要的一环。本文将详细探讨如何通过轻易云数据集成平台配置元数据,调用旺店通·企业奇门接口`wdt.refund.query`来获取退换管理数据,并进行初步加工处理。 #### 接口调用与元数据配置 首先,我们需要了解如何配置元数据以调用`wdt.refund.query`接口。以下是关键的元数据配置项: - **api**: `wdt.refund.query` - **method**: `POST` - **number**: `refund_no` - **id**: `refund_id` - **pagination**: `{"pageSize":40}` - **idCheck**: `true` 这些配置项定义了我们要调用的API名称、请求方法、分页大小等基本信息。 #### 请求参数配置 为了确保我们能够准确地获取所需的数据,需要配置请求参数。以下是主要的请求参数及其含义: 1. **process_status**: - 描述:退换单处理状态 - 类型:字符串 - 取值范围:5(补款)、10(已取消)、20(待审核)、30(已同意)、40(已拒绝)、50(待财审)、60(待收货)、63(待推送)、64(推送失败)、65(委外待收货)、69(待收货(已结算))、70(部分到货)、71(部分到货(已结算))、80(待结算)、90(已完成) 2. **time_type**: - 描述:时间类型 - 类型:字符串 - 默认值:0,表示最后更新时间;1表示结算时间 3. **start_time**: - 描述:开始时间 - 类型:字符串 - 格式:yyyy-MM-dd HH:mm:ss - 示例值:`{{LAST_SYNC_TIME|datetime}}` 4. **end_time**: - 描述:结束时间 - 类型:字符串 - 格式:yyyy-MM-dd HH:mm:ss - 示例值:`{{CURRENT_TIME|datetime}}` 5. **page_size**: - 描述:分页大小 - 类型:字符串 - 默认值:40 6. **shop_no**: - 描述:店铺编号 - 类型:字符串 7. **page_no**: - 描述:页号 - 类型:字符串 - 默认值:0 8. **refund_no**, **src_refund_no**, **trade_no**, **tid**: - 描述分别为Erp内退换单编号、平台原始退换单号、系统订单编号和原始单号。 - 类型均为字符串,用于特定查询条件下的数据筛选。 #### 条件过滤与逻辑运算 在实际操作中,我们通常需要对返回的数据进行过滤,以确保只获取符合业务需求的数据。以下是条件过滤的配置: ```json "condition":[ [{"field":"process_status","logic":"egt","value":"70","strictMode":true},{"field":"type","logic":"eq","value":2}], [{"field":"process_status","logic":"egt","value":"70","strictMode":true},{"field":"type","logic":"eq","value":3}] ] ``` 这里定义了两个条件组,每组包含两个条件: - `process_status` >= 70 且 `type` = 2 或者 - `process_status` >= 70 且 `type` = 3 这种逻辑运算确保我们只获取处理状态大于等于70且类型为2或3的退换单。 #### 数据请求与清洗 通过上述配置,我们可以发起POST请求,调用`wdt.refund.query`接口来获取原始数据。接下来,需要对返回的数据进行清洗和初步加工。这包括但不限于: - 去除无效字段或冗余信息。 - 转换时间格式,使其符合目标系统要求。 - 根据业务规则进行数据校验和修正。 例如,对于时间字段,可以使用如下代码进行格式转换: ```python from datetime import datetime def convert_time_format(time_str): return datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S').strftime('%Y%m%d%H%M%S') ``` #### 数据转换与写入准备 在完成初步清洗后,下一步是将数据转换为目标系统所需的格式,并准备写入操作。这可能涉及字段映射、单位转换等操作。例如,将退款金额从分转换为元: ```python def convert_amount(amount_in_cents): return amount_in_cents / 100.0 ``` 通过以上步骤,我们可以高效地从旺店通·企业奇门接口获取并加工退换管理数据,为后续的数据写入和业务处理打下坚实基础。 ![钉钉与ERP系统接口开发配置](https://pic.qeasy.cloud/S22.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现旺店通退换管理对接金蝶销售订单(退货)的ETL转换 在轻易云数据集成平台中,将已经集成的源平台数据进行ETL转换,并转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台,是一个关键步骤。本文将详细探讨如何通过配置元数据,实现这一过程。 #### 元数据配置解析 元数据配置是实现ETL转换的核心。以下是具体的元数据配置解析: 1. **API接口与请求方法** ```json {"api":"batchSave","effect":"EXECUTE","method":"POST"} ``` 这里指定了使用`batchSave` API接口,通过POST方法进行批量保存操作。 2. **请求字段映射** 请求字段映射定义了从源系统到目标系统的数据字段对应关系。以下是几个关键字段的解析: - `FBillTypeID` (单据类型) ```json {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"WDTTHDD"} ``` 这里将单据类型固定为`WDTTHDD`,并使用`ConvertObjectParser`进行解析。 - `FBillNo` (单据编号) ```json {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{refund_no}"} ``` 单据编号直接取自源系统中的退款编号 `{refund_no}`。 - `FSaleOrgId` (销售组织) ```json {"field":"FSaleOrgId","label":"销售组织","type":"string","describe":"销售组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_mongoQuery f3b55dc4-44d0-3a14-a28f-c372d39e70cc findField=content.FSaleOrgId_FNumber where={\"content.FNumber\":{\"$eq\":\"{shop_no}\"}}"} ``` 销售组织通过MongoDB查询获取,并使用`ConvertObjectParser`进行解析。 3. **日期格式转换** ```json {"old":"modified","new":"modified_new","format":"date"} ``` 将原始日期字段 `modified` 转换为新的日期格式 `modified_new`。 4. **订单明细** ```json {"field":"FSaleOrderEntry","label":"订单明细","type":"array","describe":"订单明细","value":"refund_order_list"} ``` 订单明细是一个数组,包含多个子字段,如物料编码、销售数量、含税单价等。这些子字段分别映射到源系统中的相应字段,并进行必要的计算和转换。例如: - `FMaterialId` (物料编码) ```json {"field":"FMaterialId","label":"物料编码","type":"string","describe":"物料编码","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{{refund_order_list.goods_no}}"} ``` - `FTaxPrice` (含税单价) ```json {"field":"FTaxPrice","label":"含税单价","type":"string","describe":"含税单价","value":"_function round( {{refund_order_list.refund_order_amount}}\/{{refund_order_list.refund_num}} , 6)"} ``` 5. **其他请求参数** ```json {"field":"FormId","label":"业务对象表单Id","type": "string", "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder", "value": "SAL_SaleOrder"}, {"field": "Operation", "label": "执行的操作", "type": "string", "describe": "执行的操作", "value": "BatchSave"}, {"field": "IsAutoSubmitAndAudit", "label": "提交并审核", "type": "bool", "describe": "提交并审核", "value": true}, {"field": "IsVerifyBaseDataField", "label": "验证基础资料", "type": "bool", "describe": "是否验证所有的基础资料有效性,布尔类,默认false(非必录)", "value": true} ``` #### 实现步骤 1. **配置元数据** 在轻易云数据集成平台中,根据上述元数据配置,设置好每个字段的映射关系和转换规则。 2. **执行ETL转换** 使用轻易云的数据处理功能,将源系统中的退款管理数据按照配置好的规则进行转换。确保每个字段都能正确映射到目标系统所需的格式。 3. **调用API接口** 通过POST方法调用金蝶云星空的batchSave API接口,将转换后的数据批量写入目标系统。确保所有必要参数都已正确设置,包括表单ID、操作类型、自动提交和审核等。 4. **监控与验证** 利用轻易云的数据监控功能,实时跟踪数据流动和处理状态。验证每一笔退货订单是否成功写入金蝶云星空,并检查日志以确保没有错误发生。 通过以上步骤,可以高效地将旺店通退换管理的数据无缝对接到金蝶销售订单,实现业务流程的自动化和高效化。 ![金蝶与外部系统打通接口](https://pic.qeasy.cloud/T8.png~tplv-syqr462i7n-qeasy.image)