实现旺店通销售数据到金蝶云星空的自动化集成

  • 轻易云集成顾问-吕修远
### 旺店通销售出库对接金蝶销售订单(线下)的技术实现 在实际业务场景中,如何高效且准确地将旺店通·企业奇门(以下简称“旺店通”)的数据集成到金蝶云星空平台,是许多企业面临的重要课题。本文将以"旺店通销售出库对接金蝶销售订单(线下)"为案例,详细探讨这一过程中的关键技术点。 本次数据集成任务主要涉及两个API接口:一个是从旺店通获取数据的`wdt.stockout.order.query.trade`接口,另一个是向金蝶云星空写入数据的`batchSave`接口。在整个方案实施过程中,我们需要解决如下几个核心问题: 1. **确保集成过程中不漏单**: - 在调用`wdt.stockout.order.query.trade`接口时,需要制定合理的抓取策略,以保证所有新增和更新的数据均能被及时捕获。 2. **大量数据快速写入**: - 面对大规模订单数据时,将其批量写入到金蝶云星空是提升效率的必要手段。这要求我们优化每批次处理的数据量,同时确保不会触发系统限流措施。 3. **定时可靠抓取**: - 配置定时任务来周期性地调用旺店通知道,以便实时监控和获取最新交易信息。这个过程需考虑网络延迟和异常情况,以确保可靠性。 4. **分页与限流处理**: - 由于API调用存在分页限制及速率限制,在实现过程中需设计有效的分页策略,并结合重试机制,解决限流带来的挑战。 5. **实时监控和日志记录**: - 为了追踪每个环节的数据流动状态,实现全流程监控与日志记录显得尤为重要。这不仅有助于排查问题,也能提供可视化报告供管理层参考决策。 6. **数据格式差异处理**: - 旺店通返回的数据结构可能与金蝶云星空所需格式有所不同,因此在中间转换环节上,我们需进行精准映射并预防潜在误差及冲突。 7. **异常处理与错误重试机制**: - 针对各种潜在异常,如网络断开、请求超时等,需要设计一套完整的错误检测和重试机制,以提高整体流程稳定性。 8. **定制化数据映射对接**: - 根据具体业务需求,对需要传输的数据字段进行自定义映射,使其能够契合目标系统(金蝶云星空)的标准要求,从而保障最终呈现结果符合预期。 通过上述关键点分析,我们可以初步 ![电商OMS与ERP系统接口开发配置](https://pic.qeasy.cloud/D16.png~tplv-syqr462i7n-qeasy.image) ### 调用源系统旺店通·企业奇门接口wdt.stockout.order.query.trade获取并加工数据 在数据集成生命周期的第一步,我们需要从源系统获取数据并进行初步加工。本文将详细介绍如何通过调用旺店通·企业奇门接口`wdt.stockout.order.query.trade`来实现这一过程。 #### 接口调用配置 首先,我们需要配置接口调用的元数据。以下是接口`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, "formatResponse": [ { "old": "consign_time", "new": "consign_time_new", "format": "date" } ], "condition": [ [ { "field": "shop_no", "logic": "eqv2", "value": "CTPDZ01002" } ], [ { "field": "shop_no", "logic": "eqv2", "value": "CRT01001" } ], [ { "field": "shop_no", "logic": "eqv2", "value": "CRT02001" } ], [ { "field": "shop_no", "logic": "eqv2", "value": "CRT02002" } ] ], ... } ``` #### 请求参数设置 在请求参数中,我们需要设置一些关键字段,以确保能够正确获取所需的数据。这些字段包括时间范围、状态、店铺编号等。以下是具体的请求参数配置: ```json { ... // 时间范围 { "field":"start_time", ... // 使用上次同步时间作为开始时间 {"value":"{{LAST_SYNC_TIME|datetime}}"} }, { ... // 使用当前时间作为结束时间 {"value":"{{CURRENT_TIME|datetime}}"} }, // 状态 { ... {"describe":"5已取消,55已审核,95已发货,105 部分打款,110已完成,113:异常发货"} }, // 店铺编号 { ... {"describe":"代表店铺所有属性的唯一编码,用于店铺区分"} }, // 分页参数 { ... {"value":"{PAGINATION_PAGE_SIZE}"} }, { ... {"describe":"不传值默认从0页开始"} } } ``` #### 数据清洗与格式化 在获取到原始数据后,需要对数据进行清洗和格式化处理。例如,将字段`consign_time`重命名为`consign_time_new`并转换为日期格式: ```json { ... // 格式化响应字段 {"old":"consign_time","new":"consign_time_new","format":"date"} } ``` #### 条件过滤 为了确保只获取特定店铺的数据,我们可以使用条件过滤。例如,只获取店铺编号为`CTPDZ01002`, `CRT01001`, `CRT02001`, `CRT02002`的数据: ```json { ... // 条件过滤 {"field":"shop_no","logic":"eqv2","value":"CTPDZ01002"}, {"field":"shop_no","logic":"eqv2","value":"CRT01001"}, {"field":"shop_no","logic":"eqv2","value":"CRT02001"}, {"field":"shop_no","logic":"eqv2","value":"CRT02002"} } ``` #### 数据请求示例 以下是一个完整的数据请求示例,展示了如何结合上述配置来调用接口并获取数据: ```json { ... // 请求体示例 { ..., // 时间范围参数 {"start_time" : "{{LAST_SYNC_TIME|datetime}}", ..., }, // 状态参数 { ..., {"status" : "..."}, ..., }, // 店铺编号参数 { ..., {"shop_no" : "..."}, ..., }, // 分页参数 { ..., {"page_size" : "{PAGINATION_PAGE_SIZE}", ..., }, ..., } } } ``` 通过以上步骤,我们可以成功调用旺店通·企业奇门接口`wdt.stockout.order.query.trade`,并对返回的数据进行初步加工,为后续的数据转换与写入奠定基础。 ![系统集成平台API接口配置](https://pic.qeasy.cloud/S29.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将旺店通销售出库数据转换并写入金蝶云星空API接口 在数据集成过程中,ETL(提取、转换、加载)是至关重要的一环。本文将详细介绍如何利用轻易云数据集成平台,将旺店通销售出库的数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。 #### 元数据配置解析 在进行ETL操作之前,我们需要先理解元数据配置。以下是关键字段的解析: - **api**: `batchSave` - 表示调用金蝶云星空的批量保存接口。 - **method**: `POST` - 使用HTTP POST方法提交请求。 - **idCheck**: `true` - 启用ID检查,确保唯一性。 - **operation**: 定义了操作方式,其中`rowsKey`为`array`,表示批量操作;`rows`为1,表示单次处理一条记录;`method`为`batchArraySave`,表示批量保存。 #### 请求字段解析 1. **FBillTypeID (单据类型)**: ```json {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"WDTXSDD"} ``` - 使用固定值“WDTXSDD”,通过转换器将其转化为金蝶系统可识别的格式。 2. **FBillNo (单据编号)**: ```json {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{trade_no}"} ``` - 直接从源数据中获取交易编号。 3. **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查询将店铺编号转换为对应的销售组织ID。 4. **FDate (日期)**: ```json {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{consign_time}"} ``` - 从源数据中提取发货时间作为订单日期。 5. **FCustId (客户)**: ```json {"field":"FCustId","label":"客户","type":"string","describe":"客户","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_mongoQuery f3b55dc4-44d0-3a14-a28f-c372d39e70cc findField=content.FCustomerId_FNumber where={\"content.FNumber\":{\"$eq\":\"{shop_no}\"}}"} ``` - 通过MongoDB查询将店铺编号转换为客户ID。 6. **FSaleOrderEntry (订单明细)**: ```json {"field": "FSaleOrderEntry", "label": "订单明细", "type": "array", "describe": "订单明细", "value": "details_list", "children": [ {"field": "FMaterialId", "label": "物料编码", "type": "string", "describe": "物料编码", "parser": {"name": "ConvertObjectParser", "params": "FNumber"}, "value": "{{details_list.spec_no}}"}, {"field": "FTaxPrice", "label": "含税单价", "type": "string", "describe": "含税单价", "value": "_function round( {{details_list.share_amount}}/{{details_list.goods_count}}, 6)"}, {"field": "FQty", "label": "销售数量", "type": "string", "describe": "销售数量", "value": "{{details_list.goods_count}}"}, {"field": "FDeliveryDate", "label": "要货日期", ![轻易云数据集成平台金蝶集成接口配置](https://pic.qeasy.cloud/T11.png~tplv-syqr462i7n-qeasy.image)