用轻易云进行数据转化和写入金蝶云星空API的最佳实践

  • 轻易云集成顾问-吴伟
### 新宝-产业链协同平台与金蝶云星空的数据集成案例分享 在新宝-产业链协同平台和金蝶云星空之间实现高效稳定的数据集成,对于优化供应链管理至关重要。本文将探讨如何通过轻易云数据集成平台,实现发货单到收料通知单的自动化转换,并确保数据的完整性和操作的可靠性。 首先,通过调用新宝-产业链协同平台提供的接口`/wms/deliveryBill`,我们能够定时且可靠地抓取最新的发货单数据。这一步骤需要处理API分页及限流问题,以避免因大量请求导致服务器过载。使用轻易云的平台特性,可以有效配置分页参数及异常重试机制,保证所有发货单数据无遗漏地获取到本地系统中。 紧接着,在处理从新宝-产业链协同平台获取的数据时,要特别注意其与金蝶云星空所需数据格式之间可能存在的不一致。例如,新宝返回的是JSON格式,而金蝶要求一组CSV或特定字段顺序。这就需要进行定制化的数据映射,将原始资料转换为符合目标系统需求的数据结构。同时,为了加快批量写入速度,可以利用轻易云支持的大量并行任务技术,将已转化好的数据通过`batchSave`接口快速导入至金蝶云星空,从而提高整体处理效率。 最后,为了监控整个流程以及确保每个环节都正常运行,还可以借助实时监控功能,对每一次API调用、数据转换、存储过程都记录详细日志。一旦出现问题,可以及时查看这些日志信息追溯错误原因,并根据具体错误类型触发相应的重试策略。 以上步骤展示了一个简单却高效的新宝-产业链协同平台到金蝶云星空间隔集成方案,从抓取源端数据,到适配目标端需求,再到大规模快速写入,全程透明且可控。在随后的章节里,我们将深入剖析各个环节中的细节实现,以及可能遇见的问题与解决办法。 ![如何开发用友BIP接口](https://pic.qeasy.cloud/D3.png~tplv-syqr462i7n-qeasy.image) ### 调用新宝-产业链协同平台接口获取并加工数据 在轻易云数据集成平台的生命周期中,第一步是调用源系统接口获取数据。本文将详细探讨如何通过调用新宝-产业链协同平台的`/wms/deliveryBill`接口来获取发货单数据,并进行必要的数据加工。 #### 接口配置与调用 首先,我们需要配置并调用新宝-产业链协同平台的接口。根据提供的元数据配置,接口的基本信息如下: - **API路径**: `/wms/deliveryBill` - **请求方法**: `POST` - **关键字段**: `billNo` - **SDK路径**: `\Adapter\Donlim\SDK\DonlimSDK` - **错误信息键值**: `msg` - **数据列表键值**: `data` - **分页参数**: `page_no` 请求参数中包含一个重要字段`queryTime`,用于查询特定时间范围内的数据。这个字段的值通过模板变量`{{LAST_SYNC_TIME|dateTime}}`动态生成,确保每次请求都能获取到最新的数据。 #### 数据请求与清洗 在实际操作中,首先需要构建请求体,并通过SDK发送请求。以下是一个示例代码片段,用于演示如何使用上述配置进行数据请求: ```php // 初始化SDK $sdk = new \Adapter\Donlim\SDK\DonlimSDK(); // 构建请求参数 $requestParams = [ 'queryTime' => date('Y-m-d H:i:s', strtotime('-1 month')) ]; // 发送POST请求 $response = $sdk->post('/wms/deliveryBill', $requestParams); // 检查响应状态 if (isset($response['msg']) && $response['msg'] !== 'success') { throw new Exception('API调用失败: ' . $response['msg']); } // 获取数据列表 $dataList = $response['data']; ``` 在这个过程中,我们需要特别注意以下几点: 1. **时间范围限制**:`queryTime`字段仅支持查询跨度1个月内的数据,因此每次请求时需确保时间范围不超过1个月。 2. **错误处理**:通过检查响应中的`msg`字段来判断API调用是否成功,如果失败则抛出异常。 3. **数据提取**:从响应中提取实际的数据列表,这些数据将用于后续的清洗和转换。 #### 数据转换与写入 获取到原始数据后,需要对其进行清洗和转换,以便写入目标系统。在此过程中,可以根据业务需求对数据进行各种处理,例如格式转换、字段映射、数据校验等。 以下是一个示例代码片段,用于演示如何对获取到的数据进行简单的清洗和转换: ```php $cleanedData = []; foreach ($dataList as $item) { // 简单的数据清洗和转换示例 $cleanedData[] = [ 'deliveryBillNo' => $item['billNo'], 'deliveryDate' => date('Y-m-d', strtotime($item['deliveryDate'])), // 其他字段映射和转换... ]; } // 将清洗后的数据写入目标系统(伪代码) writeToTargetSystem($cleanedData); ``` 在这个过程中,我们可以根据具体需求对每个字段进行处理。例如,将日期格式统一为`Y-m-d`,或者将某些字段重命名以符合目标系统的要求。 #### 自动分页处理 如果返回的数据量较大,需要进行分页处理。根据元数据配置中的分页参数`page_no`,可以实现自动分页: ```php $pageNo = 1; do { // 更新分页参数 $requestParams['page_no'] = $pageNo; // 发送POST请求并获取响应 $response = $sdk->post('/wms/deliveryBill', $requestParams); if (isset($response['msg']) && $response['msg'] !== 'success') { throw new Exception('API调用失败: ' . $response['msg']); } // 获取当前页的数据列表 $dataList = $response['data']; // 清洗和转换当前页的数据 foreach ($dataList as $item) { // 数据清洗和转换逻辑... $cleanedData[] = [ 'deliveryBillNo' => $item['billNo'], 'deliveryDate' => date('Y-m-d', strtotime($item['deliveryDate'])), // 其他字段映射和转换... ]; } // 判断是否还有下一页(假设返回结果中有totalPages字段) if ($pageNo >= $response['totalPages']) { break; } // 增加页码 $pageNo++; } while (true); // 将所有清洗后的数据写入目标系统(伪代码) writeToTargetSystem($cleanedData); ``` 通过这种方式,可以确保即使在面对大量数据时,也能高效地完成数据集成任务。 总结以上内容,通过合理配置和调用新宝-产业链协同平台的接口,并结合轻易云平台提供的全生命周期管理功能,可以高效地实现不同系统间的数据无缝对接。 ![数据集成平台可视化配置API接口](https://pic.qeasy.cloud/S8.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将发货单数据转换并写入金蝶云星空API 在数据集成过程中,将源平台的数据转换为目标平台所能接收的格式是关键步骤之一。本文将详细介绍如何使用轻易云数据集成平台,将发货单数据通过ETL(Extract, Transform, Load)转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。 #### 配置元数据 首先,我们需要配置元数据以匹配金蝶云星空API的要求。以下是我们使用的元数据配置: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"FHTZD01_SYS"}, {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号"}, {"field":"FSaleOrgId","label":"销售组织","type":"string","describe":"销售组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"}, {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{applyTime}"}, {"field":"FCustomerID","label":"客户","type":"string","describe":"客户","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{orgId}"}, {"field":"FSaleDeptID","label":"销售部门","type":"string","describe":"销售部门"}, {"field":"FCarriageNO","label":"运输单号","type":"string","describe":"运输单号"}, {"field":"FNote","label":"备注","type":"string","describe":"备注"}, {"field":"FDeliveryOrgID","label":"发货组织","type":""}, // 更多字段配置... ], "otherRequest":[ {"field": "FormId", "label": "业务对象表单Id", "type": "string", "value": "SAL_DELIVERYNOTICE"}, {"field": "Operation", "label": "执行的操作", "type": "string", "value": "BatchSave"}, {"field": "IsAutoSubmitAndAudit", "label": "", type: "", value: false}, // 更多其他请求配置... ] } ``` #### 数据请求与清洗 在进行ETL转换之前,首先需要从源系统请求数据并进行清洗。此过程包括从源系统获取原始发货单数据,并根据业务需求进行初步处理,如去除无效字段、标准化日期格式等。 #### 数据转换 接下来,我们进入核心部分:将清洗后的数据转换为金蝶云星空API所能接受的格式。根据上述元数据配置,具体步骤如下: 1. **字段映射与解析**: - 使用`ConvertObjectParser`解析器将源系统中的字段值转换为目标系统中对应的值。例如,将`FBillTypeID`字段解析为`FHTZD01_SYS`。 - 对于一些复杂字段,如客户(`FCustomerID`),需要通过映射关系(如客户编码)进行转换。 2. **数组和嵌套结构处理**: - 对于明细信息(`FEntity`),需要将每一条明细记录分别处理,并按照目标系统要求的数组结构进行组织。 - 嵌套结构中的子字段,如物料编码(`F_GZHQ_Base`)、销售数量(`FQty`)等,需要逐一映射和赋值。 3. **特殊字段处理**: - 一些特殊字段如批号(`FLot`)、生产日期(`FPRODUCEDATE`)等,需要通过特定规则或查询来获取。例如,通过订单号查询批号信息。 以下是一个示例代码片段,展示了如何将源系统中的发货单明细信息转换为目标系统所需的格式: ```json { // 示例代码片段 { field: 'FBillNo', value: sourceData.billNo }, { field: 'FSaleOrgId', value: '100' }, { field: 'FDate', value: sourceData.applyTime }, { field: 'FEntity', children: sourceData.deliveryDetails.map(detail => ({ F_GZHQ_Base: detail.materialNo, FQty: detail.materialNum, FStockID: 'CK003', FLot: findLot(detail.poNo), // 更多字段... })) } } ``` #### 数据写入 最后,将转换后的数据通过HTTP POST请求写入金蝶云星空API接口。以下是一个示例请求: ```json { method: 'POST', url: 'https://api.kingdee.com/batchSave', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(transformedData) } ``` 在发送请求之前,确保所有必填字段均已正确赋值,并且符合目标系统的数据规范。如果接口返回成功响应,即表示数据已成功写入金蝶云星空。 #### 实时监控与错误处理 在整个ETL过程中,实时监控和错误处理至关重要。通过轻易云平台提供的实时监控功能,可以随时查看数据流动和处理状态。一旦发生错误,可以快速定位并修正问题,确保数据集成过程顺利进行。 以上就是使用轻易云数据集成平台将发货单数据转换并写入金蝶云星空API接口的详细步骤和技术要点。希望本文能够帮助您更好地理解和应用这一过程,提高业务效率和透明度。 ![如何开发金蝶云星空API接口](https://pic.qeasy.cloud/T1.png~tplv-syqr462i7n-qeasy.image)