金蝶云星空数据集成到旺店通·企业奇门:调拨单同步方案
在实际的系统集成项目中,数据的准确传递和实时更新是确保业务顺畅运行的关键环节。本文将分享一个具体案例,即如何通过轻易云数据集成平台,将金蝶云星空中的调拨单数据高效、安全地同步到旺店通·企业奇门对应的其他出库单(退货仓)。
调拨单同步需求分析
本次集成任务涉及两个主要API接口:
- 金蝶云星空:获取调拨单数据使用的是
executeBillQuery
接口。 - 旺店通·企业奇门:写入数据信息至
wdt.stockout.order.push
接口。
为了确保整个流程的数据完整性和一致性,我们需要实现以下几个目标:
- 高吞吐量的数据写入能力,快速将大量调拨单信息导入旺店通系统。
- 集中的监控及告警机制,实时跟踪每个步骤的数据处理状态,以便立即应对潜在问题。
- 支持自定义的数据转换逻辑,使得两套系统之间的数据格式差异能够自动调整。
数据抓取与转换过程
对于从金蝶云星空提取调拨单这一环节,我们采用了定时可靠抓取机制,通过设定合理的时间间隔调用 executeBillQuery
API,并结合分页策略,以确保不遗漏任何一张有效订单。同时,为了应对高并发场景,需要特别关注接口限流的问题,通过配置限流器来保障系统稳定运行。
数据质量与异常管理
在进行大批量数据写入前,通过预设的校验规则,对金蝶云星空返回的数据进行质量检查。针对可能出现的不合规或者异常数据,实现提前捕获并记录错误日志。此外,当写入过程中若发生网络中断或API响应超时等意外情况时,启用了重试机制以最大程度保证最终的一致性。
这是本次技术案例整理中的首要阶段内容。在接下来的章节中,将详细解读如何利用可视化工具创建直观、易于管理的数据流,以及各项参数配置细节,从而完成整个从金蝶云星空到旺店通·企业奇门的数据集成任务。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,第一步是调用源系统接口以获取原始数据。本文将详细介绍如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口,并对获取的数据进行初步加工。
接口配置与调用
首先,我们需要配置并调用金蝶云星空的executeBillQuery
接口。该接口主要用于查询单据信息,支持POST请求。以下是关键的元数据配置:
{
"api": "executeBillQuery",
"effect": "QUERY",
"method": "POST",
"number": "FBillNo",
"id": "FBillEntry_FEntryID",
"idCheck": true,
...
}
在这个配置中,api
字段指定了要调用的接口名称,method
字段定义了请求方法为POST,number
和id
字段分别表示单据编号和分录ID。
请求参数设置
为了准确地从金蝶云星空获取所需的数据,我们需要设置请求参数。这些参数包括单据ID、单据编号、日期等。以下是部分关键字段的配置:
{
"request": [
{"field": "FBillEntry_FEntryID", "label": "FBillEntry_FEntryID", "type": "string", "value": "FBillEntry_FEntryID"},
{"field": "FID", "label": "FID", "type": "string", "value": "FID"},
{"field": "FBillNo", "label": "FBillNo", "type": "string", "value":"FBillNo"},
{"field": "FDocumentStatus", "label":"FDocumentStatus","type":"string","value":"FDocumentStatus"},
...
],
...
}
这些字段定义了我们希望从金蝶云星空获取的数据项。例如,FBillNo
表示单据编号,FDocumentStatus
表示单据状态。
数据过滤与分页
为了提高查询效率,我们可以使用过滤条件和分页参数。以下是相关配置示例:
{
...
"otherRequest":[
{"field":"Limit","label":"Limit","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_PAGE_SIZE}"},
{"field":"FieldKeys","label":"FieldKeys","type":"array","describe":"金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber","value":"{MAIN_REQUEST}"},
{"field":"TopRowCount","label":"TopRowCount","type":"int","describe":"金蝶的查询分页参数"},
{"field":"FilterString","label":"FilterString","type":"string","describe":"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=","value":"FApproveDate>='{{LAST_SYNC_TIME|datetime}}' and FStockOrgId.FNumber='100' and FSrcStockId.FNumber ='01.09'"},
{"field":"FormId","label":"FormId","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"STK_TransferDirect"},
{"field":"StartRow","label":"StartRow","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_START_ROW}"}
],
...
}
FilterString
: 用于设置过滤条件,例如根据日期和组织编号筛选数据。Limit
,TopRowCount
,StartRow
: 用于分页控制,以避免一次性返回过多数据。
数据加工与清洗
在获取到原始数据后,需要对其进行初步加工和清洗,以便后续处理。以下是一些常见的数据加工操作:
- 字段映射:将原始数据中的字段映射到目标系统所需的字段。例如,将金蝶中的
FMaterialId_FNumber
映射到目标系统中的物料编号。 - 数据转换:根据业务需求,对某些字段进行格式转换或单位换算。例如,将日期格式从YYYY-MM-DD转换为DD/MM/YYYY。
- 数据校验:对关键字段进行校验,如检查单据状态是否为已审核状态。
实际案例
假设我们需要同步调拨单到旺店通其他出库单(退货仓),首先通过调用金蝶云星空接口获取调拨单信息,然后对其进行必要的数据加工,再写入到目标系统。以下是一个简化的流程示例:
-
调用接口:
{ // 调用executeBillQuery接口,传入必要的请求参数 // 获取调拨单信息 }
-
数据加工:
{ // 对获取的数据进行字段映射、格式转换和校验 // 将结果存储在临时变量中以便后续处理 }
-
写入目标系统:
{ // 将加工后的数据写入旺店通其他出库单(退货仓) }
通过以上步骤,我们可以高效地实现不同系统间的数据集成,并确保每个环节都透明可控。
数据集成生命周期第二步:ETL转换与写入旺店通·企业奇门API接口
在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是关键步骤之一。本文将详细探讨如何利用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并转为目标平台——旺店通·企业奇门API接口所能够接收的格式,最终写入目标平台。
API接口配置及元数据解析
我们需要将调拨单同步到旺店通其他出库单(退货仓),使用的API接口为wdt.stockout.order.push
。该接口采用POST方法提交数据,并且需要进行ID校验。以下是元数据配置的具体内容:
{
"api": "wdt.stockout.order.push",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{
"field": "outer_no",
"label": "外部单号",
"type": "string",
"value": "{FBillNo}"
},
{
"field": "warehouse_no",
"label": "仓库编号",
"type": "string",
"value": "006"
},
{
"field": "remark",
"label": "备注",
"type": "string",
"value": "金蝶调拨单"
},
{
"field": "is_check",
"label": "是否审核",
"type": "string",
"value": "1"
},
{
"field": "detail_list",
...
数据请求与清洗
在进行ETL转换之前,首先需要从源系统请求并清洗数据。假设我们已经从源系统获取了调拨单数据,包括单据编号(FBillNo)、物料编码(FMaterialId_FNumber)、数量(FQty)等字段。
数据转换
接下来,我们将这些源数据按照目标平台API接口的要求进行转换。具体步骤如下:
- 映射字段:将源系统中的字段映射到目标系统所需的字段。例如,源系统中的
FBillNo
对应目标系统中的outer_no
。 - 设置固定值:某些字段在目标系统中需要固定值,如仓库编号
warehouse_no
设置为"006",备注remark
设置为"金蝶调拨单"。 - 处理数组结构:对于复杂的数据结构,如货品明细节点,需要将其转换为目标系统所需的数组格式。
以下是一个示例代码片段,用于将源数据转换为目标格式:
{
...
{
field: 'detail_list',
label: '货品明细节点{FBillEntry_FEntryID}',
type: 'array',
value: 'detail_listss',
children: [
{ field: 'spec_no', label: '商家编码', type: 'string', value: '{{detail_listss.FMaterialId_FNumber}}' },
{ field: 'num', label: '出库数量', type: 'string', value: '{{detail_listss.FQty}}' },
{ field: 'price', label: '原价', type: 'string' },
{ field: 'batch_no', label: '批次', type: 'string', value: '{{details_listss.FLot_FNumber}}' }
]
}
}
数据写入
完成数据转换后,即可通过调用API接口将数据写入到旺店通·企业奇门。以下是一个示例请求体:
{
outer_no: sourceData.FBillNo,
warehouse_no: '006',
remark: '金蝶调拨单',
is_check: '1',
detail_list: sourceData.detailList.map(item => ({
spec_no: item.FMaterialId_FNumber,
num: item.FQty,
price: item.price,
batch_no: item.FLot_FNumber
}))
}
通过POST方法,将上述请求体发送至wdt.stockout.order.push
接口,实现数据的最终写入。
操作配置与延迟处理
为了确保操作的一致性和可靠性,我们还可以配置一些操作参数,例如合并方法、延迟时间等:
{
operation:{
method:"merge",
field:"FBillNo",
bodyName:"detail_listss",
bodySum:["FQty"],
header:["FBillNo","FSrcStockId_FNumber"],
body:["FMaterialId_FNumber","FQty","FDestStockLocId_FNumber1","FDestStockLocId_FNumber2","FDestStockLocId_FNumber3","FDestStockLocId_FNumber4","FLot_FNumber"]
},
delay:140
}
以上配置确保了在特定条件下的数据合并和延迟处理,以提高数据一致性和传输效率。
通过以上步骤,我们成功地实现了从源平台到旺店通·企业奇门API接口的数据ETL转换和写入。这一过程不仅保障了数据的准确性和完整性,还提升了业务流程的自动化程度。