金蝶云星空数据集成到旺店通·旗舰版技术案例分享
在采购订单管理中,准确和高效的数据对接对于提高业务运营的透明度和效率至关重要。本案例将详细讨论如何使用轻易云数据集成平台,将金蝶云星空中的采购订单取消数据(新-取消参数0)无缝集成到旺店通·旗舰版的解决方案。核心关注点包括调用金蝶云星空接口executeBillQuery
检索订单信息,以及通过旺店通·旗舰版API purchase.PurchaseOrder.cancelByType
完成取消操作。
首先,我们解决了确保不漏单的问题,通过定时可靠地抓取金蝶云星空接口数据,每隔一定时间段精准获取最新的采购订单状态。在调用executeBillQuery
过程中,我们利用分页处理机制,有效应对大量订单查询请求,并采用限流策略防止接口过载。
其次,大量数据需要快速写入到旺店通·旗舰版。我们实现了批量集成方案,对从金蝶云星空获取的数据进行预处理,统一转换为符合旺店通要求的数据格式,以便更高效地调用purchase.PurchaseOrder.cancelByType
接口执行批量取消命令。同时,我们建立了健全的异常处理与错误重试机制,在遭遇网络波动或其他意外情况时自动重试并记录日志,确保每一条指令都被正确执行。
此外,为了解决两套系统间的数据格式差异问题,我们配置了自定义映射规则,将金蝶云星空复杂、多样化的数据结构转换为标准化字段,使其能够兼容于旺店通·旗舰版的数据库设计。这不仅提高了一次性传输成功率,也方便后续维护与优化调整。
综上所述,此技术案例展示了完整且高效的系统对接流程,有赖于精准地 API 调用、实时监控及全面日志记录等关键环节,实现了跨系统之间稳定而快速的数据同步。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,第一步是从源系统获取数据并进行初步加工。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口来实现这一过程。
接口配置与调用
首先,我们需要配置和调用金蝶云星空的executeBillQuery
接口。以下是元数据配置中的关键字段:
api
: "executeBillQuery"method
: "POST"number
: "FBillNo"id
: "FPOOrderEntry_FEntryId"name
: "FBillNo"idCheck
: true
这些字段定义了我们将要调用的API以及其基本参数和方法。具体请求参数如下:
{
"FormId": "PUR_PurchaseOrder",
"FieldKeys": ["FBillNo", "FPOOrderEntry_FEntryId", "FDate", "FSupplierId.FNumber", ...],
"FilterString": "FPurchaseOrgId.FNumber = '100' and FCloseStatus = 'B' and FCloseDate>='{{LAST_SYNC_TIME|datetime}}'",
"Limit": "{PAGINATION_PAGE_SIZE}",
"StartRow": "{PAGINATION_START_ROW}",
"TopRowCount": 0
}
请求参数详解
- FormId: 表单ID,指定业务对象为采购订单(PUR_PurchaseOrder)。
- FieldKeys: 查询字段集合,包括单据编号(FBillNo)、采购订单条目ID(FPOOrderEntry_FEntryId)、采购日期(FDate)等。
- FilterString: 过滤条件,筛选出采购组织编号为100、关闭状态为B且关闭日期大于上次同步时间的记录。
- Limit: 最大行数,控制每次查询返回的数据量。
- StartRow: 开始行索引,用于分页查询。
- TopRowCount: 返回总行数,用于统计查询结果的总数。
数据请求与清洗
通过上述配置,我们可以发送POST请求到金蝶云星空的API接口以获取原始数据。接下来,我们需要对返回的数据进行清洗和初步加工。这一步主要包括以下操作:
- 字段映射与转换:将API返回的数据字段映射到目标系统所需的字段格式。例如,将供应商编号(FSupplierId.FNumber)转换为目标系统中的供应商ID。
- 数据过滤与校验:根据业务需求进一步过滤不符合条件的数据,并进行必要的数据校验。例如,确保所有必填字段都有值,且数据格式正确。
- 异常处理:对于API调用失败或返回异常数据的情况,需要进行错误处理和日志记录,以便后续排查问题。
示例代码
以下是一个示例代码片段,用于调用API并处理返回的数据:
import requests
import json
# API URL
url = 'https://api.kingdee.com/executeBillQuery'
# 请求头
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
}
# 请求体
payload = {
"FormId": "PUR_PurchaseOrder",
"FieldKeys": ["FBillNo", "FPOOrderEntry_FEntryId", "FDate", "FSupplierId.FNumber"],
"FilterString": "FPurchaseOrgId.FNumber = '100' and FCloseStatus = 'B' and FCloseDate>='2023-01-01'",
"Limit": 100,
"StartRow": 0,
"TopRowCount": 0
}
# 发起POST请求
response = requests.post(url, headers=headers, data=json.dumps(payload))
# 检查响应状态码
if response.status_code == 200:
data = response.json()
# 数据清洗与转换逻辑
cleaned_data = []
for record in data:
cleaned_record = {
'bill_no': record['FBillNo'],
'entry_id': record['FPOOrderEntry_FEntryId'],
'date': record['FDate'],
'supplier_id': record['FSupplierId.FNumber']
}
cleaned_data.append(cleaned_record)
else:
print(f"Error: {response.status_code}, {response.text}")
# 输出清洗后的数据
print(cleaned_data)
总结
通过上述步骤,我们成功地从金蝶云星空获取了采购订单相关的数据,并进行了初步清洗和加工。这一过程不仅确保了数据的一致性和准确性,还为后续的数据转换与写入奠定了基础。在实际应用中,可以根据具体业务需求进一步优化和扩展此流程,以实现更复杂的数据集成任务。
数据集成生命周期中的ETL转换:将源平台数据转为旺店通·旗舰版API接口格式
在轻易云数据集成平台的生命周期中,ETL(Extract, Transform, Load)转换是一个关键步骤,尤其是当我们需要将已经集成的源平台数据转化为目标平台——如旺店通·旗舰版API接口所能接收的格式时。本文将深入探讨如何利用元数据配置,将采购订单取消请求的数据进行有效转换和写入。
元数据配置解析
我们使用的元数据配置如下:
{
"api": "purchase.PurchaseOrder.cancelByType",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{"field":"operate_type","label":"operate_type","type":"int","describe":"111"},
{"field":"purchase_no_list","label":"purchase_no_list","type":"string","value":"{FBillNo}","parser":{"name":"StringToArray","params":","}},
{"field":"allow_cancel_checked_order","label":"allow_cancel_checked_order","type":"int","value":"1"}
]
}
API接口解析
该配置文件定义了一个调用purchase.PurchaseOrder.cancelByType
API的请求,具体参数如下:
- operate_type: 操作类型,固定值111。
- purchase_no_list: 采购订单编号列表,从源数据字段
FBillNo
中提取,并通过StringToArray
解析器按逗号分隔。 - allow_cancel_checked_order: 是否允许取消已审核订单,固定值1。
数据转换过程
-
提取源数据: 首先,从源平台提取包含采购订单编号的字段
FBillNo
。假设我们获取到的数据格式如下:{ "FBillNo": "PO12345,PO12346,PO12347" }
-
字段解析与转换:
operate_type
: 固定值111,不需要额外处理。purchase_no_list
: 使用StringToArray
解析器,将字符串“PO12345,PO12346,PO12347”按逗号分隔,转化为数组形式:["PO12345", "PO12346", "PO12347"]
allow_cancel_checked_order
: 固定值1,不需要额外处理。
-
构建请求体: 根据上述解析和转换结果,构建最终的API请求体:
{ "operate_type": 111, "purchase_no_list": ["PO12345", "PO12346", "PO12347"], "allow_cancel_checked_order": 1 }
数据写入目标平台
在完成数据转换后,通过POST方法将构建好的请求体发送到旺店通·旗舰版的API接口。具体实现步骤如下:
-
设置HTTP请求头: 确保设置正确的Content-Type(通常为application/json)和必要的认证信息。
-
发送HTTP请求: 使用HTTP客户端(如curl、Postman或编程语言内置库)发送POST请求:
POST /api/purchase.PurchaseOrder.cancelByType HTTP/1.1 Host: api.wangdian.cn Content-Type: application/json Authorization: Bearer <token> { "operate_type": 111, "purchase_no_list": ["PO12345", "PO12346", "PO12347"], "allow_cancel_checked_order": 1 }
-
处理响应: 接收并处理目标平台返回的响应,根据响应状态码和内容判断操作是否成功,并进行相应的错误处理或日志记录。
通过以上步骤,我们成功地将源平台的数据经过ETL转换后写入到了目标平台——旺店通·旗舰版。这不仅实现了不同系统间的数据无缝对接,还确保了业务流程的高效运作。