通过轻易云平台实现采购订单数据转换与MongoDB写入

  • 轻易云集成顾问-潘裕
### YS采购订单对接帆软MongoDB的系统集成案例 在本次技术分享中,我们将探讨如何高效地实现用友BIP(Business Intelligence Platform)中的YS采购订单数据与MongoDB数据库的无缝对接。通过轻易云数据集成平台,我们不仅能够确保数据不漏单,而且在大量数据处理和实时监控方面也有显著优势。 首先,整个集成流程开始于用友BIP的数据抓取。我们调用了其提供的API接口`/yonbip/scm/purchaseorder/list`,该接口允许批量获取采购订单的数据。在实际操作过程中,需要重点关注分页和限流问题,以防止因请求频繁导致服务端压力过大或者超出API调用限制。 为了确保及时、可靠地抓取到最新的采购订单信息,我们使用了定时任务调度,每隔一定时间触发一次接口调用。这种机制不仅保证了数据的新鲜度,还能有效规避因网络波动或服务器负载造成的数据丢失问题。一旦获取到采购订单数据后,通过轻易云平台内置的数据转换工具,对原始JSON结构进行必要格式调整,以符合MongoDB插入文档要求。 针对大量采购订单快速写入MongoDB的问题,通过优化批量写入操作来提升效率。我们采用了MongoDB官方推荐的Insert API,该API支持一次性插入多个文档,在性能上有明显优势。此外,为应对可能出现的网络异常或其他不可预见情况,我们设计了一套完善的异常处理与错误重试机制,确保每条记录最终都被成功存储至数据库中,不会漏单。 最后,在整个流程运行期间及之后,可以利用轻易云平台提供的实时监控和日志功能,对各个环节进行细致跟踪。从初始数据提取,到格式转化,再到最终写入,每一步都有明确可视化展示,使得维护人员可以迅速定位和解决潜在问题,提高整体业务透明度与运维效率。 ![打通企业微信数据接口](https://pic.qeasy.cloud/D18.png~tplv-syqr462i7n-qeasy.image) ### 调用源系统用友BIP接口/yonbip/scm/purchaseorder/list获取并加工数据 在数据集成的生命周期中,第一步是调用源系统接口获取数据,并对其进行初步加工。本文将详细探讨如何通过轻易云数据集成平台调用用友BIP的采购订单接口`/yonbip/scm/purchaseorder/list`,并对返回的数据进行处理。 #### 接口调用配置 首先,我们需要配置API接口的请求参数。根据元数据配置,接口使用POST方法,以下是具体的请求参数: - **pageIndex**: 页码,默认值为1。 - **pageSize**: 每页记录数,默认值为500。 - **isSum**: 是否查询表头,默认值为false。 - **simpleVOs**: 查询条件,这里我们设置了一个过滤条件: - **field1**: - **field**: 查询字段,这里设置为`pubts`。 - **op**: 比较符,这里设置为`egt`(大于等于)。 - **value1**: 值,这里使用占位符`{{LAST_SYNC_TIME|datetime}}`表示上次同步时间。 - **queryOrders**: 排序字段,这里我们按id进行升序排序。 以下是请求参数的JSON格式: ```json { "pageIndex": "1", "pageSize": "500", "isSum": "false", "simpleVOs": [ { "field1": { "field": "pubts", "op": "egt", "value1": "{{LAST_SYNC_TIME|datetime}}" } } ], "queryOrders": [ { "field": "id", "order": "asc" } ] } ``` #### 数据格式化与转换 在获取到原始数据后,我们需要对其进行格式化和转换。根据元数据配置,我们需要将返回的数据字段进行重命名和类型转换: - 将字段`id`重命名为`new_id`,类型为字符串。 - 将字段`purchaseOrders_id`重命名为`new_purchaseOrders_id`,类型为字符串。 - 将字段`headFreeItem.define1`重命名为`new_headFreeItem`,类型为字符串。 - 将字段`vendor`重命名为`new_vendor`,类型为字符串。 - 将字段`warehouse`重命名为`new_warehouse`,类型为字符串。 以下是一个示例响应数据及其转换后的结果: 原始响应数据: ```json { "id": 123, "purchaseOrders_id": 456, "headFreeItem.define1": "item123", "vendor": "vendorABC", "warehouse": "warehouseXYZ" } ``` 转换后的结果: ```json { "new_id": "123", "new_purchaseOrders_id": "456", "new_headFreeItem": "item123", "new_vendor": "vendorABC", "new_warehouse": "warehouseXYZ" } ``` #### 实践案例 假设我们需要将上述配置应用到实际项目中,如YS采购订单对接帆软MongDB。在轻易云平台上,我们可以通过以下步骤实现: 1. **创建API连接器**:在轻易云平台上创建一个新的API连接器,并填写上述请求参数和URL。 2. **配置请求参数**:在连接器中添加请求参数,并设置默认值和描述信息。 3. **定义响应格式化规则**:根据元数据配置,在连接器中定义响应格式化规则,将原始字段映射到新的字段名称,并指定类型转换。 4. **测试连接器**:执行测试调用,确保返回的数据符合预期,并正确应用了格式化规则。 5. **部署与监控**:将连接器部署到生产环境,并通过轻易云平台的实时监控功能跟踪数据流动和处理状态。 通过以上步骤,我们可以高效地实现用友BIP采购订单接口的数据获取与加工,为后续的数据处理和分析奠定基础。 ![企业微信与ERP系统接口开发配置](https://pic.qeasy.cloud/S29.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将采购订单数据转换并写入MongoDB 在数据集成的生命周期中,ETL(Extract, Transform, Load)过程是至关重要的一环。本文将详细介绍如何使用轻易云数据集成平台,将YS采购订单的数据进行转换,并通过MongoDB API接口写入目标数据库。 #### 数据请求与清洗 首先,我们需要确保从源系统获取的数据是干净且结构化的。在此阶段,我们可以利用轻易云平台提供的可视化工具,对数据进行初步清洗和预处理。通过定义合适的规则和过滤条件,确保数据质量符合要求。 #### 数据转换与写入 接下来,我们进入数据生命周期的第二步:将已经清洗好的数据进行转换,并写入目标平台MongoDB。以下是具体的操作步骤和技术细节。 ##### 1. 定义API接口配置 根据提供的元数据配置,我们需要定义一个POST请求,用于将采购订单数据插入到MongoDB中。以下是API接口配置的关键参数: ```json { "api": "Insert", "effect": "EXECUTE", "method": "POST", "number": "id", "id": "id", "name": "id", "idCheck": true, "request": [ {"field":"subQty","label":"采购数量","type":"float","describe":"采购数量","value":"{subQty}"}, {"field":"code","label":"单据编码","type":"string","describe":"单据编码","value":"{code}"}, {"field":"currency_priceDigit","label":"币种单价精度","type":"string","describe":"币种单价精度","value":"{currency_priceDigit}"}, // ...更多字段配置 {"field":"qeasydataid","label":"Mong主键id","type":"string","value":"{purchaseOrders_id}"} ], "otherRequest": [ {"field":"collectionName","label":"集合名字","type":"string","describe":"集合名字","value":"PurchaseOrder"} ], "buildModel": true } ``` ##### 2. 数据映射与转换 在元数据配置中,每个字段都有明确的映射关系。例如,`subQty`对应的是采购数量,`code`对应的是单据编码等。我们需要确保这些字段在转换过程中正确映射,并且类型匹配。 ```json { "subQty": "{subQty}", "code": "{code}", // ...更多字段映射 } ``` ##### 3. 构建请求体 根据上述映射关系,构建最终的请求体。确保所有必需字段都已包含,并且值已经正确填充。 ```json { "subQty": 100, "code": "PO123456", // ...更多字段值 } ``` ##### 4. 执行API请求 使用轻易云平台内置的HTTP客户端功能,发送POST请求到MongoDB API接口。以下是示例代码: ```python import requests url = 'http://your-mongodb-api-endpoint/insert' headers = {'Content-Type': 'application/json'} data = { "subQty": 100, "code": "PO123456", // ...更多字段值 } response = requests.post(url, headers=headers, json=data) if response.status_code == 200: print("Data inserted successfully") else: print("Failed to insert data:", response.text) ``` ##### 5. 错误处理与日志记录 在实际操作中,可能会遇到各种错误,如网络问题、数据格式不匹配等。因此,需要添加错误处理机制和日志记录,以便及时发现和解决问题。 ```python try: response = requests.post(url, headers=headers, json=data) response.raise_for_status() except requests.exceptions.HTTPError as errh: print ("Http Error:",errh) except requests.exceptions.ConnectionError as errc: print ("Error Connecting:",errc) except requests.exceptions.Timeout as errt: print ("Timeout Error:",errt) except requests.exceptions.RequestException as err: print ("OOps: Something Else",err) ``` #### 小结 通过以上步骤,我们成功地将YS采购订单的数据进行了ETL转换,并通过MongoDB API接口写入了目标数据库。在整个过程中,轻易云数据集成平台提供了强大的工具和灵活的配置选项,使得复杂的数据集成任务变得更加简单高效。 ![系统集成平台API接口配置](https://pic.qeasy.cloud/T6.png~tplv-syqr462i7n-qeasy.image)