通过轻易云平台实现易快报与金蝶云的ETL数据集成

  • 轻易云集成顾问-叶威宏
### 易快报采购退单对接金蝶应付单的技术方案解析 在系统集成项目中,确保数据的准确性和实时性是至关重要的一环。本文将介绍如何使用轻易云数据集成平台,将易快报(EasyReports)的采购退单数据无缝对接到金蝶云星空(Kingdee Cloud Galaxy)的应付单模块。 我们采用了定时抓取易快报接口`/api/openapi/v1.1/docs/getApplyList`的数据,并通过轻易云平台进行批量处理,将处理后的结果写入金蝶云星空的API `batchSave`。为了实现这一目标,我们需要应对以下几个关键技术挑战: 首先,为了确保所有采购退单记录都能够被完整抓取并正确导入,我们设置了可靠的定时任务机制,每隔固定时间间隔调用一次易快报的数据获取接口。此外,通过分页和限流策略,有效避免数据遗漏与接口超载问题。 其次,在数据传输过程中,考虑到两套系统之间的数据格式差异,我们设计了一系列映射规则。在轻易云的平台上,对从易快报告取得的数据进行必要的清洗、转换和格式化,使其符合金蝶云星空接受标准。这一步骤充分利用了轻易云提供的可视化配置界面,大大简化了复杂的数据转换过程。 此外,对于异常情况,如网络不稳定导致部分数据无法及时上传,我们实现了错误重试机制。一旦发现某次批量操作失败,系统会自动触发重新尝试,从而保证整个流程的不间断运行。同时,通过实时监控和详细日志记录,可以迅速定位与解决潜在的问题,提高整体效率和可靠性。 未来文章将深入探讨具体配置细节,包括如何编排每个工作流节点,以及各阶段遇到的问题及其解决办法。这一案例不仅展示了跨系统集成中的常见挑战,还提供了一些实用技巧供参考,希望能为相关从业人员带来帮助。 ![如何对接企业微信API接口](https://pic.qeasy.cloud/D38.png~tplv-syqr462i7n-qeasy.image) ### 调用易快报接口获取并加工数据 在轻易云数据集成平台的生命周期中,调用源系统接口是数据处理的第一步。本文将深入探讨如何通过调用易快报接口 `/api/openapi/v1.1/docs/getApplyList` 获取并加工数据,以实现采购退单对接金蝶应付单的集成方案。 #### 接口配置与调用 首先,我们需要配置元数据以便正确调用易快报的API接口。以下是元数据配置的详细信息: ```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":"ID01nGlvJpZbeT"}, {"field":"active","label":"是否已删除","type":"string","describe":"true : 未删除   false : 已删除 ","value": "true"}, {"field": "state", "label": "单据状态", "type": "string", "value": "paying,PROCESSING,paid,archived"} ], "condition":[[{"field": "preApprovedNodeName", "logic": "eqv2", "value": "Cancel PO"}, []]] } ``` #### 参数详解 - **API路径**: `/api/openapi/v1.1/docs/getApplyList` - **请求方式**: `GET` - **主要参数**: - `type`: 单据类型,这里设置为`expense`(报销单)。 - `start`: 分页查询起始值。 - `count`: 每次请求返回的数据条数,最大不能超过100。 - `orderBy`: 查询字段,这里选择`updateTime`(更新时间)。 - `startDate` 和 `endDate`: 查询时间范围,分别对应上次同步时间和当前时间。 - `specificationId`: 单据模板ID。 - `active`: 是否已删除,这里设置为`true`(未删除)。 - `state`: 单据状态,包括`paying`, `PROCESSING`, `paid`, 和 `archived`。 #### 数据请求与清洗 在调用上述API后,我们会获得一组原始数据。这些数据需要经过清洗和转换,以便后续写入金蝶应付单系统。以下是一个简单的数据清洗示例: ```python import requests import json from datetime import datetime # 设置请求参数 params = { 'type': 'expense', 'start': '0', 'count': '100', 'orderBy': 'updateTime', 'startDate': datetime.now().strftime('%Y-%m-%d %H:%M:%S'), 'endDate': datetime.now().strftime('%Y-%m-%d %H:%M:%S'), 'specificationId': 'ID01nGlvJpZbeT', 'active': 'true', 'state': 'paying,PROCESSING,paid,archived' } # 发起GET请求 response = requests.get('https://your-api-endpoint.com/api/openapi/v1.1/docs/getApplyList', params=params) # 检查响应状态码 if response.status_code == 200: data = response.json() # 数据清洗示例 cleaned_data = [] for item in data['data']: cleaned_item = { 'id': item['id'], 'code': item['form']['code'], 'amount': item['form']['amount'], # 添加更多需要清洗和转换的字段 } cleaned_data.append(cleaned_item) # 输出清洗后的数据 print(json.dumps(cleaned_data, indent=4)) else: print(f"Error: {response.status_code}") ``` #### 小结 通过上述步骤,我们成功调用了易快报的API接口,并对获取到的数据进行了初步清洗。这些清洗后的数据可以进一步进行转换和写入金蝶应付单系统,从而完成整个数据集成过程。在实际应用中,可以根据具体业务需求调整参数和清洗逻辑,以确保数据准确无误地传递到目标系统。 ![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/S9.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台:ETL转换与金蝶云星空API接口对接技术案例 在数据集成的生命周期中,ETL(提取、转换、加载)是至关重要的一环。本文将深入探讨如何使用轻易云数据集成平台,将源平台的数据进行ETL转换,最终通过金蝶云星空API接口写入目标平台。 #### 数据请求与清洗 在数据集成的第一阶段,我们已经从源平台获取了原始数据,并进行了必要的清洗和预处理。接下来,我们将这些数据转换为目标平台所需的格式。 #### 数据转换与写入 为了将数据成功写入金蝶云星空,我们需要遵循其API接口规范。以下是一个具体的元数据配置示例: ```json { "api": "batchSave", "method": "POST", "pagination": {"pageSize": 100}, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "idCheck": true, "request": [ {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"YFD02_SYS"}, {"field":"FSETTLEORGID","label":"结算组织","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"102"}, {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{code}"}, {"field":"FBUSINESSTYPE","label":"业务类型","type":"string","describe":"单据编号","value":"FY"}, {"field":"FDATE","label":"业务日期","type":"string","describe":"业务日期","value":"{{preNodeApprovedTime|datetime}}"}, {"field":"FSUPPLIERID","label":"供应商","type":"string","describe":"客户","value":"_mongoQuery ed5a5701-c0ef-3ce4-9de6-a3a08ac1d46d findField=content._system.code where={\"id\":{\"$eq\":\"{{u_供应商名称}}\"}}", "parser":{"name":"ConvertObjectParser", "params": "FNumber"}}, {"field": "FCURRENCYID", "label": "币别", "type": "string", "describe": "币别", "parser":{"name": "ConvertObjectParser", "params": "FNumber"}, "value": "{FCURRENCYID}", "mapping":{"target": "64ca4880a6fc7b0a9b6cc8b2", "direction": "positive"}}, {"field": "FAP_Remark", "label": "易快报付款条件", "type": "string", "value": "{{u_付款条件说明}}"}, {"field": "F_VRKB_Remarks", "label": "费用详情", "type": "string", "value": "{title}"}, {"field": "FsubHeadFinc", "label": "表头财务", "type": "object", "children":[ {"field": ![电商OMS与WMS系统接口开发配置](https://pic.qeasy.cloud/T28.png~tplv-syqr462i7n-qeasy.image)