用友BIP采购订单与旺店通·企业奇门数据集成案例分享
在企业信息化过程中,跨系统的数据集成往往面临复杂的技术挑战。本文将以“采购订单=>采购单-p”方案为例,详细解析如何将用友BIP平台中的采购订单数据快速、准确地集成到旺店通·企业奇门中。
1. 数据源和目标系统概述
对于此案例,我们主要涉及两个核心系统:
- 用友BIP:一个广泛应用于企业资源规划(ERP)的软件平台,在本案中负责生成和管理采购订单。
- 旺店通·企业奇门:电商供应链一体化管理解决方案,本篇文章的目的是将用友BIP中的采购订单数据写入到该平台,实现集中和高效的业务处理。
2. API接口概述
为了实现上述目标,我们需要调用以下API接口:
- 用友BIP获取数据的API:
/yonbip/scm/purchaseorder/list
- 旺店通·企业奇门写入数据的API:
wdt.purchase.order.push
这两个API是整个集成流程运作的关键所在,通过它们可以实现两大系统之间的数据交互。
3. 高吞吐量的数据写入能力
在实际操作中,为了确保大量用友BIP上的采购订单能够不漏单且快速被同步到旺店通·企业奇门,需要配置高吞吐量的数据写入机制。这不仅提升了处理时效性,还保障了业务连续性。在进行批量数据转移时,高效的数据传输性能尤为重要,它可以显著减少在配置计划执行过程中的延迟风险。
4. 数据质量监控与异常检测
为了确保每次对接过程中都能及时发现潜在问题,我们引入了全面的数据质量监控机制。无论是在从用友BIP提取数据阶段,还是向旺店通录入阶段,一旦出现任何异常状况,例如分页限流问题或格式差异,自动触发预警并启动相应的错误重试机制。这种闭环控制保证了整体流程不会因个别异常而失误终止。
5. 自定义数据转换逻辑及映射关系
由于不同系统间存在着特定业务需求及结构差异,因此我们设计了一套自定义化的数据转换逻辑。从摘要视图直接拖拽生成可视化映射模型,不仅使开发人员清晰了解各节点流转情况,也极大程度上优化配置效率。同时通过灵活调整映射规则,可以完美适应多变场景下各种样式要求,使得所有采集到的信息都能精准呈现至目标库表
调用用友BIP接口获取并加工采购订单数据
在轻易云数据集成平台中,调用源系统的API接口是数据集成生命周期的第一步。本文将详细探讨如何通过调用用友BIP接口/yonbip/scm/purchaseorder/list
获取采购订单数据,并对其进行初步加工。
接口调用配置
首先,我们需要配置API请求的元数据。根据提供的元数据配置,我们可以确定以下关键参数:
- API路径:
/yonbip/scm/purchaseorder/list
- 请求方法:
POST
- 分页参数:
pageIndex
(页码)和pageSize
(每页数量) - 查询条件:通过
simpleVOs
字段设置 - 排序字段:通过
queryOrders
字段设置
请求参数设置
在请求参数中,我们需要特别关注分页、查询条件和排序字段的配置。以下是具体的请求参数示例:
{
"pageIndex": "1",
"pageSize": "1000",
"isSum": "false",
"simpleVOs": {
"field1": {
"field": "totalQuantity",
"op": "egt",
"value1": ""
},
"field2": {
"field": "auditTime",
"op": "egt",
"value1": "{{LAST_SYNC_TIME|datetime}}"
},
"field3": {
"field": "org",
"op": "eq",
"value1": "1553156871271481351"
}
},
"queryOrders": [
{
"field": "id",
"order": "asc"
}
]
}
数据格式化与转换
在获取到原始数据后,需要对其进行格式化和转换。根据元数据配置中的formatResponse
字段,我们需要将原始字段名转换为新的字段名,并确保数据类型一致。例如:
- 将原始字段
id
转换为new_id
- 将
purchaseOrders_id
转换为new_purchaseOrders_id
- 将
headFreeItem.define1
转换为new_headFreeItem
以下是一个简单的数据转换示例:
{
"id": "12345",
"purchaseOrders_id": "67890",
"headFreeItem.define1": "",
...
}
转换后:
{
"new_id": "12345",
"new_purchaseOrders_id": "",
...
}
实际操作步骤
- 构建请求体:根据上述参数设置,构建POST请求体。
- 发送请求:使用HTTP客户端(如Postman或编程语言中的HTTP库)发送POST请求至用友BIP接口。
- 接收响应:解析响应数据,检查是否成功返回所需的数据。
- 格式化响应数据:按照预定义的格式规则,对响应数据进行字段名转换和类型校验。
- 存储或进一步处理:将格式化后的数据存储到目标系统或进行进一步的数据处理。
示例代码
以下是一个使用Python语言调用该API并处理响应数据的示例代码:
import requests
import json
# 构建请求体
payload = {
'pageIndex': '1',
'pageSize': '1000',
'isSum': 'false',
'simpleVOs': {
'field1': {'field': 'totalQuantity', 'op': 'egt', 'value1': ''},
'field2': {'field': 'auditTime', 'op': 'egt', 'value1': '{{LAST_SYNC_TIME|datetime}}'},
'field3': {'field': 'org', 'op': 'eq', 'value1': '1553156871271481351'}
},
'queryOrders': [{'field': 'id', 'order': 'asc'}]
}
# 设置请求头
headers = {'Content-Type': 'application/json'}
# 发起POST请求
response = requests.post('https://api.yonyou.com/yonbip/scm/purchaseorder/list', headers=headers, data=json.dumps(payload))
# 检查响应状态码
if response.status_code == 200:
data = response.json()
# 格式化响应数据
formatted_data = []
for item in data['data']:
formatted_item = {
'new_id': item.get('id'),
'new_purchaseOrders_id': item.get('purchaseOrders_id'),
# 添加其他字段转换逻辑...
}
formatted_data.append(formatted_item)
# 输出或存储格式化后的数据
print(json.dumps(formatted_data, indent=4))
else:
print(f"Failed to fetch data: {response.status_code}")
通过上述步骤和代码示例,可以高效地从用友BIP系统中获取采购订单数据,并进行必要的数据加工,为后续的数据集成奠定基础。
使用轻易云数据集成平台进行ETL转换并写入旺店通·企业奇门API接口
在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)转换,并转为目标平台所能接收的格式。本文将详细探讨如何使用轻易云数据集成平台,将采购订单数据转换为旺店通·企业奇门API接口所能接收的格式,并最终写入目标平台。
API接口配置与元数据解析
首先,我们需要理解旺店通·企业奇门API接口的配置和元数据。根据提供的元数据配置,目标API接口为wdt.purchase.order.push
,请求方法为POST
。该接口要求传入多个字段,包括供应商编号、仓库编号、API单号等。
以下是主要字段及其描述:
provider_no
: 供应商编号warehouse_no
: 仓库编号outer_no
: API单号is_use_outer_no
: 是否使用外部单号作为系统采购单号is_check
: 是否自动审核contact
: 收货人姓名purchase_name
: 采购员remark
: 备注details_list
: 采购明细节点
数据转换与映射
在进行ETL转换时,我们需要将源平台的数据映射到上述字段中。例如,供应商编号(provider_no
)需要从源数据中的vendor_code
字段获取,而仓库编号(warehouse_no
)则通过查找特定ID获取。
以下是具体的数据映射规则:
[
{"field":"provider_no","value":"{vendor_code}"},
{"field":"warehouse_no","value":"_findCollection find code from 4f73f755-1c4f-33e6-b5a1-7e3b8d894800 where id={new_warehouse}"},
{"field":"outer_no","value":"{code}"},
{"field":"is_use_outer_no","value":"1"},
{"field":"is_check","value":"1"},
{"field":"contact","value":""},
{"field":"purchase_name","value":"{creator}"},
{"field":"remark","value":"{memo}"}
]
对于采购明细节点(details_list
),我们需要进一步解析每个子字段,如下所示:
[
{"field":"spec_no","value":"{{detail_list.product_cCode}}"},
{"field":"num","value":"{{detail_list.purchaseOrders_subQty}}"},
{"field":"price","value":"{{detail_list.oriTaxUnitPrice}}"},
{"field":"discount","value":"1"},
{"field":"tax_price","value":"{{detail_list.oriTaxUnitPrice}}"},
{"field":"remark","value":"{{detail_list.purchaseOrders_memo}}"}
]
实施ETL转换
在轻易云数据集成平台中,可以通过可视化操作界面配置上述映射规则。以下是具体步骤:
- 提取数据:从源平台提取原始采购订单数据。
- 清洗数据:确保数据完整性和一致性,例如去除空值或重复项。
- 转换数据:根据上述映射规则,将源数据字段转换为目标API接口所需的格式。
- 加载数据:调用旺店通·企业奇门API接口,将转换后的数据写入目标平台。
调用API接口
完成ETL转换后,通过HTTP POST请求将处理后的数据发送到目标API接口。以下是一个示例请求体:
{
"provider_no": "12345",
"warehouse_no": "WH001",
"outer_no": "PO123456",
"is_use_outer_no": "1",
"is_check": "1",
"contact": "",
"purchase_name": "张三",
"remark": "这是一个测试采购单",
"details_list": [
{
"spec_no": "SKU001",
"num": "10",
"price": "100.00",
"discount": "1",
"tax_price": "100.00",
"remark": ""
}
]
}
通过以上步骤,我们实现了从源平台到旺店通·企业奇门API接口的数据无缝对接。这不仅提高了业务流程的效率,还确保了数据的一致性和准确性。