用友BIP接口调用与轻易云数据加工:从配置到实现

  • 轻易云集成顾问-曹润
### 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)