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

  • 轻易云集成顾问-潘裕

YS采购订单对接帆软MongoDB的系统集成案例

在本次技术分享中,我们将探讨如何高效地实现用友BIP(Business Intelligence Platform)中的YS采购订单数据与MongoDB数据库的无缝对接。通过轻易云数据集成平台,我们不仅能够确保数据不漏单,而且在大量数据处理和实时监控方面也有显著优势。

首先,整个集成流程开始于用友BIP的数据抓取。我们调用了其提供的API接口/yonbip/scm/purchaseorder/list,该接口允许批量获取采购订单的数据。在实际操作过程中,需要重点关注分页和限流问题,以防止因请求频繁导致服务端压力过大或者超出API调用限制。

为了确保及时、可靠地抓取到最新的采购订单信息,我们使用了定时任务调度,每隔一定时间触发一次接口调用。这种机制不仅保证了数据的新鲜度,还能有效规避因网络波动或服务器负载造成的数据丢失问题。一旦获取到采购订单数据后,通过轻易云平台内置的数据转换工具,对原始JSON结构进行必要格式调整,以符合MongoDB插入文档要求。

针对大量采购订单快速写入MongoDB的问题,通过优化批量写入操作来提升效率。我们采用了MongoDB官方推荐的Insert API,该API支持一次性插入多个文档,在性能上有明显优势。此外,为应对可能出现的网络异常或其他不可预见情况,我们设计了一套完善的异常处理与错误重试机制,确保每条记录最终都被成功存储至数据库中,不会漏单。

最后,在整个流程运行期间及之后,可以利用轻易云平台提供的实时监控和日志功能,对各个环节进行细致跟踪。从初始数据提取,到格式转化,再到最终写入,每一步都有明确可视化展示,使得维护人员可以迅速定位和解决潜在问题,提高整体业务透明度与运维效率。 打通企业微信数据接口

调用源系统用友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格式:

{
  "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,类型为字符串。

以下是一个示例响应数据及其转换后的结果:

原始响应数据:

{
  "id": 123,
  "purchaseOrders_id": 456,
  "headFreeItem.define1": "item123",
  "vendor": "vendorABC",
  "warehouse": "warehouseXYZ"
}

转换后的结果:

{
  "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系统接口开发配置

使用轻易云数据集成平台将采购订单数据转换并写入MongoDB

在数据集成的生命周期中,ETL(Extract, Transform, Load)过程是至关重要的一环。本文将详细介绍如何使用轻易云数据集成平台,将YS采购订单的数据进行转换,并通过MongoDB API接口写入目标数据库。

数据请求与清洗

首先,我们需要确保从源系统获取的数据是干净且结构化的。在此阶段,我们可以利用轻易云平台提供的可视化工具,对数据进行初步清洗和预处理。通过定义合适的规则和过滤条件,确保数据质量符合要求。

数据转换与写入

接下来,我们进入数据生命周期的第二步:将已经清洗好的数据进行转换,并写入目标平台MongoDB。以下是具体的操作步骤和技术细节。

1. 定义API接口配置

根据提供的元数据配置,我们需要定义一个POST请求,用于将采购订单数据插入到MongoDB中。以下是API接口配置的关键参数:

{
  "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对应的是单据编码等。我们需要确保这些字段在转换过程中正确映射,并且类型匹配。

{
  "subQty": "{subQty}",
  "code": "{code}",
  // ...更多字段映射
}
3. 构建请求体

根据上述映射关系,构建最终的请求体。确保所有必需字段都已包含,并且值已经正确填充。

{
  "subQty": 100,
  "code": "PO123456",
  // ...更多字段值
}
4. 执行API请求

使用轻易云平台内置的HTTP客户端功能,发送POST请求到MongoDB API接口。以下是示例代码:

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. 错误处理与日志记录

在实际操作中,可能会遇到各种错误,如网络问题、数据格式不匹配等。因此,需要添加错误处理机制和日志记录,以便及时发现和解决问题。

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接口配置

更多系统对接方案