金蝶云星空数据集成到旺店通·旗舰奇门案例分享
在企业业务系统的对接过程中,如何实现不同平台之间的数据高效、稳定地传输和转换是一个关键挑战。本文将聚焦于一个具体的实例:将金蝶云星空(Kingdee Cloud)中的物料数据集成到旺店通·旗舰奇门(WDT Qimen)的货品档案中,通过API接口实现精确、高效的数据流动和同步。
集成背景及主要需求
公司决定利用轻易云数据集成平台,实现从金蝶云星空向旺店通·旗舰奇门批量导入物料信息,以确保两套系统中的数据一致性,并提高库存管理与销售分析的效率。此次项目的核心任务包括:
- 调用金蝶云星空接口
executeBillQuery
获取物料信息:考虑分页和限流问题,确保完整性。 - 使用旺店通·旗舰奇门 API
wdt.goods.goods.push
写入货品档案:保证大量数据能快速、安全写入。 - 实时监控与告警功能:轻松跟踪每次批量上传的状态,如有异常及时处理并重试。
- 自定义数据转换逻辑:适应特定业务需求,准确映射金蝶云与旺店通之间的数据格式差异。
技术流程概述
-
初始配置与认证
- 配置金蝶云星空API访问凭证,通过安全机制认证用户身份以获得相应权限。
-
抓取物料信息
- 利用专属编写的小工具或脚本,从金蝶端调取物料数据。这一步需要特别关注接口查询语句设置以及如何最佳处理分页返回结果。
-
执行必要的数据清洗和转换操作
- 应用自动化工具进行字段映射。例如,将“存货编码”、“规格型号”等字段对应到目标数据库结构中。此步可根据实际业务需求灵活调整。
-
推送至目的系统
- 调用
wdt.goods.goods.push
接口,将准备好的整包数据信息发送至旺店通后台。同时,通过其强大的吞吐能力,加速大规模多线程并行上传进程,无缝连接两个独立运营体系。
- 调用
-
监控、记录以及故障恢复机制的设定
- 针对整个链路做全方位实时监视,一旦遇见失败回执则触发报警并重复尝试。同时,也提供了日志记录功能便于后期审计分析或者追责定位可能隐患区域。
通过上述步骤,我们不仅能够节省人工操作时间,还显著减少错误出现频
调用金蝶云星空接口executeBillQuery获取并加工数据
在轻易云数据集成平台的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过调用金蝶云星空的executeBillQuery
接口获取物料数据,并进行初步加工。
接口配置与请求参数
首先,我们需要配置元数据,以便正确调用金蝶云星空的executeBillQuery
接口。以下是元数据配置的关键部分:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FNumber",
"id": "FMATERIALID",
"pagination": {
"pageSize": 100
},
"idCheck": true,
"request": [
{"field":"FMATERIALID","label":"实体主键","type":"string","value":"FMATERIALID"},
{"field":"FNumber","label":"编码","type":"string","value":"FNumber"},
{"field":"FName","label":"名称","type":"string","value":"FName"},
{"field":"FSpecification","label":"规格型号","type":"string","value":"FSpecification"},
{"field":"FOldNumber","label":"旧物料编码","type":"string","value":"FOldNumber"},
{"field":"FBARCODE","label":"条码","type":"string","value":"FBARCODE"},
{"field":"FDescription","label":"描述","type":"string","value":"FDescription"},
{"field":"FMaterialGroup_FName","label":"物料分组","type":"string","value":"FMaterialGroup.FName"},
{"field":"FErpClsID","label":"物料属性","type":"string","value":"FErpClsID"},
{"field":"FDocumentStatus","label":"数据状态","type":"string","value":"FDocumentStatus"},
{"field":"FForbidStatus","label":"禁用状态","type":"string","value":"FForbidStatus"},
{"field": "FilterString", "label": "过滤条件", "type": "string", "describe": "...", "value": "..."}
],
...
}
在这个配置中,api
字段指定了要调用的接口为executeBillQuery
,请求方法为POST
。关键字段包括物料的主键FMATERIALID
和编码FNumber
等。
请求示例
为了更好地理解如何构建请求,我们来看一个具体的请求示例:
{
"FormId": "BD_MATERIAL",
"FieldKeys": [
"FMATERIALID",
"FNumber",
...
],
"FilterString": "FApproveDate>='2023-01-01' and FUseOrgId.FNumber='100.01' and ((fnumber like '10%' and FGROSSWEIGHT >0 and FBARCODE <> '') or (F_PAUF_TBWDT =1))",
...
}
这个请求示例中,FormId
指定了业务对象表单Id为物料表单(BD_MATERIAL),而FieldKeys
则列出了需要查询的字段集合。过滤条件(FilterString
)用于筛选符合特定条件的数据,例如审核日期、使用组织等。
数据处理与分页
由于数据量可能较大,我们需要进行分页处理。元数据配置中的分页参数如下:
"pagination": {
"pageSize": 100
}
在实际调用时,可以通过调整分页参数来控制每次请求的数据量。例如:
{
...
"Limit": "{PAGINATION_PAGE_SIZE}",
"StartRow": "{PAGINATION_START_ROW}",
...
}
这些参数确保我们可以分批次获取数据,从而避免一次性加载过多数据导致性能问题。
数据清洗与转换
获取到原始数据后,需要进行初步清洗和转换。例如,将某些字段值进行格式化或单位转换。以下是一个简单的数据清洗示例:
def clean_data(raw_data):
cleaned_data = []
for item in raw_data:
cleaned_item = {
'MaterialID': item['FMATERIALID'],
'Number': item['FNumber'],
'Name': item['FName'],
'Specification': item['FSpecification'],
'Barcode': item['FBARCODE'],
# 添加更多字段处理逻辑...
}
cleaned_data.append(cleaned_item)
return cleaned_data
在这个示例中,我们将原始数据中的关键字段提取出来,并进行了初步的格式化处理。
总结
通过上述步骤,我们可以有效地调用金蝶云星空的executeBillQuery
接口获取物料数据,并进行初步加工。这一过程包括了接口配置、请求构建、分页处理以及数据清洗等多个环节,每个环节都至关重要,确保最终的数据能够满足业务需求。
使用轻易云数据集成平台进行ETL转换并写入旺店通·旗舰奇门API接口
在数据集成的生命周期中,ETL(提取、转换、加载)是关键的一步。本文将详细探讨如何使用轻易云数据集成平台,将金蝶物料数据转换为旺店通·旗舰奇门API接口所能接收的格式,并最终写入目标平台。
数据请求与清洗
首先,我们需要从金蝶系统中提取物料数据,并进行必要的清洗操作。这部分工作通常包括去除冗余字段、标准化数据格式等。假设我们已经完成了这一阶段,接下来将重点放在数据转换与写入上。
数据转换与写入
为了将清洗后的数据转换为旺店通·旗舰奇门API接口所能接收的格式,我们需要根据元数据配置进行字段映射和格式调整。以下是具体步骤:
-
定义API接口和请求方法
根据元数据配置,我们需要调用
wdt.goods.goods.push
API,使用POST方法提交数据。{ "api": "wdt.goods.goods.push", "method": "POST" }
-
构建请求体
请求体主要包含两个部分:货品信息(goodsInfo)和单品信息列表(specInfoList)。我们需要按照元数据配置中的字段映射关系,将金蝶系统中的字段值映射到对应的API字段。
-
货品信息(goodsInfo)
货品信息包含多个子字段,如货品编号、货品名称、分类名称等。以下是一个示例:
{ "goodsInfo": { "goods_no": "{FNumber}", "goods_name": "{FDescription}", "class_name": "", "brand_name": "{F_PAUF_BrandName_FNumber}", "unit_name": "", "aux_unit_name": "", "flag_name": "", "goods_type": "0", "short_name": "", "alias": "", "origin": "", "remark": "", "prop1": "", "prop2": "", ... } }
其中,
{FNumber}
和{FDescription}
是从金蝶系统中提取的字段值。 -
单品信息列表(specInfoList)
单品信息列表包含规格信息,如仓库流程、商家编码、条码等。以下是一个示例:
{ "specInfoList": [ { "wms_process_mask": "0", "goods_label": "", "sn_type": "0", ... "weight": "{FGROSSWEIGHT}", ... "spec_no": "{FBARCODE}", ... "spec_code": "{FSpecification}", ... "barcode": "{FBARCODE}", ... ... } ] }
-
-
处理特殊字段
在构建请求体时,需要特别注意一些特殊字段。例如,
auto_create_bc
字段用于控制是否自动创建品牌和分类,如果不填默认为false:{ "auto_create_bc": false }
-
提交请求
构建好请求体后,通过HTTP POST方法将数据提交到旺店通·旗舰奇门API接口:
import requests url = 'https://api.wangdian.cn/openapi2/goods_push.php' headers = {'Content-Type': 'application/json'} data = { # 构建好的请求体内容 ... } response = requests.post(url, json=data, headers=headers) if response.status_code == 200: print("Data successfully pushed to WangDianTong") else: print(f"Failed to push data: {response.text}")
监控与调试
在实际操作过程中,实时监控和调试是确保数据准确性的重要环节。轻易云平台提供了全透明可视化的操作界面,可以实时监控数据流动和处理状态。如果遇到问题,可以通过日志和错误提示进行排查和修正。
通过以上步骤,我们实现了从金蝶系统到旺店通·旗舰奇门API接口的数据转换与写入。这一过程不仅提升了业务效率,还确保了数据的一致性和准确性。