跨平台数据对接:金蝶云星空到泛微OA的实践经验

  • 轻易云集成顾问-冯潇
### 金蝶云星空收料通知单数据集成到泛微OA-webservice的实践案例 在企业运营过程中,跨平台的数据对接和集成无疑是提高效率和确保业务流程顺畅的重要环节。本案例探讨了如何利用轻易云数据集成平台,将金蝶云星空中的收料通知单数据高效地转移并整合到泛微OA系统中,实现无缝的工作流自动化。具体方案为:3-1.金蝶收料通知单(提交)=>泛微CC02-收货通知验收流程。 首先,通过调用金蝶云星空提供的`executeBillQuery` API接口,准确获取每日触发的新收料通知单。考虑到API可能存在分页及限流问题,本方案设计了一个可靠的抓取机制,以轮询方式定时拉取最新数据,并通过日志记录实时监控API调用状态,确保每一条有效记录都被捕捉。 随后,对于从金蝶云星空获取的数据,我们需要处理其格式与泛微OA-webservice所需格式之间的不匹配情况。在这一环节中,进行定制化的数据映射与处理尤为关键。这不仅包括简单字段的映射转换,还涉及复杂业务逻辑,如日期格式、编码转换等细节调整。 为了实现大量数据快速写入至泛微OA系统,我们采用批量导入策略,通过`doCreateWorkflowRequest`接口一次性将整理后的多条数据提交给泛微,以提高整体处理速度。同时,为应对潜在的请求异常与错误重试需求,在操作失败时我们设立了完善的重试机制及故障恢复措施,以最大程度保障系统稳定性和数据完整性。 最后,这一过程中涉及全面且透明的数据监控,以及详细日志记录功能,使得整个集成过程清晰可见,并能及时发现和解决问题,从而保证业务连续性的同时,大幅提升运行效率。 ![如何对接金蝶云星空API接口](https://pic.qeasy.cloud/D36.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来获取并加工数据。 #### 接口配置与调用 首先,我们需要了解`executeBillQuery`接口的基本配置和调用方式。根据提供的元数据配置,以下是该接口的关键参数: - **API名称**: `executeBillQuery` - **请求方法**: `POST` - **主要字段**: - `FBillNo`: 单据编号 - `FDate`: 日期 - `FStockID`: 仓库 - `FMaterialId`: 物料 - `FMateriaModel`: 规格型号 - `FUnitId`: 单位 - `FActlandQty`: 实到数量 - `FDetailEntity_FEntryID`: 明细实体条目ID - `F_YIBH_Base`: 验收人 - `FSupplierId`: 供应商 - `FCreatorId`: 创建人 - `FID`: 主键 #### 请求参数设置 在实际操作中,我们需要根据业务需求设置请求参数。以下是一个示例请求参数配置: ```json { "FormId": "PUR_ReceiveBill", "FieldKeys": [ "FBillNo", "FDate", "FStockID.FNumber", "FMaterialId.FNumber", "FMateriaModel", "FUnitId.FNumber", "FActlandQty", "FDetailEntity_FEntryID", "F_YIBH_Base.FNumber", "FSupplierId.FNumber", "FCreatorId.FUserAccount", "FID" ], "FilterString": "FModifyDate >='{{LAST_SYNC_TIME|dateTime}}' and FDocumentStatus = 'B'", "Limit": "{PAGINATION_PAGE_SIZE}", "StartRow": 0, "TopRowCount": 0 } ``` #### 数据清洗与转换 获取到原始数据后,需要对其进行清洗和转换,以便后续处理和写入目标系统。在轻易云平台上,可以通过可视化界面定义清洗规则,例如: 1. **字段映射**:将金蝶云星空返回的数据字段映射到目标系统所需的字段。例如,将`FBillNo`映射为目标系统中的单据编号。 2. **数据格式转换**:将日期格式从金蝶云星空的格式转换为目标系统所需的格式。 3. **数据过滤**:根据业务逻辑过滤掉不需要的数据。例如,只保留状态为“已审核”的单据。 #### 实际案例分析 假设我们需要集成金蝶云星空中的收料通知单,并将其传输到泛微CC02-收货通知验收流程中。以下是具体步骤: 1. **调用接口获取数据**: 使用上述请求参数,通过轻易云平台调用`executeBillQuery`接口,获取收料通知单的数据。 2. **数据清洗与转换**: 根据业务需求,对返回的数据进行清洗和转换。例如,将日期格式从`YYYY-MM-DD`转换为目标系统所需的`DD/MM/YYYY`格式。 3. **写入目标系统**: 将清洗后的数据通过轻易云平台写入泛微CC02-收货通知验收流程中。 #### 示例代码片段 以下是一个示例代码片段,用于展示如何在轻易云平台上配置和调用该接口: ```python import requests url = 'https://api.kingdee.com/executeBillQuery' headers = {'Content-Type': 'application/json'} payload = { 'FormId': 'PUR_ReceiveBill', 'FieldKeys': 'FBillNo,FDate,FStockID.FNumber,FMaterialId.FNumber,FMateriaModel,FUnitId.FNumber,FActlandQty,FDetailEntity_FEntryID,F_YIBH_Base.FNumber,FSupplierId.FNumber,FCreatorId.FUserAccount,FID', 'FilterString': "FModifyDate >='2023-01-01' and FDocumentStatus = 'B'", 'Limit': '100', 'StartRow': '0', 'TopRowCount': '0' } response = requests.post(url, headers=headers, json=payload) data = response.json() # 数据清洗与转换逻辑... cleaned_data = clean_and_transform(data) # 写入目标系统逻辑... write_to_target_system(cleaned_data) ``` 通过上述步骤,我们可以高效地实现从金蝶云星空获取并加工数据,并将其无缝集成到其他业务系统中。这不仅提高了数据处理的效率,还确保了数据的一致性和准确性。 ![金蝶与外部系统打通接口](https://pic.qeasy.cloud/S15.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台ETL转换:将金蝶收料通知单数据写入泛微OA 在轻易云数据集成平台中,完成数据生命周期的第二步,即将已经集成的源平台数据进行ETL转换,并转为目标平台泛微OA-webservice API接口所能够接收的格式,最终写入目标平台。以下是具体的技术实现过程。 #### 配置API接口 首先,我们需要配置泛微OA-webservice API接口。根据提供的元数据配置,我们使用`doCreateWorkflowRequest`接口,该接口通过POST方法提交请求。 ```json { "api": "doCreateWorkflowRequest", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "workflowBaseInfo", "label": "流程信息", "type": "object", "describe": "打开泛微表单后可以在URL中获取该参数", "children": [ { "field": "workflowId", "label": "工作流ID", "type": "string", "describe": "打开泛微表单后可以在URL中获取该参数", "value": "282" } ] }, { "field": "requestName", "label": "请求名称", "type": "string", "describe": "请求名称", "value": "收料验收【金蝶单号:{FBillNo}】" }, { ... } ] } ``` #### 数据转换与映射 在ETL过程中,首先需要将金蝶收料通知单的数据字段映射到泛微OA工作流所需的字段。以下是主要字段的映射关系: - `FBillNo` 映射到 `requestName` 中的 `{FBillNo}` - `FCreatorId` 映射到 `creatorId` - `FDate` 映射到 `workflowMainTableInfo.rq` - `F_YIBH_Base` 映射到 `workflowMainTableInfo.ysr` - `FSupplierId` 映射到 `workflowMainTableInfo.gys` - `FID` 映射到 `workflowMainTableInfo.zbzj` #### 配置解析器 为了确保数据能够正确解析并传递给泛微OA,我们需要配置相应的解析器。例如: ```json { ... { "field": "rq", ... "value": "{{FDate|date}}", ... {"name":"workflowRequestTableFields","view":true,"edit":true,"fieldId":"12152"} }, { ... {"name":"workflowRequestTableFields","view":true,"edit":true,"fieldId":"12153"} }, ... } ``` #### 明细表处理 对于明细表的数据,我们需要将其转换为泛微OA所需的格式,并确保每个字段都正确映射。例如: ```json { ... { ... {"name":"workflowRequestTableFields","view":true,"edit":true,"fieldId":"12155"} }, { ... {"name":"workflowRequestTableFields","view":true,"edit":true,"fieldId":"12156"} }, ... } ``` #### 最终请求结构 经过上述步骤处理后,最终生成的请求结构如下: ```json { ..., { ..., { ..., { ..., [ ..., { ..., {"name":"workflowRequestTableFields","view":true,"edit":true,"fieldId":"12159"} } ] } ] } } ``` 通过上述配置和处理,我们可以将金蝶收料通知单的数据成功转换并写入泛微OA系统,实现了不同系统间的数据无缝对接。 ![金蝶与SCM系统接口开发配置](https://pic.qeasy.cloud/T1.png~tplv-syqr462i7n-qeasy.image)