数据转换与写入:南方电网商城API集成技术案例

  • 轻易云集成顾问-潘裕
### 旺店通·企业版数据集成到南方电网商城平台:销售出库调用供应商配送通知 在本案例中,我们将探讨如何高效地实现旺店通·企业版的数据集成到南方电网商城平台,从而确保订单处理的及时性与准确性。实施方案“销售出库调用供应商配送通知”涉及多个关键技术环节,包括API接口调取、数据映射和异常处理等。 首先,开始于旺店通·企业版获取销售出库单的API `stockout_order_query_trade`。此接口能够精准抓取所有需要发货的订单信息。为了保证数据不漏单并高效处理大量交易订单,我们采用定时任务来周期性拉取最新的出库单信息,这不仅提高了系统响应速度,还避免了遗漏重要数据。 接着是大批量数据快速写入到南方电网商城平台。这一过程使用到了该平台提供的 `/o2om/v1/csg-supplier-consignment-inform` API,该接口允许我们将整理后的销售出库信息推送至南方电网商城。在这个阶段,批量操作和分页策略显得尤为重要,因为它们能有效应对可能出现的数据吞吐及限流问题,使得整个过程更加顺畅集约。 此外,为了解决两端系统之间的数据格式差异,我们设计了一套定制化的数据映射规则,并通过实时监控和日志记录来跟踪每一个处理步骤,从而为后续排查错误与优化流程提供了有力支持。一旦遇到对接异常情况或网络波动导致失败,还可以启动自动重试机制以保障稳定运行。 总之,通过这一系列精心配置与技术手段,使得从旺店通·企业版向南方电网商城平台的数据传输变得高效、可靠且透明,实现业务流程的无缝衔接。 ![如何开发用友BIP接口](https://pic.qeasy.cloud/D34.png~tplv-syqr462i7n-qeasy.image) ### 调用旺店通·企业版接口stockout_order_query_trade获取并加工数据 在数据集成生命周期的第一步中,调用源系统接口是至关重要的一环。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业版接口`stockout_order_query_trade`来获取并加工销售出库数据。 #### 接口调用配置 首先,我们需要配置API接口的元数据。以下是对元数据配置的详细解析: ```json { "api": "stockout_order_query_trade", "method": "POST", "number": "order_no", "id": "stockout_id", "pagination": { "pageSize": 100 }, "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", ... } ], ... } ``` #### 请求参数解析 1. **start_time 和 end_time**: - `start_time`和`end_time`用于定义查询的时间范围。通过使用模板变量`{{LAST_SYNC_TIME|datetime}}`和`{{CURRENT_TIME|datetime}}`,可以实现增量数据的获取。 2. **status**: - `status`字段用于过滤订单状态,例如5表示已取消,55表示已审核等。这些状态码可以帮助我们筛选出特定状态的订单。 3. **src_order_no, src_tid, stockout_no**: - 分别代表系统订单编号、原始单号和出库单号,这些字段可以帮助我们在后续的数据处理阶段进行精确匹配和关联。 4. **shop_no 和 warehouse_no**: - `shop_no`和`warehouse_no`分别代表店铺编号和仓库编号,用于区分不同店铺和仓库的数据。 #### 分页处理 为了高效地处理大批量数据,我们需要进行分页请求。元数据中的分页配置如下: ```json "pagination": { "pageSize": 100 }, "otherRequest":[ { ... {"field":"page_size","label":"分页大小","type":"string","describe":"每页返回的数据条数,输入值范围1~100,不传本参数,输入值默认为40","value":"{PAGINATION_PAGE_SIZE}"}, {"field":"page_no","label":"页号","type":"string","describe":"不传值默认从0页开始","value":"{PAGINATION_START_PAGE}"} } ] ``` - `page_size`: 每页返回的数据条数,这里设置为100。 - `page_no`: 页号,从0开始递增。 #### 数据请求与清洗 在完成API调用配置后,我们可以通过轻易云平台发起HTTP POST请求,并接收响应数据。响应数据通常包含多个字段,我们需要对这些字段进行清洗和转换,以便后续处理。 示例代码片段如下: ```python import requests import datetime # 设置请求参数 params = { 'start_time': datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), 'end_time': (datetime.datetime.now() + datetime.timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S'), 'status': '55', 'page_size': 100, 'page_no': 0 } # 发起POST请求 response = requests.post('https://api.wangdiantong.com/stockout_order_query_trade', data=params) # 检查响应状态码 if response.status_code == 200: data = response.json() # 数据清洗与转换逻辑 for order in data['orders']: # 示例:提取并转换所需字段 processed_order = { 'order_id': order['order_id'], 'shop_name': order['shop_name'], ... } # 将处理后的订单存储到目标系统或数据库中 else: print(f"Error: {response.status_code}") ``` #### 小结 通过以上步骤,我们成功调用了旺店通·企业版接口`stockout_order_query_trade`并进行了初步的数据清洗与转换。在实际应用中,还需根据业务需求进一步优化和调整处理逻辑,以确保数据的准确性和完整性。这一步为后续的数据转换与写入奠定了坚实基础。 ![钉钉与CRM系统接口开发配置](https://pic.qeasy.cloud/S30.png~tplv-syqr462i7n-qeasy.image) ### 数据转换与写入南方电网商城平台API接口的技术案例 在轻易云数据集成平台上,将源平台的数据转换并写入目标平台南方电网商城平台API接口的过程中,关键步骤是配置和执行ETL(Extract, Transform, Load)操作。本文将详细探讨如何利用元数据配置,实现销售出库调用供应商配送通知的集成方案。 #### API接口配置 根据提供的元数据配置,南方电网商城平台API接口为`/o2om/v1/csg-supplier-consignment-inform`,请求方法为`POST`。在进行ETL转换时,我们需要确保请求的数据格式与目标API所需格式一致。 #### 数据请求与清洗 首先,从源平台提取相关数据,并进行必要的清洗和预处理。以下是需要提取的字段及其对应关系: - `orderId`:采购平台申购订单号,对应源数据中的`src_tids` - `type`:类型,固定值为`2` - `deliveryInfo`:货运单信息集合,包括以下子字段: - `deliveryId`:货运单号,对应源数据中的`logistics_no` - `carrier`:承运商,对应源数据中的`logistics_name` - `thirdSubOrderId`:供应商的子订单,通过复杂查询获取 - `skuInfos`:商品信息集合,包括以下子字段: - `skuId`:商品编码,对应源数据中的`details_list.goods_no` - `skuName`:商品名称,对应源数据中的`details_list.goods_name` - `skuNum`:商品数量,通过函数计算获取 #### 数据转换 在ETL流程中,数据转换是最重要的一步,需要将清洗后的数据按照目标API接口要求的格式进行重组和转换。具体步骤如下: 1. **订单信息转换**: ```json { "orderId": "{src_tids}", "type": "2" } ``` 2. **货运单信息集合转换**: ```json { "deliveryInfo": [ { "deliveryId": "{logistics_no}", "carrier": "{logistics_name}", "thirdSubOrderId": "_findCollection find afsApplyId from 92caf659-b63d-39f7-ae1a-c9a9a9ccd99a where orderId={src_tids} skuId={{details_list.goods_no}}", "skuInfos": [ { "skuId": "{{details_list.goods_no}}", "skuName": "{{details_list.goods_name}}", "skuNum": "_function round({{details_list.goods_count}},0)" } ] } ] } ``` 3. **承运商映射**: 承运商字段需要通过映射表进行正向映射(mappingDirection: positive),例如将内部承运商代码映射为目标系统可识别的承运商名称。 #### 数据写入 最后一步是将转换后的数据通过POST请求写入南方电网商城平台API接口。确保所有字段都符合目标系统要求,并且按照正确的JSON结构发送。 ```json { "api": "/o2om/v1/csg-supplier-consignment-inform", "method": "POST", "idCheck": true, "request": [ { "field": "orderId", "label": "采购平台申购订单号", "type": "string", "value": "{src_tids}" }, { "field": "type", "label": "类型", "type": "string", "value": "2" }, { ... } ] } ``` 通过上述步骤,可以实现从源平台到南方电网商城平台的数据无缝对接,确保每个环节的数据准确性和一致性。这不仅提高了业务流程的透明度和效率,也为后续的数据监控和管理提供了可靠保障。 ![金蝶云星空API接口配置](https://pic.qeasy.cloud/T26.png~tplv-syqr462i7n-qeasy.image)