旺店通·企业奇门数据集成到金蝶云星空的实践案例
在本次技术分享中,我们具体探讨了如何将旺店通·企业奇门的数据通过轻易云数据集成平台,准确无误地对接至金蝶云星空,实现销售退货单的数据流转。此方案命名为“销售退货单旺店通→金蝶”,它不仅确保了大量数据的快速写入,还实现了高效、稳定的数据传输。
主要技术环节包括调用旺店通·企业奇门接口 wdt.stockin.order.query.refund
,定时抓取所需的退货订单数据,并经过适配处理后,通过金蝶云星空提供的 batchSave
接口批量写入。同时,对于分页和限流问题,我们采取了一系列优化措施,以确保每个请求都能按预期返回响应;对于两者之间的数据格式差异,也实现了有效转换,从而保证系统间信息的一致性与完整性。
此外,为提高整体系统可靠性,还设计并实施了错误重试机制及实时监控与日志记录功能。这些措施共同组成一个具备高度可用性的集成方案,得以在实际操作过程中平稳运行,大幅提升业务效率。
以下内容将详细介绍这个集成过程中的关键步骤以及遇到的问题和解决方法。
调用旺店通·企业奇门接口wdt.stockin.order.query.refund获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细介绍如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockin.order.query.refund
,并对获取的数据进行初步加工处理。
接口调用配置
首先,我们需要配置元数据,以便正确调用接口并获取所需数据。以下是元数据配置的详细说明:
{
"api": "wdt.stockin.order.query.refund",
"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编辑中30待审核60待结算80已完成(默认查询80已完成单据)",
"value": "80"
},
{
"field": "shop_no",
"label": "店铺编号",
"type": "string",
"describe": ":代表店铺所有属性的唯一编码,用于店铺区分,ERP内支持自定义(ERP店铺界面设置),用于获取指定店铺单据数据信息"
},
{
"field":"stockin_no","label":"单后","type":"string"
}
],
...
}
请求参数解析
- start_time 和 end_time: 用于增量获取数据,分别表示开始时间和结束时间。格式为
yyyy-MM-dd HH:mm:ss
。这两个参数确保我们只获取在特定时间范围内的数据。 - status: 入库单状态,这里默认查询状态为80(已完成)的单据。
- shop_no: 店铺编号,用于区分不同店铺的数据。
- stockin_no: 单后编号,用于进一步筛选特定的入库单。
此外,还有分页参数page_size
和page_no
,用于控制每次请求返回的数据条数和页码。
数据请求与清洗
在配置好元数据后,我们通过POST方法调用接口,并根据返回结果进行初步清洗和加工。以下是一个示例代码片段:
import requests
import json
from datetime import datetime
# 设置请求头
headers = {
'Content-Type': 'application/json'
}
# 设置请求参数
params = {
'start_time': (datetime.now() - timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S'),
'end_time': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
'status': '80',
'shop_no': 'your_shop_no',
'page_size': '40',
'page_no': '0'
}
# 发起POST请求
response = requests.post('https://api.wangdian.cn/openapi2/wdt.stockin.order.query.refund', headers=headers, data=json.dumps(params))
# 检查响应状态码
if response.status_code == 200:
data = response.json()
# 数据清洗与加工
cleaned_data = []
for item in data['orders']:
cleaned_item = {
'order_no': item['order_no'],
'stockin_id': item['stockin_id'],
# 添加其他需要的字段
}
cleaned_data.append(cleaned_item)
# 输出清洗后的数据
print(cleaned_data)
else:
print(f"Error: {response.status_code}")
数据转换与写入
在完成初步清洗后,我们可以将数据转换为目标系统所需的格式,并写入到金蝶等目标系统中。这一步通常涉及到字段映射、格式转换等操作。
例如,将清洗后的订单号和入库ID映射到金蝶系统中的相应字段:
for item in cleaned_data:
transformed_item = {
'KingdeeOrderNo': item['order_no'],
'KingdeeStockInID': item['stockin_id'],
# 添加其他映射字段
}
# 将转换后的数据写入金蝶系统(示例代码)
write_to_kingdee(transformed_item)
通过以上步骤,我们实现了从旺店通·企业奇门接口获取销售退货单数据,并进行了初步清洗和转换,为后续的数据处理打下了坚实基础。这一过程展示了轻易云数据集成平台在处理异构系统间数据对接时的高效性和灵活性。
轻易云数据集成平台:将销售退货单数据转换并写入金蝶云星空API
在数据集成的生命周期中,将源平台的数据转换为目标平台可接受的格式是关键步骤之一。本文将详细探讨如何利用轻易云数据集成平台,将销售退货单数据通过ETL转换,最终写入金蝶云星空API接口。
数据请求与清洗
首先,从源平台(如旺店通)获取销售退货单数据,并进行必要的清洗和预处理。这一步确保了数据的准确性和一致性,为后续的ETL转换打下基础。
数据转换与写入
接下来,我们重点关注如何将清洗后的数据转换为金蝶云星空API接口所能接收的格式,并写入目标平台。以下是具体的元数据配置和操作步骤:
API接口配置
我们使用金蝶云星空的batchSave
API接口,通过POST方法提交数据。以下是主要配置项:
- api: "batchSave"
- method: "POST"
- idCheck: true
- operation: {"rowsKey":"array","rows":1,"method":"batchArraySave"}
请求参数配置
请求参数包括多个字段,每个字段对应于金蝶云星空API所需的数据项。以下是具体字段及其解析方式:
-
FBillTypeID (单据类型)
- 类型: string
- 解析器: ConvertObjectParser, 参数: FNumber
- 值: "XSTHD01_SYS"
-
FBillNo (单据编号)
- 类型: string
- 值: "{order_no}"
-
FSaleOrgId (销售组织)
- 类型: string
- 解析器: ConvertObjectParser, 参数: FNumber
- 值: "100"
-
FDate (日期)
- 类型: string
- 值: "{check_time}"
-
FStockOrgId (库存组织)
- 类型: string
- 解析器: ConvertObjectParser, 参数: FNumber
- 值: "100"
-
FRetcustId (退货客户shop_no)
- 类型: string
- 解析器: ConvertObjectParser, 参数: FNumber
- 值: "{shop_no}"
-
FStockDeptId (库存部门)
- 类型: string
- 解析器: ConvertObjectParser, 参数: FNumber
- 值: "{shop_no}"
-
F_QKIQ_Remarks (备注)
- 类型: string
- 值: "{refund_remark}"
-
FZDR (创建人)
- 类型: string
- 值: "{stockin_operator_name}"
-
FHeadNote (备注)
- 类型: string
-
FEntity (明细信息) 明细信息包含多个子字段,具体如下:
- FRowType (物料类型)
- 类型: string
- 值: "Standard"
- FMaterialId (物料编码)
- 类型: string
- 解析器: ConvertObjectParser, 参数: FNumber
- 值: "{{details_list.spec_no}}"
- FRealQty (实退数量)
- 类型:string
- 值: "{{details_list.goods_count}}"
- FPrice (单价)
- 类型:string
- 值: "{{details_list.tax_price}}"
- FTaxPrice (含税单价)
- 类型:string
- 值: "{{details_list.tax_price}}"
- FEntryTaxRate (税率%)
- 类型:string
- 值: "13"
- FStockId (仓库)
- 类型:string
- 解析器:ConvertObjectParser, 参数: FNumber – 值:" {warehouse_no}" ––其他子字段略。
- FRowType (物料类型)
其他请求配置
除了上述主要字段,还需要配置一些其他请求参数:
- FormId ––类型:string ––值:"SAL_RETURNSTOCK"
2. Operation ––类型:string ––值:"Save"
3. IsAutoSubmitAndAudit ––类型:bool ––值:"true"
4. IsVerifyBaseDataField ––类型:bool ––值:"false"
5. SubSystemId ––类型:string ––值:"21"
通过上述配置,我们可以将源平台的数据成功转换为金蝶云星空API所需的格式,并通过POST方法提交,实现数据的无缝对接和写入。
实际应用案例
在实际应用中,我们可以利用轻易云的数据集成平台,通过上述元数据配置,将销售退货单从旺店通系统导出并清洗后,按照金蝶云星空API要求进行ETL转换,最终实现自动化的数据写入。这不仅提升了业务效率,还确保了数据的一致性和准确性。
通过这种方式,我们可以实现不同系统间的数据无缝对接,为企业提供更加高效、透明的数据管理解决方案。