旺店通·企业奇门数据集成到金蝶云星空案例分享
在实际业务场景中,销售退货同步是一个关键环节。本文将聚焦于如何通过轻易云数据集成平台,实现旺店通·企业奇门的数据高效、可靠地集成到金蝶云星空,其中方案名称为:销售退货同步_后补批号RK。在这个案例中,我们使用了wdt.stockin.order.query.refund获取旺店通的退货订单数据,并通过batchSave API接口实现快速写入到金蝶云星空。
首先,通过定时任务抓取旺店通·企业奇门API wdt.stockin.order.query.refund的数据,以确保不会有任何订单遗漏。这需要特别注意分页和限流问题,通过对API请求进行合理划分,保证每次请求都能成功并获得预期返回结果。同时,为应对大量数据处理需求,我们设计了批量写入机制,将获取到的退货订单一次性导入至金蝶云星空,提高整体效率。
其次,对于两者之间的数据结构差异,在映射过程中我们进行了精细化的定制。确保每个字段准确无误地对接,这一步骤尤为关键,因为稍有不慎就可能导致系统间的信息不同步。此外,在整个过程中还设置了全面的异常处理与错误重试机制,一旦出现意外情况,即可自动重发直至成功,有效保障了数据传输过程中的稳定性和可靠性。
最后,对各个环节实施实时监控与日志记录,使操作透明化,每一笔交易都有迹可循,从而进一步提升业务透明度和控制能力。
以上就是本项目技术方案开头部分,接下来将详细介绍具体实施步骤及代码示例(待续)。
调用旺店通·企业奇门接口wdt.stockin.order.query.refund获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockin.order.query.refund
,并对获取的数据进行初步加工。
接口调用配置
首先,我们需要配置元数据以便正确调用接口。以下是元数据配置的详细内容:
{
"api": "wdt.stockin.order.query.refund",
"method": "POST",
"number": "order_no",
"id": "order_no",
"pagination": {
"pageSize": 50
},
"request": [
{"field":"start_time","label":"开始时间","type":"datetime","value":"{{LAST_SYNC_TIME|datetime}}"},
{"field":"end_time","label":"结束时间","type":"datetime","value":"{{CURRENT_TIME|datetime}}"},
{"field":"status","label":"状态","type":"string","describe":"入库单状态 10已取消20编辑中30待审核60待结算80已完成(默认查询80已完成单据)"},
{"field":"shop_no","label":"店铺编号","type":"string"},
{"field":"src_order_no","label":"退换单号","type":"string"},
{"field":"stockin_no","label":"入库单号","type":"string"},
{"field":"time_type","label":"时间类型","type":"int","describe":"0:最后修改时间,1:创建时间 2:预入库单关联时间 默认为0"},
{"field":"shop_no","label":"店铺编号","type":"string","describe":"代表店铺所有属性的唯一编码,用于店铺区分,ERP内支持自定义(ERP店铺界面设置),用于获取指定店铺单据数据信息"},
{"field":"shop_nos","label":"店铺编号(批量)","type":"string","describe":"批量指定店铺获取(多个店铺编号之间用英文逗号隔开,最多指定20个店铺)"}
],
"otherRequest": [
{"field": "page_size", "label": "分页大小", "type": "string", "value": "{PAGINATION_PAGE_SIZE}"},
{"field": "page_no", "label": "页号", "type": "string", "value": "{PAGINATION_START_PAGE}"}
]
}
请求参数解析
在请求参数中,我们需要特别注意以下几个字段:
start_time
和end_time
:这两个字段用于指定查询的时间范围,分别取值为上次同步时间和当前时间。status
:用于过滤入库单的状态,默认查询已完成的单据。shop_no
和shop_nos
:用于指定需要查询的店铺编号,可以是单个或多个。time_type
:用于指定时间类型,例如最后修改时间、创建时间等。
数据请求与清洗
在发起请求后,我们会收到一组原始数据。这些数据可能包含冗余信息或格式不一致的问题,因此需要进行清洗和初步加工。以下是一个简单的数据清洗示例:
import requests
import json
from datetime import datetime
# 配置请求参数
url = 'https://api.wangdian.cn/openapi2/wdt.stockin.order.query.refund'
headers = {'Content-Type': 'application/json'}
payload = {
'start_time': '2023-01-01T00:00:00',
'end_time': datetime.now().strftime('%Y-%m-%dT%H:%M:%S'),
'status': '80',
'shop_no': 'SHOP123',
'time_type': 0,
'page_size': 50,
'page_no': 1
}
# 发起请求
response = requests.post(url, headers=headers, data=json.dumps(payload))
data = response.json()
# 数据清洗示例
cleaned_data = []
for item in data['orders']:
cleaned_item = {
'order_no': item['order_no'],
'shop_no': item['shop_no'],
'status': item['status'],
# 添加其他需要的字段
}
cleaned_data.append(cleaned_item)
print(cleaned_data)
分页处理
由于接口返回的数据可能非常庞大,我们需要进行分页处理。通过设置page_size
和page_no
参数,可以逐页获取数据并进行处理。
def fetch_all_data():
page_no = 1
all_data = []
while True:
payload['page_no'] = page_no
response = requests.post(url, headers=headers, data=json.dumps(payload))
data = response.json()
if not data['orders']:
break
all_data.extend(data['orders'])
page_no += 1
return all_data
all_orders = fetch_all_data()
print(f"Total orders fetched: {len(all_orders)}")
以上代码展示了如何通过分页机制获取所有订单数据,并将其存储在一个列表中。
数据转换与写入
在完成数据清洗后,我们可以根据业务需求对数据进行进一步转换,并将其写入目标系统。例如,将订单数据转换为目标系统所需的格式,并通过API或数据库连接写入目标系统。
def transform_and_write(data):
transformed_data = []
for item in data:
transformed_item = {
# 转换为目标系统所需格式
'order_id': item['order_no'],
'store_id': item['shop_no'],
# 添加其他转换逻辑
}
transformed_data.append(transformed_item)
# 写入目标系统(示例)
target_url = 'https://target-system/api/orders'
for item in transformed_data:
response = requests.post(target_url, headers=headers, data=json.dumps(item))
if response.status_code != 200:
print(f"Failed to write order {item['order_id']}")
transform_and_write(cleaned_data)
通过上述步骤,我们成功实现了从旺店通·企业奇门接口获取、清洗、转换并写入数据到目标系统的全过程。这不仅提高了数据处理效率,还确保了数据的一致性和准确性。
使用轻易云数据集成平台进行销售退货数据同步至金蝶云星空API接口
在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL转换,最终写入目标平台金蝶云星空API接口。本文将详细探讨如何利用轻易云数据集成平台配置元数据,将销售退货信息同步到金蝶云星空。
配置元数据
首先,我们需要配置元数据以适应金蝶云星空API接口的要求。以下是具体的配置细节:
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"rowsKey": "array",
"rows": 1,
"method": "batchArraySave"
},
"request": [
{
"field": "FBillTypeID",
"label": "单据类型",
"type": "string",
"describe": "单据类型",
"parser": {
"name": "ConvertObjectParser",
"params": "FNumber"
},
"value": "XSTHD01_SYS"
},
{
"field": "FBillNo",
"label": "单据编号",
"type": "string",
"describe": "单据编号",
"value": "{order_no}"
},
{
...
}
],
...
}
数据字段解析与转换
在配置过程中,关键在于如何解析和转换各个字段,使其符合金蝶云星空API的格式要求。以下是一些重要字段及其解析方法:
- FBillTypeID: 单据类型,使用
ConvertObjectParser
进行解析,将内部编码转换为金蝶系统识别的编码。 - FBillNo: 单据编号,直接从源数据中提取。
- FSaleOrgId: 销售组织,通过查找表获取对应的组织编码。
- FDate: 日期,直接映射源数据中的日期字段。
- FStockOrgId: 库存组织,固定值为100。
- FRetcustId: 退货客户,通过
ConvertObjectParser
解析客户编码。 - FHeadNote: 备注信息,直接从源数据中提取。
明细信息处理
对于明细信息(FEntity),我们需要处理每一条记录中的多个字段:
{
...
{
"field":"FEntity",
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{"field":"FLot","label":"批次","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_function CASE '_findCollection find FIsBatchManage from 4ae4b66a-79ab-3a6d-8f33-723f326a42d0 where FNumber={{details_list.goods_no}} _endFind' WHEN 'false' THEN '' ELSE '{{details_list.batch_no}}' END","parent":"FEntity"},
{"field":"FNote","label":"备注","type":"string","describe":"文本","value":"{{details_list.remark}}","parent":"FEntity"},
{"field":"FOrderNo","label":"订单单号","type":"string","describe":"文本","value":"{{details_list.tid}}","parent":"FEntity"},
{"field":"F_QKZI_Text2","label":"临时批号","type":"string","describe":"文本","value":"{{details_list.batch_no}}","parent":"FEntity"}
}
}
}
}
}
}
}
}
}
},
...
}
其中,每个字段都需要根据具体业务需求进行相应的转换和解析。例如:
- FLot: 批次,根据物料编码查询是否启用批次管理,如果启用则填入批次号,否则为空。
- FNote: 明细备注,直接映射源数据中的备注字段。
财务信息处理
财务信息(SubHeadEntity)部分也需要特别关注:
{
...
{"field":"SubHeadEntity", ...}
}
其中包括结算组织等重要财务字段,这些字段同样需要通过查找表或固定值进行赋值。
最终请求生成
所有配置完成后,系统会生成一个完整的请求体,并通过POST方法提交到金蝶云星空API接口。以下是一个简化示例:
{
...
{
...,
{"FormId", ...},
{"Operation", ...},
{"IsAutoSubmitAndAudit", ...},
{"IsVerifyBaseDataField", ...},
{"SubSystemId", ...}
}
}
通过这种方式,我们可以确保所有的数据都符合目标系统的要求,并且能够顺利写入金蝶云星空,实现销售退货数据的无缝同步。
以上就是利用轻易云数据集成平台进行销售退货同步至金蝶云星空API接口的一些关键技术点和配置方法,希望能为相关技术人员提供有价值的参考。