详解旺店通出库单与金蝶其他出库单的数据对接实施

  • 轻易云集成顾问-彭亮
### 【类型:其他出库】旺店通-出库单管理==>金蝶-其他出库单 在企业运营中,数据集成的重要性不言而喻。本文将详细介绍一个实际运行的系统对接案例:通过轻易云数据集成平台,将旺店通·企业奇门(以下简称为“奇门”)的数据无缝传输到金蝶云星空,实现高效、可靠的【类型:其他出库】数据处理。 #### 数据接口与方案概述 为了成功实现奇门到金蝶云星空的数据同步,我们主要调用了两个核心API接口: 1. **获取数据 API** —— `wdt.stockout.order.query`:该接口用于从奇门抓取出库单相关数据,包括但不限于订单ID、商品信息、数量等。 2. **写入数据 API** —— `batchSave`:这个接口帮助我们将已获取并处理好的数据批量写入到金蝶云星空。 #### 关键技术挑战及解决方案 ##### 确保集成过程不漏单 在确保不会出现漏单的问题上,我们设计了定时任务机制,可靠地抓取奇门提供的数据。通过设置合理的定时任务频率,结合分页查询和限流策略,每次请求都能准确无误地获得最新的订单信息,并保证订单没有遗漏。 ##### 批量快速写入大量数据 考虑到业务需求中的大量订单处理,为提高效率,我们选择了使用`batchSave`进行批量写入操作。这不仅简化了连续多次请求带来的复杂性,还大幅提升了系统性能和响应速度。此外,在批量写入之前,我们会进行必要的预处理,例如格式转换和字段映射,以确保所有输入符合金蝶云星空的要求。 ##### 处理分页和限流问题 面对海量的数据,为避免超时报错或服务器压力过大导致服务不可用,采用分页查询是必然之选。每次API调用都会携带分页参数,这样既满足了一次性尽可能多地拉取新订单,又均衡了服务器负载。同时,通过设定合理的限流策略,有效防止因为调用次数超标而被屏蔽,从而保障整个流程顺畅进行。 这篇文章由以上几个方面切入,通过实例讲解如何利用轻易云的平台特性、高效整合不同系统之间的数据,从而助力业务运作更加透明与高效。在接下来的部分内容中,我将继续深入剖析具体实施步骤以及编码层面的细节实操方法。 ![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/D2.png~tplv-syqr462i7n-qeasy.image) ### 调用源系统旺店通·企业奇门接口wdt.stockout.order.query获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口`wdt.stockout.order.query`,获取并加工出库单数据。 #### 接口调用配置 首先,我们需要配置接口调用的元数据。以下是`wdt.stockout.order.query`接口的元数据配置: ```json { "api": "wdt.stockout.order.query", "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":"110" }, { ... } ], ... } ``` #### 请求参数详解 1. **start_time** 和 **end_time**: - `start_time` 和 `end_time` 用于定义增量获取数据的时间范围。通过使用模板变量 `{{LAST_SYNC_TIME|datetime}}` 和 `{{CURRENT_TIME|datetime}}` 动态填充时间值,可以确保每次同步只获取最新的数据。 2. **status**: - 状态字段用于过滤出库单的状态。在本例中,我们设置为 `110` 表示只获取已完成的出库单。 3. **order_type**: - 出库单类型字段用于指定要查询的出库单类型。这里设置为 `7` 表示其他出库。 4. **分页参数**: - 为了处理大批量的数据,我们需要使用分页参数 `page_size` 和 `page_no`。这些参数可以确保我们能够逐页获取所有符合条件的数据。 #### 数据请求与清洗 在完成接口调用配置后,我们可以通过轻易云平台发送请求并接收响应数据。以下是一个典型的请求示例: ```json { ... { start_time: '2023-01-01 00:00:00', end_time: '2023-01-31 23:59:59', status: '110', order_type: '7', page_size: '50', page_no: '0' } } ``` 响应数据通常会包含多个字段,如出库单号、仓库编号、店铺编号等。在接收到响应后,我们需要对数据进行清洗和转换,以便后续写入目标系统。例如: ```json { stockout_id: '12345', order_no: 'SO202301010001', warehouse_no: 'WH001', shop_no: 'SHOP001', ... } ``` #### 数据转换与写入 在清洗完毕后,我们需要将数据转换为目标系统所需的格式,并通过相应的API接口写入目标系统。例如,将清洗后的出库单数据写入金蝶系统中的其他出库单模块。 ```json { stockout_id: '12345', order_no: 'SO202301010001', warehouse_code: 'WH001', shop_code: 'SHOP001', ... } ``` #### 自动填充响应 为了简化操作和提高效率,可以启用自动填充响应功能(autoFillResponse)。该功能会根据预定义的规则自动填充部分字段,从而减少手动干预,提高集成效率。 通过上述步骤,我们实现了从旺店通·企业奇门接口获取并加工出库单数据,并将其无缝集成到目标系统中。这一过程不仅提高了业务透明度和效率,还确保了数据的一致性和准确性。 ![如何对接金蝶云星空API接口](https://pic.qeasy.cloud/S14.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口 在数据集成生命周期的第二步中,我们将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将详细介绍如何配置元数据并实现这一过程。 #### 配置元数据 首先,我们需要根据提供的元数据配置来定义如何将源平台的数据转换为金蝶云星空API接口所需的格式。以下是关键字段和其配置解析: 1. **单据编号 (FBillNo)** - 字段类型:字符串 - 描述:单据编号 - 映射值:`{order_no}` 2. **单据类型 (FBillTypeID)** - 字段类型:字符串 - 描述:标准其他出库单:QTCKD01_SYS - 解析器:`ConvertObjectParser` - 参数:`FNumber` - 固定值:`QTCKD01_SYS` 3. **库存组织 (FStockOrgId)** - 字段类型:字符串 - 描述:组织 - 解析器:`ConvertObjectParser` - 参数:`FNumber` - 固定值:`100` 4. **领用组织 (FPickOrgId)** - 字段类型:字符串 - 描述:领用组织 - 解析器:`ConvertObjectParser` - 参数:`FNumber` - 固定值:`100` 5. **库存方向 (FStockDirect)** - 字段类型:字符串 - 描述:库存方向 - 固定值:`GENERAL` 6. **日期 (FDate)** - 字段类型:字符串 - 描述:日期 - 映射值:`{consign_time}` 7. **领料部门 (FDeptId)** - 字段类型:字符串 - 描述:基础资料 - 解析器:`ConvertObjectParser` - 参数:`FNumber` - 固定值:`BM000003` 8. **货主类型 (FOwnerTypeIdHead)** ... #### 数据转换与写入 在完成元数据配置后,我们需要使用轻易云平台提供的API接口进行数据转换和写入。以下是具体步骤: 1. **准备请求体** 根据元数据配置,构建请求体,将源平台的数据映射到目标平台所需的格式。例如: ```json { "FormId": "STK_MisDelivery", "IsAutoSubmitAndAudit": false, "IsVerifyBaseDataField": true, "Operation": "Save", "InterationFlags": "STK_InvCheckResult", "Model": { "FBillNo": "{order_no}", "FBillTypeID": {"FNumber": "QTCKD01_SYS"}, "FStockOrgId": {"FNumber": "100"}, ... "FEntity": [ { "FMaterialId": {"FNumber": "{{details_list.spec_no}}"}, ... } ] } } ``` 2. **发送请求** 通过HTTP POST方法,将构建好的请求体发送到金蝶云星空API接口。 ```python import requests url = 'https://api.kingdee.com/batchSave' headers = {'Content-Type': 'application/json'} data = { # 构建好的请求体内容 } response = requests.post(url, headers=headers, json=data) if response.status_code == 200: print("Data successfully written to Kingdee Cloud.") else: print(f"Failed to write data: {response.text}") ``` 3. **处理响应** 根据API返回的响应,判断数据是否成功写入,并处理可能出现的错误信息。 ```python if response.status_code == 200: result = response.json() if result.get('Result', {}).get('ResponseStatus', {}).get('IsSuccess'): print("Data successfully written to Kingdee Cloud.") else: print(f"Failed to write data: {result.get('Result', {}).get('ResponseStatus', {}).get('Errors')}") else: print(f"HTTP Error: {response.status_code}") ``` #### 注意事项 1. **字段映射** 确保所有字段都正确映射,并且源平台的数据格式符合目标平台的要求。例如,日期格式、数值精度等。 2. **错误处理** 在实际操作中,可能会遇到各种错误,如网络问题、字段验证失败等。需要在代码中加入充分的错误处理机制,以便及时发现并解决问题。 通过以上步骤,我们可以实现从源平台到金蝶云星空API接口的数据ETL转换和写入。这不仅提高了数据处理效率,还确保了数据的一致性和准确性。 ![如何对接企业微信API接口](https://pic.qeasy.cloud/T6.png~tplv-syqr462i7n-qeasy.image)