调用金蝶云executeBillQuery接口获取采购退料单数据详细教程

  • 轻易云集成顾问-潘裕
### 金蝶云星空数据集成到旺店通·旗舰版:标准-金蝶-采购退料单——>旺店通-自流转退(外仓调整) 在这篇技术文章中,我们将深入探讨如何通过API接口,将金蝶云星空中的“采购退料单”数据高效集成至旺店通·旗舰版,以实现业务系统间的数据协同和自动化处理。本次案例的实施方案为“标准-金蝶-采购退料单——>旺店通-自流转退(外仓调整)”,我们主要聚焦于以下几个关键技术环节。 首先,为确保从金蝶云星空获取的数据完整且不漏单,调用其executeBillQuery API接口是基础。这个接口允许我们定时抓取并分页处理大量的采购退料单数据。同时,为了避免系统负载过高而导致请求限流,我们必须设计一个合理的限速机制,并对可能发生的网络抖动进行异常处理与重试机制,实现连续稳定的数据传输。 接着便是大规模数据导入至目标系统,即通过调用wms.outer.OuterOut.createOrder API向旺店通·旗舰版写入自流转退(外仓调整)订单。这项操作需要特别关注两个方面:一是批量数据的快速写入性能优化;二是确保两端系统之间的数据格式一致性。在这里,自定义映射规则尤为重要,它直接影响到后续流程是否能够顺利执行。必要时,我们还会结合轻易云平台提供的一些实时监控工具,对整个过程进行日志记录和状态追踪,做到有问题及时发现、迅速解决。 最后,在整个对接过程中,不可避免地涉及到不同系统API返回结果及错误码解析。对此,通过构建鲁棒性的异常处理逻辑来完成可靠性验证,包括针对特定错误码触发重试等动作,这既提高了成功率,也保障了业务链条的连续性和稳定运行。 以上只是本案例技术实操中的核心片段,后续部分将详述每个具体步骤与实现细节,包括如何编写实际调用代码、设置参数以及调优建议等内容。 ![如何对接钉钉API接口](https://pic.qeasy.cloud/D16.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,第一步是调用源系统接口获取数据。在本文中,我们将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来获取采购退料单的数据,并对其进行初步加工。 #### 接口配置 首先,我们需要了解`executeBillQuery`接口的基本配置。根据提供的元数据配置,接口的主要参数如下: - **API**: `executeBillQuery` - **Method**: `POST` - **Effect**: `QUERY` - **FormId**: `PUR_MRB` 这些参数定义了我们将要调用的具体API和其操作方式。 #### 请求参数 为了成功调用该接口,我们需要构建请求参数。以下是关键字段及其描述: 1. **FPURMRBENTRY_FEntryID**: 明细信息ID 2. **FID**: 实体主键 3. **FBillNo**: 单据编号 4. **FDocumentStatus**: 单据状态(Z:暂存,A:创建,B:审核中,C:已审核) 5. **FStockOrgId_FNumber**: 退料组织 6. **FDate**: 退料日期 7. **FBillTypeID_FNumber**: 单据类型(如标准退料单、零散采购退料单等) 8. **FSupplierID_FNumber**: 供应商 9. **FApproveDate**: 审核日期 这些字段是我们在请求中必须包含的,以确保能够准确地查询到所需的数据。 #### 构建请求体 根据元数据配置,我们可以构建如下的请求体: ```json { "FormId": "PUR_MRB", "FieldKeys": [ "FPURMRBENTRY_FEntryID", "FID", "FBillNo", "FDocumentStatus", "FStockOrgId.FNumber", "FDate", "FBillTypeID.FNumber", "FSupplierID.FName", "FApproveDate" ], "FilterString": "FApproveDate>='2023-01-01' and FStockOrgId.FNumber='101'", "Limit": 100, "StartRow": 0, "TopRowCount": true } ``` 在这个请求体中: - `FormId`指定了业务对象表单ID。 - `FieldKeys`列出了需要查询的字段集合。 - `FilterString`用于过滤条件,这里示例为查询2023年1月1日之后审核通过且退料组织编号为101的数据。 - `Limit`和`StartRow`用于分页查询。 #### 调用API 使用轻易云平台,我们可以通过可视化界面或编写脚本来发送上述请求。以下是一个简单的Python示例,展示如何使用HTTP库进行API调用: ```python import requests url = 'https://api.kingdee.com/executeBillQuery' headers = { 'Content-Type': 'application/json', } data = { "FormId": "PUR_MRB", "FieldKeys": [ "FPURMRBENTRY_FEntryID", "FID", "FBillNo", ... ], ... } response = requests.post(url, headers=headers, json=data) if response.status_code == 200: result = response.json() # 对结果进行处理 else: print(f"Error {response.status_code}: {response.text}") ``` #### 数据加工 获取到原始数据后,需要对其进行初步加工,以便后续的数据转换与写入。例如,可以对日期格式进行标准化处理,对数值字段进行单位转换等。以下是一个简单的数据加工示例: ```python import pandas as pd # 假设result是从API获取到的数据列表 df = pd.DataFrame(result) # 日期格式标准化 df['FDate'] = pd.to_datetime(df['FDate']) # 数值字段单位转换(如金额从分到元) df['FBillAmount'] = df['FBillAmount'] / 100 # 输出处理后的数据框 print(df) ``` 通过上述步骤,我们完成了从金蝶云星空获取采购退料单数据并进行初步加工。这为后续的数据转换与写入奠定了基础。 ![打通企业微信数据接口](https://pic.qeasy.cloud/S25.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台:将源平台数据ETL转换并写入旺店通·旗舰版API接口 在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台所能够接收的格式。本文将详细探讨如何使用轻易云数据集成平台,将金蝶系统中的采购退料单数据转换为旺店通·旗舰版API接口所需的格式,并最终写入目标平台。 #### API接口配置 首先,我们需要了解目标平台——旺店通·旗舰版API接口的配置。根据元数据配置,API接口为`wms.outer.OuterOut.createOrder`,使用POST方法提交请求,并且需要进行ID检查。 以下是详细的请求字段说明: - **单据头(order)**: - `order_no`:外部单号,对应金蝶系统中的`FBillNo` - `warehouse_no`:仓库编号,对应金蝶系统中的`FSTOCKID_FNumber` - `reason`:出库原因,固定值为“采购退料出库” - `remark`:备注,包含供应商信息和描述,对应金蝶系统中的`FSupplierID_FNumber`和`FDESCRIPTION` - **单据明细(order_details)**: - `spec_no`:商家编码,对应金蝶系统中的`FMATERIALID_FNumber` - `num`:数量,对应金蝶系统中的`FRMREALQTY` - `remark`:明细备注,对应金蝶系统中的`FNOTE` - **是否审核(is_check)**:固定值为true #### 数据转换与写入 在轻易云数据集成平台中,我们可以通过配置元数据来实现上述字段的映射和转换。具体步骤如下: 1. **定义请求结构**: 根据元数据配置,我们需要定义一个包含单据头和单据明细的请求结构。单据头是一个对象,包含多个字段;单据明细是一个数组,每个元素也是一个对象。 2. **字段映射与值替换**: 在定义好请求结构后,需要将金蝶系统中的字段映射到对应的API字段。例如,将金蝶系统中的`FBillNo`映射到API字段`order_no`,并设置其值为金蝶系统中的实际值。 3. **聚合计算**: 对于需要进行聚合计算的字段,如数量(FRMREALQTY),我们可以使用元数据配置中的计算规则,将其求和后传递给API接口。 4. **生成请求模型**: 配置完成后,通过轻易云数据集成平台生成最终的请求模型,并确保其符合API接口要求。 以下是一个示例代码片段,用于展示如何通过轻易云数据集成平台实现上述过程: ```json { "api": "wms.outer.OuterOut.createOrder", "method": "POST", "request": { "order": { "order_no": "{FBillNo}", "warehouse_no": "{FSTOCKID_FNumber}", "reason": "采购退料出库", "remark": "供应商:{FSupplierID_FNumber} {FDESCRIPTION}" }, "order_details": [ { "spec_no": "{FMATERIALID_FNumber}", "num": "{FRMREALQTY}", "remark": "{FNOTE}" } ], "is_check": true } } ``` #### 实际应用案例 假设我们从金蝶系统中获取了一条采购退料单,其主要字段如下: - FBillNo: 'PO123456' - FSTOCKID_FNumber: 'WH001' - FSupplierID_FNumber: 'SUP123' - FDESCRIPTION: '退货描述' - FMATERIALID_FNumber: 'MAT001' - FRMREALQTY: '10' - FNOTE: '无' 根据上述配置,我们可以生成如下请求体: ```json { "api": "wms.outer.OuterOut.createOrder", "method": "POST", "request": { "order": { "order_no": "PO123456", "warehouse_no": "WH001", "reason": "采购退料出库", "remark": "供应商:SUP123 退货描述" }, "order_details": [ { "spec_no": "MAT001", "num": "10", "remark": "无" } ], "is_check": true } } ``` 通过轻易云数据集成平台,我们可以将上述请求体发送到旺店通·旗舰版API接口,实现从金蝶系统到旺店通·旗舰版的数据无缝对接。这不仅简化了数据处理流程,还大大提高了业务效率和准确性。 ![金蝶与CRM系统接口开发配置](https://pic.qeasy.cloud/T6.png~tplv-syqr462i7n-qeasy.image)