金蝶云星空数据集成到旺店通·旗舰奇门的最佳实践
在本篇技术案例中,我们将着重探讨如何通过轻易云数据集成平台,将金蝶云星空的数据高效地对接到旺店通·旗舰奇门,实现数据在两大系统间的无缝流转。方案命名为:旗舰-金蝶-物料——>旺店通-货品档案。在实际运行过程中,确保数据不漏单、快速写入和异常处理等多方面细节,是该项目成功的关键。
为了实现这一目标,首先需要通过调用金蝶云星空API (executeBillQuery)来获取需要集成的数据。这一接口具备强大的查询功能,但也存在分页与限流问题,需要合理设计请求策略,以避免因超出API限制而导致的数据抓取失败或延迟。同时,通过定时调度机制,确保数据能够可靠且及时地被抓取,使整个过程具有高度的一致性和准确性。
API 调用与分页限流处理
执行 executeBillQuery 接口是我们的首要任务,通过设置合适的分页参数,可以有效规避单次请求量过大的风险。在解决了如何高效、稳定获取源头数据后,我们还需应对这些原始数据同目标系统之间格式差异的问题。
数据格式转换与映射
从金蝶云星空导出的物料信息,其字段结构可能与旺店通·旗舰奇门要求并不一致。因此,在数据进入目的端前,需要进行必要的格式转换以及定制化的数据映射。这一步骤不仅包括简单字段对应关系,还涉及必要的数据清洗和标准化操作,以保证最终提交给 wdt.goods.goods.push 接口的数据满足其规范要求。
快速批量写入技术
针对大量物料记录,应采用分批次、多线程并行写入的方法,提高整体效率。每个批次都通过调用 wdt.goods.goods.push 接口,将整理好的产品信息上传至旺店通·旗舰奇门系统。特别是在海量数据场景下,这种处理方式尤为重要,可以显著降低单线程长时间运行所带来的性能瓶颈及错误率。此外,还需配置相应的日志记录与监控机制,对每一次推送结果进行实时跟踪,并将在传输过程中出现的问题如实记录,便于后续分析及故障排查。
上述内容仅为此项目开头部分简要描述。在接下来的具体实施方案中,将进一步详细说明如何配置相关参数、优化接口调用策略,以及关于异常处理与重试机制等方面的重要技巧。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口,获取并加工物料数据。
接口配置与请求参数
首先,我们需要配置元数据,以便正确调用金蝶云星空的API。以下是我们在轻易云平台上配置的元数据:
{
"api": "executeBillQuery",
"effect": "QUERY",
"method": "POST",
"number": "FNumber",
"id": "FMasterId",
"name": "FNumber",
"request": [
{"field":"FMasterId","label":"id","type":"string","describe":"id","value":"FMasterId"},
{"field":"FNumber","label":"编码","type":"string","describe":"编码","value":"FNumber"},
{"field":"FName","label":"名称","type":"string","describe":"名称","value":"FName"},
{"field":"FSpecification","label":"规格型号","type":"string","describe":"规格型号","value":"FSpecification"},
{"field":"FOldNumber","label":"旧物料编码","type":"string","describe":"旧物料编码","value":"FOldNumber"},
{"field":"FDescription","label":"描述","type":"string","describe":"描述","value":"FDescription"},
{"field":"FErpClsID","label":"物料属性","type":"string","describe":"物料属性","value":"FErpClsID"},
{"field":"FForbidStatus","label":"禁用状态","type":"string","describe":"禁用状态","value":"FForbidStatus"},
{"field": "FilterString", "label": "过滤条件", "type": "string",
"describe": "示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=",
"value": "FUseOrgId.fnumber='101' and FModifyDate>='{{LAST_SYNC_TIME|dateTime}}' and FForbidStatus='A'"}
],
...
}
在这个配置中,api
字段指定了我们要调用的API名称为executeBillQuery
,请求方法为POST
。请求参数包括多个字段,如FMasterId
、FNumber
、FName
等,这些字段将用于查询和过滤数据。
数据请求与清洗
通过上述配置,我们可以发送一个HTTP POST请求到金蝶云星空的API端点,获取所需的数据。在这个过程中,我们可以利用过滤条件来限定返回的数据范围。例如:
{
"FormId": "BD_MATERIAL",
"FieldKeys": ["FMasterId", "FNumber", "FName", ...],
"FilterString": "FUseOrgId.fnumber='101' and FModifyDate>='2023-01-01T00:00:00' and FForbidStatus='A'",
...
}
这里,FormId
指定了业务对象表单ID为物料表单(BD_MATERIAL),而FilterString
则用于过滤出特定组织下且未禁用的物料数据,并且这些数据是在指定时间之后修改过的。
数据转换与写入
获取到原始数据后,需要对其进行清洗和转换,以便后续写入目标系统。在轻易云平台上,可以通过可视化操作界面,对数据进行映射和转换。例如,将金蝶云星空返回的数据字段映射到旺店通系统所需的字段格式。
假设我们从金蝶云星空获取到以下原始数据:
[
{
"FMasterId": "1001",
"FNumber": "MAT001",
...
},
...
]
我们可以将这些字段映射到旺店通系统所需的字段,例如:
[
{
"id": "1001",
"code": "MAT001",
...
},
...
]
通过这种方式,可以确保不同系统之间的数据格式一致,从而实现无缝对接。
实时监控与调试
在整个过程中,轻易云平台提供了实时监控和调试功能,可以随时查看数据流动和处理状态。这有助于快速发现和解决问题,提高集成效率。
综上所述,通过合理配置元数据并利用轻易云平台强大的功能,我们可以高效地调用金蝶云星空接口获取并加工数据,为后续的数据集成打下坚实基础。
数据集成与ETL转换:从金蝶物料到旺店通货品档案
在数据集成的生命周期中,将源平台的数据进行ETL(提取、转换、加载)转换是关键的一步。本文将深入探讨如何使用轻易云数据集成平台,将金蝶物料数据转换为旺店通·旗舰奇门API接口所能接收的格式,并最终写入目标平台。
元数据配置解析
在进行ETL转换之前,首先需要理解元数据配置。以下是我们将要使用的元数据配置:
{
"api": "wdt.goods.goods.push",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{
"field": "goodsInfo",
"label": "货品信息",
"type": "object",
"describe": "111",
"children": [
{
"field": "goods_no",
"label": "货品编号",
"type": "string",
"describe": "代表货品(spu)所有属性的唯一编号,用于系统货品区分,SPU概念介绍,单击这里",
"value": "{FNumber}"
},
{
"field": "goods_type",
"label": "货品类别",
"type": "string",
"describe":
...
}
]
},
{
...
}
],
...
}
数据提取与转换
-
提取数据:从金蝶系统中提取物料信息。假设我们已经通过API或数据库查询获取了以下字段:
FNumber
:物料编号FMaterialGroup_FNumber
:物料类别编号FName
:物料名称FBaseUnitId_FNAME
:基本单位名称FSpecification
:规格
-
字段映射:根据元数据配置,将金蝶系统中的字段映射到旺店通API所需的字段。
goods_no
映射到{FNumber}
goods_type
映射到{FMaterialGroup_FNumber}
goods_name
映射到{FName}
short_name
映射到{FName}
class_name
根据条件映射,如果{FMaterialGroup_FNumber}
是 '成品' 或 '赠品',则为空,否则为原值。prop4
映射到{FNumber}
auto_create_bc
固定为true
unit_name
映射到{FBaseUnitId_FNAME}
spec_no
映射到{FNumber}
spec_name
映射到{FSpecification}
-
数据转换:
{ ... { field: 'goodsInfo', label: '货品信息', type: 'object', children: [ { field: 'goods_no', value: extractedData.FNumber }, { field: 'goods_type', value: extractedData.FMaterialGroup_FNumber }, { field: 'goods_name', value: extractedData.FName }, { field: 'short_name', value: extractedData.FName }, { field: 'class_name', value: function() { return ['成品', '赠品'].includes(extractedData.FMaterialGroup_FNumber) ? '' : extractedData.FMaterialGroup_FNumber; } }, { field: 'prop4', value: extractedData.FNumber }, { field: 'auto_create_bc', value: true }, { field: 'unit_name', value: extractedData.FBaseUnitId_FNAME } ] }, { field: 'specInfoList', label: '单品信息列表', type: 'array', children:[ { field:'spec_no',value :extractedData.FNumber}, {field:'spec_name',value :extractedData.FSpecification} ] } ... }
写入目标平台
完成数据转换后,通过POST请求将整理好的数据发送至旺店通·旗舰奇门API接口:
const axios = require('axios');
const data = {
goodsInfo:{
goods_no : extractedData.FNumber,
goods_type : extractedData.FMaterialGroup_FNumber,
goods_name : extractedData.FName,
short_name : extractedData.FName,
class_name : (['成品','赠品'].includes(extractedData.FMaterialGroup_FNumber)) ? '' : extractedData.FMaterialGroup_FNumber,
prop4 : extractedData.FNumber,
auto_create_bc : true,
unit_name : extractedData.FBaseUnitId_FNAME
},
specInfoList:[{
spec_no :extractedData.FNumber,
spec_name :extractedData.FSpecification
}]
};
axios.post('https://api.wangdian.cn/openapi2/goods_push.php', data)
.then(response => console.log(response.data))
.catch(error => console.error(error));
通过以上步骤,我们成功地将金蝶系统中的物料信息转换并写入到了旺店通·旗舰奇门平台。整个过程不仅确保了数据的一致性和准确性,还极大地提高了业务处理效率。