### 金蝶云星空数据集成到旺店通WMS的技术案例:调拨入库=>其他入库单-1
在实现金蝶云星空与旺店通WMS的系统对接过程中,针对“调拨入库 => 其他入库单-1”的具体需求,我们设计了一套高效、稳定的数据集成方案。本案例着重解析API接口调用和大数据量处理中的关键技术点。
首先,我们利用金蝶云星空提供的数据接口`executeBillQuery`,定时抓取目标业务范围内的数据。通过合理设置分页参数,有效缓解了由于数据量大而导致的系统压力,同时避免漏单现象发生。
其次,为确保数据能够快速且准确地写入旺店通WMS系统,我们采用批量导入方式,并调用其API `WDT_WMS_ENTRYORDER_CREATE`进行插入操作。在此过程中,特别考虑到了两者之间的数据格式差异,通过自定义映射模块,实现了格式转换和字段对齐。同时,对于可能出现的接口限流问题,我们设计了智能重试机制,以提高整体可靠性。
整个流程中,每个环节均由实时监控与日志记录功能支撑,一旦发生异常能够及时预警并追溯来源,从而有效保障了整个集成过程的可控性和透明度。以下是该解决方案中重要技术实施细节与步骤解析。
![用友与外部系统接口集成开发](https://pic.qeasy.cloud/D30.png~tplv-syqr462i7n-qeasy.image)
### 调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口获取数据是至关重要的第一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来获取并加工数据。
#### 接口配置与请求参数
首先,我们需要配置接口及其请求参数。根据元数据配置,`executeBillQuery`接口采用POST方法,需要传递多个字段以确保正确的数据查询和返回。
以下是关键的请求参数及其配置:
- **FormId**: 业务对象表单Id,必须填写金蝶的表单ID,如:`STK_TransferDirect`。
- **FieldKeys**: 需查询的字段key集合,格式为字符串数组,通过逗号分隔。
- **FilterString**: 过滤条件,用于限定查询范围,例如:`FApproveDate>='{{MINUTE_AGO_30|datetime}}' and FDestStockId.F_JZJ_CheckBox=1`。
- **Limit**: 最大行数,用于分页查询。
- **StartRow**: 开始行索引,用于分页查询。
- **TopRowCount**: 返回总行数。
#### 请求示例
以下是一个完整的请求示例:
```json
{
"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 FDestStockId.F_JZJ_CheckBox=1",
"Limit": 100,
"StartRow": 0,
"TopRowCount": 0
}
```
#### 数据清洗与转换
在获取到原始数据后,需要对数据进行清洗和转换,以便后续处理和写入目标系统。以下是一些常见的数据清洗和转换操作:
1. **字段映射**:将源系统中的字段映射到目标系统中的相应字段。例如,将`FBillNo`映射到目标系统中的单据编号字段。
2. **数据类型转换**:确保所有字段的数据类型符合目标系统的要求。例如,将日期字符串转换为标准日期格式。
3. **值校验与修正**:检查关键字段的值是否符合业务规则,并进行必要的修正。例如,确保数量字段不为空且大于零。
#### 实际案例
假设我们需要从金蝶云星空中获取调拨入库单的数据,并将其写入到其他入库单中。具体步骤如下:
1. **调用接口获取数据**:
- 配置并发送上述请求,获取调拨入库单的数据。
2. **清洗与转换数据**:
- 将返回的数据进行字段映射,如将`FBillNo`映射为目标系统中的单据编号。
- 转换日期格式,将`FDate`从字符串格式转换为标准日期格式。
- 校验数量字段`FQty`,确保其不为空且大于零。
3. **写入目标系统**:
- 将清洗和转换后的数据通过轻易云平台写入到其他入库单中。
通过以上步骤,我们可以高效地实现从金蝶云星空到目标系统的数据集成。这不仅提高了数据处理的准确性和效率,还确保了业务流程的顺畅运行。
![钉钉与CRM系统接口开发配置](https://pic.qeasy.cloud/S17.png~tplv-syqr462i7n-qeasy.image)
### 将源平台数据转换为旺店通WMSAPI接口格式并写入
在数据集成生命周期的第二步中,我们需要将已经从源平台获取的数据进行ETL(提取、转换、加载)处理,最终将其写入目标平台——旺店通WMS。本文将详细探讨如何通过轻易云数据集成平台实现这一过程。
#### API接口配置
首先,我们需要配置与目标平台的API接口。根据提供的元数据配置,我们使用`WDT_WMS_ENTRYORDER_CREATE`接口,通过POST方法向旺店通WMS发送数据。以下是具体的API配置细节:
- **API**: `WDT_WMS_ENTRYORDER_CREATE`
- **Method**: `POST`
- **ID Check**: `true`
#### 数据转换逻辑
在进行数据转换时,我们需要遵循以下操作逻辑:
1. **合并操作**: 使用`merge`方法,将字段`FBillNo`作为唯一标识符,确保每个入库单号唯一。
2. **主体名称**: 数据主体命名为`details`,包含表头和表体信息。
3. **表头字段**:
- `FBillNo`: 入库单号
- `FDate`: 入库日期
- `FDestStockId_FNumber`: 目的仓库编码
4. **表体字段**:
- `FMaterialId_FNumber`: 商品编码
- `FBillEntry_FEntryID`: 入库单行号
- `FQty`: 商品数量
- `FDestLot`: 批次号
- `FProduceDate`: 生产日期
- `FExpiryDate`: 过期日期
#### 请求体构建
根据元数据配置,我们需要构建请求体,将源平台的数据映射到目标平台所需的格式。具体映射关系如下:
1. **入库单信息(entryOrder)**:
- 入库单号(entryOrderCode): `{FBillNo}`
- 仓库编码(warehouseCode): `{FDestStockId_FNumber}`
- 业务类型(orderType): 固定值`DBRK`
2. **单据信息(orderLines)**:
每个订单行信息包含以下字段:
- 商家编码(itemCode): `{details.FMaterialId_FNumber}`
- 应收商品数量(planQty): `{details.FQty}`
- 入库单的行号(orderLineNo): `{details.FBillEntry_FEntryID}`
- 库存类型(inventoryType): 固定值`ZP`
- 批次(batchCode): `{details.FDestLot}`
- 生产日期(productDate): `{details.FProduceDate|date}`
- 过期日期(expireDate): `{details.FExpiryDate|date}`
#### 实际案例应用
假设我们从源平台获取到如下数据:
```json
{
"FBillNo": "RK20230901",
"FDate": "2023-09-01",
"FDestStockId_FNumber": "WH001",
"details": [
{
"FMaterialId_FNumber": "ITEM001",
"FBillEntry_FEntryID": "1",
"FQty": "100",
"FDestLot": "LOT20230901",
"FProduceDate": "2023-08-01",
"FExpiryDate": "2024-08-01"
}
]
}
```
通过ETL转换后,生成的请求体应如下所示:
```json
{
"entryOrder": {
"entryOrderCode": "RK20230901",
"warehouseCode": "WH001",
"orderType": "DBRK"
},
"orderLines": [
{
"orderLine": {
"itemCode": "ITEM001",
"planQty": "100",
"orderLineNo": "1",
"inventoryType": "ZP",
"batchCode": "LOT20230901",
"productDate": "2023-08-01",
"expireDate": "2024-08-01"
}
}
]
}
```
#### 数据写入
最后一步是将构建好的请求体通过POST方法发送至旺店通WMS的API接口,实现数据写入。轻易云数据集成平台提供了全透明可视化的操作界面,可以实时监控数据流动和处理状态,确保每个环节都清晰易懂。
通过以上步骤,我们成功地将源平台的数据进行了ETL转换,并写入到了目标平台旺店通WMS中。这一过程不仅提高了业务效率,还确保了数据的一致性和准确性。
![电商OMS与ERP系统接口开发配置](https://pic.qeasy.cloud/T24.png~tplv-syqr462i7n-qeasy.image)