数据集成生命周期:金蝶云与旺店通API接口详解

  • 轻易云集成顾问-胡秀丛
### 金蝶云星空数据集成到旺店通·企业奇门:生产退库单对接其他出库单方案 在大型企业的供应链管理中,系统之间的数据对接和实时同步至关重要。此次我们讨论的是如何通过轻易云数据集成平台,实现金蝶云星空中的生产退库单顺利对接到旺店通·企业奇门中的其他出库单。这一过程不仅要求高效稳定的接口调用,还需解决分页、限流以及数据格式差异等问题。 #### 确保集成金蝶云星空数据不漏单 为了防止漏单现象,我们利用了executeBillQuery API接口,通过设定合理的查询参数,确保每次调取的数据都完整无误。同时,结合定时任务功能,可以周期性地抓取接口数据并进行比对与校验,一旦发现异常将及时记录日志并重新尝试获取。 #### 大量数据快速写入到旺店通·企业奇门 实现快速写入是本次系统对接的重要目标之一。对于这一需求,我们使用wdt.stockout.order.push接口,将批量处理作为核心策略。在保证网络带宽充足和服务器性能优异的情况下,采用多线程或队列技术,可以显著提高大批量订单在短时间内的传输效率,同时减少因网络波动导致的数据丢失风险。 #### 调用金蝶云星空API executeBillQuery 调用executeBillQuery接口涉及分页和限流的问题,为此,我们设计了一套可扩展性强且便于维护的方法来处理这些挑战。例如,在分页参数设置上,根据业务需求合理划分页面大小;针对限流则可以引入重试机制,并封装为一个可靠的API访问模块,以应对突发状况与服务限制。 通过上述措施,不仅确保存储和同步过程毫无纰漏,而且还能最大化地提升整个流程效率。此外,对双方系统的数据映射也进行了定制化调整,使得从开始获取订单信息,到最终推送成功,每一步都能精准匹配各自平台的数据标准,从而达到真正意义上的自动化与智能化整合。 ![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/D29.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成生命周期的第一步中,调用源系统接口获取数据是至关重要的。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空接口`executeBillQuery`来获取生产退库单数据,并进行必要的数据加工。 #### 接口配置与调用 首先,我们需要配置元数据以便正确调用`executeBillQuery`接口。以下是关键的元数据配置: ```json { "api": "executeBillQuery", "effect": "QUERY", "method": "POST", "number": "FBillNo", "id": "FEntity_FEntryID", "name": "FBillNo", "idCheck": true, ... } ``` 这些配置项定义了API的基本信息,包括请求方法、主键字段等。接下来,我们需要构建请求体,以便从金蝶云星空系统中查询到所需的生产退库单数据。 #### 构建请求体 根据元数据配置,我们需要传递一系列参数来完成查询操作。以下是一个示例请求体: ```json { "FormId": "PRD_RetStock", "FieldKeys": [ "FID", "FBillNo", ... "FDocumentStatus" ], "FilterString": "FDocumentStatus='C' and FStockId.FNumber='001' and FApproveDate>='{{LAST_SYNC_TIME|dateTime}}'", "Limit": "{PAGINATION_PAGE_SIZE}", "StartRow": "{PAGINATION_START_ROW}", ... } ``` - `FormId`:指定业务对象表单ID,这里为`PRD_RetStock`。 - `FieldKeys`:需要查询的字段集合。 - `FilterString`:过滤条件,确保只获取状态为“已审核”的记录。 - `Limit`和`StartRow`:分页参数,用于控制查询结果的数量和起始位置。 #### 数据清洗与转换 在成功获取到生产退库单数据后,需要对数据进行清洗和转换,以便后续处理。以下是一些常见的数据清洗与转换操作: 1. **字段映射**:将金蝶云星空中的字段映射到目标系统所需的字段。例如,将`FBillNo`映射为目标系统中的订单编号。 2. **格式转换**:将日期格式从金蝶云星空中的格式转换为目标系统所需的格式。 3. **值替换**:根据业务规则,对某些字段值进行替换或计算。例如,将库存状态从代码转换为描述性文本。 #### 示例代码 以下是一个示例代码片段,展示如何通过轻易云平台调用金蝶云星空接口并处理返回的数据: ```python import requests import json # 配置API请求URL和头部信息 url = 'https://api.kingdee.com/executeBillQuery' headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_ACCESS_TOKEN' } # 构建请求体 payload = { 'FormId': 'PRD_RetStock', 'FieldKeys': [ 'FID', 'FBillNo', ... 'FDocumentStatus' ], 'FilterString': "FDocumentStatus='C' and FStockId.FNumber='001' and FApproveDate>='2023-01-01'", 'Limit': 100, 'StartRow': 0, } # 发起POST请求 response = requests.post(url, headers=headers, data=json.dumps(payload)) # 检查响应状态码 if response.status_code == 200: data = response.json() # 数据清洗与转换 for record in data: record['OrderNumber'] = record.pop('FBillNo') record['OrderDate'] = convert_date_format(record['FDate']) ... else: print(f"Error: {response.status_code} - {response.text}") ``` 在上述代码中,我们首先构建了API请求的URL和头部信息,然后构建了请求体并发起POST请求。在接收到响应后,对返回的数据进行了清洗和转换。 #### 总结 通过以上步骤,我们成功地调用了金蝶云星空接口`executeBillQuery`,并对返回的数据进行了必要的清洗和转换。这一步骤为后续的数据写入和进一步处理奠定了基础。在实际项目中,根据具体需求,还可以进行更多定制化的数据处理操作。 ![数据集成平台可视化配置API接口](https://pic.qeasy.cloud/S17.png~tplv-syqr462i7n-qeasy.image) ### 数据集成生命周期中的ETL转换:对接旺店通·企业奇门API接口 在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL转换,转为目标平台旺店通·企业奇门API接口所能够接收的格式,并最终写入目标平台。以下是具体操作步骤和技术细节。 #### 1. 配置API接口元数据 首先,根据提供的元数据配置,我们需要配置API接口的相关参数。以下是对`wdt.stockout.order.push` API接口的详细解析: - **API名称**: `wdt.stockout.order.push` - **请求方法**: `POST` - **是否检查ID**: `true` 请求参数包括以下字段: - `outer_no`: 外部单号,唯一标识外部系统的单据编号,避免重复推送数据。 - `warehouse_no`: 仓库编号,代表仓库所有属性的唯一编码。 - `remark`: 备注,此处固定值为"生产退库"。 - `reason`: 其他出库原因。 - `detail_list`: 货品列表节点,包含其他出库单所有货品属性信息的数据节点。 - `spec_no`: 商家编码。 - `num`: 出库数量。 - `price`: 价格。 - `batch_no`: 批次。 - `is_check`: 自动审核,固定值为"1"。 #### 2. 数据请求与清洗 在数据请求与清洗阶段,我们从源平台(如金蝶)获取原始数据,并进行必要的数据清洗和预处理。假设我们已经完成了这一步骤,并获得了如下结构的数据: ```json { "FBillNo": "12345", "FStockId": "WH001", "FMaterialId": "MAT001", "FRealQty": "10" } ``` #### 3. 数据转换与写入 接下来,我们将上述清洗后的数据按照旺店通·企业奇门API接口要求进行转换。我们需要将这些字段映射到API请求参数中,并构建最终的请求体。 ##### 请求体构建 根据元数据配置,我们可以构建如下的请求体: ```json { "outer_no": "12345", "warehouse_no": "WH001", "remark": "生产退库", "reason": "", "detail_list": [ { "spec_no": "MAT001", "num": "10", "price": "", "batch_no": "" } ], "is_check": "1" } ``` ##### 请求发送 使用HTTP POST方法,将上述请求体发送到旺店通·企业奇门API接口。以下是一个示例代码片段(使用Python和requests库): ```python import requests import json url = 'https://api.wangdian.cn/openapi2/wdt.stockout.order.push' headers = {'Content-Type': 'application/json'} payload = { 'outer_no': '12345', 'warehouse_no': 'WH001', 'remark': '生产退库', 'reason': '', 'detail_list': [ { 'spec_no': 'MAT001', 'num': '10', 'price': '', 'batch_no': '' } ], 'is_check': '1' } response = requests.post(url, headers=headers, data=json.dumps(payload)) if response.status_code == 200: print('Data successfully pushed to Wangdian Tong API') else: print('Failed to push data:', response.text) ``` #### 4. 实时监控与日志记录 为了确保数据推送过程的透明度和可靠性,我们需要实时监控API调用情况,并记录相关日志。可以通过轻易云平台提供的实时监控功能来查看每个环节的数据流动和处理状态。此外,还可以设置告警机制,当出现异常时及时通知相关人员。 通过上述步骤,我们实现了从源平台到目标平台的数据无缝对接,确保了数据的一致性和完整性。这不仅提升了业务效率,还增强了系统的稳定性和可维护性。 ![电商OMS与WMS系统接口开发配置](https://pic.qeasy.cloud/T6.png~tplv-syqr462i7n-qeasy.image)