金蝶云星空数据集成到旺店通WMS:调拨出库=>其他出库单-1
在跨系统业务流程中,金蝶云星空与旺店通WMS的数据集成是一项关键任务。本文将分享一个成功的技术案例,通过使用executeBillQuery接口从金蝶云星空抓取数据,并利用WDT_WMS_STOCKOUT_CREATE接口将数据写入旺店通WMS,实现调拨出库到其他出库单的对接。
首先,确保每一笔从金蝶云星空拉取的数据都完整无误,这时需要针对分页和限流问题进行处理。在API调用过程中,合理配置请求参数,以保障各页数据获取的一致性。同时,通过定时任务机制自动触发executeBillQuery接口,稳健地抓取最新库存变化信息,并实时记录日志以便监控整个过程。
其次,在大量数据写入至旺店通WMS时,为提升效率,我们采用批量处理方式。调用WDT_WMS_STOCKOUT_CREATE接口,将预先处理好的多条记录一次性交给目标系统,实现快速、可靠地完成出库单据的生成。此外,还需特别注意两平台之间的数据格式差异,必要时通过自定义映射规则保证字段匹配正确。
最后,为进一步完善整个集成流程设计,对接异常处理和错误重试机制是不可或缺的重要环节。一旦某次API调用失败,通过捕获异常并执行重试策略,可以有效提高系统间通信的稳定性和可靠性。目前实际运行的方案名称为“调拨出库=>其他出库单-1”,已成功应用于多个项目场景中,有效解决了企业在仓储管理上的痛点。
下面,我们将详细解析具体实施步骤及代码示例。
调用金蝶云星空接口executeBillQuery获取并加工数据
在轻易云数据集成平台中,调用源系统接口是数据集成生命周期的第一步。本文将详细探讨如何通过调用金蝶云星空的executeBillQuery
接口来获取并加工数据。
接口配置与请求参数
首先,我们需要配置API接口的元数据。根据提供的元数据配置,我们可以看到executeBillQuery
接口使用POST方法,并且包含多个请求参数和分页设置。以下是主要的请求参数及其作用:
- FormId: 业务对象表单Id,必须填写金蝶的表单ID,例如:
STK_TransferDirect
。 - FieldKeys: 需查询的字段key集合,格式为数组,通过解析器转换为字符串。
- FilterString: 过滤条件,用于筛选符合条件的数据,例如:
FApproveDate>='{{MINUTE_AGO_30|datetime}}' and FSrcStockId.F_JZJ_CheckBox=1
。 - StartRow: 开始行索引,用于分页查询。
- Limit: 最大行数,也是分页参数之一。
请求示例
基于上述配置,我们构建一个请求示例:
{
"FormId": "STK_TransferDirect",
"FieldKeys": "FBillEntry_FEntryID,FID,FBillNo,FDocumentStatus,FStockOrgId.FNumber,FDate,FBillTypeID.FNumber,FTransferBizType,FStockOutOrgId.FNumber,FTransferDirect,FNote,FBizType,FSaleOrgId.FNumber,FSettleOrgId.FNumber,FCustID.FNumber,FSUPPLIERID.FNumber,FThirdSrcId,FThirdSrcBillNo,FThirdSystem,FMaterialId.FNumber,FLot.fnumber,FSrcStockId.FNumber,FSrcStockLocId,FDestStockId.FNumber,FDestStockLocId,FQty,FPrice,FAmount,FBomId,FProduceDate,FExpiryDate,FMtoNo,FSrcStockStatusId,FDestStockStatusId,FOwnerId.FNumber,FOwnerOutId.FNumber,FSrcBillTypeId,FSrcSeq,FOrderNo,FNoteEntry,FSrcBillNo,FBFLowId,FConsignPrice,FTaxPrice,FTaxRate,FDestLot.fnumber,FQmEntryId,FConvertEntryId,FSOEntryId,FThirdSrcEntryId,FISFREE",
"FilterString": "FApproveDate>='{{MINUTE_AGO_30|datetime}}' and FSrcStockId.F_JZJ_CheckBox=1",
"StartRow": "0",
"Limit": "100"
}
数据清洗与转换
获取到原始数据后,需要进行清洗和转换,以便后续处理和存储。以下是一些常见的数据清洗与转换操作:
- 字段映射与重命名:将原始字段映射到目标系统所需的字段,并进行重命名。例如,将
FBillNo
映射为目标系统中的OrderNumber
。 - 数据类型转换:确保所有字段的数据类型符合目标系统要求。例如,将日期字符串转换为标准日期格式。
- 缺失值处理:处理缺失值或异常值,例如填充默认值或删除不完整记录。
实际案例
假设我们从金蝶云星空获取了一批调拨出库单的数据,部分原始数据如下:
[
{
"FBillEntry_FEntryID": "1001",
"FID": "2001",
"FBillNo": "D20210901",
"FDocumentStatus": "C",
...
},
{
"FBillEntry_FEntryID": "1002",
"FID": "2002",
"FBillNo": "D20210902",
"FDocumentStatus": "B",
...
}
]
我们需要将这些数据清洗并转换为目标系统所需的格式:
[
{
"EntryID": "1001",
"EntityKey": "2001",
"OrderNumber": "D20210901",
"DocumentStatus": "Completed",
...
},
{
"EntryID": "1002",
"EntityKey": "2002",
"OrderNumber": "D20210902",
...
}
]
在这个过程中,我们进行了字段重命名(如将FBillNo
重命名为OrderNumber
),并对状态码进行了转换(如将状态码C
转换为描述性状态“Completed”)。
总结
通过调用金蝶云星空的executeBillQuery
接口,我们能够高效地获取所需的数据,并通过一系列清洗和转换操作,使其符合目标系统的要求。这一步骤是整个数据集成生命周期中的关键环节,为后续的数据处理和写入奠定了坚实基础。
使用轻易云数据集成平台将数据转换并写入旺店通WMSAPI接口
在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)转换,并将其转为目标平台能够接收的格式。本文将详细探讨如何使用轻易云数据集成平台,将调拨出库单的数据转换为旺店通WMSAPI接口所能接收的格式,并最终写入目标平台。
元数据配置解析
在进行ETL转换之前,我们需要理解元数据配置。这次我们处理的是调拨出库单,目标平台是旺店通WMS,使用的API接口是WDT_WMS_STOCKOUT_CREATE
,请求方法为POST
。
元数据配置如下:
{
"api": "WDT_WMS_STOCKOUT_CREATE",
"method": "POST",
"idCheck": true,
"operation": {
"method": "merge",
"field": "FBillNo",
"bodyName": "details",
"header": ["FBillNo", "FDate", "FSrcStockId_FNumber"],
"body": ["FMaterialId_FNumber", "FBillEntry_FEntryID", "FQty", "FLot", "FProduceDate", "FExpiryDate"]
},
"request": [
{
"label": "出库单信息",
"field": "deliveryOrder",
"type": "object",
"children": [
{"parent": "deliveryOrder", "label": "出库单号", "field": "deliveryOrderCode", "type": "string",
"value":"{FBillNo}"},
{"parent": "deliveryOrder",
"label":"出库单类型","field":"orderType","type":"string","value":"DBCK"},
{"parent":"deliveryOrder","label":"出库单创建时间","field":"createTime","type":"string","value":"{FDate}"},
{"parent":"deliveryOrder","label":"仓库编码","field":"warehouseCode","type":"string","value":"{FSrcStockId_FNumber}"}
]
},
{
"label":
"单据信息",
"
field
":
"orderLines
",
"
type
":
"array
",
"
value
":
"
details
",
"
children
":[
{
"
parent
":
"
orderLines
",
"
label
":
"
orderLine
",
"
field
":
"
orderLine
",
"
type
":
"
object
",
"
children
":[
{
"
parent
":
"
orderLine
",
"
label
":
"
商家编码
",
"
field
":
"
itemCode
",
"
type
":
"
string
",
"
value
":
"
{{details.FMaterialId_FNumber}}
"
},
{
"
parent
":
"
orderLine
",
"
label
":
"
单据行号
",
"
field
":
"
orderLineNo
",
"
type
":
"
string
,
"value":"{{details.FBillEntry_FEntryID}}"},
{"parent":"orderLine","label":"应发商品数量","field":"planQty","type":"string","value":"{{details.FQty}}"},
{"parent":"orderLines","label":"批次","field":"batchCode","type":"string","value":"{{details.FLot}}"},
{"parent":"orderLines","label":"生产日期","field":"productDate","type":"string","value":"{{details.FProduceDate|date}}"},
{"parent":"orderLines","label":"过期日期","field":"expireDate","type":"string","value":"{{details.FExpiryDate|date}}"}
]
}
]
}
]
}
数据转换与写入过程
-
提取源数据:首先,我们从源系统提取调拨出库单的数据,这些数据包含了出库单号、创建时间、仓库编码等信息,以及具体商品的信息如商家编码、数量、批次等。
-
转换数据格式:根据元数据配置,将提取到的数据字段映射到目标系统所需的字段。例如:
- 出库单号(
FBillNo
)映射为deliveryOrderCode
- 创建时间(
FDate
)映射为createTime
- 仓库编码(
FSrcStockId_FNumber
)映射为warehouseCode
- 商品信息中的商家编码(
FMaterialId_FNumber
)映射为itemCode
- 出库单号(
-
构建请求体:按照元数据配置中的结构,构建符合旺店通WMSAPI接口要求的请求体。具体示例如下:
{ deliveryOrder: { deliveryOrderCode: '123456', orderType: 'DBCK', createTime: '2023-10-01T12:00:00Z', warehouseCode: 'WH001' }, orderLines: [ { orderLine: { itemCode: 'ITEM001', orderLineNo: '1', planQty: '100', batchCode: 'BATCH001', productDate: '2023-09-01', expireDate: '2024-09-01' } } ] }
-
发送请求:使用HTTP POST方法,将构建好的请求体发送到旺店通WMSAPI接口。确保请求成功后,记录响应结果以便后续追踪和问题排查。
技术要点
- 字段映射:确保每个字段都正确映射到目标系统所需的字段,避免因字段错误导致的数据传输失败。
- 日期格式处理:注意日期格式的转换,例如生产日期和过期日期需要按照目标系统要求进行格式化。
- 批量处理:对于大量数据,可以考虑批量处理以提高效率,但需确保每个批次的数据完整性和一致性。
通过上述步骤,我们可以高效地将源平台的数据转换并写入到旺店通WMSAPI接口中,实现不同系统间的数据无缝对接。这不仅提升了业务流程的自动化程度,还确保了数据的一致性和准确性。