使用轻易云平台完成金蝶收料通知单到旺店通的ETL转换流程

  • 轻易云集成顾问-蔡威
### 金蝶收料通知单-旺店通收料通知: 实现高效系统对接的技术解析 在本案例中,我们将深入探讨如何通过系统集成平台,实现金蝶云星空的数据无缝对接到旺店通·企业奇门,特别是关于“金蝶收料通知单-旺店通收料通知”的具体实施方法。 **确保数据不漏单** 首先,在执行从金蝶云星空接口获取数据的过程中,我们需要保证每一条重要的业务数据都不会遗漏。这主要依赖于调用`executeBillQuery`接口,精确抓取每个时间段内新增或变动的数据。通过定时任务调度机制,能够可靠地从金蝶云星空提取需要同步的数据,并对已处理记录进行标记和日志留存,从而实现全业务周期上的透明追踪和管理。 **大量数据快速写入** 为了应对大批量的数据同步需求,对接过程中涉及使用`wdt.purchase.order.push`接口,大容量、批量式地将数据快速写入到旺店通·企业奇门。在实际运行方案中,通过合理配置并行处理进程以及优化网络传输策略,很好地提高了整体效率。同时,为保障高速输入环境下的稳定性,需要特别关注API限流及容错处理机制。 **分页与限流问题** 处理来自金蝶云星空的大量数据时,不可避免地会遇到分页和限流问题。针对这一点,可采用分段拉取、逐页提交的方法,每次只请求一定数量的数据,以防止超出API限制导致请求失败。此外,为提升安全性,还可以加入动态调整参数,根据响应速度和网络状况实时调整查询频率与页大小,从而更稳定高效地完成大规模数据集成任务。 在后续部分,我们将详细介绍如何调用上述API并进行必要的数据格式转换,以及其他关键技术细节以实现两端系统间顺畅交互。 ![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/D4.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来获取收料通知单数据,并进行初步加工。 #### 接口配置与调用 首先,我们需要配置并调用金蝶云星空的`executeBillQuery`接口。该接口采用POST方法,通过传递特定的参数来查询收料通知单的数据。以下是关键的元数据配置: ```json { "api": "executeBillQuery", "method": "POST", "number": "FBillNo", "id": "FDetailEntity_FEntryID", "pagination": { "pageSize": 500 }, "idCheck": true, "condition_bk": [ [ { "field": "FBillNo", "logic": "eqv2", "value": null } ], [], [] ], ... } ``` #### 请求参数详解 在请求参数中,我们需要特别关注以下几个字段: - `FormId`: 表单ID,必须填写金蝶的表单ID,例如`PUR_ReceiveBill`。 - `FieldKeys`: 查询字段集合,指定我们需要从金蝶系统中获取的字段。 - `FilterString`: 过滤条件,用于筛选符合条件的数据,例如根据供应商编号和审核日期进行过滤。 以下是一个示例请求体: ```json { "FormId": "PUR_ReceiveBill", "FieldKeys": [ "FBillNo", "FDocumentStatus", ... ], "FilterString": "FApproveDate>='2023-01-01' and FMATERIALID.F_POIH_Combo = 1", ... } ``` #### 数据清洗与加工 在成功获取到原始数据后,我们需要对数据进行清洗和初步加工,以便后续的数据转换与写入步骤。以下是一些常见的数据清洗操作: 1. **字段映射**:将金蝶系统中的字段映射到目标系统所需的字段。例如,将`FBillNo`映射为目标系统中的订单编号。 2. **数据类型转换**:确保所有字段的数据类型符合目标系统的要求。例如,将日期字符串转换为标准日期格式。 3. **去重处理**:如果存在重复记录,需要进行去重处理,以确保数据的一致性和准确性。 #### 示例代码 以下是一个示例代码片段,用于调用`executeBillQuery`接口并进行初步的数据清洗: ```python import requests import json # 配置请求头和URL url = 'https://api.kingdee.com/executeBillQuery' headers = {'Content-Type': 'application/json'} # 构建请求体 payload = { 'FormId': 'PUR_ReceiveBill', 'FieldKeys': 'FBillNo,FDocumentStatus,FMaterialId.fnumber,...', 'FilterString': 'FApproveDate>="2023-01-01" and FMATERIALID.F_POIH_Combo = 1', ... } # 发起POST请求 response = requests.post(url, headers=headers, data=json.dumps(payload)) # 检查响应状态码 if response.status_code == 200: data = response.json() # 数据清洗与加工 cleaned_data = [] for record in data: cleaned_record = { '订单编号': record['FBillNo'], '单据状态': record['FDocumentStatus'], ... } cleaned_data.append(cleaned_record) # 输出清洗后的数据 print(json.dumps(cleaned_data, indent=4)) else: print(f"请求失败,状态码: {response.status_code}") ``` 通过上述步骤,我们可以高效地从金蝶云星空获取所需的收料通知单数据,并进行初步加工,为后续的数据转换与写入做好准备。这不仅提高了数据处理的效率,也确保了数据的一致性和准确性。 ![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/S15.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现金蝶收料通知单到旺店通·企业奇门的ETL转换 在数据集成过程中,将金蝶收料通知单的数据转换为旺店通·企业奇门API接口所能接收的格式是一个关键步骤。本文将详细探讨如何利用轻易云数据集成平台完成这一ETL(提取、转换、加载)过程。 #### 数据提取与清洗 首先,我们从金蝶系统中提取收料通知单的数据。假设我们已经完成了数据的提取和初步清洗,接下来需要进行数据转换和写入目标平台的操作。 #### 数据转换与写入 在轻易云数据集成平台上,我们需要配置元数据以确保数据能够正确地映射到旺店通·企业奇门API接口。以下是具体的元数据配置和操作步骤: 1. **API接口配置** 我们使用的API接口为`wdt.purchase.order.push`,请求方法为`POST`。此接口用于将采购订单推送到旺店通系统。 2. **字段映射** 根据提供的元数据配置,我们需要将金蝶系统中的字段映射到旺店通API所需的字段。以下是主要字段的映射关系: - `FBillNo` -> `outer_no` - `FDate` -> `expect_arrive_time` - `FStockID` -> `warehouse_no` - `FNote` -> `remark` - `FSupplierId` -> `provider_no` 3. **请求参数配置** 请求参数分为一级节点和二级节点,分别对应采购单的整体信息和明细信息。 - 一级节点(采购单整体信息): ```json [ {"field":"provider_no","value":"{FSupplierId}"}, {"field":"warehouse_no","value":"{FStockID}"}, {"field":"outer_no","value":"{FBillNo}"}, {"field":"remark","value":"{FNote}"} ] ``` - 二级节点(采购单明细信息): ```json [ {"field":"spec_no","value":"{FMaterialId}"}, {"field":"num","value":"{FActReceiveQty}"}, {"field":"price","value":"{FPrice}"}, {"field":"tax","value":"{FEntryTaxRate}"} ] ``` 4. **元数据配置示例** 以下是完整的元数据配置示例: ```json { "api": "wdt.purchase.order.push", "method": "POST", "idCheck": true, "operation": { "method": "merge", "field": "FBillNo", "bodyName": "details", "bodySum": [], "header": ["FBillNo", "FDate", "FStockID", "FNote", "FSupplierId", "FSrcBillNo"], "body": ["FMaterialId", "FActReceiveQty", "FPrice", "FEntryTaxRate"] }, "request": [ {"field": "provider_no", "label": "供应商编号", "type": "string", "describe": "", "value": "{FSupplierId}"}, {"field": "warehouse_no", "label": "", ... }, ... { ... ... ... { ... ... ... { ... ... ... { ... ... ... { ... ... ... { ... ... ... { ... ... ... { ... ... ... { ... ... ... { ... ... ... { ... ... ... { ... ... ... { ... ... ... { ... ... ... { ... ... ... { ... ... ... { ... ... ... { ... ... ... { ... ... ... { ... ... ... { ... ... ... { ... ... ... { ... ... ... { ... ... ... { ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ![用友BIP接口开发配置](https://pic.qeasy.cloud/T3.png~tplv-syqr462i7n-qeasy.image)