金蝶云星空与泛微OA系统的数据集成详解

  • 轻易云集成顾问-叶威宏
### 金蝶云星空数据集成到泛微OA-Http的实现方案:案例分享 在企业信息化系统对接过程中,如何高效、可靠地实现不同系统之间的数据交换与共享是一个关键挑战。本文将聚焦于一个具体的技术案例:利用轻易云数据集成平台,将金蝶云星空的数据成功集成至泛微OA-Http,具体方案名称为"SD003-(委外类)生产订单新增 金蝶=>泛微"。 首先,我们需要通过金蝶云星空提供的API接口`executeBillQuery`获取生产订单相关数据。为了确保数据无遗漏且能够及时写入到泛微OA-Http中,我们充分利用了轻易云平台支持的大量数据快速写入能力和定时可靠抓取机制。这使得我们能够应对大规模数据处理需求,并保持较高的数据一致性和实时性。 为了进一步保证集成过程的质量,整个任务还引入了集中监控和告警功能。在每一次执行操作时,可以实时跟踪API调用状态并记录详细日志,从而便于后续分析与问题排查。同时,通过自定义的数据转换逻辑,对金蝶云星空所获得的数据进行必要的格式调整,以适配泛微OA-Http API `/api/workflow/paService/doCreateRequest` 的要求。 值得一提的是,在实际操作中,我们也需特别注意解决分页与限流的问题,这是因为金蝶云星空在处理大量订单查询结果时,会返回分批次分页结果。此外,还必须针对两个系统间的不同行数值类型及字段映射要求进行细致处理,这样才能有效避免因格式差异带来的潜在错误。 通过上述方法,不仅实现了从金蝶云星空到泛微OA-Http规范、顺畅、高效的数据传输,同时提高了整体业务流程的可视化管理水平及运行效率。在接下来的部分内容中,将进一步探讨该方案具体实施步骤以及更多技术细节。 ![电商OMS与ERP系统接口开发配置](https://pic.qeasy.cloud/D5.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口,获取并加工生产订单数据。 #### 接口配置与调用 首先,我们需要配置和调用金蝶云星空的`executeBillQuery`接口。根据提供的元数据配置,我们可以看到该接口使用POST方法进行请求,并且需要传递多个参数来过滤和查询所需的数据。 ```json { "api": "executeBillQuery", "effect": "QUERY", "method": "POST", "number": "FBillNo", "id": "FPOOrderEntry_FEntryId", ... } ``` #### 请求参数详解 在请求参数部分,我们需要传递多个字段来指定查询条件和返回结果字段。以下是一些关键字段的说明: - `FilterString`: 用于指定过滤条件。在本案例中,过滤条件为`FModifyDate>='{{LAST_SYNC_TIME|datetime}}' and FBillTypeID.FNumber='CGDD02_SYS' and FDocumentStatus='B'`,表示查询最后同步时间之后修改的、单据类型为标准委外订单且单据状态为审核中的记录。 - `FieldKeys`: 指定需要查询的字段集合。通过元数据配置中的解析器,可以将数组转换为字符串形式。 - `FormId`: 指定业务对象表单Id,这里为`PUR_PurchaseOrder`。 ```json { "FilterString": "FModifyDate>='{{LAST_SYNC_TIME|datetime}}' and FBillTypeID.FNumber='CGDD02_SYS' and FDocumentStatus='B'", "FieldKeys": ["FBillNo", "FPOOrderEntry_FEntryId", ...], "FormId": "PUR_PurchaseOrder" } ``` #### 数据清洗与加工 在获取到原始数据后,需要对其进行清洗和加工,以便后续的数据转换与写入。以下是一些常见的数据清洗步骤: 1. **字段映射**:将源系统中的字段映射到目标系统所需的字段。例如,将金蝶云星空中的`FBillNo`映射到泛微系统中的相应字段。 2. **数据格式转换**:根据目标系统的要求,对日期、数字等字段进行格式转换。例如,将日期格式从YYYY-MM-DD转换为MM/DD/YYYY。 3. **数据校验**:检查必填字段是否存在,数值是否在合理范围内等。如果发现异常数据,需要进行处理或记录日志以便后续排查。 #### 示例代码 以下是一个示例代码片段,用于调用金蝶云星空接口并处理返回的数据: ```python import requests import json # 配置请求参数 payload = { "FilterString": "FModifyDate>='2023-01-01' and FBillTypeID.FNumber='CGDD02_SYS' and FDocumentStatus='B'", "FieldKeys": ["FBillNo", "FPOOrderEntry_FEntryId", ...], "FormId": "PUR_PurchaseOrder" } # 调用接口 response = requests.post("https://api.kingdee.com/executeBillQuery", data=json.dumps(payload), headers={"Content-Type": "application/json"}) # 检查响应状态 if response.status_code == 200: data = response.json() # 数据清洗与加工 for record in data: bill_no = record.get("FBillNo") entry_id = record.get("FPOOrderEntry_FEntryId") # 更多的数据处理逻辑... else: print(f"Error: {response.status_code}") ``` #### 总结 通过上述步骤,我们成功地调用了金蝶云星空的`executeBillQuery`接口,并对返回的数据进行了清洗和加工。这一步骤为后续的数据转换与写入奠定了基础。在实际应用中,可以根据具体需求进一步优化和扩展数据处理逻辑,以满足业务需求。 ![金蝶与WMS系统接口开发配置](https://pic.qeasy.cloud/S21.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现金蝶到泛微OA的生产订单新增 在本案例中,我们将探讨如何使用轻易云数据集成平台将金蝶系统中的生产订单数据进行ETL转换,并通过泛微OA-HttpAPI接口写入到目标平台。此过程主要涉及数据清洗、转换和写入。 #### 1. 数据请求与清洗 首先,我们从金蝶系统中获取原始生产订单数据。这一步主要包括数据的提取和初步清洗,以确保数据的完整性和准确性。假设我们已经完成了这一步,并获得了如下结构的数据: ```json { "FBillNo": "PO123456", "FSupplierId_FName": "供应商A", "FCreatorId_FName": "张三", "FPayConditionId_FName": "月结30天", "FDate": "2023-10-01", "FPurchaseOrgId_FNumber": "ORG001", "FModifyDate": "2023-10-02", "list": [ { "FMaterialId_FNumber": "MAT001", "FMaterialId_FName": "物料A", "FQty": 100, "FTaxPrice": 50, "FAllAmount": 5000, "F_Halo_Text": "供应商单号A" } ] } ``` #### 2. 数据转换与写入 在这一阶段,我们需要将上述数据转换为泛微OA系统能够接收的格式,并通过HttpAPI接口进行写入。以下是具体的元数据配置及其应用解析。 ##### API接口元数据配置 根据提供的元数据配置,我们将使用POST方法调用`/api/workflow/paService/doCreateRequest`接口,具体配置如下: ```json { "api": "/api/workflow/paService/doCreateRequest", "method": "POST", "idCheck": true, ... } ``` ##### 请求参数构建 根据元数据配置,构建请求参数如下: 1. **workflowId**: 固定值406。 2. **requestName**: 使用模板字符串生成,包含单据编号、供应商名称、供应商单号和修改日期。 3. **requestLevel**: 固定值0(正常)。 4. **user_id**: 根据创建者名称查询对应ID。 5. **mainData**: 表头信息,包括付款条件、供应商名称、申请日期、申请人ID、申请公司等。 6. **details_1**: 收款明细表,包括物料编号、物料名称、含税单价、采购数量、价税合计和供应商单号。 具体请求参数示例如下: ```json { "workflowId": "406", "requestName": "PO123456-供应商A-供应商单号A-2023-10-02T00:00:00Z", "requestLevel": 0, ... } ``` ##### 表头信息mainData构建 表头信息`mainData`包含多个字段,其中部分字段需要通过查询获取: ```json { ... "mainData": { ... "fktj": "{FPayConditionId_FName}", ... // 查询创建者ID "_mongoQuery c0198816-9822-38f3-b995-fc700a9925e7 findField=content.id where={\"content.loginid\":{\"$regex\":\"{FCreatorId_FName}\"}}" ... } } ``` ##### 明细表details_1构建 明细表`details_1`是一个数组,每个元素代表一条收款明细记录: ```json { ... "details_1": [ { ... // 各字段映射 ... } ] } ``` #### 最终请求示例 整合所有字段后,最终请求示例如下: ```json { "workflowId": 406, ... } ``` #### 调用API接口 最后,通过HTTP POST方法调用API接口,将构建好的请求参数发送至泛微OA系统,实现生产订单的新增。 ```python import requests url = 'https://example.com/api/workflow/paService/doCreateRequest' headers = {'Content-Type': 'application/json'} data = { # 上述构建好的JSON对象 } response = requests.post(url, headers=headers, json=data) print(response.json()) ``` 通过上述步骤,我们成功地将金蝶系统中的生产订单数据转换并写入到泛微OA系统,实现了跨系统的数据集成。 ![金蝶与SCM系统接口开发配置](https://pic.qeasy.cloud/T26.png~tplv-syqr462i7n-qeasy.image)