如何处理并集成聚水潭奇门和金蝶云星空数据

  • 轻易云集成顾问-彭亮
### 聚水潭·奇门数据集成到金蝶云星空的实践案例:发货单对接销售出库-V 在本次技术分享中,我们将探讨如何通过轻易云数据集成平台,实现聚水潭·奇门数据与金蝶云星空的数据无缝对接,具体方案为“发货单对接销售出库-V”。在该案例中,系统需要高效、可靠地从聚水潭·奇门获取并处理大量发货单数据,并批量写入到金蝶云星空进行管理。 #### API接口调用及分页处理 首先,通过调用聚水潭·奇门提供的API接口`jushuitan.saleout.list.query`抓取发货单数据。为了确保不遗漏任何订单,我们必须设计一个定时任务来周期性地请求此接口。同时,为了应对大规模的数据量和避免接口限流问题,需要特别处理分页机制。在请求参数中指定页码和每页条数,多次请求后合并结果以获取完整的订单列表。 ```python # 伪代码示例 page = 1 while True: response = call_jushuitan_api("jushuitan.saleout.list.query", page=page, limit=100) if not response['data']: break process_data(response['data']) page += 1 ``` #### 数据格式转换及写入逻辑 在接收到完整的订单列表后,需要将这些数据按照金蝶云星空所需的格式进行转换。例如,聚水潭中的字段名与金蝶中的字段名可能有所不同,这就需要我们设计一套映射规则,将源系统中的字段正确配置至目标系统。完成格式转换后,通过调用金蝶云星空提供的`batchSave` API实现批量写入操作。 ```json // 示例映射规则(假想) { "shipOrderNo": "order_id", "deliveryTime": "date_shipped", ... } // 假设已完成装换后的结构体示意图: [ { "order_id": "1234567890", "date_shipped": "2023-10-07T14:00:00Z", ... } ] ``` #### 异常处理与错误重试机制 在实际运行过程中难免会遇到网络故障或服务异常等情况,因此针对失败的数据传输需要有完善的错误重试机制,以提高整体可靠性。当某个API调用失败时,可以记录相关日志并加入重试队列,在一定时间间隔后再次尝试发送。此外,实时监控整个流程状态也是不可或缺的一部分,通过详细且及时的日志记录,有助于快速定位和解决问题。 综上,本案例展示了一个复杂 ![如何开发金蝶云星空API接口](https://pic.qeasy.cloud/D14.png~tplv-syqr462i7n-qeasy.image) ### 调用聚水潭·奇门接口获取并加工数据 在数据集成生命周期的第一步中,调用源系统接口以获取原始数据是至关重要的一环。本文将深入探讨如何通过轻易云数据集成平台调用聚水潭·奇门接口`jushuitan.saleout.list.query`,并对获取的数据进行初步加工。 #### 接口调用配置 首先,我们需要配置接口调用的元数据。根据提供的元数据配置,可以看到以下关键参数: - **API名称**:`jushuitan.saleout.list.query` - **请求方法**:`POST` - **分页参数**:`page_index`(页码)和`page_size`(页数) - **时间参数**:`start_time`(开始时间)和 `end_time`(结束时间) - **状态参数**:固定值为 `Confirmed` 具体的请求参数配置如下: ```json { "api": "jushuitan.saleout.list.query", "method": "POST", "request": [ {"field": "page_index", "label": "页码", "type": "int"}, {"field": "page_size", "label": "页数", "type": "string", "value": "20"}, {"field": "start_time", "label": "开始时间", "type": "string", "value": "{{LAST_SYNC_TIME|datetime}}"}, {"field": "end_time", "label": "结束时间", "type": "string", "value": "{{CURRENT_TIME|datetime}}"}, {"label": "status", "field": "status", "type": "string", "value":"Confirmed"} ] } ``` #### 数据过滤条件 为了确保获取的数据符合业务需求,我们还需要设置过滤条件。在本案例中,过滤条件为店铺名称不包含“红梦”: ```json "condition_bk":[[{"field":"shop_name","logic":"notlike","value":"红梦"}]], "condition":[[{"field":"shop_name","logic":"notlike","value":"红梦"}]] ``` #### 数据格式化与字段映射 在获取到原始数据后,需要对其进行初步加工。根据元数据配置,我们需要将字段 `io_id` 重命名为 `io_id_1` 并将其格式化为字符串: ```json "formatResponse":[{"format":"string","old":"io_id","new":"io_id_1"}] ``` 这种字段映射和格式转换有助于后续的数据处理和存储。 #### 数据请求与清洗流程 1. **初始化请求参数**: - 设置分页参数 `page_index` 和 `page_size` - 设置时间范围 `start_time` 和 `end_time` - 固定状态参数为 `Confirmed` 2. **发送请求并获取响应**: - 使用 POST 方法调用 API - 获取响应数据并检查其完整性和有效性 3. **应用过滤条件**: - 过滤掉店铺名称包含“红梦”的记录 4. **格式化响应数据**: - 将字段 `io_id` 重命名为 `io_id_1` - 确保字段类型符合预期(例如,将 `io_id_1` 转换为字符串) 5. **输出处理后的数据**: - 将处理后的数据传递给下一个生命周期阶段进行进一步处理或存储 #### 实际案例示例 假设我们已经成功调用了接口,并获得了以下原始响应数据: ```json [ {"io_id": 12345, "shop_name": "蓝天商店"}, {"io_id": 67890, "shop_name": "红梦商店"} ] ``` 经过上述步骤处理后,最终得到的数据应如下所示: ```json [ {"io_id_1": "12345", "shop_name": "蓝天商店"} ] ``` 可以看到,第二条记录由于店铺名称包含“红梦”被过滤掉,而第一条记录中的 `io_id` 字段被重命名并转换为字符串。 通过上述步骤,我们成功地完成了从聚水潭·奇门接口获取、清洗和初步加工数据的全过程。这不仅确保了数据的准确性和一致性,也为后续的数据转换与写入奠定了坚实基础。 ![如何对接金蝶云星空API接口](https://pic.qeasy.cloud/S7.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":"FBillTypeID","label":"单据类型","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"XSCKD01_SYS"}, {"field":"FBillNo","label":"单据编号","type":"string","value":"{io_id}"}, {"field":"FDate","label":"日期","type":"string","value":"{io_date}"}, {"field":"FSaleOrgId","label":"销售组织","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find F_PSEH_OrgId from 255f7565-c782-3985-9020-59aa6a647e61 where FName={shop_name}"}, {"field":"FCustomerID","label":"客户","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_mongoQuery 255f7565-c782-3985-9020-59aa6a647e61 findField=content.FNumber where={\"content.FName\":{\"$eq\":\"{shop_name}\"}}"}, {"field":"FSalesManID","label":"销售员","type":"string","value":"{order_staff_name}","parser":{"name":"ConvertObjectParser","params":"FName"}}, {"field":"FSaleDeptID","label":"销售部门","type":"string","parser":{"name":"ConvertObjectParser","params":""}}, {"field":"FStockOrgId","label":"发货组织","type":"string","parser":{"name":"ConvertObjectParser","params":""},"value":""}, {"field":"","label":"","type":"","value":""}, ... ], "otherRequest":[ {"field":"","label":"","type":"","value":""}, ... ] } ``` #### 数据字段解析与转换 1. **单据类型 (FBillTypeID)**: - 类型: string - 值: 固定值 `XSCKD01_SYS` - 转换器: `ConvertObjectParser`,参数为 `FNumber` 2. **单据编号 (FBillNo)**: - 类型: string - 值: `{io_id}`,直接从源数据中获取 3. **日期 (FDate)**: - 类型: string - 值: `{io_date}`,直接从源数据中获取 4. **销售组织 (FSaleOrgId)**: - 类型: string - 值: `_findCollection find F_PSEH_OrgId from ... where FName={shop_name}` - 转换器: `ConvertObjectParser`,参数为 `FNumber` 5. **客户 (FCustomerID)**: - 类型: string - 值: `_mongoQuery ... findField=content.FNumber where={"content.FName":{"$eq":{shop_name}}}` - 转换器: `ConvertObjectParser`,参数为 `FNumber` 6. **销售员 (FSalesManID)**: - 类型: string - 值: `{order_staff_name}` - 转换器: `ConvertObjectParser`,参数为 `FName` 7. **明细信息 (FEntity)**: 明细信息是一个数组,每个元素包含多个字段,如物料编码、实发数量、批号等。这些字段通过不同的转换规则和查找逻辑进行处理。 #### API调用与写入 在完成所有字段的解析和转换后,我们需要通过API调用将这些数据写入到金蝶云星空系统。以下是关键步骤: 1. **API Endpoint**: 使用POST方法调用`batchSave` API。 2. **请求体构建**: 根据元数据配置构建请求体。请求体包含了所有需要传递的数据字段及其对应的值。 3. **提交并审核**: 配置项中包含`IsAutoSubmitAndAudit`字段,设置为true表示在保存后自动提交并审核。 4. **验证基础资料**: 配置项中包含`IsVerifyBaseDataField`字段,设置为true表示在写入前验证基础资料的正确性。 #### 实际案例应用 假设我们有一条发货单记录,需要将其写入金蝶云星空系统。以下是具体操作步骤: 1. 从源系统获取发货单记录,包括单据编号、日期、销售组织等信息。 2. 根据元数据配置,对每个字段进行解析和转换。例如,将销售组织名称转换为对应的编码。 3. 构建API请求体,将所有解析后的字段填充到请求体中。 4. 调用金蝶云星空API,将构建好的请求体发送到目标系统。 5. 检查返回结果,确保数据成功写入。如果失败,根据错误信息进行调试和修正。 通过上述步骤,我们可以高效地将源系统的数据转换并写入到金蝶云星空系统,实现不同系统间的数据无缝对接。这不仅提升了业务处理效率,还确保了数据的一致性和准确性。 ![金蝶与CRM系统接口开发配置](https://pic.qeasy.cloud/T7.png~tplv-syqr462i7n-qeasy.image)