通过轻易云实现数据集成:电商销售退货数据处理案例

  • 轻易云集成顾问-林峰
### 旺店通·企业奇门数据集成到金蝶云星辰V2案例分享:销售退货 在电商行业中,对接不同系统之间的数据已成为日常运营的关键任务。本文将重点解析如何通过轻易云数据集成平台,实现旺店通·企业奇门的数据无缝对接至金蝶云星辰V2。在本次实例中,我们主要探讨的是“销售退货”场景下的数据集成解决方案。 首先,需要调用旺店通·企业奇门的API接口`wdt.stockin.order.query.refund`获取销售退货订单。这一过程需要考虑API分页和限流问题,以确保所有待处理的订单能够被完整抓取,不漏单、不重单。同时,必须定时可靠地执行这一过程,确保数据的实时性和准确性。 其次,针对从旺店通获取到的大量数据,需要快速、批量地写入到金蝶云星辰V2。这涉及调用其API `/jdy/v2/scm/sal_in_bound`进行数据写入操作。在这个过程中,要特别注意两大方面:一是处理好两者之间的数据格式差异,包括字段映射和必要的数据转换;二是实现异常处理与错误重试机制,以保证整个流程在潜在故障发生时的鲁棒性。 此外,在实际运行中,通过可视化操作界面及日志记录功能,可以实现对每一步骤进行实时监控,从而进一步提升透明度,并及时排除可能出现的问题。例如,当接口返回错误或超时时,即可根据日志快速定位并修复问题。此外,通过定制化数据映射功能,可根据业务需求灵活调整字段对应关系,使得系统更加适配具体场景需求。 以上,是我们通过轻易云平台成功实现旺店通与金蝶云星辰V2系统间“销售退货”场景下高效可靠对接的一些技术要点。接下来,我们将详细介绍每一个步骤和对应代码片段,为实际应用提供参考依据。 ![如何开发钉钉API接口](https://pic.qeasy.cloud/D13.png~tplv-syqr462i7n-qeasy.image) ### 调用源系统旺店通·企业奇门接口wdt.stockin.order.query.refund获取并加工数据 在数据集成生命周期的第一步,调用源系统API接口获取数据是至关重要的一环。本文将深入探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口`wdt.stockin.order.query.refund`来获取销售退货数据,并进行初步的数据加工。 #### 接口调用配置 首先,我们需要配置元数据,以便正确地调用API接口并获取所需的数据。以下是元数据配置的详细说明: ```json { "api": "wdt.stockin.order.query.refund", "effect": "QUERY", "method": "POST", "number": "order_no", "id": "stockin_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": "入库单状态 10已取消20编辑中30待审核60待结算80已完成(默认查询80已完成单据)", "value": "80" }, { "field": "shop_no", ... ``` #### 请求参数解析 1. **开始时间和结束时间**: - `start_time` 和 `end_time` 用于指定查询的时间范围。这两个字段采用动态变量 `{{LAST_SYNC_TIME|datetime}}` 和 `{{CURRENT_TIME|datetime}}` 分别表示上次同步时间和当前时间,以确保每次调用都能获取到最新的增量数据。 2. **状态**: - `status` 字段用于过滤订单状态。在本例中,我们只查询状态为“80已完成”的单据。 3. **店铺编号**: - `shop_no` 是一个可选字段,用于指定特定店铺的数据。如果不传此参数,则默认查询所有店铺的数据。 4. **分页参数**: - `page_size` 和 `page_no` 用于分页处理,以避免一次性返回过多数据导致性能问题。默认情况下,每页返回40条记录,从第0页开始。 #### 数据请求与清洗 在成功配置元数据后,我们可以通过轻易云平台发起POST请求来调用该接口。以下是一个示例请求体: ```json { ... { ... { ... } } } ``` #### 数据转换与写入 在接收到原始数据后,需要对其进行清洗和转换,以便后续处理。例如,可以将日期格式标准化、过滤无效记录等。以下是一个简单的数据清洗示例: ```python import pandas as pd # 假设我们已经从API获取了JSON格式的数据 data = response.json() # 将JSON数据转换为DataFrame df = pd.DataFrame(data['orders']) # 清洗日期格式 df['created_at'] = pd.to_datetime(df['created_at']) # 过滤无效记录 df = df[df['status'] == '80'] # 转换后的DataFrame可以进一步处理或写入目标系统 ``` 通过上述步骤,我们可以确保从源系统获取到的销售退货数据是准确且符合业务需求的,为后续的数据处理和分析打下坚实基础。 总结来说,通过轻易云平台调用旺店通·企业奇门接口并进行初步的数据清洗和转换,可以有效提升业务透明度和效率,实现不同系统间的数据无缝对接。 ![如何开发用友BIP接口](https://pic.qeasy.cloud/S25.png~tplv-syqr462i7n-qeasy.image) ### 数据集成与转换:将销售退货数据写入金蝶云星辰V2 在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(提取、转换、加载)转换,转为目标平台金蝶云星辰V2 API接口所能够接收的格式,并最终写入目标平台。以下是详细的技术实现过程。 #### 1. 数据提取与清洗 首先,我们从源系统中提取销售退货数据,这些数据通常包含单据编码、出库日期、客户编码、商品分录等信息。为了确保数据的准确性和一致性,需要对提取的数据进行清洗和预处理。 #### 2. 数据转换 在数据转换阶段,我们需要将清洗后的数据映射到金蝶云星辰V2 API接口所要求的格式。根据提供的元数据配置,我们可以看到目标API接口的字段要求如下: ```json { "api": "/jdy/v2/scm/sal_in_bound", "effect": "EXECUTE", "method": "POST", "number": "1", "id": "1", "name": "1", "idCheck": true, "request": [ {"field": "bill_no", "label": "单据编码", "type": "string", "describe": "单据编码", "value": "{stockin_no}"}, {"field": "bill_date", "label": "出库日期", "type": "string", "describe": "出库日期", "value": "{check_time}"}, {"field": "customer_number", "label": "客户编码", "type": "string", "describe": "客户编码", "value": "{shop_no}"}, { "field": "material_entity", "label": "商品分录", "type": "array", ... }, {"field":"operation_key","label":"自动审核","type":"string","value":"audit"}, ... ] } ``` ##### 2.1 字段映射 - `bill_no` 对应 `{stockin_no}`:表示单据编码。 - `bill_date` 对应 `{check_time}`:表示出库日期。 - `customer_number` 对应 `{shop_no}`:表示客户编码。 ##### 2.2 商品分录字段映射 商品分录是一个数组,每个商品条目包含多个字段: - `material_number` 对应 `{{details_list.goods_no}}`:表示商品编码。 - `stock_number` 对应 `{warehouse_no}`:表示仓库编码。 - `stock_id` 通过 `_findCollection` 查询获取仓库ID。 - `qty` 对应 `{{details_list.goods_count}}`:表示数量。 - `unit_id` 通过 `_mongoQuery` 查询获取单位ID。 - `tax_price` 对应 `{{details_list.src_price}}`:表示含税单价。 - `cess` 固定值为 `"13"`:表示税率。 ##### 2.3 自定义字段映射 自定义字段包括项目和原始单号: - 项目对应 `{shop_no}`,并通过映射设置目标ID为 `"6346756ace37e607e17f1072"`。 - 原始单号对应 `{tid}`。 #### 3. 数据加载 完成数据转换后,通过HTTP POST请求将数据发送到金蝶云星辰V2 API接口 `/jdy/v2/scm/sal_in_bound`。示例请求体如下: ```json { "bill_no": "<stockin_no>", "bill_date": "<check_time>", ... // 其他字段 } ``` #### 4. 实际操作示例 假设我们有以下源数据: ```json { “stockin_no”: “TH20231001”, “check_time”: “2023-10-01”, “shop_no”: “CUST001”, “details_list”: [ { “goods_no”: “PROD001”, “goods_count”: “10”, “src_price”: “100.00” } ], “warehouse_no”: “WH001”, “tid”: “ORD123456” } ``` 经过ETL转换后的请求体为: ```json { “bill_no”: “TH20231001”, “bill_date”: “2023-10-01”, “customer_number”: “CUST001”, ... } ``` 最后,通过HTTP POST请求将上述JSON对象发送到目标API接口,实现数据写入。 #### 总结 以上就是使用轻易云数据集成平台,将销售退货数据ETL转换并写入金蝶云星辰V2 API接口的详细技术过程。通过精确的数据映射和转换,确保了不同系统间的数据无缝对接,实现了高效的数据集成。 ![打通用友BIP数据接口](https://pic.qeasy.cloud/T22.png~tplv-syqr462i7n-qeasy.image)