旺店通·旗舰奇门销售退货单集成到金蝶云星空的实践案例
在本次技术分享中,我们将探讨如何基于06-ToB销售退货单集成方案,利用轻易云数据集成平台成功实现旺店通·旗舰奇门的数据无缝对接至金蝶云星空。
步骤一:从旺店通·旗舰奇门获取销售退货单数据
首先,通过调用 wdt.wms.stockin.refund.querywithdetail
API 接口,从旺店通·旗舰奇门系统中批量抓取销售退货单的详细数据。为确保高效、可靠地获取这些信息,该接口支持分页请求和限流控制。从而能处理大规模返回数据,并避免因请求频率过高导致的接口异常。
步骤二:清洗与转换数据
考虑到供销两端系统的数据格式不一致性,接下来需要进行必要的数据清洗和转换。这一步骤可以通过平台提供的自定义数据转换逻辑功能来完成。例如,将旺店通中的字段名与金蝶云星空所要求的字段名进行映射,同时对某些特定业务逻辑做出相应调整,以适配目标系统需求。
步骤三:写入金蝶云星空
经过处理后的销售退货单记录准备完毕后,即可使用金蝶云星空提供的 batchSave
API 进行批量写入。为了确保大量数据快速准确地导入目标系统,我们充分利用了该平台优化过的数据写入能力。此外,通过实时监控工具,可以追踪任务状态及性能表现,及时发现并解决可能出现的问题。
结论
此次实际运行过程中,实现了从API调取,到数据清洗转化,再到最终批量保存的一系列操作。不仅保障了重试机制,在面对突发异常时也能够稳妥处理,还具备良好的透明度与实时跟踪性。因此,本篇文章将进一步详述各关键环节以及具体配置细节,为大家提供完整、实用、高效的数据集成解决方案模板。
调用旺店通·旗舰奇门接口wdt.wms.stockin.refund.querywithdetail获取并加工数据
在数据集成生命周期的第一步,我们需要从源系统获取数据并进行初步处理。本文将详细介绍如何通过轻易云数据集成平台调用旺店通·旗舰奇门接口wdt.wms.stockin.refund.querywithdetail
,并对获取的数据进行加工。
接口调用配置
首先,我们需要配置接口调用的元数据。以下是元数据配置的详细信息:
{
"api": "wdt.wms.stockin.refund.querywithdetail",
"method": "POST",
"number": "order_no",
"id": "order_no",
"idCheck": true,
"request": [
{
"field": "pager",
"label": "分页参数",
"type": "object",
"children": [
{
"field": "page_size",
"label": "分页大小",
"type": "string",
"value": "50",
"parent": "pager"
},
{
"field": "page_no",
"label": "页号",
"type": "string",
"value": "1",
"parent": "pager"
}
]
},
{
"field": "params",
"label": "业务参数",
"type": "object",
...
}
],
...
}
请求参数解析
在请求参数中,我们主要关注两个部分:分页参数和业务参数。
-
分页参数:
page_size
: 每页返回的数据条数,默认设置为50。page_no
: 当前页码,默认设置为1。
-
业务参数:
start_time
和end_time
: 分别表示查询的开始时间和结束时间,使用动态变量{{LAST_SYNC_TIME|datetime}}
和{{CURRENT_TIME|datetime}}
来自动填充。status
: 入库单状态,这里我们设置为80,即已完成状态。time_type
: 时间条件类型,默认为0(修改时间)。warehouse_no
,shop_nos
,stockin_no
: 分别表示仓库编码、店铺编号(多个店铺编号使用英文逗号分隔)和入库单号。
数据请求与清洗
在调用接口获取数据后,我们需要对数据进行清洗,以确保其符合后续处理的要求。以下是一个简单的数据清洗流程:
- 过滤无效数据:根据业务需求过滤掉不符合条件的数据。例如,只保留状态为80(已完成)的入库单。
- 字段映射与转换:将原始数据中的字段映射到目标系统所需的字段,并进行必要的格式转换。例如,将时间字段转换为标准的ISO格式。
- 去重与合并:如果存在重复记录,需要进行去重操作。同时,对于同一订单的多条记录,可以进行合并处理。
示例代码
以下是一个示例代码片段,用于调用接口并处理返回的数据:
import requests
import json
from datetime import datetime
# 定义请求URL和头部信息
url = 'https://api.wangdian.cn/openapi2/wdt.wms.stockin.refund.querywithdetail'
headers = {'Content-Type': 'application/json'}
# 构建请求体
payload = {
'pager': {
'page_size': '50',
'page_no': '1'
},
'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',
'time_type': '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['data']:
if record['status'] == '80':
cleaned_record = {
'order_no': record['order_no'],
'warehouse_no': record['warehouse_no'],
...
}
cleaned_data.append(cleaned_record)
# 输出清洗后的数据
print(json.dumps(cleaned_data, indent=4))
else:
print(f"Error: {response.status_code}")
小结
通过上述步骤,我们成功地调用了旺店通·旗舰奇门接口wdt.wms.stockin.refund.querywithdetail
,并对获取的数据进行了初步清洗和加工。这一步骤为后续的数据转换与写入奠定了基础。在实际应用中,可以根据具体业务需求进一步优化和扩展数据处理逻辑。
使用轻易云数据集成平台将源数据转换并写入金蝶云星空API接口
在数据集成的生命周期中,ETL(提取、转换、加载)过程是至关重要的一环。本文将详细探讨如何使用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并转为金蝶云星空API接口所能够接收的格式,最终写入目标平台。
元数据配置解析
元数据配置是ETL过程中的核心部分,它定义了如何将源数据映射到目标系统的数据结构中。以下是关键字段和配置的详细解析:
-
API接口和请求方法
{"api":"batchSave","method":"POST"}
这里指定了目标API接口为
batchSave
,请求方法为POST
。 -
单据类型
{"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"XSTHD01_SYS"}
单据类型字段
FBillTypeID
使用了ConvertObjectParser
解析器,将值转化为金蝶云星空系统可识别的格式。 -
单据编号
{"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{order_no}"}
单据编号直接从源数据中获取,并映射到目标字段
FBillNo
。 -
销售组织
{"field":"FSaleOrgId","label":"销售组织","type":"string","describe":"销售组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find zip from ec445d8c-9d91-3845-9175-79fb0588e1b3 where shop_no={shop_no}"}
销售组织字段使用了复杂的查询语句,从另一个集合中查找对应的值,并通过解析器进行转换。
-
日期
{"field":"FDate","label":"日期","type":"date","describe":"日期","value":"{modified}"}
日期字段直接从源数据中的修改时间字段获取,并映射到目标字段
FDate
。 -
库存组织
{"field":"FStockOrgId","label":"库存组织","type":"string","describe":"库存组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find FRetorgId from 3164206c-5f8d-3e8b-be49-752e25070e6f where F_KD_WDTRundNo={refund_no}"}
库存组织字段同样使用复杂查询语句,通过解析器转换后映射到目标字段。
明细信息处理
明细信息部分包含多个子字段,每个子字段都需要进行相应的处理和映射:
-
物料编码
{"field":"FMaterialId","label":"物料编码","type":"string","describe":"物料编码","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{{details_list.spec_no}}"}
物料编码从明细列表中的规格编号字段获取,并通过解析器转换后映射到目标字段。
-
实退数量
{"field":"FRealQty","label":"实退数量","type": "int", "describe": "实退数量", "value": "{{details_list.num}}"}
实退数量直接从明细列表中的数量字段获取,并映射到目标字段。
-
含税单价
{"field": "FTaxPrice", "label": "含税单价", "type": "float", "describe": "含税单价", "value": "_findCollection find FTAXPRICE from 3164206c-5f8d-3e8b-be49-752e25070e6f where F_KD_WDTRundNo={refund_no} FMaterialID={{details_list.spec_no}}"}
含税单价通过复杂查询语句从另一个集合中查找对应值,并映射到目标字段。
-
是否赠品
{"field": "FIsFree", "label": "是否赠品", "type": "bool", "describe": "是否赠品", "value": "_findCollection find FISFREE from 3164206c-5f8d-3e8b-be49-752e25070e6f where F_KD_WDTRundNo={refund_no} FMaterialID={{details_list.spec_no}}"}
是否赠品通过查询语句查找对应值,并映射到目标字段。
财务信息处理
财务信息部分包含多个子字段,每个子字段也需要进行相应的处理和映射:
-
结算组织
{"field": "FSettleOrgId", "label": "结算组织", "type": "string", "describe": "结算组织", "parser":{"name": "ConvertObjectParser", "params": "FNumber"}, "value": "_findCollection find FSALEORGID from 3164206c-5f8d-3e8b-be49-752e25070e6f where F_KD_WDTRundNo={refund_no}"}
结算组织通过复杂查询语句查找对应值,并通过解析器转换后映射到目标字段。
-
整单折扣额、是否含税、价外税
{"field": "FAllDisCount", "label": "整单折扣额", "type": "float", "describe": "整单折扣额"}, {"field": "FIsIncludedTax", "label": "是否含税", "type": "bool", "value": "true"}, {"field": "FIsPriceExcludeTax", "label": "价外税", "type": "bool", "value": "true"}
这些财务信息直接从源数据或默认值中获取,并映射到相应的目标字段。
操作配置
最后,我们需要配置一些操作相关的信息,以确保数据能够正确提交并审核:
-
业务对象表单Id
{"field": FormId, label: 业务对象表单Id, type: string, describe: 业务对象表单Id, value: SAL_RETURNSTOCK}
-
执行操作
{"field": Operation, label: 执行操作, type: string, describe: 执行操作, value: BatchSave}
-
提交并审核、验证基础资料、负库存
{"field": IsAutoSubmitAndAudit, label: 提交并审核, type: bool, describe: 提交并审核, value: true}, {"field": IsVerifyBaseDataField, label: 验证基础资料, type: bool, describe: 是否验证所有基础资料有效性,布尔类,默认false(非必录), value: false}, {"field": InterationFlags, label: 负库存, type: string, value: STK_InvCheckResult}
这些操作配置确保了在完成ETL转换后,数据能够自动提交并审核,同时设置了一些必要的校验和标志位以保证数据完整性和一致性。
通过以上步骤,我们成功地将源平台的数据进行了ETL转换,使其符合金蝶云星空API接口所能接收的格式,最终实现了无缝的数据写入。