案例分享:旺店通·企业奇门数据集成到用友U8的解决方案
在本文中,我们将探讨如何通过轻易云数据集成平台,将旺店通·企业奇门(以下简称“奇门”)的数据高效地集成到用友U8系统。具体案例是将A oms销售出库单转换为u8发货单,方案名称为"A oms销售出库单 => u8发货单_211"。
我们的任务是利用wdt.stockout.order.query.trade API接口从奇门获取数据,并通过/apilink/u8api接口向用友U8写入数据。在实施过程中,需要关注以下几个关键技术点:
-
高吞吐量的数据写入能力: 在大量订单处理场景下,高效的数据写入能力至关重要。我们必须确保系统能够实时响应,并能快速批量导入到用友U8中,而不影响业务连续性。
-
集中监控和告警系统: 实时跟踪每个数据集成任务的状态和性能,这样可以及时发现并解决潜在问题。例如,当某一批次的订单未成功写入时,可迅速触发告警机制以进行人工干预或自动重试。
-
分页与限流处理: 由于API接口可能对查询结果进行分页且有访问频率限制,所以需要实现稳定可靠的抓取逻辑,以保证全量、无遗漏地获取所有必要的数据。这包括动态调整分页参数及管理请求频率,避免触碰API调用上限。
-
自定义数据转换逻辑: 奇门和用友U8之间存在不同的数据格式与结构差异。我们需要设计特定的映射规则来适应各种复杂需求,例如字段重命名、类型转化等,以确保两者间的数据准确匹配。
-
异常处理与错误重试机制: 在实际运行过程中,不可避免会遇到网络波动或服务不可达等情况。因此,需要一个健壮的异常处理框架,包括详细日志记录及智能化重试机制,以最高程度保障系统鲁棒性。
-
可视化操作界面支持: 利用轻易云提供的可视化设计工具,可以直观展示整个流程,使得配置调整更加简便,同时提升运维效率。这种透明度帮助技术团队全面掌握各个环节状态,从而更好定位并解决问题。
接下来,我们将详细介绍此方案具体实施步骤以及代码示例,旨在为类似需求提供实战参考依据。
调用源系统旺店通·企业奇门接口wdt.stockout.order.query.trade获取并加工数据
在轻易云数据集成平台中,调用源系统接口是数据处理生命周期的第一步。本文将详细探讨如何通过调用旺店通·企业奇门接口wdt.stockout.order.query.trade
获取销售出库单数据,并进行初步的数据加工。
接口概述
接口wdt.stockout.order.query.trade
用于查询销售出库单信息,支持多种查询条件和分页功能。该接口采用POST请求方式,返回的数据包括订单状态、时间区间、店铺编号、仓库编号等信息。
请求参数配置
根据元数据配置,以下是请求参数的详细说明:
- status: 订单状态,类型为字符串。例如:5已取消,55已审核,95已发货等。
- start_time: 开始时间,用于增量获取数据,格式为
yyyy-MM-dd HH:mm:ss
。 - end_time: 结束时间,用于增量获取数据,格式为
yyyy-MM-dd HH:mm:ss
。 - src_order_no: 系统订单编号,可以单独按照系统单号查询。
- src_tid: 原始单号,可以单独按照原始单号查询。
- stockout_no: 出库单号,可以单独按照出库单号查询。
- is_by_modified: 时间查询条件,当指定状态字段后,传0按照原销售出库单接口规则返回,传1按照出库单的最后修改时间进行返回。
- shop_nos: 店铺编号,用于获取指定店铺的单据数据信息。
- warehouse_no: 仓库编号,用于获取指定仓库的单据数据信息(不支持一次推送多个仓库编号)。
- page_size: 每页返回的数据条数,默认值为40。
- page_no: 页号,从0开始。
请求示例
以下是一个完整的请求示例:
{
"status": "95",
"start_time": "2024-01-30 23:59:59",
"end_time": "2024-01-31 23:59:59",
"shop_nos": "100001,100002,100003,100004,100005,100006,100010,020709",
"warehouse_no": "100010",
"page_size": "50",
"page_no": "0"
}
数据加工
在获取到销售出库单数据后,需要对数据进行初步加工,以便后续的数据转换与写入。主要的加工步骤包括:
-
字段映射与转换:将源系统中的字段映射到目标系统所需的字段。例如,将
order_no
映射到U8发货单中的订单编号字段。 -
数据清洗:过滤掉无效或不符合业务规则的数据。例如,只保留状态为“已发货”的订单。
-
增量更新处理:根据时间戳或其他标识符处理增量更新的数据。例如,通过
start_time
和end_time
参数获取最近一天内的新订单或更新订单。
示例代码
以下是一个简单的数据加工示例代码:
import requests
import json
# 设置请求URL和头部信息
url = 'https://api.wangdian.cn/openapi2/wdt.stockout.order.query.trade'
headers = {'Content-Type': 'application/json'}
# 构建请求体
payload = {
"status": "95",
"start_time": "2024-01-30 23:59:59",
"end_time": "2024-01-31 23:59:59",
"shop_nos": "100001,100002,100003,100004,100005,100006,100010,020709",
"warehouse_no": "100010",
"page_size": "50",
"page_no": "0"
}
# 发起POST请求
response = requests.post(url, headers=headers, data=json.dumps(payload))
# 检查响应状态码
if response.status_code == 200:
data = response.json()
# 数据清洗与转换
processed_data = []
for order in data['orders']:
if order['status'] == '95': # 保留已发货订单
processed_order = {
'order_id': order['order_no'],
'order_type': order['order_type_name'],
# 添加更多需要映射和转换的字段
}
processed_data.append(processed_order)
# 输出处理后的数据
print(json.dumps(processed_data, indent=4))
else:
print(f"请求失败,状态码:{response.status_code}")
通过上述步骤,我们能够有效地调用旺店通·企业奇门接口获取销售出库单数据,并进行初步的数据加工,为后续的数据转换与写入打下坚实基础。
用友U8API接口数据转换与写入技术案例
在轻易云数据集成平台中,将源平台的OMS销售出库单数据转换并写入到目标平台用友U8的发货单,需要经过ETL(提取、转换、加载)过程。本文将详细探讨如何配置和使用元数据,将源数据转换为用友U8API接口所能接收的格式,并最终成功写入目标系统。
数据请求与清洗
首先,我们需要确保从源平台OMS获取的数据是完整且干净的。通过轻易云平台的数据请求功能,可以提取所需的销售出库单数据,并进行必要的清洗操作,以确保数据的一致性和准确性。
数据转换
在数据转换阶段,我们需要根据用友U8API接口的要求,对数据进行相应的格式化和映射。以下是关键字段及其对应关系的详细配置:
-
单据信息
- 单据模版:固定值 "单据模版"
- 红蓝标记:固定值 "蓝"
-
单据头
- 发货单号:映射至
{order_no}
- 发货日期:映射并格式化至
{{consign_time|datetime}}
- 销售类型:固定值 "国内零售"
- 客户简称:映射至
{shop_name}
,并通过元数据配置进行正向映射 - 销售部门:同样映射至
{shop_name}
,并通过元数据配置进行正向映射 - 税率:固定值 "13"
- 交易编号:映射至
{src_tids}
- 备注:组合字段,包含
{logistics_name} {receiver_area}-{receiver_address}
- 制单人:映射至
{operator_name}
- 订单号:映射至
{trade_no}
- 客户地址:组合字段,包含
{receiver_area}-{receiver_address}
- 货运公司:映射至
{logistics_name}
- 业务员:固定值 "林鑫贵"
- 审核日期:映射并格式化至
{{consign_time|datetime}}
- 发货单号:映射至
-
单据体 每个“行”对象包含以下字段:
- 仓库名称:映射至
{warehouse_no}
,并通过元数据配置进行反向映射 - 存货编码:映射至
{{details_list.goods_no}}
- 数量:映射至
{{details_list.goods_count}}
- 税率:固定值 "13"
- 含税单价:使用函数计算
_function round({{details_list.share_amount}}/{{details_list.goods_count}},4)
- 仓库名称:映射至
数据写入
完成上述转换后,即可将处理好的数据通过POST方法发送到用友U8API接口。以下是具体的API调用配置:
- 接口URL:
/apilink/u8api
- 方法: POST
- 执行效果: EXECUTE
- ID检查: true
具体请求体结构如下:
{
"data": {
"单据信息": {
"单据模版": "单据模版",
"红蓝标记": "蓝"
},
"单据头": {
"发货单号": "{order_no}",
"发货日期": "{{consign_time|datetime}}",
"销售类型": "国内零售",
"客户简称": "{shop_name}",
"销售部门": "{shop_name}",
"税率": "13",
"交易编号": "{src_tids}",
"备注": "{logistics_name} {receiver_area}-{receiver_address}",
"制单人": "{operator_name}",
"订单号": "{trade_no}",
"客户地址": "{receiver_area}-{receiver_address}",
"货运公司": "{logistics_name}",
"业务员": "林鑫贵",
"审核日期": "{{consign_time|datetime}}"
},
"单据体": [
{
"行": {
"仓库名称": "{warehouse_no}",
"存货编码": "{{details_list.goods_no}}",
"数量": "{{details_list.goods_count}}",
"税率": "13",
"_function round({{details_list.share_amount}}/{{details_list.goods_count}},4)"
}
}
]
},
...
}
最后,通过调用consignment/create
和consignment/audit
两个接口,实现发货单的创建和审核。
小结
本文详细介绍了如何利用轻易云平台将OMS销售出库单的数据转换为用友U8API接口所能接收的格式,并成功写入目标系统。通过精确的元数据配置和ETL过程管理,确保了整个集成过程高效、可靠。