金蝶云星空数据如何高效同步至旺店通

  • 轻易云集成顾问-吴伟
### 案例分享:金蝶云星空数据集成到旺店通·企业奇门 在本次技术案例中,我们将深入探讨如何实现“物料同步到旺店通”的系统对接方案,即通过轻易云数据集成平台,将金蝶云星空的数据高效、安全地传输并写入到旺店通·企业奇门。在这个过程中,主要涉及两个关键API接口:金蝶云星空的数据获取接口`executeBillQuery`和旺店通·企业奇门的数据写入接口`wdt.goods.push`。 首先,为确保从金蝶云星空获取的物料数据不漏单,我们采用了定时调度的方法,通过轻易云平台的计划任务功能,定时可靠地调用金蝶云星空的`executeBillQuery`接口,抓取最新的数据。此过程中的分页处理和限流问题尤为重要,为保证系统稳定性和效率,需要精确控制每次调用的请求数量,并及时处理分页信息,以完整、无遗漏地同步所有物料记录。 其次,在大量数据快速写入到旺店通·企业奇门方面,我们设计了一套批量数据提交机制。利用轻易云提供的批量操作特性,可以有效减少API调用次数,提高整体传输速度。同时,通过对接异常处理与错误重试机制,确保在任何网络波动或响应异常情况下,数据都能够被正确地推送至目标平台,而不会导致重复或遗漏的问题。 最后,由于这两个系统间存在一定的数据格式差异,我们在集成中提前进行了周密的格式映射转换工作。这步操作不仅包括字段名称、类型和内容上的转换,还涵盖了必要的业务逻辑校验,从而保障整个流程顺畅无阻。例如,对于某些必填字段以及数值范围限定等要求,都做了相应的规则配置及校正,以适配双方系统规范。 通过这些关键技术措施,有效解决了跨平台之间复杂多样的数据交互难题,使得从金蝶云星空到旺店通·企业奇门的物料同步过程更加智能化、高效化。本篇文章将继续详细说明具体实施步骤及相关代码示例。 ![金蝶与外部系统打通接口](https://pic.qeasy.cloud/D3.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,第一步是从源系统获取数据,并进行初步的清洗和加工。本文将详细探讨如何通过调用金蝶云星空的`executeBillQuery`接口来实现这一过程。 #### 接口概述 金蝶云星空提供了丰富的API接口,其中`executeBillQuery`用于查询单据数据。该接口支持POST请求,能够根据指定条件查询物料信息,并返回相应的数据集。以下是元数据配置中的关键字段: - **api**: `executeBillQuery` - **method**: `POST` - **FormId**: `BD_MATERIAL`(物料表单ID) - **FieldKeys**: 查询字段列表 - **FilterString**: 过滤条件 - **Limit**: 分页参数,每页记录数 - **StartRow**: 分页参数,起始行 #### 请求参数配置 根据元数据配置,我们需要构造一个POST请求,包含以下主要参数: 1. **FormId**:指定要查询的表单ID,这里为`BD_MATERIAL`。 2. **FieldKeys**:指定要查询的字段列表。 3. **FilterString**:过滤条件,用于筛选符合条件的数据。 4. **Limit**和**StartRow**:分页参数,用于控制每次查询的数据量。 以下是一个示例请求体: ```json { "FormId": "BD_MATERIAL", "FieldKeys": [ "FMATERIALID", "FNumber", "FName", "FSpecification", "FOldNumber", "FBARCODE", "FDescription", "FMaterialGroup.FNumber", // 其他字段省略... ], "FilterString": "FApproveDate>='2023-01-01' and FCreateOrgId.FNumber='001'", "Limit": 100, "StartRow": 0 } ``` #### 数据清洗与加工 获取到原始数据后,需要对其进行清洗和加工,以便后续处理。常见的清洗操作包括: 1. **去除无效数据**:过滤掉不符合业务需求的数据,例如状态为“禁用”的物料。 2. **格式转换**:将日期、数值等字段转换为标准格式。 3. **字段映射**:将源系统的字段名映射为目标系统所需的字段名。 以下是一个简单的数据清洗示例: ```python def clean_data(raw_data): cleaned_data = [] for item in raw_data: if item['FDocumentStatus'] != 'C': continue cleaned_item = { 'material_id': item['FMATERIALID'], 'number': item['FNumber'], 'name': item['FName'], 'specification': item['FSpecification'], 'barcode': item['FBARCODE'], 'description': item['FDescription'], // 其他字段省略... } cleaned_data.append(cleaned_item) return cleaned_data ``` #### 实际案例 假设我们需要将金蝶云星空中的物料信息同步到旺店通系统,首先通过调用`executeBillQuery`接口获取物料数据,然后对数据进行清洗和加工,最后将处理后的数据写入旺店通。 1. **调用API获取数据** ```python import requests url = 'https://api.kingdee.com/executeBillQuery' headers = {'Content-Type': 'application/json'} payload = { "FormId": "BD_MATERIAL", "FieldKeys": ["FMATERIALID", "FNumber", "FName", ...], "FilterString": "FApproveDate>='2023-01-01' and FCreateOrgId.FNumber='001'", "Limit": 100, "StartRow": 0 } response = requests.post(url, headers=headers, json=payload) raw_data = response.json() ``` 2. **清洗与加工数据** ```python cleaned_data = clean_data(raw_data) ``` 3. **写入目标系统** ```python for item in cleaned_data: # 构造旺店通API请求体 wd_payload = { 'material_id': item['material_id'], 'number': item['number'], 'name': item['name'], ... } wd_response = requests.post('https://api.wdt.com/syncMaterial', json=wd_payload) ``` 通过上述步骤,我们实现了从金蝶云星空获取物料信息并同步到旺店通系统。这一过程展示了如何利用轻易云平台提供的全生命周期管理功能,实现不同系统间的数据无缝对接。 ![用友与外部系统接口集成开发](https://pic.qeasy.cloud/S11.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现物料同步到旺店通 在数据集成生命周期的第二步中,我们将重点探讨如何将已经集成的源平台数据进行ETL转换,转为目标平台旺店通·企业奇门API接口所能够接收的格式,并最终写入目标平台。本文将详细介绍如何配置和使用元数据,以实现这一过程。 #### 元数据配置解析 我们使用的元数据配置如下: ```json { "api": "wdt.goods.push", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "goods_list", "label": "货品节点", "type": "array", "value": "skus", "children": [ {"field": "goods_no", "label": "商品编码", "type": "string", "value": "{FNumber}"}, {"field": "goods_name", "label": "货品名称", "type": "string", "value": "{FName}"}, {"field": "short_name", "label": "货品简称", "type": "string", "value": "{FName}"}, {"field": "alias", "label": "别名", "type": "string", "value": "{FName}"}, {"field": "unit_name", "label": "基本单位", ![企业微信与OA系统接口开发配置](https://pic.qeasy.cloud/T16.png~tplv-syqr462i7n-qeasy.image)