使用轻易云将旺店通数据转换为金蝶销售订单

  • 轻易云集成顾问-卢剑航
### 旺店通·企业奇门销售出库单对接金蝶云星空销售订单的实践案例 在实际业务场景中,系统之间的数据集成是一个关键环节。本案例分享了如何将旺店通·企业奇门(简称“旺店通”)的销售出库单数据无缝集成到金蝶云星空中的销售订单。通过轻易云数据集成平台,我们实现了从接口抓取、数据转换到批量写入的一系列技术流程。 #### 确保不漏单:调用wdt.stockout.order.query.trade接口 对于系统间的数据同步,确保数据完整性和实时性至关重要。我们首先调用了旺店通提供的`wdt.stockout.order.query.trade` API,该接口可以精确获取每个时间段内生成的所有销售出库单记录。为了避免因网络波动等原因造成的数据遗漏,我们引入了重试机制并记录日志,以确保每一条出库单都能被成功捕获。 #### 高效写入:使用batchSave API进行批量处理 针对大量的数据需要快速、高效地写入到金蝶云星空,我们采用其提供的`batchSave` API。这种方式极大地提升了数据写入效率,通过一次性提交多个请求,减少API调用次数。此外,为保证批量操作过程中的可靠性,我们设计了一套错误处理与重试机制,对于失败的批次会自动重新尝试,从而达到高可用性的目标。 #### 数据格式差异及定制化映射 在具体实施过程中,不同系统之间的数据格式差异常常成为障碍。因此,在对接方案中设计了一套灵活的数据映射策略。通过定制化转换规则,将旺店通原始返回的数据结构标准化为符合金蝶云星空要求的格式。同时,这些映射规则支持动态配置和实时更新,确保适应不断变化的业务需求。 以上几个步骤仅是整个对接过程的一部分。在后续内容中,将详细说明分页和限流问题、异常处理与监控机制等技术细节,以全面展示这次跨系统集成项目中的实践经验和解决方案。 ![用友BIP接口开发配置](https://pic.qeasy.cloud/D39.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, "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":"5已取消,55已审核,95已发货,105 部分打款,110已完成,113:异常发货", "value":"95,110" }, { ... } ], ... } ``` #### 参数说明 - **start_time** 和 **end_time**:用于定义增量获取数据的时间范围。`start_time`和`end_time`分别表示开始和结束时间。 - **status**:过滤订单状态,这里我们选择了“95已发货”和“110已完成”。 - **其他字段**:如系统订单编号、原始单号、出库单号、店铺编号、仓库编号等,用于进一步细化查询条件。 #### 请求示例 在实际操作中,我们可以通过以下示例请求来获取所需的数据: ```json { "start_time": "{{LAST_SYNC_TIME|datetime}}", "end_time": "{{CURRENT_TIME|datetime}}", ... } ``` #### 数据过滤与清洗 在获取到原始数据后,我们需要对其进行初步的过滤和清洗。根据元数据配置中的条件,可以看到以下两个主要过滤条件: 1. **details_list.brand_name != '赠品'** 2. **shop_no in ('CUST2501', 'CUST2534', 'CUST2426')** 这些条件确保我们只处理特定品牌和特定店铺的数据,从而提高了数据处理的效率和准确性。 #### 分页处理 为了处理大批量的数据,我们需要使用分页机制。通过设置分页大小(page_size)和页号(page_no),可以逐页获取数据: ```json { ... "page_size":"40", ... } ``` #### 自动填充响应 轻易云平台支持自动填充响应功能,这意味着我们不需要手动解析每个字段,而是可以直接使用平台提供的自动映射功能来简化开发过程。 #### 数据加工与转换 在完成初步的数据清洗后,可以根据业务需求进行进一步的数据转换。例如,将销售出库单转换为金蝶销售订单格式。这一步通常涉及字段映射、值转换等操作。 通过以上步骤,我们可以高效地从旺店通系统中提取并加工销售出库单数据,为后续的数据写入和业务处理打下坚实基础。 ![如何对接金蝶云星空API接口](https://pic.qeasy.cloud/S3.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将旺店通销售出库单转换为金蝶销售订单 在数据集成过程中,ETL(Extract, Transform, Load)是关键步骤之一。在本文中,我们将详细探讨如何使用轻易云数据集成平台,将旺店通的销售出库单数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。 #### 数据请求与清洗 首先,我们从源平台(旺店通)获取销售出库单的数据。假设这些数据已经通过轻易云的数据请求和清洗阶段,准备好进行下一步的转换和写入。 #### 数据转换与写入 在这一阶段,我们需要将清洗后的数据按照金蝶云星空API接口的要求进行转换,并通过API接口将数据写入目标平台。以下是具体的元数据配置及其解析: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "XSDD11_DEF" }, { "field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "{src_order_no}" }, { ... } ], ... } ``` ##### 核心字段解析 1. **FBillTypeID(单据类型)** - 类型:`string` - 描述:用于指定金蝶系统中的单据类型。 - 转换器:`ConvertObjectParser`,参数为`FNumber`,即将源数据的某个字段值映射为金蝶系统中的编码。 - 固定值:`XSDD11_DEF` 2. **FBillNo(单据编号)** - 类型:`string` - 描述:唯一标识销售订单的编号。 - 值:从源数据中提取,如 `{src_order_no}`。 3. **FSaleOrgId(销售组织)** - 类型:`string` - 描述:表示销售组织。 - 转换器:`ConvertObjectParser`,参数为 `FNumber`。 - 值:从源数据中提取并映射,如 `{shop_no}`。 4. **FCustId(客户)** - 类型:`string` - 描述:表示客户信息。 - 转换器:`ConvertObjectParser`,参数为 `FNumber`。 - 值:从源数据中提取并映射,如 `{shop_no}`。 5. **FSaleOrderEntry(订单明细)** - 类型:`array` - 描述:包含订单的详细条目。 - 子字段包括: - **FMaterialId(物料编码)**: - 类型:`string` - 转换器:`ConvertObjectParser` - 值:从 `details_list.goods_no` 提取并映射。 - **FQty(销售数量)**: - 类型:`string` - 值:从 `details_list.goods_count` 提取。 ... ##### 特殊逻辑处理 1. **库存组织字段 FStockOrgId** ```json { ... "value":"_findCollection find F_PAEZ_Base2 from adac3655-a3cb-3551-9024-8e7b360f930a where FNumber={{details_list.goods_no}}" ... } ``` 使用 `_findCollection find ... where ...` 的语法,从指定集合中查找并匹配相应的库存组织。 2. **是否赠品字段 FIsFree** ```json { ... "value":"_function CASE WHEN {{details_list.sell_price}}>0 THEN 'false' ELSE 'true' END" ... } ``` 使用 `_function CASE WHEN ... THEN ... ELSE ... END` 的语法,根据商品价格判断是否为赠品。 ##### 其他配置项 - **FormId**: 表示业务对象表单ID,如 `SAL_SaleOrder`. - **Operation**: 执行操作类型,如 `BatchSave`. - **IsAutoSubmitAndAudit**: 是否自动提交并审核,布尔值 `true`. - **IsVerifyBaseDataField**: 是否验证基础资料有效性,布尔值 `true`. #### 实际应用案例 假设我们有一批销售出库单需要转换并写入金蝶云星空。我们可以按照上述配置,通过轻易云的数据集成平台实现以下步骤: 1. 从旺店通获取原始销售出库单数据。 2. 根据元数据配置,将原始数据字段逐一映射和转换为金蝶系统所需格式。 3. 调用金蝶云星空API接口,通过POST方法批量保存转换后的销售订单数据。 通过上述步骤,我们能够高效地完成从源平台到目标平台的数据集成任务,实现不同系统间的数据无缝对接。 ![如何对接钉钉API接口](https://pic.qeasy.cloud/T6.png~tplv-syqr462i7n-qeasy.image)