案例分享:调拨单同步——集成旺店通·企业奇门到金蝶云星空
在本技术案例中,我们将探讨如何实现旺店通·企业奇门的数据无缝集成到金蝶云星空,具体以"调拨单同步"为核心任务。通过灵活运用 wd.stock.transfer.query 和 batchSave API 接口,高效捕捉和传输数据,同时解决数据格式差异、分页限流问题及确保可靠性。
在实施过程中,我们专注于以下关键环节:
首先,通过调用 旺店通·企业奇门的 wdt.stock.transfer.query 接口,定时抓取最新的调拨单数据,并处理其分页与限流问题,保证接口调用过程中的高效率和稳定性。此外,为了避免漏单情况发生,在每次获取新数据后都会进行严格的数据完整性校验。
下一步是批量写入这些抓取的数据至 金蝶云星空 的 batchSave 接口。在这个过程中,需要特别关注两者之间的数据格式差异,并进行必要的转换和映射,以确保提交至金蝶系统的数据能够被正确解析和应用。
为了进一步提高系统对接的健壮性,我们还实现了完善的异常处理与错误重试机制。当出现意外情况导致接收或发送失败时,这些机制可以迅速响应并恢复操作,从而最大程度上减少由于不可控因素引发的数据丢失或重复问题。同时,对整个数据处理流程进行了实时监控与日志记录,实现全透明可视化追踪,有助于及时发现并解决潜在问题。
总之,此案例展示了一套从提取、转换到加载的一站式解决方案,不仅提高了业务操作效率,还确保了高质量、高可靠性的跨平台数据互联,为类似需求提供了一个可借鉴的重要示范。
调用旺店通·企业奇门接口wdt.stock.transfer.query获取并加工数据
在数据集成的生命周期中,调用源系统接口获取数据是至关重要的第一步。本文将深入探讨如何通过轻易云数据集成平台配置元数据,调用旺店通·企业奇门接口wdt.stock.transfer.query
,并对获取的数据进行初步加工处理。
接口调用配置
首先,我们需要配置调用wdt.stock.transfer.query
接口的元数据。该接口采用POST请求方式,主要用于查询调拨单信息。以下是具体的元数据配置:
{
"api": "wdt.stock.transfer.query",
"method": "POST",
"number": "transfer_no",
"id": "transfer_id",
"pagination": {
"pageSize": 100
},
"idCheck": true,
"request": [
{
"field": "start_time",
"label": "开始时间",
"type": "datetime",
"value": "{{LAST_SYNC_TIME|datetime}}"
},
{
"field": "end_time",
"label": "结束时间",
"type": "datetime",
"value": "{{CURRENT_TIME|datetime}}"
},
{
"field": "from_warehouse_no",
"label": "源仓库",
"type": "string"
},
{
"field": "to_warehouse_no",
"label": "目标仓库",
"type": "string"
},
{
"field": "status",
"label": "调拨单状态",
"type": "string"
}
],
...
}
请求参数解析
-
时间参数:
start_time
和end_time
用于指定查询的时间范围,分别对应上次同步时间和当前时间。这两个参数确保我们只获取到自上次同步以来的新数据。- 使用模板变量
{{LAST_SYNC_TIME|datetime}}
和{{CURRENT_TIME|datetime}}
动态生成时间值。
-
仓库参数:
from_warehouse_no
和to_warehouse_no
分别表示源仓库和目标仓库编号,用于过滤特定仓库之间的调拨单。
-
状态参数:
status
用于指定调拨单的状态,例如“已完成”、“进行中”等,以便根据业务需求筛选不同状态的调拨单。
分页处理
由于可能存在大量数据,我们需要进行分页处理。分页参数包括:
page_size
: 每页返回的数据条数,默认设置为100。page_no
: 当前页号,从1开始递增。
这些参数确保我们能够逐页获取所有符合条件的数据,而不会遗漏任何一条记录。
{
...
,"otherRequest":[
{"field":"page_size","label":"分页大小","type":"string","value":"{PAGINATION_PAGE_SIZE}"},
{"field":"page_no","label":"页号","type":"string","value":"{PAGINATION_START_PAGE}"}
]
}
数据清洗与转换
在成功获取到调拨单数据后,需要对其进行初步清洗和转换,以便后续处理和写入目标系统。常见的数据清洗操作包括:
- 字段映射:将源系统中的字段名映射为目标系统中的字段名。例如,将
transfer_no
映射为目标系统中的订单编号字段。 - 格式转换:将日期、金额等字段转换为目标系统所需的格式。例如,将日期字符串转换为标准的ISO日期格式。
- 数据过滤:根据业务规则过滤掉不需要的数据。例如,只保留状态为“已完成”的调拨单。
实时监控与错误处理
在整个过程中,实时监控和错误处理也是不可或缺的一部分。轻易云平台提供了实时监控功能,可以随时查看数据流动和处理状态。一旦出现错误,可以通过日志和告警机制及时发现并解决问题。
通过上述步骤,我们可以高效地调用旺店通·企业奇门接口获取调拨单数据,并对其进行初步加工,为后续的数据转换与写入做好准备。这不仅提升了业务透明度和效率,也确保了数据集成过程的可靠性和准确性。
使用轻易云数据集成平台实现调拨单同步到金蝶云星空的ETL转换
在数据集成生命周期的第二步,我们将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。以下是具体的技术实现细节。
API接口配置
根据元数据配置,我们需要调用金蝶云星空的batchSave
接口,使用POST方法提交数据。该接口要求的数据格式和字段如下:
- FBillNo: 单据编号,对应源数据中的
transfer_no
。 - FBillTypeID: 单据类型,固定值
ZJDB01_SYS
。 - FBizType: 业务类型,固定值
NORMAL
。 - FTransferDirect: 调拨方向,固定值
GENERAL
。 - FTransferBizType: 调拨类型,固定值
InnerOrgTransfer
。 - FStockOutOrgId: 调出库存组织,对应固定值
100
。 - FOwnerOutIdHead: 调出货主,对应固定值
100
。 - FStockOrgId: 调入库存组织,对应固定值
100
。 - FDate: 日期,对应源数据中的
created
。 - FNote: 备注,对应源数据中的
remark
。
明细信息(FBillEntry)
明细信息是一个数组,每个元素包含以下字段:
- FMaterialId: 物料编码,对应源数据中的
details_list.goods_no
。 - FCMKBarCode: 零售条形码,无需转换,直接从源数据获取。
- FQty: 调拨数量,对应源数据中的
details_list.num
。 - FLot: 调出批号,对应源数据中的
details_list.batch_no
。 - FSrcStockId: 调出仓库,对应源数据中的
from_warehouse_no
。 - FDestStockId: 调入仓库,对应源数据中的
to_warehouse_no
。 - FNoteEntry: 备注,对应源数据中的
details_list.remark
. - FISFREE: 赠品,无需转换,直接从源数据获取。
其他请求参数
除了上述字段外,还需要配置一些其他请求参数:
- FormId: 业务对象表单Id,固定值为
STK_TransferDirect
. - IsAutoSubmitAndAudit: 提交并审核,布尔值为
true
. - IsVerifyBaseDataField: 验证基础资料,布尔值为
true
. - Operation: 执行的操作,固定值为
Save
.
数据清洗与转换
在进行ETL转换时,需要特别注意以下几点:
- 字段映射:确保每个字段都正确映射到目标平台所需的字段。例如,将
transfer_no
映射到FBillNo
, 将created
映射到FDate
. - 数据类型:确保每个字段的数据类型符合目标平台的要求。例如,将日期字段格式化为字符串类型,将数值字段保持为字符串格式等。
- 固定值填充:对于某些字段,如
FBillTypeID
,FBizType
, 等,需要填充预定义的固定值。
实际案例
假设我们有以下源平台的数据:
{
"transfer_no": "TB20231001",
"created": "2023-10-01",
"remark": "月度调拨",
"details_list": [
{
"goods_no": "P001",
"num": "10",
"batch_no": "B001",
"from_warehouse_no": "WH001",
"to_warehouse_no": "WH002",
"remark": ""
},
{
"goods_no": "P002",
"num": "20",
"batch_no": "B002",
"from_warehouse_no": "WH001",
"to_warehouse_no": "WH003",
"remark": ""
}
]
}
经过ETL转换后,应生成如下符合金蝶云星空API接口要求的数据格式:
{
"FormId": "STK_TransferDirect",
"IsAutoSubmitAndAudit": true,
"IsVerifyBaseDataField": true,
"Operation": {
"rowsKey":"array",
rows:[
{
FBillNo:"TB20231001",
FBillTypeID:"ZJDB01_SYS",
FBizType:"NORMAL",
FTransferDirect:"GENERAL",
FTransferBizType:"InnerOrgTransfer",
FStockOutOrgId:"100",
FOwnerOutIdHead:"100",
FStockOrgId:"100",
FDate:"2023-10-01",
FNote:"月度调拨",
FBillEntry:[
{
FMaterialId:"P001",
FCMKBarCode:null,
FQty:"10",
FLot:"B001",
FSrcStockId:"WH001",
FDestStockId:"WH002",
FNoteEntry:null,
FISFREE:null
},
{
FMaterialId:"P002",
FCMKBarCode:null,
FQty:"20",
FLot:"B002",
FSrcStockId:"WH001",
FDestStockId:"WH003",
FNoteEntry:null,
FISFREE:null
}
]
}
]
}
}
通过轻易云的数据集成平台,我们可以轻松实现上述ETL转换过程,并将处理后的数据通过API接口写入金蝶云星空系统。这不仅提高了业务流程的自动化程度,也确保了不同系统之间的数据一致性和准确性。