案例分享:旺店通·旗舰奇门数据集成到金蝶云星空
在本技术案例中,我们将探讨如何通过高效的数据集成方案,实现旺店通·旗舰奇门的入库数据与金蝶云星空系统的无缝对接。该项目名为“19 旺店通其他入库(预入库转入专用)”,主要目标是在保障数据不漏单和高效处理的前提下,批量将业务数据从旺店通传输到金蝶云,优化企业资源管理。
获取接口数据:调用 API wdt.wms.stockin.other.querywithdetail
为了实现这一需求,首先需要定时可靠地抓取旺店通·旗舰奇门接口提供的数据。我们利用API wdt.wms.stockin.other.querywithdetail
对各个预入库单进行查询,通过分页机制确保能够完整获取所有待处理的数据,同时避免触发API限流。这一过程采用自定义转换逻辑,将原始数据格式调整为适配金蝶云星空的结构。
数据快速写入: 调用 API batchSave
完成初步的数据转换后,我们使用batchSave
API,将经过清洗和整理后的大量业务数据快速写入到金蝶云星空系统中。由于轻易云平台支持高吞吐量的数据写入能力,这一步骤得以大幅提升处理效率,并保证了每条记录都准确进入目标系统内存储。
实现监控与告警机制
为了确保全程顺利进行,并实时掌握任务状态及性能表现,我们设置了集中监控和告警系统。在任何异常情况发生时,例如某批次失败或响应延迟过长等,都能及时通知相关人员并采取补救措施。同时,还配置了自动重试机制,以最大程度减少人工干预,提高整体流程稳定性。
此案例中所展现的不仅是一个简单对接,更是一套全面、可视化的解决方案,通过整合前端(旺店通·旗舰奇门)与后台(金蝶云星空)的资源流动,大幅提升了业务运作效率及透明度,为企业提供强有力的数据支撑。
调用旺店通·旗舰奇门接口wdt.wms.stockin.other.querywithdetail获取并加工数据
在数据集成生命周期的第一步,我们需要调用源系统的API接口获取数据,并进行初步加工。本文将详细介绍如何通过轻易云数据集成平台调用旺店通·旗舰奇门接口wdt.wms.stockin.other.querywithdetail
,并对获取的数据进行处理。
接口概述
接口wdt.wms.stockin.other.querywithdetail
用于查询其他入库单的详细信息。该接口采用POST请求方式,支持分页查询和多种业务参数过滤。以下是元数据配置中的关键字段:
- api:
wdt.wms.stockin.other.querywithdetail
- method:
POST
- number:
order_no
- id:
stockin_id
- idCheck:
true
请求参数配置
请求参数分为分页参数和业务参数两大类:
-
分页参数(pager)
page_size
: 每页记录数,默认值为50。page_no
: 页码,默认值为1。
-
业务参数(params)
start_time
: 查询开始时间,使用上次同步时间({{LAST_SYNC_TIME|datetime}}
)。end_time
: 查询结束时间,使用当前时间({{CURRENT_TIME|datetime}}
)。status
: 入库单状态,固定值80。warehouse_no
: 仓库编号。stockin_no
: 入库单号。other_stockin_no
: 其它入库业务单号。
条件过滤
条件过滤部分定义了两个逻辑条件组,用于筛选符合特定条件的数据:
-
第一组条件:
reason
: 等于“预入库转其它入库(系统默认)”。logistics_no
: 不包含“WP”。
-
第二组条件:
remark
: 包含“预入库转其它入库(系统默认)”。logistics_no
: 不包含“WP”。
数据请求与清洗
在调用接口获取数据后,需要对返回的数据进行初步清洗和处理,以确保数据质量和一致性。以下是具体步骤:
-
发送请求 根据元数据配置构建请求体,并发送POST请求到指定的API端点。
-
解析响应 对响应结果进行解析,提取出有效的入库单信息。
-
数据清洗 根据定义的条件过滤规则,对返回的数据进行筛选。例如,只保留符合“预入库转其它入库(系统默认)”且物流编号不包含“WP”的记录。
-
转换与写入准备 清洗后的数据将作为后续转换与写入阶段的输入。在此阶段,可以根据需要对字段进行重命名、格式转换等操作,以满足目标系统的要求。
实践案例
假设我们需要从2023年10月1日到2023年10月31日期间,查询状态为80的其他入库单,并且仓库编号为WH001。我们可以构建如下请求体:
{
"pager": {
"page_size": "50",
"page_no": "1"
},
"params": {
"start_time": "2023-10-01T00:00:00",
"end_time": "2023-10-31T23:59:59",
"status": "80",
"warehouse_no": "WH001"
}
}
发送请求后,我们会得到一个包含多个入库单详细信息的响应。接下来,我们应用条件过滤规则,对响应中的每条记录进行检查,只保留符合以下条件的记录:
[
{
"reason": "预入库转其它入库(系统默认)",
"logistics_no": {"$notlike": "%WP%"}
},
{
"remark": {"$like": "%预入库转其它入库(系统默认)%"},
"logistics_no": {"$notlike": "%WP%"}
}
]
通过上述步骤,我们可以高效地获取并清洗所需的数据,为后续的数据转换与写入做好准备。这一过程不仅提高了数据处理的透明度和效率,还确保了数据的一致性和准确性。
使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口
在数据集成过程中,将源平台的数据转换为目标平台所需的格式是关键步骤。本文将详细介绍如何使用轻易云数据集成平台将源数据进行ETL(Extract, Transform, Load)转换,并通过金蝶云星空API接口将其写入目标平台。
配置元数据
首先,我们需要了解元数据配置的结构和作用。以下是我们要使用的元数据配置:
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"rowsKey": "array",
"rows": 5,
"method": "batchArraySave"
},
"request": [
{"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{order_no}"},
{"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"QTRKD02"},
{"field":"FStockOrgId","label":"库存组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"106"},
{"field":"F_KD_Assistant","label":"其他入库类型","type":"string","value":"QTRKLX012","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
{"field":"FStockDirect","label":"库存方向","type":"string","value":"GENERAL"},
{"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{{stockin_time|dateTime}}"},
{"field":"FOwnerTypeIdHead","label":"货主类型","type":"string","describe":"多类别基础资料列表","value":"BD_OwnerOrg"},
{"field":"FOwnerIdHead","label":"货主","type":"","describe":"","parser":{"name":"","params":""},"value":""},
{"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""},
{"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""},
{"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""}
],
"otherRequest":[
{"field":"",
"label":"",
"type":"",
"describe":"",
"parser":{
"name":"",
"params":[]
},
"value":[]
}
]
}
数据提取与清洗
首先,我们从源系统中提取原始数据。在这个过程中,确保所有必要的数据字段都被正确提取,并且数据格式符合要求。例如:
{
"order_no": "ORD123456",
"stockin_time": "2023-10-01T12:00:00Z",
...
}
数据转换
接下来,我们需要将提取到的数据进行转换,使其符合金蝶云星空API接口的要求。以下是一些关键字段及其转换规则:
-
单据编号 (FBillNo):
{"field": "FBillNo", "value": "{order_no}"}
将
order_no
转换为FBillNo
。 -
单据类型 (FBillTypeID):
{ "field": "FBillTypeID", "parser": { "name": "ConvertObjectParser", "params": ["FNumber"] }, "value": "QTRKD02" }
使用
ConvertObjectParser
将固定值QTRKD02
转换为目标格式。 -
库存组织 (FStockOrgId):
{ ... ... ... }
-
日期 (FDate):
{ ... ... ... }
-
备注 (FNOTE):
{ ... ... ... }
-
明细信息 (FEntity):
{
...
}
数据写入
最后,将转换后的数据通过金蝶云星空API接口写入目标系统。使用POST方法调用batchSave
API:
import requests
url = 'https://api.kingdee.com/batchSave'
headers = {'Content-Type': 'application/json'}
payload = {
# 这里填充已转换的数据
}
response = requests.post(url, headers=headers, json=payload)
if response.status_code == 200:
print("Data successfully written to Kingdee Cloud.")
else:
print(f"Failed to write data: {response.text}")
实践案例
假设我们有如下源数据:
{
...
}
经过上述步骤处理后,最终生成如下目标数据:
{
...
}
通过上述步骤,我们成功地将源平台的数据进行了ETL转换,并通过金蝶云星空API接口写入了目标系统。这种方法不仅提高了数据处理的效率,还确保了数据的一致性和准确性。