旺店通·企业奇门数据集成到金蝶云星空:采购入库单对接实例分享
在本次技术案例中,我们将详细探讨如何通过轻易云数据集成平台,实现旺店通·企业奇门的采购入库单(接口:wdt.stockin.order.query.purchase)与金蝶云星空系统(接口:batchSave)的高效对接。本文着重于API接口调用、高并发环境下的数据处理以及异常处理机制,帮助读者了解如何将复杂的业务流程简化为高效、透明且可监控的数据流。
首先,在实现这个系统对接的过程中,最关键的是确保从旺店通·企业奇门获取的数据不漏单。对此,可以利用定时可靠的抓取策略,通过定时任务周期性地调用wdt.stockin.order.query.purchase
接口,从而保证及时读取最新的采购入库单数据,并避免由于网络或其他短暂故障导致的数据遗漏问题。此外,为了应对可能存在的大量数据,我们需要考虑分页和限流问题,这可以通过控制API请求参数中的分页大小来优化。
另外,在将采集到的大量数据批量写入到金蝶云星空时,需要特别关注两系统之间的数据格式差异。为此,规划了一系列映射规则及预处理逻辑,以便在导入前进行必要的数据转换。这部分工作既包括简单字段类型的转换,也涉及更复杂的自定义映射关系和业务逻辑匹配。
最后,由于集成过程中的任何环节都可能出现非预期状况,比如网络抖动、API限流等,因此必须设计一套健全的异常处理与错误重试机制。这不仅能确保每一个有效订单最终被成功传递至目标系统,而且能够提供详细日志记录以供实时监控和后续审计分析。在这方面,通过轻易云平台内置的一些工具,可以方便快捷地设置报警规则并自动触发相应恢复措施,大大提升了整体集成方案的稳定性与可靠性。
以上是关于此次技术案例开头部分的重要介绍,在随后的具体实施章节中,将进一步详解各个步骤及其代码实现细节。
调用旺店通·企业奇门接口wdt.stockin.order.query.purchase获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockin.order.query.purchase
,以获取采购入库单数据并进行初步加工。
接口调用配置
首先,我们需要配置接口调用的元数据。以下是该接口的元数据配置:
{
"api": "wdt.stockin.order.query.purchase",
"effect": "QUERY",
"method": "POST",
"number": "order_no",
"id": "stockin_id",
"name": "order_no",
"idCheck": true,
"request": [
{
"field": "start_time",
"label": "开始时间",
"type": "datetime",
"describe": "增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss",
"value": "{{LAST_SYNC_TIME|datetime}}"
},
{
"field": "end_time",
"label": "结束时间",
"type": "datetime",
"describe": "增量获取数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss",
"value": "{{CURRENT_TIME|datetime}}"
},
{
"field": "status",
"label": "状态",
"type": "string",
"describe": "入库单状态 10已取消20编辑中25待价格确认30待审核60待结算80已完成(默认80)",
"value":"80"
},
{
"field":"src_order_no",
...
}
],
...
}
请求参数详解
-
start_time 和 end_time:
start_time
和end_time
用于指定增量获取数据的时间范围。通过设置这两个参数,可以确保每次只获取自上次同步以来的新数据。{{LAST_SYNC_TIME|datetime}}
和{{CURRENT_TIME|datetime}}
分别代表上次同步时间和当前时间。
-
status:
- 状态字段用于过滤不同状态的入库单。默认值为80,即只获取已完成的入库单。
-
src_order_no 和 warehouse_no:
src_order_no
用于指定上层单据编号,如果传递该字段,可以不传递开始时间和结束时间。warehouse_no
用于指定仓库编号,以便获取特定仓库的数据。
-
order_no:
- 单号字段用于指定特定的入库单号。
-
分页参数:
page_size
和page_no
用于控制分页,每页返回的数据条数和页码。
数据请求与清洗
在配置好请求参数后,我们可以通过轻易云平台发送POST请求到旺店通·企业奇门接口。以下是一个示例请求:
{
...
{
...
{
...
}
}
}
请求成功后,将返回包含采购入库单信息的数据集。接下来,我们需要对这些数据进行清洗和初步加工,以便后续的数据转换与写入。
数据清洗步骤
-
字段映射与转换:
- 将返回的数据字段映射到目标系统所需的字段。例如,将返回的
order_no
映射为目标系统中的订单编号字段。
- 将返回的数据字段映射到目标系统所需的字段。例如,将返回的
-
数据格式化:
- 确保日期、金额等字段符合目标系统要求的格式。例如,将日期格式从“yyyy-MM-dd HH:mm:ss”转换为目标系统所需的格式。
-
异常处理:
- 对于缺失或异常的数据进行处理,例如填充默认值或记录日志以便后续排查。
示例代码
以下是一个示例代码片段,用于展示如何通过Python脚本实现上述过程:
import requests
import json
from datetime import datetime
# 设置请求URL和头部信息
url = 'https://api.wangdian.cn/openapi2/wdt.stockin.order.query.purchase'
headers = {'Content-Type': 'application/json'}
# 设置请求参数
params = {
'start_time': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
'end_time': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
'status': '80',
'page_size': '40',
'page_no': '0'
}
# 发起POST请求
response = requests.post(url, headers=headers, data=json.dumps(params))
# 检查响应状态码
if response.status_code == 200:
data = response.json()
# 数据清洗与转换
cleaned_data = []
for item in data['orders']:
cleaned_item = {
'订单编号': item['order_no'],
'仓库编号': item['warehouse_no'],
# 更多字段映射...
}
cleaned_data.append(cleaned_item)
# 输出清洗后的数据
print(json.dumps(cleaned_data, indent=4, ensure_ascii=False))
else:
print(f"请求失败,状态码: {response.status_code}")
通过上述步骤,我们成功地从旺店通·企业奇门接口获取了采购入库单数据,并进行了初步清洗和加工,为后续的数据转换与写入奠定了基础。
轻易云数据集成平台:将采购入库单数据转换并写入金蝶云星空API接口
在轻易云数据集成平台上,完成数据集成生命周期的第二步,即将已经集成的源平台数据进行ETL转换,并写入目标平台金蝶云星空API接口,是一个关键环节。本文将详细探讨如何通过元数据配置,将旺店通的采购入库单数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。
数据请求与清洗
在进行ETL转换之前,首先需要从源系统(旺店通)获取采购入库单的数据。假设我们已经完成了数据请求与清洗阶段,获得了如下结构的数据:
{
"order_no": "PO123456",
"provider_no": "P001",
"check_time": "2023-10-01",
"operator_name": "张三",
"warehouse_no": "WH001",
"details_list": [
{
"spec_no": "M001",
"goods_count": 100,
"price": 10.5,
"tax_price": 11.5,
"tax": 13,
"remark": ""
},
{
"spec_no": "M002",
"goods_count": 200,
"price": 0,
"tax_price": 0,
"tax": 13,
"remark": ""
}
]
}
数据转换与写入
为了将上述数据转换为金蝶云星空API接口所能接收的格式,我们需要按照元数据配置进行映射和转换。以下是详细的元数据配置解析及其应用。
元数据配置解析
{
...
}
-
基本字段映射
FBillTypeID
: 单据类型,固定值RKD01_SYS
。FBillNo
: 单据编号,对应源数据中的order_no
。FSupplierId
: 供应商,对应源数据中的provider_no
,使用ConvertObjectParser
进行解析。FDate
: 入库日期,对应源数据中的check_time
。FBZ
: 固定值“旺店通采购入库单”。FZDR
: 制单人,对应源数据中的operator_name
。
-
明细信息映射
明细信息包含多个字段,每个字段都需要对应到源数据中的具体值:
FMaterialId
: 物料编码,对应源数据中明细列表的spec_no
,使用ConvertObjectParser
进行解析。FRealQty
: 实收数量,对应源数据中明细列表的goods_count
。FPrice
: 单价,对应源数据中明细列表的price
。FStockId
: 仓库,对应源数据中的warehouse_no
,使用ConvertObjectParser
进行解析。FGiveAway
: 是否赠品,通过判断价格是否为0来确定,使用CASE语句实现。FTaxPrice
: 含税单价,对应源数据中明细列表的tax_price
。FSHUILV
: 旺店通税率,对应源数据中明细列表的tax
。FOWNERID
: 固定值“100”。FNote
: 备注,对应源数据中明细列表的remark
.
-
其他请求参数
除了上述字段外,还需要一些额外的请求参数来确保接口调用成功:
FormId
: 固定值“STK_InStock”。Operation
: 固定值“Save”。IsAutoSubmitAndAudit
: 固定值“true”。IsVerifyBaseDataField
: 固定值“false”。SubSystemId
: 固定值“21”。
数据组装与写入
根据上述元数据配置,我们可以组装出符合金蝶云星空API接口要求的数据结构:
{
"FormId":"STK_InStock",
"Operation":"Save",
...
}
通过HTTP POST方法,将上述组装好的JSON对象发送到金蝶云星空API接口,实现最终的数据写入。
总结
通过轻易云数据集成平台,我们能够高效地将旺店通的采购入库单数据转换为金蝶云星空API接口所能接收的格式,并成功写入目标平台。这不仅提高了系统间的数据流动性和一致性,还极大地提升了业务处理效率。