使用轻易云平台进行ETL转换并写入旺店通WMS系统
### 金蝶云星空与旺店通WMS集成案例分享
在企业管理系统中,数据的流转和准确性至关重要。本文将详细解析如何通过轻易云数据集成平台,实现金蝶云星空到旺店通WMS的数据对接。这一案例具体涉及了其他出库单->其他出库单【出库单】OK-1方案,通过该方案我们高效完成了跨系统的数据同步工作。
首先,我们需要调用金蝶云星空的executeBillQuery接口,以定时、可靠地抓取相关接口数据。为了确保不漏单,我们设置了合理的限流机制,并处理分页问题,从而避免因大批量请求带来的性能影响。在实施过程中,实时监控和日志记录功能也发挥了关键作用,使整个过程透明可追溯。
获取到金蝶云星空的数据后,需要按特定格式转换并批量写入至旺店通WMS系统,这是重点之一。我们使用了WDT_WMS_STOCKOUT_CREATE接口进行大量数据快速写入操作,同时兼顾异常处理与错误重试机制,确保每一次写入都能成功执行。此外,为应对两者之间在数据格式上的差异,还进行了定制化的数据映射以满足业务需求。
本次集成不仅提升了业务效率,也为未来类似项目提供了一套可参照的方法论。接下来,将深入探讨具体实现步骤及技术细节,让您全面了解这一具有代表性的系统对接解决方案。
![如何对接钉钉API接口](https://pic.qeasy.cloud/D29.png~tplv-syqr462i7n-qeasy.image)
### 调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来获取并加工数据。
#### 接口调用配置
首先,我们需要配置元数据以便正确调用金蝶云星空的`executeBillQuery`接口。以下是关键配置项:
- **API**: `executeBillQuery`
- **方法**: `POST`
- **分页**: 每页500条记录
- **ID检查**: `true`
请求字段如下:
```json
[
{"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` 是一个关键字段,它定义了需要查询的字段集合。我们可以通过以下方式进行配置:
```json
{
"FieldKeys": [
"FID",
"FBillNo",
"FDocumentStatus",
"FStockOrgId.FNumber",
"FDate",
"FBillTypeID",
"FMATERIALID.FNumber",
"其他字段..."
]
}
```
这些字段会被转换为逗号分隔的字符串,传递给金蝶云星空接口。
#### 分页处理
为了确保能够处理大量数据,我们采用分页机制。分页参数包括:
- **Limit**: 每页最大行数(500)
- **StartRow**: 开始行索引
- **TopRowCount**: 返回总行数
示例代码如下:
```json
{
"Limit": "{PAGINATION_PAGE_SIZE}",
"StartRow": "{PAGINATION_START_ROW}",
"TopRowCount": 0
}
```
#### 数据过滤
为了提高查询效率,可以使用过滤条件。例如,查询最近30分钟内的数据:
```json
{
"FilterString": "FApproveDate>='{{MINUTE_AGO_30|datetime}}' and FStockId.F_JZJ_CheckBox=1"
}
```
#### 实际调用示例
以下是一个完整的请求示例:
```json
{
"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: ""},
...
],
...
}
```
#### 数据处理与写入
在获取到数据后,需要对其进行清洗和转换,然后写入目标系统。这一步通常包括以下操作:
1. **数据清洗**:去除无效或重复的数据。
2. **数据转换**:根据目标系统的要求调整数据格式。
3. **数据写入**:将处理后的数据写入目标系统。
通过上述步骤,我们可以高效地从金蝶云星空获取所需的数据,并进行相应的处理和写入操作。这不仅提高了数据集成的效率,也确保了数据的一致性和准确性。
![用友与外部系统接口集成开发](https://pic.qeasy.cloud/S7.png~tplv-syqr462i7n-qeasy.image)
### 使用轻易云数据集成平台进行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接口要求的请求体。以下是一个示例请求体结构:
```json
{
"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请求:
```python
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}")
```
#### 技术要点总结
1. **字段映射**:确保所有字段都正确映射到目标API所需的格式。
2. **日期格式化**:使用适当的格式化函数处理日期字段。
3. **批量处理**:对于大批量的数据,可以考虑分批次发送以提高效率和稳定性。
4. **错误处理**:对API响应进行检查,并添加错误处理机制,以便及时发现和解决问题。
通过以上步骤,我们可以高效地完成从源平台到旺店通WMSAPI接口的数据ETL转换和写入过程。这不仅提高了数据处理的自动化程度,也确保了数据的一致性和准确性。
![钉钉与ERP系统接口开发配置](https://pic.qeasy.cloud/T22.png~tplv-syqr462i7n-qeasy.image)