旺店通销售出库单集成到金蝶云星空的技术实现
在本案例中,我们将分享如何通过轻易云数据集成平台,实现旺店通·企业奇门的数据无缝对接至金蝶云星空,具体涉及将销售出库单(渠道关联)信息成功迁移到金蝶系统中。为了确保整个过程高效、可靠且透明,对各项技术细节进行了优化与详细配置。
首先,我们需要调用旺店通·企业奇门提供的API接口wdt.stockout.order.query.trade
来获取最新的销售出库单数据。在获取过程中,由于数据量庞大且接口有分页和限流限制,需要合理设计调度任务,定时抓取并进行缓存处理,避免漏单现象。这一步骤通过批次操作及多线程技术,大幅度提升了数据提取效率。
随后,将抓取的数据迅速写入到金蝶云星空,其中利用其提供的批量保存接口batchSave
。考虑到两端系统在字段格式及结构上的差异,通过定制化的数据映射以及转换逻辑,使得传输的数据能够完美适配目标系统。同时,为解决可能发生的异常情况,如网络故障或API响应错误,实现了完善的错误重试机制,并实时监控处理过程中的所有日志记录,以确保每条数据都得到妥善处理。
下面是关键步骤和代码示例:
import requests
import json
# Step 1: Fetch data from 旺店通 using API
def fetch_wdt_data(api_url, params):
response = requests.get(api_url, params=params)
if response.status_code == 200:
return response.json()
else:
# Implement retry mechanism or log error
pass
# Example parameters for fetching data
params = {
'token': 'your_api_token',
'start_time': '2023-01-01',
}
wdt_data = fetch_wdt_data('https://api.wangdian.cn/wdtstockoutorderquerytrade', params)
# Step 2: Transform and map the fetched data to fit 金蝶's format
def transform_data(wdt_records):
transformed_records = []
for record in wdt_records:
transformed_record = {
# Map fields accordingly here...
}
transformed_records.append(transformed_record)
return transformed_records
mapped_data = transform_data(wdt_data['orders'])
# Step 3: Write data into 金蝶 using batchSave API
def write_to_kingdee(api_url, token, records):
headers = {'Content-Type': 'application/json'}
payload = {
"records": records,
"token": token,
# Other necessary parameters...
}
response = requests.post(api_url, headers=headers, json=payload
![轻易云数据集成平台金蝶集成接口配置](https://pic.qeasy.cloud/D19.png~tplv-syqr462i7n-qeasy.image)
### 调用旺店通·企业奇门接口获取并加工数据
在数据集成过程中,调用源系统的API接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口`wdt.stockout.order.query.trade`,并对获取的数据进行初步加工。
#### 接口概述
接口`wdt.stockout.order.query.trade`用于查询销售出库单信息。该接口支持POST请求,并且可以根据多种条件进行查询,例如时间范围、订单状态、店铺编号等。以下是该接口的元数据配置:
```json
{
"api": "wdt.stockout.order.query.trade",
"effect": "QUERY",
"method": "POST",
"number": "order_no",
"id": "stockout_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":"5已取消,55已审核,95已发货,105 部分打款,110已完成,113:异常发货","value":"95"},
{"field":"src_order_no","label":"系统订单编号","type":"string","describe":"系统订单编号"},
{"field":"src_tid","label":"原始单号","type":"string","describe":"原始单号"},
{"field":"stockout_no","label":"出库单号","type":"string","describe":"出库单号"},
{"field":"shop_no","label":"店铺编号","type":"string","describe":"代表店铺所有属性的唯一编码,用于店铺区分,ERP内支持自定义(ERP店铺界面设置),用于获取指定店铺单据数据信息","value":"HBJBT01"},
{"field":"warehouse_no","label":"仓库编号","type":"string","describe":"代表仓库所有属性的唯一编码,用于仓库区分,ERP内支持自定义(ERP仓库界面设置),用于获取指定仓库单据数据信息(不支持一次推送多个仓库编号)"},
{"field":"is_by_modified","label":"is_by_modified","type":"string","describe":"is_by_modified"}
],
...
}
数据请求与清洗
在调用该接口时,我们需要传递一系列参数来限定查询条件。以下是主要参数及其作用:
start_time
和end_time
: 用于限定查询的时间范围,这两个参数通常使用上次同步时间和当前时间。status
: 用于过滤订单状态,例如“95”表示已发货。shop_no
: 店铺编号,用于区分不同店铺的数据。warehouse_no
: 仓库编号,用于区分不同仓库的数据。
这些参数确保我们能够精确地获取所需的数据,并避免冗余信息。
数据转换与写入
在获取到原始数据后,需要对其进行一定的转换,以便写入目标系统。在这个过程中,我们通常会进行以下操作:
- 字段映射: 将源系统中的字段映射到目标系统中的相应字段。例如,将
order_no
映射到目标系统中的订单编号字段。 - 数据清洗: 去除无效或重复的数据,并确保数据格式符合目标系统的要求。
- 增量更新: 根据上次同步的时间戳,仅处理新增或更新的数据,以提高效率。
实际案例
假设我们需要从旺店通中获取某一时段内所有已发货的销售出库单,并将其写入金蝶系统。我们可以按照以下步骤进行配置和处理:
-
配置请求参数:
{ ... {"field": "start_time", ... , "value": "{{LAST_SYNC_TIME|datetime}}"}, {"field": "end_time", ... , "value": "{{CURRENT_TIME|datetime}}"}, {"field": "status", ... , "value": "95"}, ... }
-
调用API: 使用轻易云平台提供的可视化界面配置上述参数,并发送POST请求以获取数据。
-
处理返回结果: 对返回的数据进行字段映射和清洗,例如:
{ ... {source_field: 'order_no', target_field: 'kd_order_no'}, {source_field: 'stockout_id', target_field: 'kd_stockout_id'}, ... }
-
写入目标系统: 将处理后的数据通过轻易云平台写入金蝶系统,实现数据的无缝对接。
通过上述步骤,我们可以高效地完成从旺店通到金蝶系统的数据集成。这不仅提高了业务流程的自动化程度,也确保了数据的一致性和准确性。
使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口
在数据集成的生命周期中,第二步至关重要,即将已经集成的源平台数据进行ETL(提取、转换、加载)转换,使其符合目标平台金蝶云星空API接口所能接收的格式,并最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台配置元数据,实现这一过程。
1. 配置API接口
为了将数据写入金蝶云星空,我们需要配置API接口。根据提供的元数据配置,目标API为batchSave
,使用POST方法提交请求。以下是关键配置:
{
"api": "batchSave",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"operation": {
"method": "batchArraySave",
"rows": 1,
"rowsKey": "array"
},
...
}
2. 数据字段映射与转换
在进行ETL转换时,需要确保源平台的数据字段能够正确映射到目标平台的字段,并进行必要的格式转换。以下是一些关键字段的配置示例:
-
单据类型 (
FBillTypeID
):{ "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "XSCKD01_SYS" }
-
单据编号 (
FBillNo
):{ "field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "{order_no}" }
-
日期 (
FDate
):{ "field": "FDate", "label": `日期{stock_check_time}`, "type": `string`, `describe`: `日期`, `value`: `{consign_time}` }
-
发货组织 (
FStockOrgId
):{ `field`: `FStockOrgId`, `label`: `发货组织`, `type`: `string`, `describe`: `组织`, `parser`: { `name`: `ConvertObjectParser`, `params`: `FNumber` }, `value`: `_function case when '{warehouse_no}' in ('047','048','051') then '105' when '{warehouse_no}' in ('050','052','049','053','055','057') then '114' else '100' end` }
3. 明细信息处理
对于明细信息,需要特别注意数组结构和子字段的处理。例如,物料编码和实发数量等字段:
- 物料编码 (
FMaterialID
):
{
`field`: `FMaterialID`,
`label`: `物料编码`,
`type`: `string`,
`describe`: `物料编码`,
`parser`: {
`name`: ConvertObjectParser,
params: FNumber
},
value: {{details_list.goods_no}}
}
- 实发数量 (
FRealQty
):
{
field: FRealQty,
label: 实发数量,
type: string,
describe: 实发数量,
value: {{details_list.goods_count}}
}
4. 特殊字段处理
有些字段需要特殊处理,例如根据条件判断值或通过查询获取值:
- 是否赠品 (
FIsFree
):
{
field: FIsFree,
label: 是否赠品,
type: string,
describe: 是否赠品,
value: _function CASE WHEN {{details_list.sell_price}}>0 THEN 'false' ELSE 'true' END
}
- 税率 (
FEntryTaxRate
):
{
field: FEntryTaxRate,
label: 税率,
type: string,
describe: 税率,
value: _mongoQuery findField=content.FEntryTaxRate where={content.FBillNo:{eq:{src_trade_no}},content.FMaterialId_Fnumber:{eq:{details_list.goods_no}}}
}
总结
通过上述步骤,我们可以利用轻易云数据集成平台,将源平台的数据进行ETL转换,并写入到金蝶云星空API接口中。这一过程涉及多个关键技术点,包括API接口配置、数据字段映射与转换、明细信息处理以及特殊字段处理。通过合理配置元数据,可以确保数据在不同系统之间无缝对接,实现高效的数据集成。