### 2C-YS销售单查询-成功案例分享:用友BIP数据集成到轻易云集成平台的实现
在本技术案例中,我们将重点介绍一个实际运行的解决方案—“2C-YS销售单查询”,展示如何高效地将用友BIP系统的数据集成到轻易云数据集成平台。该方案成功地实现了从用友BIP接口(/buly7upu/commonProductCls/commonProduct/saleOrderList)获取销售单数据,并通过轻易云API写入操作,确保了业务数据流的完整性和准确性。
首先,我们需要解决的数据对接挑战包括:
1. **高吞吐量的数据写入能力**:由于业务需求,每天需处理大量销售订单数据,因此要求我们的系统具备快速的数据处理和写入能力。
2. **分段抓取与分页问题**:用友BIP提供的接口存在分页限制,需要我们设计合理的数据抓取机制,确保所有记录都能无遗漏地被检索。
3. **自定义数据转换逻辑**:两套系统的数据结构有所不同,为此需要进行相应的映射和转换,以适配各自的业务需求。
4. **集中监控与告警系统**:为了保证数据传输过程中的透明度和实时监控,我们使用了集中监控工具来跟踪每一笔交易状态,并及时触发告警通知。
5. **异常处理与错误重试机制**:网络波动或其他外部因素可能导致短暂性的错误发生,健壮的重试机制能够有效保障任务的一致性。
针对以上挑战,通过以下几个步骤具体实施了解决方案:
1. **定时可靠抓取**
- 定义定时任务调度器,根据预设时间周期自动调用用友BIP API接口以批量方式获取最新销售单列表。在这个过程中要特别注意分页参数设置,以避免出现漏单情况。
2. **动态转换与映射**
- 利用轻易云平台强大的可视化数据流设计工具,对获取到的大量原始字段进行清洗、加工以及自定义逻辑转化,从而形成符合目标系统要求的新格式。同时,将这些规则模板化,使得后续类似场景配置更加简便快捷。
3. **大规模响应与性能优化**
- 针对API请求限流策略,在客户端架构层面做出调整,如采用请求队列、缓存等技术手段提升并发访问效率,同时结合数据库连接池等优化方法,提高整体吞吐性能。
4. **实时监控反馈**
- 借助轻易云提供的集中式监控模块,管理员可以随时查看当前正在执行及历史完成情况,包括关键指标如响应延迟、丢
![企业微信与OA系统接口开发配置](https://pic.qeasy.cloud/D5.png~tplv-syqr462i7n-qeasy.image)
### 用友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`降序排列
#### 请求参数示例
```json
{
"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`
所有这些字段都需要转换为字符串类型。
#### 格式化代码示例
```python
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接口并对返回的数据进行必要的加工处理,为后续的数据写入和使用打下坚实基础。
![企业微信与OA系统接口开发配置](https://pic.qeasy.cloud/S3.png~tplv-syqr462i7n-qeasy.image)
### 数据转换与写入:轻易云数据集成平台API接口技术案例
在轻易云数据集成平台的生命周期中,数据转换与写入是至关重要的一步。本文将详细探讨如何将已经集成的源平台数据进行ETL转换,转为目标平台轻易云集成平台API接口所能够接收的格式,并最终写入目标平台。
#### API接口元数据配置解析
根据提供的元数据配置,我们需要使用以下参数来进行数据写入操作:
```json
{
"api": "写入空操作",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true
}
```
这些配置参数定义了我们需要调用的API接口以及其具体操作方式。下面我们将逐一解析这些参数,并展示如何在实际操作中应用。
#### 数据转换步骤
1. **数据请求与清洗**:这一步骤已经在生命周期的第一阶段完成,我们假设此时已经获得了清洗后的源平台数据。
2. **数据转换**:为了使源平台的数据符合目标平台API接口的要求,我们需要进行必要的数据转换。具体步骤如下:
- **字段映射**:首先,需要确定源数据中的字段与目标API接口所需字段之间的映射关系。例如,源数据中的“销售单号”可能需要映射到目标API中的“order_id”字段。
- **格式转换**:确保源数据中的日期、数值等字段格式符合目标API接口的要求。例如,将日期格式从“YYYY-MM-DD”转换为“YYYYMMDD”。
3. **生成请求体**:根据API接口要求,构建HTTP POST请求体。假设我们有以下源数据:
```json
{
"sales_order_no": "SO123456",
"order_date": "2023-10-01",
"customer_id": "CUST7890"
}
```
转换后的请求体应符合目标API接口需求,例如:
```json
{
"order_id": "SO123456",
"date": "20231001",
"customer_id": "CUST7890"
}
```
#### 数据写入操作
根据元数据配置,我们需要使用HTTP POST方法将转换后的数据写入目标平台。具体步骤如下:
1. **构建HTTP请求**:利用编程语言(如Python)构建HTTP POST请求。例如:
```python
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}")
```
2. **执行ID检查**:根据元数据配置中的`idCheck: true`,在发送请求前需要确保每条记录的唯一性。如果存在重复ID,则需要进行处理(如更新或跳过)。
3. **处理响应**:检查响应状态码和返回信息,以确认数据是否成功写入。如果失败,需要记录错误信息并采取相应措施。
#### 实际案例分析
假设我们正在处理一个2C-YS销售单查询项目,成功获取并清洗了销售单相关的数据。接下来,我们按照上述步骤进行ETL转换和写入操作:
1. **字段映射与格式转换**:
- 源字段 `sales_order_no` 映射到目标字段 `order_id`
- 源字段 `order_date` 格式从 `YYYY-MM-DD` 转换为 `YYYYMMDD`
- 源字段 `customer_id` 保持不变
2. **构建并发送HTTP POST请求**:
```python
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接口和元数据配置,可以高效地实现不同系统间的数据集成,为企业的数据管理和业务决策提供坚实的基础。
![打通用友BIP数据接口](https://pic.qeasy.cloud/T20.png~tplv-syqr462i7n-qeasy.image)