从旺店通到金蝶云星辰:销售订单数据自动化集成指南

  • 轻易云集成顾问-张妍琪
### 销售订单集成案例分享:旺店通·企业奇门数据对接金蝶云星辰V2 在本篇技术文章中,我们将深入探讨如何通过轻易云数据集成平台,实现旺店通·企业奇门到金蝶云星辰V2的销售订单数据无缝对接。本次案例重点放在API接口相关的技术实现及其细节处理上,确保每一个环节从抓取到存储都高效、可靠。 首先,为确保从旺店通·企业奇门获取的数据不漏单,并能够定时可靠地进行抓取,我们使用了`wdt.trade.query` API接口。该接口支持分页查询,以应对大批量数据提取时可能出现的限流问题。在实际应用中,通过设置合理的分页参数和请求频率,我们有效避免了因限流导致的数据丢失或延迟。 紧接着,我们需要将大量销售订单信息快速写入到金蝶云星辰V2。这里我们主要使用了其提供的API `/jdy/v2/scm/sal_order`。为了保证写入速度和准确性,我们采用批量集成的方法,一次性提交多条记录。这不仅显著提高了处理效率,还减少了网络传输中的开销。 考虑到两大系统之间的数据格式差异,对于每个字段进行了详细映射与转换。例如,旺店通中的某些字段名和格式与金蝶云存在不一致之处,这要求我们在中间层做灵活且精准的数据转换。同时,还特别注意处理异常情况,如网络故障或接口返回错误等,通过设计健全的重试机制,保障整个对接过程稳健运行。 最后,不容忽视的是实时监控与日志记录。这对于预防问题以及排查故障至关重要。在整个集成过程中,每一步操作都被详细记录,并设置告警通知机制。一旦检测到异常状况,可以即时响应并快速纠正,从而最大限度地保证业务连续性和数据完整性。 通过这些精心设计与实现,本方案成功解决了跨系统销售订单数据同步的问题,为后续业务运作打下坚实基础。以下章节将具体讲解各个步骤中的技术细节及优化技巧。 ![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/D22.png~tplv-syqr462i7n-qeasy.image) ### 调用源系统旺店通·企业奇门接口wdt.trade.query获取并加工数据 在数据集成生命周期的第一步中,调用源系统接口获取数据是至关重要的一环。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口`wdt.trade.query`来获取销售订单数据,并对其进行初步加工。 #### 接口调用配置 首先,我们需要配置接口调用的元数据。根据提供的元数据配置,`wdt.trade.query`接口的请求方法为POST,主要参数包括订单状态、时间范围、订单编号等。以下是具体的请求参数配置: ```json { "api": "wdt.trade.query", "effect": "QUERY", "method": "POST", "number": "{trade_no}", "id": "{trade_id}", "name": "{trade_no}", "request": [ { "field": "status", "label": "订单状态", "type": "string", "describe": "订单状态 如果不传该字段则查询所有订单 (传该字段:5已取消 10待付款 12待尾款 13待选仓 15等未付16延时审核 19预订单前处理 20前处理(赠品,合并,拆分)21委外前处理22抢单前处理 25预订单 27待抢单 30待客审 35待财审 40待递交仓库 45递交仓库中 50已递交仓库 53未确认 55已确认(已审核) 95已发货 105部分打款 110已完成 113异常发货)", "value": "55" }, { "field": "start_time", "label": "开始时间", "type": "string", "describe": "按最后修改时间增量获取数据,start_time作为开始时间,时间格式:yyyy-MM-dd HH:mm:ss", "value": "{{LAST_SYNC_TIME|datetime}}" }, { "field": "end_time", "label": "结束时间", "type": "string", "describe": "按最后修改时间增量获取数据,end_time作为结束时间,时间格式:yyyy-MM-dd HH:mm:ss", "value": "{{CURRENT_TIME|datetime}}" }, { ... } ], ... } ``` #### 请求参数详解 1. **status(订单状态)**: 用于筛选特定状态的订单,例如“55”表示已确认(已审核)的订单。 2. **start_time 和 end_time(开始和结束时间)**: 按照最后修改时间增量获取数据,用于实现数据的增量同步。 3. **src_tid, trade_no, shop_no, warehouse_no 等**: 用于进一步细化查询条件,例如指定店铺编号、仓库编号等。 #### 数据请求与清洗 在发送请求后,我们将接收到一组原始的销售订单数据。这些数据通常包含多个字段,如订单编号、商品信息、客户信息等。在轻易云平台上,可以通过内置的数据清洗工具对这些原始数据进行预处理,包括但不限于以下操作: 1. **字段映射**: 将源系统中的字段映射到目标系统中的标准字段。例如,将`trade_no`映射到目标系统中的`order_number`。 2. **格式转换**: 将日期格式从`yyyy-MM-dd HH:mm:ss`转换为目标系统所需的格式。 3. **过滤无效数据**: 移除不符合业务规则的数据,例如缺少关键字段的数据记录。 #### 数据转换与写入 经过清洗后的数据需要进一步转换,以适应目标系统的数据结构和业务逻辑。这一步通常包括以下操作: 1. **合并与拆分**: 根据业务需求,将多个记录合并为一条记录或将一条记录拆分为多条记录。 2. **计算派生字段**: 根据已有字段计算出新的派生字段,例如根据商品数量和单价计算总金额。 3. **校验与补全**: 对关键字段进行校验,并根据业务规则补全缺失的信息。 最终,将转换后的数据写入目标系统,实现销售订单的无缝对接。 通过上述步骤,我们可以高效地利用轻易云平台实现旺店通·企业奇门接口的数据集成,为后续的数据分析和业务决策提供可靠的数据支持。 ![金蝶与外部系统打通接口](https://pic.qeasy.cloud/S1.png~tplv-syqr462i7n-qeasy.image) ### 利用轻易云数据集成平台进行ETL转换并写入金蝶云星辰V2API接口 在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,并将其转为目标平台所能够接收的格式。本文将深入探讨如何利用轻易云数据集成平台,将销售订单数据转换为金蝶云星辰V2API接口所需的格式,并最终写入目标平台。 #### API接口元数据配置解析 首先,我们需要理解元数据配置的各个字段及其意义: ```json { "api": "/jdy/v2/scm/sal_order", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ {"field":"bill_date","label":"订单日期","type":"string","describe":"销售订单日期","value":"{modified}"}, {"field":"bill_no","label":"订单编码","type":"string","describe":"销售订单编码","value":"{trade_no}"}, {"field":"remark","label":"单据备注","type":"string","describe":"备注","value":"{cs_remark}"}, {"field":"customer_number","label":"客户编码","type":"string","describe":"单据来源","value":"{shop_no}"}, {"field":"operation_key","label":"操作类型","type":"string","value":"audit"}, { "field": "custom_field", "label": "custom_field", "type": "object", "children": [ { "field": "custom_field__4__2obgp309axx5_number", "label": "项目", "type": "string", "value": "{shop_no}", "mapping": {"target": "6346756ace37e607e17f1072", "direction": "positive"} } ] }, { "field": "material_entity", "label": "分录明细", "type": "array", "describe": "分录明细", "value": "goods_list", ... } ] } ``` #### 数据字段映射与转换 1. **基本字段映射**: - `bill_date` 对应 `销售订单日期`,取值 `{modified}`。 - `bill_no` 对应 `销售订单编码`,取值 `{trade_no}`。 - `remark` 对应 `单据备注`,取值 `{cs_remark}`。 - `customer_number` 对应 `客户编码`,取值 `{shop_no}`。 - `operation_key` 固定为 `"audit"`。 2. **自定义字段**: - `custom_field` 是一个嵌套对象,其中包含一个子字段 `custom_field__4__2obgp309axx5_number`,其值为 `{shop_no}`。该字段还包含一个映射配置,用于指定目标系统中的具体位置。 3. **分录明细(material_entity)**: - `material_entity` 是一个数组,每个元素包含多个子字段,例如: - `material_number`: 对应物料编码,取值为 `{{goods_list.goods_no}}`。 - `stock_id`: 仓库ID,通过 `_mongoQuery` 查询获取。 - `qty`: 数量,对应 `{{goods_list.num}}`。 - `unit_id`: 单位,通过 `_mongoQuery` 查询获取。 - `tax_price`: 单价,通过 `_function round({{goods_list.share_amount}}/{{goods_list.num}},6)` 计算得出。 #### 实际操作步骤 1. **提取数据**:从源系统提取销售订单数据,这一步通常由轻易云平台自动完成。 2. **转换数据**:根据上述元数据配置,对提取的数据进行转换。例如: ```json { ... "bill_date": data.modified, ... // 自定义字段 custom_field: { custom_field__4__2obgp309axx5_number: data.shop_no }, // 分录明细 material_entity: data.goods_list.map(item => ({ material_number: item.goods_no, stock_id: getStockId(item.warehouse_no), // 调用_mongoQuery查询 qty: item.num, unit_id: getUnitId(item.goods_no), // 调用_mongoQuery查询 tax_price: round(item.share_amount / item.num, 6), cess: '13' })) } ``` 3. **加载数据**:将转换后的数据通过POST请求发送到金蝶云星辰V2API接口 `/jdy/v2/scm/sal_order`。例如: ```javascript const axios = require('axios'); axios.post('/jdy/v2/scm/sal_order', transformedData) .then(response => console.log('Data loaded successfully:', response.data)) .catch(error => console.error('Error loading data:', error)); ``` #### 总结 通过对元数据配置的深入理解和应用,我们可以高效地将源系统的数据转换为目标系统所需的格式,并成功写入金蝶云星辰V2API接口。这不仅提高了业务流程的透明度和效率,还确保了不同系统之间的数据无缝对接。 ![用友与SCM系统接口开发配置](https://pic.qeasy.cloud/T17.png~tplv-syqr462i7n-qeasy.image)