使用轻易云平台实现每刻数据与金蝶云的转换与写入

  • 轻易云集成顾问-叶威宏
### 每刻股东->金蝶股东: 系统对接集成案例分享 在本案例中,我们探讨了如何有效地将每刻的数据集成到金蝶云星空,聚焦于一个具体的系统对接方案——每刻股东数据向金蝶股东数据的转移。本次项目主要面临的问题包括:确保数据不漏单,大量数据快速写入,以及定时可靠地抓取每刻接口数据。 首先,每刻提供了丰富且详细的API接口供我们调用,其中 `/api/openapi/reference/data/detail/query` 是获取需要处理及转移的核心数据。为了应对大量复杂的数据,一方面我们通过实时监控和日志记录确保过程透明;另一方面,为避免分页和限流带来的影响,我们设计了一套稳健的批量处理机制。这些措施共同保障了整个过程中的高效与稳定。 进入实际操作阶段,通过调度进程定时调用上述API接口,从每刻平台中抓取最新的数据。同时,在处理这些原始数据时,我们特别注意解决它们与金蝶云星空之间的数据格式差异,以保证无缝转换。在这里,创建自定义映射规则,并利用ETL(提取、转换、加载)工具,对不同字段进行合并和格式化,以适配目标系统需求。 下一步是将清洗后的大量数据批量写入到金蝶云星空,这里使用的是其官方提供的 `batchSave` API 接口。为进一步提高效率,我们采取多线程并发的方法来加快写入速度,同时设计异常处理机制以及错误重试策略,使得可能存在的不确定因素被最小化覆盖。 综合来看,本次方案不仅成功实现了从每刻到金蝶云星空的数据平滑过渡,而且备受期待的是其强大的扩展性,可以轻松复制应用于其他类似场景。 ![如何对接用友BIP接口](https://pic.qeasy.cloud/D1.png~tplv-syqr462i7n-qeasy.image) ### 调用每刻接口获取并加工数据的技术案例 在数据集成过程中,调用源系统的API接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用每刻接口`/api/openapi/reference/data/detail/query`,并对获取的数据进行加工处理。 #### 接口调用配置 首先,我们需要配置元数据以正确调用每刻的API接口。以下是具体的元数据配置: ```json { "api": "/api/openapi/reference/data/detail/query", "method": "POST", "number": "name", "id": "bizCode", "idCheck": true, "request": [ {"field": "referenceDataBizCode", "label": "档案编码", "type": "string", "value": "gd"}, {"field": "keyword", "label": "根据选项名称和选项编码模糊查询", "type": "string"}, {"field": "offset", "label": "分页起始", "type": "string", "describe": "默认值0"}, {"field": "pageSize", "label": "分页条数", "type": "string", "describe": "默认值50,最大值是100", "value":"50"}, {"field": "updatedStartAt", "label":"最近修改时间,时间戳","type":"string","describe":"查询在此时间及之后修改的数据","value":"{LAST_SYNC_TIME}000"}, {"field":"updatedEndAt","label":"最近修改时间,时间戳","type":"string","describe":"查询在此时间及之前修改的数据","value":"{CURRENT_TIME}000"} ] } ``` #### 请求参数详解 - `referenceDataBizCode`: 固定值为`gd`,表示档案编码。 - `keyword`: 用于模糊查询选项名称和选项编码。 - `offset`: 分页起始位置,默认为0。 - `pageSize`: 每页返回的数据条数,默认为50,最大值为100。 - `updatedStartAt`: 查询在此时间及之后修改的数据,使用时间戳格式。 - `updatedEndAt`: 查询在此时间及之前修改的数据,同样使用时间戳格式。 这些参数确保了我们能够精准地获取所需数据,并且支持分页和按时间段查询。 #### 数据请求与清洗 通过上述配置,我们可以向每刻系统发送POST请求以获取股东信息。以下是一个示例请求体: ```json { "referenceDataBizCode": "gd", "keyword": "", "offset": 0, "pageSize": 50, "updatedStartAt": "{LAST_SYNC_TIME}000", "updatedEndAt": "{CURRENT_TIME}000" } ``` 在接收到响应后,我们需要对数据进行清洗。清洗过程包括但不限于以下步骤: 1. **字段映射**:将每刻系统返回的字段映射到目标系统所需的字段。例如,将`bizCode`映射为目标系统中的`id`。 2. **数据过滤**:根据业务需求过滤掉不必要的数据。例如,只保留最近更新的记录。 3. **格式转换**:将日期、数字等字段转换为目标系统所需的格式。 #### 数据转换与写入 经过清洗后的数据需要进一步转换,以符合目标系统(如金蝶股东)的要求。转换过程可能涉及复杂的逻辑处理,例如: - 合并多个字段 - 根据特定规则生成新的字段 - 数据类型转换 最终,将处理好的数据写入目标系统。这一步通常通过调用目标系统的API接口实现。在轻易云平台上,可以配置相应的写入任务,以实现自动化的数据同步。 #### 实时监控与错误处理 轻易云平台提供了实时监控功能,可以监控整个数据集成过程中的各个环节。一旦出现错误,例如API调用失败或数据格式不匹配,可以及时捕获并处理。这种透明化和可视化的管理极大提升了业务效率和可靠性。 通过上述步骤,我们实现了从每刻系统到金蝶股东系统的数据无缝对接。这不仅提高了数据集成效率,还确保了数据的一致性和准确性。 ![数据集成平台可视化配置API接口](https://pic.qeasy.cloud/S3.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将每刻股东数据转换并写入金蝶云星空API接口 在数据集成的生命周期中,第二步至关重要,即将已经集成的源平台数据进行ETL转换,并最终写入目标平台。在本案例中,我们将详细探讨如何使用轻易云数据集成平台,将每刻股东的数据转换为金蝶云星空API接口所能够接收的格式,并成功写入目标平台。 #### 元数据配置解析 首先,我们需要理解元数据配置,以便正确地进行ETL转换。以下是元数据配置的详细内容: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ {"field":"FNumber","label":"编码","type":"string","value":"{bizCode}"}, {"field":"FDataValue","label":"名称","type":"string","value":"{name}"}, {"field":"FId","label":"类别","type":"string","value":"GD","parser":{"name":"ConvertObjectParser","params":"FNumber"}} ], "otherRequest": [ {"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"BOS_ASSISTANTDATA_DETAIL"}, {"field":"Operation","label":"执行的操作","type":"string","value":"BatchSave"}, {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","value":"true"}, {"field":"IsVerifyBaseDataField","label":"验证基础资料","type":"bool","describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)","value":"false"} ] } ``` #### 数据请求与清洗 在这个阶段,我们从每刻股东系统请求到原始数据。假设我们获取到的数据如下: ```json { "bizCode": "SH12345", "name": "张三" } ``` #### 数据转换与写入 接下来,我们需要将这些原始数据转换为金蝶云星空API所能接受的格式。根据元数据配置中的`request`部分,我们可以看到需要映射的字段如下: - `FNumber` 对应 `{bizCode}` - `FDataValue` 对应 `{name}` - `FId` 固定值 `"GD"` 我们可以通过轻易云的数据转换功能来实现这一过程。具体步骤如下: 1. **字段映射**: - 将原始数据中的 `bizCode` 映射到 `FNumber` - 将原始数据中的 `name` 映射到 `FDataValue` - 固定设置 `FId` 为 `"GD"` 2. **构建请求体**: 根据元数据配置中的 `otherRequest` 部分,我们需要构建一个包含业务对象表单ID、操作类型等信息的请求体。 最终构建出的请求体应如下所示: ```json { "FormId": "BOS_ASSISTANTDATA_DETAIL", "Operation": "BatchSave", "IsAutoSubmitAndAudit": true, "IsVerifyBaseDataField": false, "array": [ { "FNumber": "SH12345", "FDataValue": "张三", "FId": { "ConvertObjectParser": { "params": ["SH12345"] } } } ] } ``` #### 调用API接口 最后一步是通过HTTP POST方法调用金蝶云星空的API接口,将构建好的请求体发送过去。代码示例如下: ```python import requests import json url = 'https://api.kingdee.com/batchSave' headers = {'Content-Type': 'application/json'} data = { 'FormId': 'BOS_ASSISTANTDATA_DETAIL', 'Operation': 'BatchSave', 'IsAutoSubmitAndAudit': True, 'IsVerifyBaseDataField': False, 'array': [ { 'FNumber': 'SH12345', 'FDataValue': '张三', 'FId': { 'ConvertObjectParser': { 'params': ['SH12345'] } } } ] } response = requests.post(url, headers=headers, data=json.dumps(data)) if response.status_code == 200: print("Data successfully written to Kingdee Cloud") else: print("Failed to write data:", response.text) ``` 通过上述步骤,我们成功地将每刻股东的数据转换为金蝶云星空API接口能够接受的格式,并完成了数据写入。这一过程充分利用了轻易云提供的数据处理和集成功能,实现了不同系统间的数据无缝对接。 ![用友与CRM系统接口开发配置](https://pic.qeasy.cloud/T3.png~tplv-syqr462i7n-qeasy.image)