轻松实现泛微OA与金蝶云的无缝数据集成

  • 轻易云集成顾问-李国敏
### 系统对接集成案例分享:泛微OA-Http数据集成到金蝶云星空 在本文中,我们将详细解析一个实际运行的系统对接集成案例,旨在帮助大家理解如何高效地实现泛微OA-Http与金蝶云星空之间的数据集成。该案例名为“FD003-非生产性付款申请 泛微=>金蝶付款单-484”,我们将重点剖析其技术要点和具体的实现方法。 本次数据集成任务主要包括以下几个核心环节: 1. **可靠抓取泛微OA-Http接口数据**:通过调用`/api/workflow/paService/getWorkflowRequest`接口,我们能够定时并且可靠地获取所需的工作流请求数据。这部分内容需要特别关注分页处理和限流机制,以确保不会遗漏任何重要的数据。 2. **自定义数据转换逻辑**:为了适应不同业务需求和数据结构,需要进行必要的数据转换。比如,将从泛微OA获取到的不一致字段格式转化为符合金蝶云标准的数据结构,这是保证两者高效通信的重要前提。 3. **批量写入至金蝶云星空**:经过处理后,已经准备好的大批量数据将被快速写入到金碟云,通过调用其`batchSave`API,实现跨平台的大规模、高吞吐量的数据同步。这一过程不仅提高了整体效率,还能避免由于网络或服务器问题导致的数据丢失。 4. **实时监控及异常处理**:利用可视化监控工具,我们可以实时跟踪整个流程中的每一步,并迅速定位并解决可能发生的问题,比如网络延迟、响应超时等。同时,针对错误重试机制进行了专项设计,以确保即使在出现故障时,也能及时恢复正常操作,而不影响整体业务流程。 以上步骤为本次系统对接方案的核心组成部分。在具体实施过程中,还有诸如API资产管理、日志记录以及性能优化等细节,这些都会进一步提升整个系统的稳定性和效率。在稍后的章节中,我们会逐步展开讨论每一个关键技术环节,并提供相应代码示例供大家参考。 ![打通用友BIP数据接口](https://pic.qeasy.cloud/D13.png~tplv-syqr462i7n-qeasy.image) ### 调用泛微OA-Http接口/api/workflow/paService/getWorkflowRequest获取并加工数据 在数据集成生命周期的第一步,调用源系统接口获取数据是至关重要的一环。本文将详细探讨如何通过轻易云数据集成平台调用泛微OA-Http接口`/api/workflow/paService/getWorkflowRequest`,并对获取的数据进行初步加工。 #### 接口调用配置 首先,我们需要配置API接口的元数据,以确保能够正确调用并处理返回的数据。以下是该接口的元数据配置: ```json { "api": "/api/workflow/paService/getWorkflowRequest", "effect": "QUERY", "method": "GET", "number": "requestId", "id": "requestId", "name": "id", "idCheck": true, "request": [ { "field": "workflowId", "label": "e9流程id", "type": "string", "value": "484" }, { "field": "workflowIdList", "label": "workflowIdList中间方案ID", "type": "string", "value": "2356388e-8c49-35b3-bb7e-1eca1a8617d5" } ], "autoFillResponse": true, "condition_bk": [ [ { "field": "workflowMainTableInfo.fklx", "logic": "eqv2", "value": "预付款" } ] ], "condition": [ [ { "field": "workflowMainTableInfo.fklx", "logic": "eqv2", "value": "预付款" }, { "field": "workflowMainTableInfo.fklx", { logic: 'eqv2', value: 'Prepayment' } } ] ] } ``` #### 配置解析 1. **API路径与请求方式**: - `api`: `/api/workflow/paService/getWorkflowRequest` - `method`: `GET` 我们使用GET方法来调用这个API,以获取指定工作流的请求信息。 2. **请求参数**: - `workflowId`: 固定值为`484`,代表特定的工作流ID。 - `workflowIdList`: 固定值为`2356388e-8c49-35b3-bb7e-1eca1a8617d5`,用于标识中间方案ID。 3. **条件过滤**: - `condition_bk`和`condition`字段用于定义过滤条件。在本例中,我们关注的是`workflowMainTableInfo.fklx`字段,其值必须为“预付款”或“Prepayment”。 #### 数据请求与清洗 在完成上述配置后,我们可以开始进行数据请求。轻易云平台会根据配置自动生成HTTP请求,并将结果返回给我们。假设我们得到了如下JSON响应: ```json { 'data': [ { 'requestId': '12345', 'workflowMainTableInfo': { 'fklx': '预付款', 'amount': '1000', 'currency': 'CNY' } }, { 'requestId': '67890', 'workflowMainTableInfo': { 'fklx': 'Prepayment', 'amount': '2000', 'currency': 'USD' } } ] } ``` #### 数据清洗与转换 接下来,我们需要对这些数据进行清洗和转换,以便后续处理。例如,我们可能需要将金额统一转换为人民币(CNY),或者根据不同的付款类型进行分类处理。 ```python def clean_and_transform(data): cleaned_data = [] for item in data['data']: if item['workflowMainTableInfo']['fklx'] in ['预付款', 'Prepayment']: # 假设我们有一个汇率转换函数convert_to_cny amount_in_cny = convert_to_cny(item['workflowMainTableInfo']['amount'], item['workflowMainTableInfo']['currency']) cleaned_data.append({ 'requestId': item['requestId'], 'amount_in_cny': amount_in_cny, 'fklx': item['workflowMainTableInfo']['fklx'] }) return cleaned_data # 示例汇率转换函数 def convert_to_cny(amount, currency): exchange_rates = {'USD': 6.5, 'CNY': 1} return float(amount) * exchange_rates.get(currency, 1) # 清洗后的数据 cleaned_data = clean_and_transform(response) ``` 通过上述步骤,我们已经成功地从泛微OA系统获取了所需的数据,并进行了初步的清洗和转换,为后续的数据写入和进一步处理打下了基础。 在实际应用中,可能还需要根据具体业务需求进行更多的复杂处理,但通过轻易云平台提供的全生命周期管理和可视化操作界面,这些任务都可以更加高效地完成。 ![企业微信与ERP系统接口开发配置](https://pic.qeasy.cloud/S23.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现金蝶云星空API接口的数据转换与写入 在数据集成的生命周期中,ETL(Extract, Transform, Load)过程是将源平台的数据转换为目标平台所需格式的关键步骤。本文将详细探讨如何利用轻易云数据集成平台,将泛微系统中的非生产性付款申请数据转换为金蝶云星空API接口可接受的格式,并最终写入目标平台。 #### 元数据配置解析 元数据配置是实现ETL过程的基础,以下是关键字段及其配置解析: 1. **单据编号(FBillNo)**:直接从源数据中提取。 2. **单据类型(FBillTypeID)**:固定值`FKDLX02_SYS`,表示其他业务付款单。 3. **币别(FCURRENCYID)**:通过`ConvertObjectParser`进行转换,使用源数据中的币别代码。 4. **业务日期(FDATE)**:直接映射到源数据中的申请日期。 5. **结算组织(FSETTLEORGID)和付款组织(FPAYORGID)**:通过`ConvertObjectParser`转换,依据申请公司名称进行查找和映射。 6. **往来单位类型和往来单位(FCONTACTUNITTYPE, FCONTACTUNIT)**:根据不同的往来单位类型(供应商、客户等),动态生成对应的值。 7. **收款单位类型和收款单位(FRECTUNITTYPE, FRECTUNIT)**:同样根据不同的收款单位类型动态生成对应的值。 8. **业务类型(FBUSINESSTYPE)**:固定值`3`,表示其他业务。 9. **备注(FREMARK)**:直接映射到源数据中的内容说明。 10. **结算币别(FSETTLECUR)**:通过`ConvertObjectParser`转换,使用申请公司名称进行查找和映射。 11. **自定义单号(F_XDW_OANO)**、应付金额(FPAYTOTALAMOUNTFOR_H)、实付金额(FREALPAYAMOUNTFOR_H)、预付款(F_XDW_PAYMENT)等字段均直接从源数据中提取。 #### 付款单明细配置 付款单明细部分涉及多个子字段,每个字段均需进行相应的处理: 1. **结算方式(FSETTLETYPEID)**:固定值`JSFS04_SYS`。 2. **付款用途(FPURPOSEID)**:通过`ConvertObjectParser`转换,依据用途名称进行查找和映射。 3. **费用承担部门(FEXPENSEDEPTID_E)**、应付金额(FPAYTOTALAMOUNTFOR)、备注(FCOMMENT)、实付金额(FREALPAYAMOUNTFOR_D)、费用项目(FCOSTID)、项目(F_Halo_Assistant)、长短款、税额等字段均需分别处理: - 税额字段通过公式计算得出,以确保精确度。 #### 数据转换与写入流程 1. **数据请求与清洗阶段**: - 从泛微系统获取原始数据,并进行初步清洗,包括去除无效记录、标准化日期格式等。 2. **数据转换阶段**: - 利用轻易云平台提供的可视化界面,对每个字段进行详细配置。确保所有字段均按照元数据配置要求进行处理,包括静态值设置、动态查找与转换、公式计算等。 3. **数据写入阶段**: - 将处理后的数据通过POST请求批量写入金蝶云星空API接口。此处需特别注意接口参数的正确性,包括表单ID、操作类型等。 ```json { "FormId": "AP_PAYBILL", "Operation": "BatchSave", "IsAutoSubmitAndAudit": false, "IsVerifyBaseDataField": true, "Model": { "FBillNo": "{{workflowMainTableInfo.djb}}", "FBillTypeID": {"FNumber": "FKDLX02_SYS"}, "FCURRENCYID": {"FNumber": "{{workflowMainTableInfo.bberp}}"}, ... "FPAYBILLENTRY": [ { "FSETTLETYPEID": {"FNumber": "JSFS04_SYS"}, ... } ] } } ``` #### 接口调用与结果处理 - 在调用API接口时,需要确保请求体结构正确,并包含所有必填字段。返回结果需进行解析和错误处理,以便及时发现并解决问题。 通过上述步骤,我们可以高效地将泛微系统中的非生产性付款申请数据转换并写入金蝶云星空,实现不同系统间的数据无缝对接。这不仅提升了业务透明度和效率,还确保了数据的一致性和准确性。 ![打通金蝶云星空数据接口](https://pic.qeasy.cloud/T18.png~tplv-syqr462i7n-qeasy.image)