金蝶云星空与旺店通WMS集成案例分享
在企业管理系统中,数据的流转和准确性至关重要。本文将详细解析如何通过轻易云数据集成平台,实现金蝶云星空到旺店通WMS的数据对接。这一案例具体涉及了其他出库单->其他出库单【出库单】OK-1方案,通过该方案我们高效完成了跨系统的数据同步工作。
首先,我们需要调用金蝶云星空的executeBillQuery接口,以定时、可靠地抓取相关接口数据。为了确保不漏单,我们设置了合理的限流机制,并处理分页问题,从而避免因大批量请求带来的性能影响。在实施过程中,实时监控和日志记录功能也发挥了关键作用,使整个过程透明可追溯。
获取到金蝶云星空的数据后,需要按特定格式转换并批量写入至旺店通WMS系统,这是重点之一。我们使用了WDT_WMS_STOCKOUT_CREATE接口进行大量数据快速写入操作,同时兼顾异常处理与错误重试机制,确保每一次写入都能成功执行。此外,为应对两者之间在数据格式上的差异,还进行了定制化的数据映射以满足业务需求。
本次集成不仅提升了业务效率,也为未来类似项目提供了一套可参照的方法论。接下来,将深入探讨具体实现步骤及技术细节,让您全面了解这一具有代表性的系统对接解决方案。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口来获取并加工数据。
接口调用配置
首先,我们需要配置元数据以便正确调用金蝶云星空的executeBillQuery
接口。以下是关键配置项:
- API:
executeBillQuery
- 方法:
POST
- 分页: 每页500条记录
- ID检查:
true
请求字段如下:
[
{"field":"FEntity_FEntryID","label":"FEntryID","type":"string","value":"FEntity_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","label":"单据类型","type":"string","value":"FBillTypeID"},
{"field":"FNOTE","label":"备注","type":"string","value":"FNOTE"},
{"field":"FMATERIALID_FNumber","label":"物料编码","type":"string","value":"FMATERIALID.FNumber"},
{"field":"FSTOCKID_FNumber","label":"发货仓库","type":""},
{"field": "其他字段..."}
]
请求参数解析
在请求参数中,FieldKeys
是一个关键字段,它定义了需要查询的字段集合。我们可以通过以下方式进行配置:
{
"FieldKeys": [
"FID",
"FBillNo",
"FDocumentStatus",
"FStockOrgId.FNumber",
"FDate",
"FBillTypeID",
"FMATERIALID.FNumber",
"其他字段..."
]
}
这些字段会被转换为逗号分隔的字符串,传递给金蝶云星空接口。
分页处理
为了确保能够处理大量数据,我们采用分页机制。分页参数包括:
- Limit: 每页最大行数(500)
- StartRow: 开始行索引
- TopRowCount: 返回总行数
示例代码如下:
{
"Limit": "{PAGINATION_PAGE_SIZE}",
"StartRow": "{PAGINATION_START_ROW}",
"TopRowCount": 0
}
数据过滤
为了提高查询效率,可以使用过滤条件。例如,查询最近30分钟内的数据:
{
"FilterString": "FApproveDate>='{{MINUTE_AGO_30|datetime}}' and FStockId.F_JZJ_CheckBox=1"
}
实际调用示例
以下是一个完整的请求示例:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FEntity_FEntryID",
"pagination": {
"pageSize": 500
},
"idCheck": true,
"request": [
{"field": "FID", "label": "实体主键", "type": "string", "value": ""},
{"field": "FBillNo", "label": "单据编号", "type": "", value: ""},
...
],
...
}
数据处理与写入
在获取到数据后,需要对其进行清洗和转换,然后写入目标系统。这一步通常包括以下操作:
- 数据清洗:去除无效或重复的数据。
- 数据转换:根据目标系统的要求调整数据格式。
- 数据写入:将处理后的数据写入目标系统。
通过上述步骤,我们可以高效地从金蝶云星空获取所需的数据,并进行相应的处理和写入操作。这不仅提高了数据集成的效率,也确保了数据的一致性和准确性。
使用轻易云数据集成平台进行ETL转换并写入旺店通WMSAPI接口的技术案例
在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL转换,并将其转为目标平台旺店通WMSAPI接口所能够接收的格式,最终写入目标平台。本文将详细探讨这一过程中的技术细节和操作步骤。
1. 数据转换与映射
首先,我们需要对源数据进行转换,以符合目标API接口的要求。根据提供的元数据配置,以下是我们需要处理的数据字段及其对应关系:
-
出库单信息
- 出库单号(
deliveryOrderCode
):{FBillNo}
- 出库单类型(
orderType
): 固定值QTCK
- 出库单创建时间(
createTime
):{FDate}
- 仓库编码(
warehouseCode
):{FSTOCKID}
- 出库单号(
-
单据信息
- 商家编码(
itemCode
):{FMATERIALID_FNumber}
- 单据行号(
orderLineNo
):{FEntity_FEntryID}
- 应发商品数量(
planQty
):{FQty}
- 批次(
batchCode
):{FLOT}
- 生产日期(
productDate
):{{FPRODUCEDATE|date}}
- 过期日期(
expireDate
):{{FEXPIRYDATE|date}}
- 商家编码(
2. 数据请求与清洗
在实际操作中,我们需要先从源系统请求到原始数据,并对其进行清洗和预处理,以确保数据的准确性和一致性。假设我们已经完成了这一步,接下来我们将重点放在如何将清洗后的数据进行ETL转换。
3. 构建请求体
根据元数据配置,我们需要构建一个符合旺店通WMSAPI接口要求的请求体。以下是一个示例请求体结构:
{
"deliveryOrder": {
"deliveryOrderCode": "SO20231001",
"orderType": "QTCK",
"createTime": "2023-10-01T12:00:00",
"warehouseCode": "WH001"
},
"orderLines": [
{
"orderLine": {
"itemCode": "ITEM001",
"orderLineNo": "1",
"planQty": "100",
"batchCode": "BATCH001",
"productDate": "2023-09-01",
"expireDate": "2024-09-01"
}
},
{
"orderLine": {
"itemCode": "ITEM002",
"orderLineNo": "2",
"planQty": "200",
"batchCode": "",
"productDate": "",
"expireDate": ""
}
}
]
}
在这个示例中,出库单信息和单据信息分别被映射到了相应的字段上。
4. 数据写入目标平台
完成数据转换后,我们需要将构建好的请求体通过HTTP POST方法发送到旺店通WMSAPI接口。以下是一个Python示例代码,用于发送HTTP请求:
import requests
import json
url = 'https://api.wdt.com/WDT_WMS_STOCKOUT_CREATE'
headers = {'Content-Type': 'application/json'}
data = {
# 构建好的请求体
}
response = requests.post(url, headers=headers, data=json.dumps(data))
if response.status_code == 200:
print("Data successfully written to WMS")
else:
print(f"Failed to write data to WMS, status code: {response.status_code}")
技术要点总结
- 字段映射:确保所有字段都正确映射到目标API所需的格式。
- 日期格式化:使用适当的格式化函数处理日期字段。
- 批量处理:对于大批量的数据,可以考虑分批次发送以提高效率和稳定性。
- 错误处理:对API响应进行检查,并添加错误处理机制,以便及时发现和解决问题。
通过以上步骤,我们可以高效地完成从源平台到旺店通WMSAPI接口的数据ETL转换和写入过程。这不仅提高了数据处理的自动化程度,也确保了数据的一致性和准确性。