案例分享:拆卸子项入库同步到旺店通
在本案例中,我们将详细探讨如何通过轻易云数据集成平台,实现金蝶云星空与旺店通·企业奇门的系统对接,以实现拆卸子项入库数据的高效传输和同步。整个过程中,重点技术环节包括API接口调用、数据格式转换以及异常处理机制。
首先,为了确保从金蝶云星空获取的数据完整且不漏单,我们利用了executeBillQuery
API接口。该接口允许我们精确地抓取所需的业务数据,并进行分页处理以应对大批量数据查询时的性能问题。例如,通过预设定时任务,能够可靠地按周期性抓取最新的数据变动情况。此外,我们还设计了一套限流策略,以避免因大量请求导致服务器过载。
与此同时,在完成数据抓取后,需要解决的是如何快速、高效且批量将这些数据信息写入到旺店通·企业奇门。这里使用到了wdt.stockin.order.push
API接口,该接口支持多条记录一次性推送,从而极大提升了传输效率。然而,面对复杂多样的数据格式差异,我们在实际操作中进行了定制化的数据映射,使得输入输出双方可以无缝衔接。此外,对于可能发生的网络波动或异常状况,系统内置有智能错误重试机制,这确保每一条记录都能准确及时地被处理和执行。
最后,为了实时监控整个集成过程中的各个节点状态和日志记录,平台提供了全透明可视化操作界面。这不仅让业务流程更为简明直观,也方便运维人员发现问题并进行快速反馈与调整。
当上述重要技术点落实之后,即使面对高频率的数据交互需求,此次方案也能保持稳定、高效运行,为业务提供强有力支持。在接下来的内容中,将进一步深入展开具体实施细节,包括配置步骤、代码示例,以及遇到常见问题时的解决思路。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口,获取拆卸子项入库的数据,并进行初步加工。
接口配置与调用
首先,我们需要配置并调用金蝶云星空的executeBillQuery
接口。以下是元数据配置的关键部分:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FSubEntity_FDetailID",
"pagination": {
"pageSize": 500
},
"idCheck": true,
"request": [
{"field":"FID","label":"实体主键","type":"string","value":"FID"},
{"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"},
{"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"},
{"field":"FStockOrgId_FNumber","label":"库存组织","type":"string","value":"FStockOrgId.FNumber"},
{"field":"FDate","label":"日期","type":"string","value":"FDate"},
{"field":"FBillTypeID","label":"单据类型","type":"string","value":"FBillTypeID"},
{"field":"FOwnerTypeIdHead","label":"成品货主类型","type":"string","value":"FOwnerTypeIdHead"},
{"field":"FOwnerIdHead_FNumber","label":"成品货主","type":"string","value":"FOwnerIdHead.FNumber"},
{"field":"FAffairType","label":"事务类型","type":"string","value":"FAffairType"},
{"field":"FEE","label":"费用","type":"string","value":"FEE"},
{"field":"FDeptID_FNumber","label":"部门","type":"string","value":"FDeptID.FNumber"},
{"field": "FilterString", "label": "过滤条件", "type": "string",
"describe": "示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=",
"value": "FApproveDate>='{{LAST_SYNC_TIME|datetime}}' and FAFFAIRTYPE = 'Dassembly' and FStockOrgId.FNumber='102'"
},
{"field": "FieldKeys", "label": "需查询的字段key集合",
"type": "array",
"describe": "金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber",
"parser":{"name": "ArrayToString", "params": ","}
},
{"field": "FormId",
"label": "业务对象表单Id",
"type": "string",
"describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder",
"value": "STK_AssembledApp"
}
]
}
数据请求与清洗
在上述配置中,我们通过POST方法调用executeBillQuery
接口,并设置了分页参数(每页500条记录)以确保能够处理大量数据。关键字段包括:
FID
: 实体主键FBillNo
: 单据编号FDocumentStatus
: 单据状态FStockOrgId_FNumber
: 库存组织编号FilterString
: 用于过滤条件,确保只获取特定时间段内的拆卸子项入库记录
这些字段将帮助我们精确地获取所需的数据。
数据转换与写入
在获取到原始数据后,我们需要对其进行转换和清洗,以便后续写入目标系统。在这个过程中,可以利用轻易云平台提供的可视化工具,对数据进行映射和转换。例如,将金蝶云星空中的字段映射到旺店通系统中的对应字段。
以下是一个简单的数据转换示例:
{
// 原始数据字段
"_sourceField_1" : {
// 转换后的目标字段
"_targetField_1" : {
// 转换规则,例如格式化日期、计算新值等
"_transformationRule_" : {
"_ruleName_" : "_ruleValue_"
}
}
}
}
通过这种方式,可以确保不同系统之间的数据格式一致性,从而实现无缝对接。
实时监控与异常处理
在整个数据集成过程中,实时监控和异常处理同样重要。轻易云平台提供了实时监控功能,可以随时查看数据流动和处理状态。一旦发现异常,如网络故障或数据格式错误,可以及时采取措施进行修复。
综上所述,通过合理配置元数据并利用轻易云平台强大的集成功能,我们可以高效地从金蝶云星空获取并加工拆卸子项入库的数据,为后续的数据写入和业务处理打下坚实基础。
ETL转换与写入旺店通·企业奇门API接口的技术案例
在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,并将其转为目标平台——旺店通·企业奇门API接口所能够接收的格式,最终写入目标平台。本文将详细探讨如何通过轻易云数据集成平台实现这一过程。
元数据配置解析
首先,我们需要理解元数据配置中的各个字段及其对应关系。以下是元数据配置的详细内容:
{
"api": "wdt.stockin.order.push",
"effect": "EXECUTE",
"method": "POST",
"request": [
{"field": "outer_no", "label": "外部单号", "type": "string", "value": "{FBillNo}"},
{"field": "warehouse_no", "label": "仓库编号", "type": "string", "value": "{FStockIDSETY_FNumber}"},
{"field": "remark", "label": "备注", "type": "string", "value": "拆卸单子项入库"},
{"field": "is_check", "label": "是否审核", "type": "string", "value": "1"},
{
"field": "goods_list",
"label": "货品明细节点",
"type": "array",
"value": "{{details_lists}}",
children: [
{"field":"spec_no","label":"商家编码","type":"string","value":"{{details_lists.FMaterialIDSETY_FNumber}}"},
{"field":"stockin_num","label":"入库数量","type":"string","value":"{{details_lists.FQtySETY}}"},
{"field":"src_price","label":"原价","type":"string","value":"1"},
{"field":"stockin_price","label":"入库价","type":"string","value":"1"}
]
}
],
otherRequest: [
{"field":"stockin_info","label":"stockin_info","type":"string","describe":"111"}
],
operation: {
method: 'merge',
field: 'FBillNo',
bodyName: 'details_lists',
bodySum: ['FQtySETY'],
header: ['FBillNo', 'FStockIDSETY_FNumber'],
body: ['FMaterialIDSETY_FNumber', 'FQtySETY']
}
}
数据转换与映射
在ETL过程中,关键步骤之一是将源数据字段映射到目标API接口所需的字段。以下是具体步骤:
-
提取(Extract):从源平台提取原始数据。
-
转换(Transform):
- 将
FBillNo
转换为outer_no
。 - 将
FStockIDSETY_FNumber
转换为warehouse_no
。 - 固定备注字段为“拆卸单子项入库”。
- 固定审核状态为“1”。
- 对于货品明细节点
goods_list
,需要进一步处理:- 将
details_lists.FMaterialIDSETY_FNumber
转换为spec_no
。 - 将
details_lists.FQtySETY
转换为stockin_num
。 - 固定原价和入库价为“1”。
- 将
- 将
-
加载(Load):将转换后的数据通过POST方法写入到旺店通·企业奇门API接口。
实际操作示例
假设我们从源系统提取到以下数据:
{
FBillNo: '20231001',
FStockIDSETY_FNumber: 'WH001',
details_lists: [
{ FMaterialIDSETY_FNumber: 'P001', FQtySETY: '10' },
{ FMaterialIDSETY_FNumber: 'P002', FQtySETY: '20' }
]
}
根据上述元数据配置,我们需要将其转换为如下格式:
{
outer_no: '20231001',
warehouse_no: 'WH001',
remark: '拆卸单子项入库',
is_check: '1',
goods_list: [
{ spec_no: 'P001', stockin_num: '10', src_price: '1', stockin_price: '1' },
{ spec_no: 'P002', stockin_num: '20', src_price: '1', stockin_price: '1' }
],
stockin_info:'111'
}
接口调用
最后,通过HTTP POST请求将上述转换后的数据发送至旺店通·企业奇门API接口。具体代码示例如下:
const axios = require('axios');
const data = {
outer_no : '20231001',
warehouse_no : 'WH001',
remark : '拆卸单子项入库',
is_check : '1',
goods_list : [
{ spec_no : 'P001', stockin_num : '10', src_price : '1', stockin_price : '1' },
{ spec_no : 'P002', stockin_num : '20', src_price : '1', stockin_price : '1' }
],
stockin_info:'111'
};
axios.post('https://api.wangdian.cn/openapi2/wdt.stockin.order.push', data)
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
通过以上步骤,我们完成了从源平台的数据提取、转换并成功写入到目标平台旺店通·企业奇门API接口的全过程。这一过程不仅确保了数据的一致性和准确性,还极大地提高了业务操作的效率。