2C-YS销售单查询-成功案例分享:用友BIP数据集成到轻易云集成平台的实现
在本技术案例中,我们将重点介绍一个实际运行的解决方案—“2C-YS销售单查询”,展示如何高效地将用友BIP系统的数据集成到轻易云数据集成平台。该方案成功地实现了从用友BIP接口(/buly7upu/commonProductCls/commonProduct/saleOrderList)获取销售单数据,并通过轻易云API写入操作,确保了业务数据流的完整性和准确性。
首先,我们需要解决的数据对接挑战包括:
- 高吞吐量的数据写入能力:由于业务需求,每天需处理大量销售订单数据,因此要求我们的系统具备快速的数据处理和写入能力。
- 分段抓取与分页问题:用友BIP提供的接口存在分页限制,需要我们设计合理的数据抓取机制,确保所有记录都能无遗漏地被检索。
- 自定义数据转换逻辑:两套系统的数据结构有所不同,为此需要进行相应的映射和转换,以适配各自的业务需求。
- 集中监控与告警系统:为了保证数据传输过程中的透明度和实时监控,我们使用了集中监控工具来跟踪每一笔交易状态,并及时触发告警通知。
- 异常处理与错误重试机制:网络波动或其他外部因素可能导致短暂性的错误发生,健壮的重试机制能够有效保障任务的一致性。
针对以上挑战,通过以下几个步骤具体实施了解决方案:
-
定时可靠抓取
- 定义定时任务调度器,根据预设时间周期自动调用用友BIP API接口以批量方式获取最新销售单列表。在这个过程中要特别注意分页参数设置,以避免出现漏单情况。
-
动态转换与映射
- 利用轻易云平台强大的可视化数据流设计工具,对获取到的大量原始字段进行清洗、加工以及自定义逻辑转化,从而形成符合目标系统要求的新格式。同时,将这些规则模板化,使得后续类似场景配置更加简便快捷。
-
大规模响应与性能优化
- 针对API请求限流策略,在客户端架构层面做出调整,如采用请求队列、缓存等技术手段提升并发访问效率,同时结合数据库连接池等优化方法,提高整体吞吐性能。
-
实时监控反馈
- 借助轻易云提供的集中式监控模块,管理员可以随时查看当前正在执行及历史完成情况,包括关键指标如响应延迟、丢
用友BIP接口调用与数据加工技术案例
- 借助轻易云提供的集中式监控模块,管理员可以随时查看当前正在执行及历史完成情况,包括关键指标如响应延迟、丢
在数据集成的生命周期中,调用源系统API接口是至关重要的一步。本文将详细介绍如何通过轻易云数据集成平台调用用友BIP接口/buly7upu/commonProductCls/commonProduct/saleOrderList
,并对获取的数据进行加工处理。
调用接口配置
首先,我们需要配置API请求的元数据。以下是关键的配置项:
- API路径:
/buly7upu/commonProductCls/commonProduct/saleOrderList
- 请求方法:
POST
- 请求参数:
pageIndex
: 页码,默认值为1
pageSize
: 每页行数,默认值为100
code
: 单据编码nextStatusName
: 订单状态,默认值为DELIVERGOODS
open_orderDate_begin
: 制单日期开始时间open_orderDate_end
: 制单结束时间open_hopeReceiveDate_begin
: 期望收货开始时间open_hopeReceiveDate_end
: 期望收货截止open_vouchdate_begin
: 单据开始时间,默认值为10天前open_vouchdate_end
: 单据截止时间,默认值为当前时间isSum
: 查询表头,默认值为false
simpleVOs
: 查询条件,包括两个过滤条件:- 条件1:字段
auditTime
在10天前到当前时间之间 - 条件2:字段
transactionTypeId
等于1871512475364491266
queryOrders
: 排序字段,按auditTime
降序排列
请求参数示例
{
"pageIndex": "1",
"pageSize": "100",
"code": "UO-20220513000001",
"nextStatusName": "DELIVERGOODS",
"open_orderDate_begin": "2022-05-13 00:00:00",
"open_orderDate_end": "2022-05-13 23:59:59",
"open_hopeReceiveDate_begin": "2022-05-13 00:00:00",
"open_hopeReceiveDate_end": "2022-05-13 23:59:59",
"open_vouchdate_begin": "{{DAYS_AGO_s10|date}}",
"open_vouchdate_end": "{{CURRENT_TIME|date}}",
"isSum": "false",
"simpleVOs": [
{
"field1": {
"field": "auditTime",
"op": "between",
"value1": "{{DAYS_AGO_s10|datetime}}",
"value2": "{{CURRENT_TIME|datetime}}"
}
},
{
"field2": {
"field": "transactionTypeId",
"op": "eq",
"value1": "1871512475364491266"
}
}
],
"queryOrders": [
{
"field": "auditTime",
"order": "desc"
}
]
}
数据格式化与转换
在获取到数据后,需要对数据进行格式化和转换。根据元数据配置中的formatResponse部分,我们需要将以下字段进行重命名和类型转换:
- 将字段
id
重命名为new_id
- 将字段
orderDetailId
重命名为new_orderDetailId
- 将字段
oriTaxUnitPrice
重命名为new_oriTaxUnitPrice
所有这些字段都需要转换为字符串类型。
格式化代码示例
def format_response(data):
formatted_data = []
for item in data:
formatted_item = {
'new_id': str(item.get('id', '')),
'new_orderDetailId': str(item.get('orderDetailId', '')),
'new_oriTaxUnitPrice': str(item.get('oriTaxUnitPrice', ''))
}
formatted_data.append(formatted_item)
return formatted_data
# 假设response_data是从API获取的原始数据列表
response_data = [
{"id":"123", ...},
{"id":"456", ...}
]
formatted_data = format_response(response_data)
实时监控与调试
在实际操作中,通过轻易云平台提供的全透明可视化界面,可以实时监控数据流动和处理状态。这不仅有助于快速定位问题,还能确保每个环节都清晰可见,提高业务透明度和效率。
通过上述步骤,我们可以高效地调用用友BIP接口并对返回的数据进行必要的加工处理,为后续的数据写入和使用打下坚实基础。
数据转换与写入:轻易云数据集成平台API接口技术案例
在轻易云数据集成平台的生命周期中,数据转换与写入是至关重要的一步。本文将详细探讨如何将已经集成的源平台数据进行ETL转换,转为目标平台轻易云集成平台API接口所能够接收的格式,并最终写入目标平台。
API接口元数据配置解析
根据提供的元数据配置,我们需要使用以下参数来进行数据写入操作:
{
"api": "写入空操作",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true
}
这些配置参数定义了我们需要调用的API接口以及其具体操作方式。下面我们将逐一解析这些参数,并展示如何在实际操作中应用。
数据转换步骤
-
数据请求与清洗:这一步骤已经在生命周期的第一阶段完成,我们假设此时已经获得了清洗后的源平台数据。
-
数据转换:为了使源平台的数据符合目标平台API接口的要求,我们需要进行必要的数据转换。具体步骤如下:
- 字段映射:首先,需要确定源数据中的字段与目标API接口所需字段之间的映射关系。例如,源数据中的“销售单号”可能需要映射到目标API中的“order_id”字段。
- 格式转换:确保源数据中的日期、数值等字段格式符合目标API接口的要求。例如,将日期格式从“YYYY-MM-DD”转换为“YYYYMMDD”。
-
生成请求体:根据API接口要求,构建HTTP POST请求体。假设我们有以下源数据:
{ "sales_order_no": "SO123456", "order_date": "2023-10-01", "customer_id": "CUST7890" }
转换后的请求体应符合目标API接口需求,例如:
{ "order_id": "SO123456", "date": "20231001", "customer_id": "CUST7890" }
数据写入操作
根据元数据配置,我们需要使用HTTP POST方法将转换后的数据写入目标平台。具体步骤如下:
-
构建HTTP请求:利用编程语言(如Python)构建HTTP POST请求。例如:
import requests url = 'https://api.qingyiyun.com/write' headers = {'Content-Type': 'application/json'} payload = { 'order_id': 'SO123456', 'date': '20231001', 'customer_id': 'CUST7890' } response = requests.post(url, json=payload, headers=headers) if response.status_code == 200: print("Data written successfully") else: print(f"Failed to write data: {response.status_code}")
-
执行ID检查:根据元数据配置中的
idCheck: true
,在发送请求前需要确保每条记录的唯一性。如果存在重复ID,则需要进行处理(如更新或跳过)。 -
处理响应:检查响应状态码和返回信息,以确认数据是否成功写入。如果失败,需要记录错误信息并采取相应措施。
实际案例分析
假设我们正在处理一个2C-YS销售单查询项目,成功获取并清洗了销售单相关的数据。接下来,我们按照上述步骤进行ETL转换和写入操作:
-
字段映射与格式转换:
- 源字段
sales_order_no
映射到目标字段order_id
- 源字段
order_date
格式从YYYY-MM-DD
转换为YYYYMMDD
- 源字段
customer_id
保持不变
- 源字段
-
构建并发送HTTP POST请求:
import requests url = 'https://api.qingyiyun.com/write' headers = {'Content-Type': 'application/json'} payload = { 'order_id': 'SO123456', 'date': '20231001', 'customer_id': 'CUST7890' } response = requests.post(url, json=payload, headers=headers) if response.status_code == 200: print("Data written successfully") else: print(f"Failed to write data: {response.status_code}")
通过以上步骤,我们成功地将源平台的数据经过ETL转换后,写入到目标平台轻易云集成平台中。这一过程不仅保证了数据的一致性和准确性,还提升了系统间的数据交互效率。
总之,通过合理利用轻易云提供的API接口和元数据配置,可以高效地实现不同系统间的数据集成,为企业的数据管理和业务决策提供坚实的基础。