用友U8数据集成到旺店通·企业奇门:B111 U8采购入库单(分页) => OMS采购订单案例分享
在系统集成过程中,实现用友U8与旺店通·企业奇门的数据对接是一项挑战,特别是在处理大批量、多页数的采购入库单时。本文将围绕“B111 u8采购入库单(分页) => oms采购订单”的实际运行方案,探讨如何高效、可靠地实现这一数据集成。
首先,通过调用用友U8的API /apilink/u8api
获取所需的采购入库单数据,需要特别注意的是该接口的数据分页和限流问题。在具体实施中,我们采用了定时任务来确保每次抓取操作不仅覆盖所有页面,还能避免因频繁调用造成的网络拥堵或接口限制。这一机制通过周期性执行,提高了数据抓取过程中的稳定性和准确性。
为了保证大量数据能够快速写入旺店通·企业奇门,我们使用了其提供的API接口 wdt.purchase.order.push
。在此过程中,对应的数据格式差异是另一个重要考虑点。通过灵活的数据映射和转换规则配置,可以有效消除两者之间的格式不兼容问题。例如,用友U8可能以XML形式返回数据,而旺店通则更倾向于JSON格式,这需要我们进行相应的解析与转换操作。
值得一提的是,在整个传输和写入流程中,我们实时监控并记录日志,以便及时发现并解决潜在的问题。此外,为防止异常情况下的数据丢失或重复提交,我们设计了一套完善的错误重试机制。当检测到请求失败时,会自动尝试重新发送,从而保证整体过程的健壮性和可靠性。
综上所述,本案例不仅展示了如何巧妙利用各个API实现系统间的数据流动,也为未来类似项目提供了宝贵经验。在后续内容中,将详细介绍具体技术细节及实现步骤。
用友U8接口调用与数据加工技术案例
在数据集成过程中,调用源系统接口并获取数据是至关重要的第一步。本文将深入探讨如何通过轻易云数据集成平台调用用友U8接口/apilink/u8api
,获取采购入库单数据,并进行初步的数据加工。
接口配置与请求参数
首先,我们需要配置接口的元数据,以便正确地调用用友U8的API。以下是关键的元数据配置:
{
"api": "/apilink/u8api",
"effect": "QUERY",
"method": "POST",
"number": "cvenabbname",
"id": "ccode",
"name": "poid",
"idCheck": true,
"request": [
{
"field": "data",
"label": "消息体参数",
"type": "object",
"children": [
{
"field": "过滤条件_1",
"label": "过滤条件_1",
"type": "object",
"children": [
{
"field": "名称",
"label": "开始时间",
"type": "string",
"value": "dnmaketime"
},
{
"field": "比较符号",
"label": "大于等于",
"type": "string",
"value": ">="
},
{
"field": "值",
"label": "短日期",
"type":"date",
“value”: "{{LAST_SYNC_TIME|datetime}}"
}
]
},
{
“field”: “apicontext”,
“label”: “分页参数”,
“type”: “object”,
“children”: [
{
“field”: “pagesize”,
“label”: “分页大小”,
“type”: “int”,
“value”: 10
},
{
“field”: “pageindex”,
“label”: “页码”,
“type”: “int”,
“value”: 1
}
]
},
{
...
}
]
}
],
...
}
请求参数详解
在上述配置中,data
字段包含了多个子对象,每个子对象代表一个过滤条件或分页参数。以下是几个关键过滤条件的详细说明:
-
过滤条件_1(开始时间):
名称
:dnmaketime
比较符号
:>=
值
:{{LAST_SYNC_TIME|datetime}}
此条件用于筛选出从上次同步时间之后创建的记录。
-
分页参数:
pagesize
: 每页返回记录数,设置为10。pageindex
: 当前页码,初始为1。
-
过滤条件_2(结束时间):
名称
:dnmaketime
比较符号
:<=
值
:{{CURRENT_TIME|datetime}}
此条件用于筛选出当前时间之前创建的记录。
-
其他过滤条件:
- 红蓝标志、仓库编码、排除生产等,这些条件用于进一步细化筛选范围。
调用API并处理响应
配置好请求参数后,通过POST方法调用/apilink/u8api
接口。以下是一个示例请求体:
{
...
data: {
...
apicontext: {
pagesize: 10,
pageindex: 1
},
...
//其他过滤条件
...
}
}
成功调用后,API将返回符合条件的数据列表。为了确保数据完整性和一致性,我们可以启用自动填充响应功能(autoFillResponse),这将自动处理并格式化返回的数据。
数据加工与清洗
获取到原始数据后,需要对其进行初步加工和清洗,以便后续的数据转换和写入步骤。常见的数据加工操作包括:
- 字段映射:将源系统字段映射到目标系统字段。例如,将用友U8中的
ccode
映射到OMS中的订单编号。 - 数据类型转换:确保日期、数值等字段类型一致。
- 去重与校验:移除重复记录,并校验关键字段是否符合业务规则。
通过上述步骤,我们可以高效地从用友U8系统中获取所需数据,并为后续的数据处理做好准备。这不仅提升了数据集成的效率,也确保了业务流程的顺畅运行。
使用轻易云数据集成平台进行ETL转换并写入旺店通·企业奇门API接口
在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL转换,转为目标平台旺店通·企业奇门API接口所能够接收的格式,并最终写入目标平台。以下将详细介绍如何利用元数据配置完成这一过程。
数据请求与清洗
首先,我们从源系统(如U8采购入库单)获取原始数据。这些数据通常包含多个字段,如供应商编号、仓库编号、API单号等。为了确保数据的准确性和一致性,我们需要对这些原始数据进行清洗和预处理。这一步骤包括去除无效数据、填补缺失值以及标准化字段格式等。
数据转换与写入
接下来,我们进入关键的ETL转换阶段。根据提供的元数据配置,我们需要将清洗后的数据映射到旺店通·企业奇门API接口所需的格式,并通过API接口将其写入目标平台。
元数据配置解析
以下是我们需要映射的主要字段及其描述:
-
供应商编号 (provider_no):
- 字段类型:string
- 描述:ERP供应商档案必须存在此编号,否则推送失败
- 映射值:
{cvencode}
-
仓库编号 (warehouse_no):
- 字段类型:string
- 描述:代表仓库所有属性的唯一编码,用于仓库区分
- 映射值:
{cwhcode}
-
API单号 (outer_no):
- 字段类型:string
- 描述:保证唯一,长度不能超过20
- 映射值:
{id}
-
自动审核 (is_check):
- 字段类型:string
- 固定值:"1"
-
收货人姓名 (contact):
- 字段类型:string
- 描述:收货人姓名
-
采购员 (purchase_name):
- 字段类型:string
- 描述:采购员
-
收货人联系电话 (telno):
- 字段类型:string
- 描述:收货人联系电话
-
收货地址 (receive_address):
- 字段类型:string
- 描述:收货地址
-
预计到货时间 (expect_arrive_time):
- 字段类型:datetime
- 描述:时间格式为YYYY-MM-DD HH:MM:SS
- 映射值:
{dveridate}
-
其他费用 (other_fee):
- 字段类型:string
- 描述:其他费用
-
邮资 (post_fee):
- 字段类型:string
- 描述:邮资
-
备注 (remark):
- 字段类型:string
- 描述:采购单备注
- 映射值:
{cmemo}
-
入库单号 (prop1):
- 字段类型:string
- 映射值:
{ccode}
-
入库时间 (prop2):
- 字段类型:string
- 映射值:
{ddate}
-
采购明细节点 (details_list): 包含多个子字段,如商家编码(sku)、采购数量、采购价格、税率等。
子字段示例:
[ { "field": "spec_no", "label": "商家编码", "type": "string", "describe": "sku", "value": "{{body.cinvcode}}" }, { "field": "num", "label": "采购数量", "type": "string", "value": "{{body.iquantity}}" }, { "field": "price", "label": "采购价格", "type": "string", "value": "{{body.ioricost}}" }, { "field": "tax", "label": "税率", "type": "string", "value": "0.13" } ]
实际操作步骤:
- 配置请求参数:
{
"api":"wdt.purchase.order.push",
...
...
...
}
- 映射字段:
{
...
{
"field":"provider_no",
...
...
...
...
...
},
{
...
...
...
...
...
}
}
- 发送POST请求:
import requests
url = 'https://api.wangdiantong.com/purchase_order_push'
headers = {'Content-Type': 'application/json'}
data = {
# 填充已映射的数据字段...
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
通过上述步骤,我们成功地将源平台的数据经过ETL转换后写入了目标平台旺店通·企业奇门。这一过程不仅确保了数据的一致性和准确性,还极大提升了业务流程的效率。