使用轻易云平台实现金蝶云和旺店通的数据转换与写入

  • 轻易云集成顾问-贺强
### 金蝶云星空与旺店通·企业奇门系统集成技术案例分享 在当前复杂的商业环境中,数据孤岛是影响业务效率的主要障碍之一。本文将剖析如何通过轻易云数据集成平台,实现金蝶云星空与旺店通·企业奇门之间的数据无缝对接,具体案例为物料对接==>金蝶—旺店通。 #### 确保集成金蝶云星空数据不漏单 首先,我们需要确保从金蝶云星空获取的数据完整无误,不出现漏单情况。通过调用executeBillQuery接口,可以实现对物料数据的精准抓取。我们配置了定时任务,每隔一定时间自动抓取最新的物料信息,并且设置起始和结束时间参数以保证覆盖所有必要的数据范围。此外,通过分页处理机制优化接口调用,有效避免因批量请求导致的数据遗漏或超时问题。 ```json { "service": "/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery.common.kdsvc", "parameters": { "formId": "BOS_Item", "fieldKeys": ["FNumber", "FName", "FModel"], "filterString": "", "topRowCount": 100, ... } } ``` #### 大量数据快速写入到旺店通·企业奇门 获取到所需的物料信息后,下一步就是将这些数据高效地推送至旺店通·企业奇门系统。这一过程由wdt.goods.push接口承担,它支持批量提交操作,大幅提升了传输效率。同时,我们还引入了异步处理模式,进一步缩短响应时间,使大量物料信息得以迅速同步。 ```json { "method" : "/v2/api/wdt.goods.push", "params" : { ... // Parameters mapping from 金蝶 to 旺店通 ... } } ``` #### 数据格式差异及映射处理 由于金蝶云星空和旺店通·企业奇门两者在字段命名、类型上存在差异,我们必须进行必要的数据格式转换。例如,将金蝶中的“FNumber”映射为统一规范化后的商品编号。在这一环节,通过自定义规则,对不同字段进行灵活转换,以确保各个系统之间完美匹配。 ```python # Pseudocode for data transformation data_from_kingdee = get_data_from_kingdee() transformed_data = [] for item in data_from_kingdee: transformed_item = { 'product_id': item['FNumber'], 'name': item['FName'], 'model': item['FModel'] # Additional mappings... } transformed_data ![电商OMS与ERP系统接口开发配置](https://pic.qeasy.cloud/D25.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,第一步是从源系统调用接口获取数据。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来获取物料数据,并进行初步加工。 #### 接口配置与调用 首先,我们需要配置并调用金蝶云星空的`executeBillQuery`接口。该接口采用POST方法进行请求,主要用于查询业务对象的数据。以下是元数据配置中的关键字段及其含义: - **api**: `executeBillQuery` - **method**: `POST` - **effect**: `QUERY` - **number**: `FNumber` - **id**: `FMasterId` - **name**: `FNumber` - **idCheck**: `true` 这些字段定义了API的基本信息和操作方式。 #### 请求参数配置 请求参数是接口调用的核心部分,决定了我们能获取到哪些数据。以下是元数据配置中的请求参数示例: ```json [ {"field":"FMasterId","label":"id","type":"string","describe":"id","value":"FMasterId"}, {"field":"FNumber","label":"编码","type":"string","describe":"编码","value":"FNumber"}, {"field":"FName","label":"名称","type":"string","describe":"名称","value":"FName"}, {"field":"FSpecification","label":"规格型号","type":"string","describe":"规格型号","value":"FSpecification"}, {"field":"FOldNumber","label":"旧物料编码","type":"string","describe":"旧物料编码","value":"FOldNumber"}, {"field":"FDescription","label":"描述","type":"string","describe":"描述","value":"FDescription"}, {"field":"FMaterialGroup_FNumber","label":"物料分组","type":"string","describe":"物料分组","value":"FMaterialGroup.FNumber"}, {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "2000"}, {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"}, {"field": "FilterString", "label": "过滤条件", "type": "string", "describe": "", "value": "Fapprovedate>='{{LAST_SYNC_TIME|datetime}}' and FMaterialGroup.FNumber='01.02' and FUseOrgId.fnumber='100' and FDocumentStatus='C'"} ] ``` 这些字段定义了需要查询的数据项及其属性,例如物料编码、名称、规格型号等。同时,通过`FilterString`字段可以设置过滤条件,以确保只获取符合条件的数据。 #### 数据清洗与转换 在获取到原始数据后,需要对其进行清洗和转换,以便后续处理和写入目标系统。以下是一些常见的数据清洗与转换操作: 1. **字段映射**:将源系统中的字段映射到目标系统中对应的字段。例如,将金蝶中的`FNumber`映射到目标系统中的`material_code`。 2. **数据格式转换**:将日期、数值等字段转换为目标系统所需的格式。例如,将日期格式从`YYYY-MM-DD`转换为`MM/DD/YYYY`。 3. **缺失值处理**:处理缺失或异常值,例如用默认值填充缺失字段或删除包含异常值的记录。 #### 示例代码 以下是一个简单的Python示例代码,用于调用金蝶云星空的`executeBillQuery`接口并进行初步的数据清洗和转换: ```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': 'BD_MATERIAL', 'FieldKeys': 'FMasterId,FNumber,FName,FSpecification,FOldNumber,FDescription,FMaterialGroup.FNumber', 'FilterString': "Fapprovedate>='2023-01-01' and FMaterialGroup.FNumber='01.02' and FUseOrgId.fnumber='100' and FDocumentStatus='C'", 'Limit': 2000, 'StartRow': 0 } # 发送POST请求 response = requests.post(url, headers=headers, data=json.dumps(payload)) # 检查响应状态码 if response.status_code == 200: data = response.json() # 数据清洗与转换 cleaned_data = [] for item in data: cleaned_item = { 'material_id': item['FMasterId'], 'material_code': item['FNumber'], 'material_name': item['FName'], 'specification': item['FSpecification'], # 添加更多字段映射和转换逻辑 } cleaned_data.append(cleaned_item) # 输出清洗后的数据 print(json.dumps(cleaned_data, indent=4)) else: print(f"Error: {response.status_code}, {response.text}") ``` 以上代码展示了如何通过API请求获取金蝶云星空的数据,并对其进行初步清洗和转换。实际应用中,可以根据具体需求进一步完善数据处理逻辑。 通过上述步骤,我们可以高效地从源系统获取并加工数据,为后续的数据写入和集成奠定基础。 ![金蝶云星空API接口配置](https://pic.qeasy.cloud/S6.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将源数据转换并写入旺店通·企业奇门API接口 在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是至关重要的一步。本文将详细介绍如何利用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并转为目标平台——旺店通·企业奇门API接口所能够接收的格式,最终写入目标平台。 #### 数据请求与清洗 在开始ETL转换之前,首先需要从源系统中请求并清洗数据。假设我们从金蝶系统中提取了物料信息,这些信息包括物料编号(FNumber)、物料名称(FName)等。通过轻易云的数据请求模块,我们可以获取到这些原始数据,并进行初步的清洗和验证,以确保数据的准确性和完整性。 #### 数据转换与写入 接下来,我们进入本文的重点——将清洗后的数据进行转换,并通过旺店通·企业奇门API接口写入目标系统。以下是具体步骤和技术细节: ##### 1. 配置元数据 根据提供的元数据配置,我们需要将源系统的数据字段映射到目标系统所需的字段格式。以下是配置示例: ```json { "api": "wdt.goods.push", "effect": "EXECUTE", "method": "POST", "number": "1", "id": "1", "name": "1", "idCheck": true, "request": [ { "field": "goods_list", "label": "货品节点", "type": "array", "describe": "货品表主键", "children": [ { "field": "goods_no", "label": "货品编号", "type": "string", "describe": "代表货品(spu)所有属性的唯一编号,用于系统货品区分,SPU概念介绍,单击这里", "value": "{FNumber}" }, { ... } ] } ], ... } ``` 在这个配置中,我们定义了一个主要的数据节点 `goods_list`,其中包含多个子字段,如 `goods_no`、`goods_type`、`goods_name` 等。这些字段对应于源系统中的相应字段,例如 `goods_no` 对应 `FNumber`。 ##### 2. 数据映射与转换 通过轻易云的数据映射工具,我们可以将源系统的数据字段映射到目标系统所需的字段。例如: - `FNumber` 映射到 `goods_no` - `FName` 映射到 `goods_name` - `price_entity.price_retail_price` 映射到 `retail_price` 以下是一个具体的映射示例: ```json { "goods_list": [ { "goods_no": "{FNumber}", ... "spec_list": [ { ... "retail_price": "{{price_entity.price_retail_price}}" } ] } ] } ``` ##### 3. API调用与数据写入 完成数据映射后,我们使用轻易云的平台功能,通过HTTP POST方法调用旺店通·企业奇门API接口,将转换后的数据写入目标系统。以下是一个简化的API调用示例: ```http POST /api/wdt.goods.push HTTP/1.1 Host: api.wangdian.cn Content-Type: application/json { ... } ``` 在实际操作中,轻易云会自动处理API调用过程,包括参数传递、错误处理和结果返回等。 #### 实时监控与反馈 在整个ETL过程中,轻易云提供了全透明可视化的操作界面和实时监控功能,可以随时查看数据流动和处理状态。如果出现任何错误或异常,系统会及时反馈并提供详细的错误信息,以便快速定位问题并解决。 通过上述步骤,我们成功地将源平台的数据进行了ETL转换,并通过旺店通·企业奇门API接口写入了目标平台。这不仅提高了数据处理效率,还确保了业务流程的一致性和准确性。 ![轻易云数据集成平台金蝶集成接口配置](https://pic.qeasy.cloud/T18.png~tplv-syqr462i7n-qeasy.image)