金蝶云星空数据集成到旺店通WMS案例解析
在企业的日常运营中,系统对接与数据集成是确保业务流程高效运转的关键环节之一。本文将分享一个实际应用案例——如何通过轻易云平台,将金蝶采购入库单数据无缝地集成到旺店通其他入库单(包括组织间采购和零散入库单据类型)。
项目背景:我们需要定时从金蝶云星空系统抓取采购入库单的数据,并将这些数据快速、准确地写入旺店通WMS。具体技术挑战包括:
- 确保大批量数据在高吞吐量下也能够及时、可靠地被处理;
- 设计并实现自定义的数据转换逻辑,以适应两个系统之间的不同业务需求和数据结构;
- 实现实时监控和告警功能,以便及时发现并处理潜在的问题,确保整个集成过程顺畅运行。
方案概述
一、接口调用
首先,我们需要获取金蝶云星空中的采购入库单据。这一步骤通过调用executeBillQuery
API接口完成,该接口支持分页查询,可以有效解决大量数据传输过程中可能遇到的性能瓶颈问题。在此基础上,我们会重点解释如何合理设置调用频率以及分页参数,以保证不会因为请求过多而遭遇限流或超时。
接下来,针对得到的数据,需要进行一定程度上的清洗与转换。由于金蝶云星空与旺店通WMS的数据格式存在差异,我们使用轻易云提供的可视化工具,对数据流向进行了详细设计。同时,在转换逻辑中加入必要的数据质量监控机制,以提前捕获并处理异常情况。
二、大批量快速写入
为了满足业务对即时性及大量数据同步要求,我们将清洗后的数据信息按需打包,通过WDT_WMS_ENTRYORDER_CREATE
API接口写入旺店通WMS。这个步骤不仅强调API效率,同时也考虑到了异常处理和错误重试机制,使得即便出现网络波动或者临时故障,也能自动重试,并最终保证任务的一致性和完整性。
三、集中监控与优化
另一个核心要素是在整个实施过程中引入了集中化的监控管理体系。不仅对每一次API请求进行日志记录,还设置了全面的告警规则来跟踪任务状态以及性能表现。例如,当发现某个阶段耗时过长或失败次数超过设定阈值时,会立即触发告警,从而让运维团队可以迅速响应,实现闭环管理。这种能力极大提升了我们对整体流程透明度及控制力,也为后续
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台调用金蝶云星空接口executeBillQuery
,以获取采购入库单数据并进行初步加工。
接口配置与调用
首先,我们需要配置调用金蝶云星空接口的元数据。以下是关键的元数据配置:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FInStockEntry_FEntryId",
"pagination": {
"pageSize": 500
},
"idCheck": true,
"request": [
{"field":"FInStockEntry_FEntryId","label":"id","type":"string","value":"FInStockEntry_FEntryId"},
{"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_FNumber","label":"单据类型","type":"string","value":"FBillTypeID.FNumber"},
{"field":"FOwnerTypeIdHead","label":"货主类型","type":"string","value":"FOwnerTypeIdHead"},
{"field":"FOwnerIdHead_FNumber","label":"货主","type":"string","value":"FOwnerIdHead.FNumber"},
{"field":"FDemandOrgId_FNumber","label":"需求组织","type":"string","value":"FDemandOrgId.FNumber"},
{"field":"FPurchaseOrgId_FNumber","label":"采购组织","type":"string","value":"FPurchaseOrgId.FNumber"},
{"field": "FSupplierId_FNumber", "label": "供应商", "type": "string", "value": "FSupplierId.FNumber"}
],
"otherRequest":[
{"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
{"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
{"field": "TopRowCount", "label": "返回总行数", "type": int, describe: 金蝶的查询分页参数},
{"field": “FilterString”, “label”: “过滤条件”, “type”: “string”, “describe”: “示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=”, “value”: “FApproveDate>='{{MINUTE_AGO_30|datetime}}' and FStockId.F_JZJ_CheckBox=1 and FBillTypeID.FNumber='RKD02_SYS'”},
{“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_InStock}
]
}
数据请求与清洗
在配置好元数据后,我们通过POST方法调用executeBillQuery
接口,发送请求以获取采购入库单的数据。请求体中包含了我们需要查询的字段和过滤条件,例如:
FilterString
: 用于筛选特定条件下的数据,如最近30分钟内审核通过且仓库标识为1的入库单。FieldKeys
: 指定需要返回的字段集合,以逗号分隔。
示例请求体如下:
{
FormId: 'STK_InStock',
FieldKeys: 'FID,FBillNo,FDocumentStatus,FStockOrgId.FNumber,FDate,FBillTypeID.FNumber,FOwnerTypeIdHead,FOwnerIdHead.FNumber,FDemandOrgId.FNumber,FPurchaseOrgId.FNumber,FSupplierId.FNumber',
FilterString: 'FApproveDate>='2023-09-01T00:00:00Z' and FStockFlag=1 and FBillTypeID.FNumber='RKD02_SYS',
Limit: 500,
StartRow: 0
}
数据转换与写入
获取到原始数据后,需要对其进行清洗和转换,以便写入目标系统。在此过程中,可以使用轻易云提供的数据处理工具,对字段进行映射、格式转换等操作。例如,将金蝶云星空中的FBillNo
映射为旺店通中的order_no
,或将日期格式从ISO标准转换为目标系统所需格式。
{
sourceField: 'FBillNo',
targetField: 'order_no'
},
{
sourceField: 'FDate',
targetField: 'entry_date',
transformFunction: 'ISOToCustomFormat'
}
实时监控与日志记录
在整个数据集成过程中,实时监控和日志记录是确保数据准确性和及时处理问题的重要手段。轻易云平台提供了实时监控功能,可以随时查看数据流动和处理状态,并记录每一步操作日志,方便追溯和排查问题。
通过上述步骤,我们可以高效地从金蝶云星空获取采购入库单数据,并进行必要的清洗和转换,为后续的数据写入做好准备。这不仅提高了业务透明度,也大大提升了工作效率。
使用轻易云数据集成平台进行ETL转换并写入旺店通WMSAPI接口
在数据集成生命周期的第二步,我们需要将已经从源平台(金蝶采购入库单)获取的数据进行ETL转换,并将其转为目标平台(旺店通WMSAPI接口)所能够接收的格式,最终写入目标平台。本文将详细探讨这一过程中的技术细节和实现方法。
数据请求与清洗
首先,我们需要从金蝶系统中获取采购入库单的数据。这一步通常涉及到通过API或数据库查询来提取原始数据,并进行初步的清洗和整理,以确保数据的准确性和一致性。在此阶段,我们会使用轻易云数据集成平台提供的工具来完成这些操作。
数据转换与写入
在数据清洗完成后,接下来就是关键的ETL转换过程。我们需要将清洗后的数据按照旺店通WMSAPI接口的要求进行格式转换,并最终通过API写入目标系统。
配置元数据
根据提供的元数据配置,我们可以看到需要将金蝶系统中的字段映射到旺店通WMSAPI接口所需的字段。以下是具体的字段映射关系:
-
Header部分
FBillNo
->entryOrderCode
FStockId_FNumber
->warehouseCode
- 固定值
QTRK
->orderType
-
Body部分
FMaterialId_FNumber
->itemCode
FRealQty
->planQty
FInStockEntry_FEntryId
->orderLineNo
- 固定值
ZP
->inventoryType
FLot
->batchCode
FProduceDate|date
->productDate
FExpiryDate|date
->expireDate
API请求结构
根据元数据配置,构建API请求体如下:
{
"entryOrder": {
"entryOrderCode": "{FBillNo}",
"warehouseCode": "{FStockId_FNumber}",
"orderType": "QTRK"
},
"orderLines": [
{
"itemCode": "{{details.FMaterialId_FNumber}}",
"planQty": "{{details.FRealQty}}",
"orderLineNo": "{{details.FInStockEntry_FEntryId}}",
"inventoryType": "ZP",
"batchCode": "{{details.FLot}}",
"productDate": "{{details.FProduceDate|date}}",
"expireDate": "{{details.FExpiryDate|date}}"
}
]
}
实现步骤
-
初始化配置: 配置轻易云数据集成平台,设置源系统(金蝶)的连接信息,并定义所需的数据提取规则。
-
数据提取: 使用轻易云平台提供的数据提取工具,从金蝶系统中获取采购入库单的数据。
-
数据清洗: 对提取的数据进行初步清洗,确保其符合目标系统(旺店通WMS)的要求。例如,去除空值、格式化日期等。
-
ETL转换: 根据上述字段映射关系,将清洗后的数据转换为目标系统所需的格式。此步骤可以利用轻易云平台提供的ETL工具来实现。
-
构建API请求: 按照元数据配置构建API请求体。确保每个字段都正确映射,并且格式符合旺店通WMSAPI接口要求。
-
发送请求: 使用POST方法,将构建好的请求体发送到旺店通WMSAPI接口(
WDT_WMS_ENTRYORDER_CREATE
)。 -
监控与日志记录: 实时监控API请求的状态,记录成功与失败的日志,以便后续分析和排查问题。
示例代码
以下是一个简单示例代码片段,用于展示如何使用Python实现上述步骤:
import requests
import json
# 构建请求头
headers = {
'Content-Type': 'application/json'
}
# 构建请求体
data = {
"entryOrder": {
"entryOrderCode": "{FBillNo}",
"warehouseCode": "{FStockId_FNumber}",
"orderType": "QTRK"
},
"orderLines": [
{
"itemCode": "{details.FMaterialId_FNumber}",
"planQty": "{details.FRealQty}",
"orderLineNo": "{details.FInStockEntry_FEntryId}",
"inventoryType": "ZP",
"batchCode": "{details.FLot}",
"productDate": "{details.FProduceDate|date}",
"expireDate": "{details.FExpiryDate|date}"
}
]
}
# 将字典转为JSON字符串
json_data = json.dumps(data)
# 发送POST请求
response = requests.post('https://api.wangdiantong.com/WDT_WMS_ENTRYORDER_CREATE', headers=headers, data=json_data)
# 打印响应内容
print(response.text)
通过上述步骤和示例代码,我们可以高效地将金蝶采购入库单的数据转换并写入到旺店通WMS系统中,实现不同系统间的数据无缝对接。