金蝶云星空与旺店通·企业奇门系统的委外采购入库单数据对接
在实现企业级数据集成的过程中,准确、高效地进行跨平台对接是一个关键问题,这个案例将探讨如何通过轻易云平台,实现金蝶云星空与旺店通·企业奇门之间委外采购入库单的数据集成。本文重点解析技术细节,以实战经验展示解决方案。
具体流程包括抓取金蝶云星空中的委外采购入库单,并批量写入至旺店通·企业奇门中。在数据集成过程中,通过调用金蝶云星空的API executeBillQuery
获取目标数据信息,再利用旺店通·企业奇门的API wdt.stockin.order.push
将获取到的数据传输过去。
首先,为确保从金蝶云星空接口提取的数据不漏单,我们定时可靠地调用其接口 executeBillQuery
,充分考虑分页和限流策略来处理大数据量。此外,还需注意两者间的数据格式差异,通过定制化的数据映射,对原始数据进行必要转换以适应目标系统要求。
最后,应针对可能出现的异常情况制定相应的处理机制。例如,在推送到旺店通·企业奇门时,可实现错误重试和日志记录功能,以保证每次操作都有迹可循,并及时发现并修复潜在的问题。这些步骤将极大提升整个对接流程的稳定性和透明度。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成过程中,调用源系统的API接口是关键的一步。本文将详细介绍如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口来获取并加工数据。
接口配置与调用
首先,我们需要配置元数据以便正确调用金蝶云星空的executeBillQuery
接口。以下是元数据配置的关键部分:
{
"api": "executeBillQuery",
"effect": "QUERY",
"method": "POST",
"number": "FBillNo",
"id": "FInStockEntry_FEntryId",
"name": "FBillNo",
"idCheck": true,
...
}
该配置指定了API名称、请求方法(POST)、主键字段(FInStockEntry_FEntryId
)和单据编号字段(FBillNo
)。这些信息是调用API时必不可少的。
请求参数构建
接下来,我们需要构建请求参数。以下是一些关键字段及其描述:
FormId
: 表单ID,必须填写。例如:STK_InStock
FieldKeys
: 需查询的字段集合,格式为字符串数组。FilterString
: 过滤条件,用于筛选特定的数据。例如:FBillTypeID.FNumber='RKD03_SYS' and FDocumentStatus='C' and FStockId.FNumber='001' and FApproveDate>='{{LAST_SYNC_TIME|dateTime}}'
Limit
: 最大行数,用于分页。StartRow
: 开始行索引,用于分页。
示例请求参数如下:
{
"FormId": "STK_InStock",
"FieldKeys": [
"FInStockEntry_FEntryId",
"FID",
"FBillNo",
...
],
"FilterString": "FBillTypeID.FNumber='RKD03_SYS' and FDocumentStatus='C' and FStockId.FNumber='001' and FApproveDate>='2023-01-01'",
"Limit": 100,
"StartRow": 0
}
数据清洗与转换
在获取到原始数据后,需要对其进行清洗和转换,以便后续处理。以下是一些常见的数据清洗与转换操作:
- 字段映射:将金蝶云星空返回的数据字段映射到目标系统所需的字段。例如,将
FInStockEntry_FEntryId
映射为目标系统中的entry_id
。 - 数据类型转换:确保所有字段的数据类型符合目标系统的要求。例如,将日期字符串转换为标准日期格式。
- 缺失值处理:处理缺失值或默认值,以确保数据完整性。
示例代码如下:
def clean_and_transform(data):
cleaned_data = []
for entry in data:
transformed_entry = {
'entry_id': entry['FInStockEntry_FEntryId'],
'bill_no': entry['FBillNo'],
'approve_date': parse_date(entry['FApproveDate']),
...
}
cleaned_data.append(transformed_entry)
return cleaned_data
def parse_date(date_str):
# 将日期字符串转换为标准日期格式
return datetime.strptime(date_str, '%Y-%m-%d')
数据写入
最后,将清洗和转换后的数据写入目标系统。这一步通常涉及调用目标系统的API接口,并根据其要求提交数据。
示例代码如下:
def write_to_target_system(cleaned_data):
for entry in cleaned_data:
response = requests.post('https://target-system/api/endpoint', json=entry)
if response.status_code != 200:
log_error(response.text)
# 调用整个流程
raw_data = call_execute_bill_query()
cleaned_data = clean_and_transform(raw_data)
write_to_target_system(cleaned_data)
通过以上步骤,我们实现了从金蝶云星空获取、清洗、转换并写入目标系统的全流程。这不仅提高了数据处理效率,还确保了数据的一致性和准确性。
利用轻易云数据集成平台实现ETL转换并写入旺店通·企业奇门API接口
在数据集成生命周期的第二阶段,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,使其符合目标平台——旺店通·企业奇门API接口所能够接收的格式,最终写入目标平台。以下是详细的技术步骤和配置示例。
元数据配置解析
首先,我们需要理解元数据配置中的各个字段及其含义:
- api:
wdt.stockin.order.push
表示调用旺店通·企业奇门的入库单推送接口。 - method:
POST
表示使用HTTP POST方法提交数据。 - idCheck:
true
表示需要进行ID校验。 - request: 包含具体的数据字段映射关系。
数据字段映射
元数据配置中的字段映射关系如下:
-
外部单号(outer_no)
- 来源字段:
FBillNo
- 类型:
string
- 描述:外部单号
- 来源字段:
-
仓库编号(warehouse_no)
- 来源字段:
FStockId_FNumber
- 类型:
string
- 描述:仓库编号
- 来源字段:
-
备注(remark)
- 固定值:
委外入库
- 类型:
string
- 描述:备注
- 固定值:
-
是否审核(is_check)
- 固定值:
1
- 类型:
string
- 描述:是否审核
- 固定值:
-
入库原因(reason)
- 类型:
string
- 描述:入库原因
- 类型:
-
货品明细节点(goods_list) 包含多个子字段:
a. 商家编码(spec_no)
- 来源字段:
FMaterialId_FNumber
- 类型:
string
- 描述:商家编码
b. 入库数量(stockin_num)
- 来源字段:
FRealQty
- 类型:
string
- 描述:入库数量
c. 原价(src_price)
- 来源字段:
FPrice
- 类型:
string
- 描述:原价
d. 入库价(stockin_price)
- 来源字段:
FTaxPrice
- 类型:
string
- 描述:入库价
e. 批次(batch_no)
- 类型:
string
- 描述:批次
f. 税率(tax)
- 类型:
string
- 描述:“对征税对象的征收比例或征收额度。例如税率为16%,请求时填值为0.16”
- 来源字段:
数据转换与写入过程
在实际操作中,ETL过程可以分为以下几个步骤:
-
提取数据(Extract)
从源系统(金蝶系统)提取相关的数据,如订单号、仓库编号、货品明细等。
-
转换数据(Transform)
使用轻易云数据集成平台,将提取的数据根据元数据配置进行转换。具体操作如下:
{ "outer_no": "{FBillNo}", "warehouse_no": "{FStockId_FNumber}", "remark": "委外入库", "is_check": "1", "reason": "", "goods_list": [ { "spec_no": "{FMaterialId_FNumber}", "stockin_num": "{FRealQty}", "src_price": "{FPrice}", "stockin_price": "{FTaxPrice}", "batch_no": "", "tax": "" } ] }
-
加载数据(Load)
将转换后的数据通过HTTP POST方法提交到旺店通·企业奇门API接口。请求体示例如下:
{ "api": "wdt.stockin.order.push", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field":"outer_no", "value":"SO20231001" }, { "field":"warehouse_no", "value":"WH001" }, { "field":"remark", "value":"委外入库" }, { "field":"is_check", "value":"1" }, { "field":"reason", ... }, { ... } ], ... }
实施注意事项
-
字段校验
确保所有必填字段都已正确映射,并且数据类型匹配。
-
异常处理
在ETL过程中,需对可能出现的异常情况进行处理,例如网络异常、数据格式错误等。
-
日志记录
对每一次ETL操作进行日志记录,便于后续问题排查和审计。
通过上述步骤,我们成功地将金蝶系统中的委外采购入库单数据转换为旺店通·企业奇门API接口所需的格式,并顺利写入目标平台。这不仅提高了系统间的数据一致性,还大大提升了业务流程的自动化程度。