采购订单数据转换与写入金蝶云星空的详细步骤

  • 轻易云集成顾问-杨嫦
### 聚水潭数据集成到金蝶云星空:采购订单回传单号 在本次技术案例中,我们将深入探讨如何通过高度可定制和高性能的数据集成平台,将聚水潭系统中的采购订单数据无缝、可靠地回传至金蝶云星空。该方案涉及多个关键技术点,包括API接口调用、分页处理、异常管理以及数据格式转换等。 首先,使用聚水潭提供的`/open/purchase/query` API接口定时抓取采购订单数据是整个集成过程的基础。在此过程中需特别注意限流机制与分页策略的合理配置,以确保每个请求都能够成功获取到完整且准确的数据。为解决这一挑战,我们采用了自定义逻辑来优化接口调用频率,并结合集中监控和告警系统,实现对任务状态实时跟踪和问题预警。 接下来的步骤则是大量数据向金蝶云星空批量写入,这需要利用其`batchSave` API接口。这一过程同样要求我们针对两者间的数据结构差异进行精细化映射与转换。例如,将聚水潭返回的JSON格式数据转化为符合金蝶云星空存储规范的多维数组。此外,为了保障高吞吐量的大规模写入能力,预先设计合适的数据分区策略也是至关重要的一环。 尽管如此,单纯实现基本功能还远远不足以满足业务需求。为了进一步提高整体系统稳定性及错误处理效率,我们还必须配置详尽全面的错误重试机制。当发生网络抖动或API超时等异常情况时,该机制将自动触发重试,并根据具体情况选择最优恢复路径,从而最大程度减少因故障导致的数据丢失风险。 总体而言,本方案旨在借助轻易云强大的元数据管理及可视化操作界面,使得复杂繁琐的信息流动清晰透明,同时提升企业运作效率并确保高度可靠性。在后续部分,我们将详细介绍上述各步骤中所涉及的方法论与实际实施细节。 ![钉钉与CRM系统接口开发配置](https://pic.qeasy.cloud/D3.png~tplv-syqr462i7n-qeasy.image) ### 调用聚水潭接口获取并加工数据的技术案例 在轻易云数据集成平台的生命周期中,调用源系统接口是数据处理的第一步。本文将详细探讨如何通过调用聚水潭接口`/open/purchase/query`获取采购订单数据,并对其进行初步加工。 #### 接口配置与调用 聚水潭接口`/open/purchase/query`用于查询采购订单信息。该接口采用POST方法,支持分页查询,返回的数据包含采购订单的详细信息。以下是元数据配置中的关键字段及其含义: - `modified_begin` 和 `modified_end`: 这两个字段用于指定查询的时间范围,必须同时存在且时间间隔不能超过七天。 - `page_index`: 指定查询结果的页码,从1开始。 - `page_size`: 指定每页返回的数据条数,最大值为50。 元数据配置如下: ```json { "api": "/open/purchase/query", "effect": "QUERY", "method": "POST", "idCheck": true, "request": [ { "field": "modified_begin", "label": "modified_begin", "type": "datetime", "describe": "修改起始时间,和结束时间必须同时存在,时间间隔不能超过七天,与线上单号不能同时为空", "value": "{{LAST_SYNC_TIME|datetime}}" }, { "field": "modified_end", "label": "modified_end", "type": "datetime", "describe": "修改结束时间,和起始时间必须同时存在,时间间隔不能超过七天,与线上单号不能同时为空", "value": "{{CURRENT_TIME|datetime}}" }, { "field": "page_index", "label": "page_index", "type": "string", "describe": "第几页,从1开始", "value": "1" }, { "field": "page_size", "label": "page_size", "type": "string", "describe": "最每页多少条,最大50条", "value":"{PAGINATION_PAGE_SIZE}" } ], ``` #### 数据请求与清洗 在实际操作中,我们需要根据业务需求设置合适的参数值。例如,为了获取最近一次同步后的所有变更记录,可以将`modified_begin`设置为上次同步时间(`LAST_SYNC_TIME`),将`modified_end`设置为当前时间(`CURRENT_TIME`)。 请求示例: ```json { “modified_begin”: “2023-10-01T00:00:00”, “modified_end”: “2023-10-07T23:59:59”, “page_index”: “1”, “page_size”: “50” } ``` 在接收到响应后,需要对数据进行清洗和预处理。这一步骤包括但不限于: - **字段映射**:将源系统中的字段映射到目标系统中的相应字段。 - **数据格式转换**:如日期格式、数值类型等转换。 - **异常数据处理**:如缺失值填充、错误值修正等。 #### 数据转换与写入 完成数据清洗后,将其转换为目标系统所需的格式,并写入目标数据库或系统。这一步骤通常涉及复杂的业务逻辑,需要根据具体需求进行定制化开发。 示例代码片段: ```python import requests import json # 设置请求参数 params = { 'modified_begin': '2023-10-01T00:00:00', 'modified_end': '2023-10-07T23:59:59', 'page_index': '1', 'page_size': '50' } # 发起POST请求 response = requests.post('https://api.jushuitan.com/open/purchase/query', data=json.dumps(params)) # 检查响应状态码 if response.status_code == 200: data = response.json() # 数据清洗与预处理 cleaned_data = clean_data(data) # 数据转换与写入 write_to_target_system(cleaned_data) else: print(f"Error: {response.status_code}") ``` #### 自动填充响应 元数据配置中的`autoFillResponse`字段设置为true时,平台会自动处理响应数据并填充到相应的数据结构中。这大大简化了开发工作量,使得开发者可以专注于业务逻辑而非底层实现。 通过以上步骤,我们实现了从聚水潭接口获取采购订单数据并进行初步加工,为后续的数据处理奠定了基础。在实际应用中,还需根据具体业务需求进行进一步优化和扩展。 ![如何开发用友BIP接口](https://pic.qeasy.cloud/S27.png~tplv-syqr462i7n-qeasy.image) ### 采购订单回传单号的ETL转换与写入金蝶云星空API接口 在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL转换,并转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。以下是具体的技术实现过程。 #### 数据请求与清洗 首先,我们需要从源系统中提取采购订单相关的数据。假设我们已经完成了数据请求与清洗阶段,得到了一个包含采购订单信息的数据集。在这个过程中,我们可能会使用轻易云数据集成平台提供的全异步、支持多种异构系统集成的特性,以确保数据提取过程高效且无缝。 #### 数据转换与写入 在数据转换阶段,我们需要将源数据转换为金蝶云星空API接口所能接收的格式。根据提供的元数据配置,以下是具体步骤: 1. **配置API接口参数** 根据元数据配置,我们需要调用金蝶云星空的`batchSave` API接口。该接口通过POST方法执行,主要参数如下: - `FID`: 通过查询语句获取金蝶系统中的唯一标识符。 - `F_JSTPO`: 聚水潭单号。 - `FUPLOAD`: 上传标志,固定为`true`。 2. **构建请求体** 请求体包含两个部分:`request`和`otherRequest`。 - **request部分**: ```json [ {"field":"FID","label":"ID","type":"string","value":"_findCollection find FID from 7389e0ad-45f1-37e3-8887-5770febb696a where FBillNo={so_id}"}, {"field":"F_JSTPO","label":"聚水潭单号","type":"string","value":"{po_id}"}, {"field":"FUPLOAD","label":"上传标志","type":"string","value":"true"} ] ``` 其中,`FID`通过查询语句动态获取,`F_JSTPO`和`FUPLOAD`则直接从源数据中提取或固定赋值。 - **otherRequest部分**: ```json [ {"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"PUR_PurchaseOrder"}, {"field":"Operation","label":"执行的操作","type":"string","describe":"执行的操作","value":"BatchSave"}, {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","describe":"提交并审核","value":"false"}, {"field":"IsVerifyBaseDataField","label":"验证基础资料","type":"bool","describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)","value":"false"}, {"field":"IsUserModelInit","label":"忽略网控","type":"bool","value":"true"} ] ``` 3. **调用API接口** 构建好请求体后,通过HTTP POST方法调用金蝶云星空的API接口。示例如下: ```python import requests import json url = "https://api.kingdee.com/batchSave" headers = { "Content-Type": "application/json" } data = { "request": [ {"field": "FID", "value": "_findCollection find FID from 7389e0ad-45f1-37e3-8887-5770febb696a where FBillNo={so_id}"}, {"field": "F_JSTPO", "value": "{po_id}"}, {"field": "FUPLOAD", "value": "true"} ], "otherRequest": [ {"field": "FormId", "value": "PUR_PurchaseOrder"}, {"field": "Operation", "value": "BatchSave"}, {"field": "IsAutoSubmitAndAudit", "value": False}, {"field": "IsVerifyBaseDataField", "value": False}, {"field": "IsUserModelInit", "value": True} ] } response = requests.post(url, headers=headers, data=json.dumps(data)) if response.status_code == 200: print("Data successfully written to Kingdee Cloud.") else: print(f"Failed to write data: {response.text}") ``` 4. **处理响应** 根据API返回结果,判断数据是否成功写入。如果成功,可以进一步处理后续业务逻辑;如果失败,则需要根据错误信息进行排查和修正。 通过上述步骤,我们实现了将采购订单回传单号的数据从源系统转换并写入到金蝶云星空平台。这一过程充分利用了轻易云数据集成平台提供的元数据配置和可视化操作界面,使得复杂的数据集成任务变得简洁高效。 ![打通用友BIP数据接口](https://pic.qeasy.cloud/T29.png~tplv-syqr462i7n-qeasy.image)