从金蝶云星空到旺店通的ETL数据处理方法详解

  • 轻易云集成顾问-叶威宏
### 11-金蝶退料申请同步到旺店通采购退料单 在企业的供应链管理中,数据对接和集成是确保业务流程高效运转的重要环节。本案例将详细介绍如何通过轻易云数据集成平台实现金蝶云星空与旺店通·旗舰奇门的数据无缝对接,具体方案为“11-金蝶退料申请同步到旺店通采购退料单”。 #### 确保集成金蝶云星空数据不漏单 为了保证从金蝶云星空系统中提取的数据完整性,我们采用了定时可靠抓取机制。利用`executeBillQuery`接口定期拉取最新的退料申请数据。同时,通过分页处理和限流策略,有效解决了大批量数据获取过程中可能遇到的性能瓶颈问题。 #### 数据格式差异处理 由于金蝶云星空与旺店通·旗舰奇门两个系统的数据结构存在差异,在进行API调用前,需要先将金蝶返回的数据格式化为符合旺店通要求的结构。这一过程可以通过自定义映射规则来实现,使得每个字段都能准确匹配并写入目标系统。 #### 快速写入大量数据到旺店通·旗舰奇门 针对大规模数据快速导入需求,选择了分批提交的方法。使用`wdt.purchase.purchasereturn.createorder`接口,将标准化后的采购退料单信息高效地写入至旺店通系统。在此过程中,为防止因网络波动或其他异常情况导致部分订单失败,还设计了完善的错误重试机制,以保障每一笔交易能够可靠落地。 以上仅为本次技术分享开篇,为更深入了解整个实施过程以及代码示例,请继续阅读后续章节。 ![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/D38.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细介绍如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来获取退料申请单的数据,并进行初步加工。 #### 接口配置与请求参数 首先,我们需要配置调用金蝶云星空接口的元数据。根据提供的元数据配置,可以看到我们需要使用POST方法来请求`executeBillQuery`接口。以下是关键的请求参数: - **FormId**: 业务对象表单Id,必须填写金蝶的表单ID,例如:`PUR_MRAPP`。 - **FieldKeys**: 需查询的字段key集合,格式为数组。 - **FilterString**: 过滤条件,用于筛选符合条件的数据。 - **Limit**: 最大行数,用于分页查询。 - **StartRow**: 开始行索引,用于分页查询。 示例请求参数配置如下: ```json { "FormId": "PUR_MRAPP", "FieldKeys": [ "FBillNo", "FEntity_FEntryID", "FID", "FDocumentStatus", "FBillTypeID.Fnumber", ... ], "FilterString": "FApproveDate>='2023-01-01' and FDocumentStatus = 'C' and FAPPORGID.Fnumber = '100'", "Limit": 100, "StartRow": 0 } ``` #### 数据请求与清洗 在发送请求后,我们会收到一个包含多个退料申请单信息的响应。这些信息需要经过初步清洗和转换,以便后续处理。以下是几个关键字段及其处理方式: 1. **单据编号(FBillNo)**:作为唯一标识,需要确保其唯一性和完整性。 2. **单据状态(FDocumentStatus)**:需要将状态码转换为可读的状态描述,例如将“C”转换为“已审核”。 3. **申请日期(FDate)**:日期格式可能需要标准化处理,以便后续系统能够正确解析。 4. **供应商(FSUPPLIERID_Fnumber)**:供应商编码需要与目标系统中的供应商信息进行匹配。 示例代码片段如下: ```python import requests import json # 配置请求参数 payload = { "FormId": "PUR_MRAPP", "FieldKeys": ["FBillNo", "FEntity_FEntryID", "FID", ...], "FilterString": "FApproveDate>='2023-01-01' and FDocumentStatus = 'C' and FAPPORGID.Fnumber = '100'", "Limit": 100, "StartRow": 0 } # 发起POST请求 response = requests.post("https://api.kingdee.com/executeBillQuery", data=json.dumps(payload)) # 检查响应状态 if response.status_code == 200: data = response.json() # 初步清洗和转换数据 for record in data: record['FDocumentStatus'] = convert_status(record['FDocumentStatus']) record['FDate'] = standardize_date(record['FDate']) # 更多字段处理... else: print("Error:", response.status_code) ``` #### 数据转换与写入 经过初步清洗的数据,需要进一步转换以适应目标系统的数据结构。例如,将金蝶云星空中的字段名映射到目标系统中的字段名,并进行必要的数据类型转换。 示例代码片段如下: ```python def convert_to_target_format(record): return { "bill_no": record["FBillNo"], "entry_id": record["FEntity_FEntryID"], ... # 字段映射和类型转换 } # 转换后的数据集合 converted_data = [convert_to_target_format(record) for record in cleaned_data] # 将转换后的数据写入目标系统 write_to_target_system(converted_data) ``` 通过上述步骤,我们可以高效地从金蝶云星空获取退料申请单数据,并进行必要的清洗和转换,为后续的数据处理打下坚实基础。这一过程不仅提高了数据集成的效率,也确保了数据的一致性和准确性。 ![金蝶与外部系统打通接口](https://pic.qeasy.cloud/S7.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将金蝶退料申请同步到旺店通采购退料单 在数据集成过程中,ETL(提取、转换、加载)是至关重要的一环。本文将详细探讨如何使用轻易云数据集成平台将从金蝶系统提取的退料申请数据转换为旺店通·旗舰奇门API接口所能接收的格式,并最终写入目标平台。 #### API接口配置 首先,我们需要了解目标平台的API接口配置。根据提供的元数据配置,目标API接口为`wdt.purchase.purchasereturn.createorder`,请求方法为`POST`。该接口主要分为两个部分:采购退货单单据信息(orderInfo)和采购退货单明细信息(detailList)。 #### 数据映射与转换 在进行数据转换之前,需要明确源平台(金蝶系统)与目标平台(旺店通)的字段映射关系。以下是详细的字段映射和转换规则: 1. **采购退货单单据信息(orderInfo)** - **外部单号(outer_no)**:对应金蝶系统的`FBillNo` - **仓库编码(warehouse_no)**:对应金蝶系统的`FStockId_Fnumber` - **供应商编号(provider_no)**:对应金蝶系统的`FSUPPLIERID_Fnumber` - **备注(remark)**:对应金蝶系统的`FDESCRIPTION` 2. **采购退货单明细信息(detailList)** - **单品信息(spec_no)**:对应金蝶系统的`FMATERIALID_Fnumber` - **退货数量(num)**:对应金蝶系统的`FMRAPPQTY` - **折扣(discount)**:默认值为1 - **税率(tax_rate)**:默认值为0 - **单价(price)**:对应金蝶系统的`FAPPROVEPRICE_F` - **是否残次品(defect)**: 通过一个函数进行判断,如果库存状态ID (`FStockStatusId_FNumber`) 为 `KCZT01_SYS`,则表示正品,否则为残次品。 #### 配置示例 下面是具体的数据请求配置示例: ```json { "api": "wdt.purchase.purchasereturn.createorder", "method": "POST", "idCheck": true, "operation": { "method": "merge", "field": "FBillNo,FStockId_Fnumber,FSUPPLIERID_Fnumber", "bodyName": "details", "header": ["FBillNo", "FStockId_Fnumber", "FDESCRIPTION", "FSUPPLIERID_Fnumber"], "body": ["FMATERIALID_Fnumber", "FMRAPPQTY", "FAPPROVEPRICE_F", "FStockStatusId_FNumber"] }, "request": [ { "field": "orderInfo", "label": "采购退货单单据信息", "type": "object", "describe": "采购退货单单据信息", "children": [ {"field": "outer_no", "label": "外部单号", "type": "string", "describe": "", "value":"{FBillNo}", }, {"field": "warehouse_no", ... ``` #### 数据清洗与验证 在数据转换过程中,还需要进行必要的数据清洗和验证。例如: - 确保所有必填字段都有有效值。 - 验证数值类型字段是否符合预期格式。 - 对于枚举类型字段,如“是否残次品”,需要根据业务逻辑进行判断并赋值。 #### 实际操作步骤 1. **提取数据**: 从金蝶系统中提取需要同步的数据,包括采购退料申请表头和表体信息。 2. **数据清洗**: 对提取的数据进行清洗,确保所有字段符合目标API接口要求。例如,去除空格、处理特殊字符等。 3. **数据转换**: 根据上述字段映射关系,将源数据转换为目标格式。使用轻易云提供的数据转换工具,可以高效地完成这一过程。 4. **写入目标平台**: 将转换后的数据通过API接口写入旺店通·旗舰奇门。可以使用轻易云的数据加载功能,确保数据准确无误地传输到目标平台。 #### 监控与日志记录 在整个ETL过程中,需要实时监控数据流动和处理状态,并记录日志以便后续分析和问题排查。轻易云提供了完善的监控和日志功能,可以帮助我们及时发现并解决问题。 通过以上步骤,我们可以高效地将金蝶系统中的退料申请同步到旺店通,实现不同系统间的数据无缝对接,提高业务处理效率。 ![金蝶与WMS系统接口开发配置](https://pic.qeasy.cloud/T13.png~tplv-syqr462i7n-qeasy.image)