利用轻易云进行ETL转换并写入金蝶云星空API

  • 轻易云集成顾问-黄宏棵
### 易快报日常报销对接金蝶其他应付单技术案例分享 在企业财务管理过程中,实现多个系统间的数据集成是提升效率和准确度的关键。本文将重点介绍如何通过轻易云数据集成平台,将易快报的日常报销数据高效、可靠地对接到金蝶云星空中的其他应付单。 首先,确保从易快报获取完备的数据列表至关重要。我们采用了调用其提供的API接口`/api/openapi/v1.1/docs/getApplyList`来抓取需要的数据。在这个接口使用中,我们特别注意处理分页和限流问题,通过合理设置参数来获取每一页的数据,并加入延时控制以避免触发限流机制。 对于抓取到的大量数据,我们设计了一套定时任务,每小时自动执行一次,以保证数据的新鲜度与连续性。这些抓取到的原始数据,因为格式上的差异,需要提前进行清洗与转换,以符合金蝶云星空接受的标准。同时,利用轻易云平台内置的实时监控功能,对每一步操作进行了可视化监控,并记录详细日志,为后续调试和维护提供依据。 其次,在将处理好的批量数据写入金蝶云星空之前,还要进行映射关系配置。通过调用目标系统API `batchSave` 接口,可以实现大规模、高效率的批量写入。在这过程中,特别关注异常处理与错误重试机制。例如,当某条记录因为网络波动或格式错误导致插入失败时,系统会自动捕获并重试对应操作,从而减少人工干预。 为了进一步提高集成过程中的透明度和可靠性,对于所有交互环节都进行了详尽的日志记录。这不仅帮助我们快速定位问题,也为未来拓展新业务场景埋下基础。总之,通过精细化配置及全面监控,使得整个流程达到高度智能化与自动化,大幅提升了业务运行效率与准确率。 ![如何对接企业微信API接口](https://pic.qeasy.cloud/D28.png~tplv-syqr462i7n-qeasy.image) ### 调用易快报接口获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何使用轻易云数据集成平台调用易快报接口 `/api/openapi/v1.1/docs/getApplyList` 获取并加工数据。 #### 接口概述 该接口用于获取易快报中的申请单列表,支持多种类型的单据查询,包括报销单、借款单、还款记录等。通过GET请求方式,可以根据不同的查询条件获取相应的数据。 #### 元数据配置解析 元数据配置如下: ```json { "api": "/api/openapi/v1.1/docs/getApplyList", "effect": "QUERY", "method": "GET", "number": "form.code", "id": "id", "idCheck": true, "otherRequest": [ {"field":"type","label":"type","type":"string","describe":"expense : 报销单\nloan : 借款单\nrepayment : 还款记录\npayment : 付款单\nrequisition : 申请单\ncustom : 通用审批单\nreceipt : 收款单","value":"expense"}, {"field":"start","label":"分页查询起始值","type":"string"}, {"field":"count","label":"count","type":"string","describe":"最大不能超过 100","value":"100"}, {"field":"orderBy","label":"查询字段","type":"string","describe":"createTime : 创建时间\nupdateTime : 更新时间\nsubmitDate : 提交时间\npayDate : 支付时间(单据为 paid 、archived 状态且经过出纳支付节点时有效)","value":"updateTime"}, {"field":"startDate","label":"查询起始时间","type":"string","describe":"格式:yyyy-MM-dd HH:mm:ss","value":"{{LAST_SYNC_TIME|datetime}}"}, {"field":"endDate","label":"查询结束时间","type":"string","describe":"格式:yyyy-MM-dd HH:mm:ss","value":"{{CURRENT_TIME|datetime}}"}, {"field":"specificationId","label":"单据模板ID 不带小版本号","type":"string","describe":"支持多个,用 , 分割,不传查所有模板,通过 根据企业ID获取单据模板列表 获取,例:\"Kk09lCDmlg3Q00\"","value":"ID01nExzdQyBbx"}, {"field":"active","label":"是否已删除","type":"string","describe":"true : 未删除   false : 已删除","value":"true"}, {"field":"state","label":"单据状态","type":"string","value":"paying,PROCESSING,paid,archived"} ], "condition_bk":[[{"field": "u_收款对象", "logic": "eqv2", "value": "ID01p4xbD1hCRV"}]] } ``` #### 请求参数详解 - **`type`**: 单据类型,这里我们选择 `expense` 表示报销单。 - **`start`**: 分页查询起始值。 - **`count`**: 每次请求返回的记录数,最大不能超过100。 - **`orderBy`**: 查询字段,这里选择 `updateTime` 表示按更新时间排序。 - **`startDate`** 和 **`endDate`**: 查询的时间范围,分别表示起始时间和结束时间。使用动态变量 `{{LAST_SYNC_TIME|datetime}}` 和 `{{CURRENT_TIME|datetime}}` 来自动填充。 - **`specificationId`**: 单据模板ID,不带小版本号。支持多个,用逗号分隔。 - **`active`**: 是否已删除,设置为 `true` 表示未删除的记录。 - **`state`**: 单据状态,这里选择多个状态,如 `paying`, `PROCESSING`, `paid`, `archived`. #### 数据请求与清洗 在调用接口后,我们会得到一个包含多个申请单的JSON响应。接下来需要对这些数据进行清洗和加工,以便后续的数据转换与写入。 1. **解析响应数据**: - 提取所需字段,如申请单编号、金额、申请人等。 - 根据业务需求过滤不必要的数据。 2. **数据格式转换**: - 将日期格式转换为目标系统所需的格式。 - 对金额字段进行单位转换(如从分到元)。 3. **数据校验与补全**: - 检查关键字段是否为空或格式是否正确。 - 补全缺失的信息,如根据业务规则生成默认值。 #### 实际案例 假设我们需要获取最近一天内所有未删除且状态为支付中的报销单,并将其导入金蝶其他应付单模块。以下是具体步骤: 1. 设置请求参数: ```json { "type": "expense", "start": "0", "count": "100", "orderBy": "updateTime", "startDate": "{{LAST_SYNC_TIME|datetime}}", "endDate": "{{CURRENT_TIME|datetime}}", "specificationId": "", "active": "true", "state": "paying" } ``` 2. 发起GET请求,获取响应数据: ```json { // 响应示例 "data": [ { "id": "12345", ... }, ... ] } ``` 3. 清洗和加工数据: ```python for record in response['data']: if record['amount'] > 0: processed_record = { 'code': record['form.code'], 'amount': record['amount'] / 100, # 转换单位 'applicant': record['applicant'], ... } # 写入目标系统 write_to_target_system(processed_record) ``` 通过以上步骤,我们成功实现了从易快报获取并加工报销单数据,并将其导入金蝶其他应付单模块。这一过程展示了轻易云数据集成平台在处理异构系统间数据对接时的高效性和灵活性。 ![如何对接钉钉API接口](https://pic.qeasy.cloud/S8.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现ETL转换并写入金蝶云星空API接口 在数据集成过程中,将源平台的数据转换为目标平台所需的格式是关键步骤。本文将详细探讨如何使用轻易云数据集成平台,将易快报日常报销数据通过ETL(Extract, Transform, Load)转换,最终写入金蝶云星空API接口。 #### 元数据配置解析 元数据配置是实现数据转换和写入的核心。以下是具体的元数据配置细节: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型", "value": "QTYFD01_SYS", "parser": { "name": "ConvertObjectParser", "params": "FNumber" } }, { ... } ], ... } ``` #### 数据请求与清洗 首先,从源系统(如易快报)提取原始数据。这一步骤包括从数据库或API中获取所需的字段,如单据编号、业务日期、往来单位等。提取的数据需要进行初步清洗,以确保其格式和内容符合预期。 例如,业务日期字段可能需要从时间戳转换为标准日期格式,这可以通过轻易云提供的内置函数`datetime`来实现: ```json { "field": "FDATE", "label": "业务日期", "type": "string", "describe": "业务日期", "value": "{{flowEndTime|datetime}}" } ``` #### 数据转换 在数据转换阶段,需要将清洗后的数据映射到金蝶云星空API所需的字段格式。轻易云提供了丰富的解析器(parsers)和映射工具来简化这一过程。例如,将单据类型字段从源系统的编码转换为目标系统所需的格式: ```json { "field": "FBillTypeID", "label": "单据类型", ... } ``` 对于复杂的数据转换,可以使用自定义函数或查询。例如,根据不同条件设置往来单位类型: ```json { ... { "field": "FCONTACTUNITTYPE", ... "value":"_function case '{{u_收款对象}}' when 'ID01p4xbD1hCRV' then 'BD_Empinfo' when 'ID01p4xah9CZWL' then 'BD_Supplier' end" } } ``` #### 数据写入 最后,将转换后的数据通过API接口写入金蝶云星空。在元数据配置中,指定了目标API接口及其参数,如`batchSave`方法,并设置必要的操作选项: ```json { ... { ..., { ... { ... { ..., { ..., { ..., { ..., { ..., { ..., { ..., { ..., { ..., {"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"AP_OtherPayable"}, {"field":"Operation","label":"执行的操作","type":"string","describe":"111","value":"BatchSave"}, {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","describe":"111","value":"false"}, {"field":"IsVerifyBaseDataField","label":"验证基础资料","type":"bool","describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)","value":"true"} ] } } } } } } } } } } } } ``` 通过上述配置,可以确保每个字段都按照目标平台要求进行处理,并最终成功写入。 #### 明细信息处理 对于包含明细信息的数据,需要特别处理。例如,费用项目编码、费用承担部门等字段需要逐条解析和映射: ```json { ... { ..., {"field":"FEntity",...,"children":[ {"field":"FCOSTID",...}, {"field":"FCOSTDEPARTMENTID",...}, {"field":"FCOMMENT",...}, {"field":"FTOTALAMOUNTFOR",...}, {"field":"FPayBillNO",...}, {"field":"F_VRKB_Base",...}, {"field":"F_VRKB_Base1",...} ]} } } ``` 这些子字段需要根据具体业务逻辑进行处理,如通过MongoDB查询获取相关信息并进行解析。 ### 总结 通过以上步骤,可以高效地将源平台的数据经过ETL处理后,成功写入金蝶云星空API接口。轻易云提供了强大的工具和灵活的配置选项,使得这一过程变得更加简便和高效。 ![如何开发金蝶云星空API接口](https://pic.qeasy.cloud/T23.png~tplv-syqr462i7n-qeasy.image)