wcs_file_kate_suzhou/WMS_WCS交互协议 R4.0.md
2024-07-24 11:28:14 +08:00

607 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# WMS_WCS交互协议
> 基础文档版本号:`R4.2`
>
> 更新时间:`2024年7月20日`
>
> 更新人:葛林强
>
> 江苏菲达宝开电气股份有限公司
>
> 内部资料,未经本公司书面授权禁止外泄
## 统一返回:
> 接口定义中标注统一返回的均按照下面方式返回。
| 键名 | 名称 | 数据类型 | 长度 | 是否必填 | 备注 |
| ---------- | -------- | -------- | ---- | -------- | ------------------------------------------------- |
| code | 返回码 | int | 4 | 是 | 操作正常返回 0 ,数据重复返回 200其他为异常代码 |
| message | 说明信息 | string | 255 | 是 | |
| returnData | 返回数据 | object | | 否 | 在需要返回数据的时候带出数据 |
## 堆垛机:
### 1、WMS发送堆垛机任务给WCS
>客户端WMS
>
>服务端WCS
>
>调用方式POST
>
>接口地址:/api/wms/stacker/setStackerTask
`使用场景:`WMS在需要WMS执行任务时调用此接口发送需要执行的任务
**请求数据格式:**
| 键名 | 名称 | 数据类型 | 长度 | 是否必填 | 是否主键 | 备注 |
| ---- | ------- | -------- | ---- | -------- | -------- | -------------- |
| | WMS任务 | List | | 是 | | 发送的任务数组 |
| 键名 | 名称 | 数据类型 | 长度 | 是否必填 | 是否主键 | 备注 |
| ----------- | ----------- | -------- | ------ | -------- | -------- | ------------------------------------------------------------ |
| taskId | WMS任务编号 | string | 64 | 是 | 是 | 唯一任务号作为WCS上报任务凭证 |
| taskType | 任务类型 | int | | 是 | 否 | 1入库<br />2出库<br />4拣选<br />9移库 |
| priority | 任务优先级 | int | | 是 | 否 | 数字越大 |
| origin | 任务起点 | string | 32 | 是 | 否 | |
| midpoint | 任务中间点 | string | 32 | 否 | 否 | 预留点,特殊情况需要 |
| destination | 任务终点 | string | 32 | 否 | 否 | 入库:<br /> 必填,终点一般为库位<br />出库:<br /> 若填写则Wcs按照填写的位置出库<br /> 若不填Wcs寻找空闲出库站台出库<br />移库:<br /> 必填,终点一般为库位 |
| vehicleNo | 载具编号 | string | 32 | 是 | 否 | |
| vehicleSize | 载具尺寸 | int | | 是 | 否 | 若没有则填 0 |
| weight | 总重量 | decimal | (10,2) | 是 | 否 | 若没有则填 0单位KG |
**返回数据格式**
<u>同上数据格式,当数据有异常时返回</u>
请求示例:
```json
[
{
"taskId":"12345aaabbb",
"taskType":"1",
"priority":0,
"origin":"101",
"midpoint":null,
"destination":"A-2-5-1",
"vehicleNo":"TP999",
"vehicleSize":0,
"weight":2.00,
}
]
// 这些数据中只要有一个存在问题,都会返回错误,所有任务就都无效
```
返回示例:
```json
{
"code":0,
"message":"任务创建成功"
}
```
```json
{
"code":0,
"message":"任务创建成功",
"returnData":[
{
"taskId":"12345aaabbb",
"taskType":"1",
"priority":0,
"origin":"101",
"midpoint":null,
"destination":"A-2-5-1",
"vehicleNo":"TP999",
"vehicleSize":0,
"weight":2.00,
}
]
}
```
### 2、WMS请求变更任务状态
> 客户端WMS
>
> 服务端WCS
>
> 调用方式POST
>
> 接口地址:/api/wms/stacker/changeTaskStatus
`使用场景:`WMS系统内任务状态发生变更并且需要通知WCS时调用此接口
**请求格式:**
| 键名 | 名称 | 数据类型 | 长度 | 是否必填 | 是否主键 | 备注 |
| ---------- | ----------- | -------- | ---- | -------- | -------- | ------------------------------------------------------------ |
| taskId | WMS任务编号 | string | 64 | 是 | 是 | 唯一任务号,下发任务时使用的 |
| taskStatus | 任务状态 | int | 4 | 是 | 否 | 0重新执行任务<br />1取消/删除任务<br />2完成任务<br />`注意:`变更状态后若任务正在执行则设备可能仍然继续执行任务 |
请求示例:
```json
{
"taskId":"12423452345",
"taskStatus":1
}
```
响应示例:
```json
{
"code":0,
"message":"任务取消成功"
}
```
### 3、WCS反馈WMS任务状态
>客户端WCS
>
>服务端WMS
>
>调用方式POST
>
>接口地址:
`使用场景:`WCS在任务执行的时间节点通知WMS任务状态
`注意:`该接口WCS会尝试多次若多次未调用成功或WMS返回异常则不再调用
**请求格式:**
| 键名 | 名称 | 数据类型 | 长度 | 是否必填 | 是否主键 | 备注 |
| ----------- | ----------- | -------- | ---- | -------- | -------- | ------------------------------------------------------------ |
| taskId | WMS任务编号 | string | 64 | 是 | 是 | 唯一任务号,下发任务时使用的 |
| taskStatus | 任务状态 | int | 4 | 是 | 否 | 1任务排队中<br />2任务开始执行<br />3任务已经离开初始位置<br />4任务到达中间点<br />5任务到达目的地<br />100任务完成<br />998任务取消<br />999任务异常 |
| vehicleNo | 载具号 | string | 32 | 是 | 否 | |
| destination | 任务终点 | string | 32 | 是 | 否 | 入库任务填库位,出库任务填出库站台 |
| message | 任务信息 | string | 128 | 否 | 否 | 一般用作异常时填写信息 |
请求示例:
```json
{
"taskId":"235345634534",
"taskStatus":2,
"destination":"102",
"vehicleNo":"T112233"
"message":"任务已经开始执行"
}
```
响应示例:
```json
{
"code":0,
"message":"成功"
}
```
### 4、WCS请求载具入库
> 客户端WCS
>
> 服务端WMS
>
> 调用方式POST
>
> 接口地址:
`使用场景:`WCS在扫码入库/盘点回库等情况下需要向WMS发送请求信号WMS收到此信号后若正常则通过任务下发接口下发任务给WCS
**请求格式:**
| 键名 | 名称 | 数据类型 | 长度 | 是否必填 | 是否主键 | 备注 |
| ----------- | -------- | -------- | ---- | -------- | -------- | -------------------------------------------------------- |
| point | 点位 | string | 32 | 是 | 否 | |
| vehicleNo | 载具编号 | string | 32 | 是 | 否 | |
| codeMessage | 条码信息 | string | 512 | 否 | 否 | 若条码含物料信息或者其他需要一并传递的信息将会出现在此处 |
| remark | 备注 | string | 256 | 否 | 否 | |
**响应格式(returnData)**
| 键名 | 名称 | 数据类型 | 长度 | 是否必填 | 是否主键 | 备注 |
| ------- | -------- | -------- | ---- | -------- | -------- | -------- |
| inStand | 入库站台 | string | 64 | 否 | 否 | 入库站台 |
| remark | 备注信息 | string | 128 | 否 | 否 | |
请求示例:
```json
{
"point":"101",
"vehicleNo":"TP1001",
"codeMessage":"010001@03423423@手榴弹@100@枚",
"remark":""
}
```
响应示例:
```json
{
"code":0,
"message":"请求成功",
"returnData":{
"inStand":"101",
"reamrk":""
}
}
```
### 5、WMS向WCS推送新的目的地
>客户端WMS
>
>服务端WCS
>
>调用方式POST
>
>接口地址:/api/wms/stacker/setStackerTaskNewDestination
`使用场景:`WMS在设备重复入库时推送新终点任务给WCS
| 键名 | 名称 | 数据类型 | 长度 | 是否必填 | 是否主键 | 备注 |
| ----------- | ----------- | -------- | ---- | -------- | -------- | ---------------------------------------- |
| taskId | WMS任务编号 | string | 64 | 是 | 是 | 唯一任务号,和卸货位置有货时的任务号一致 |
| destination | 任务终点 | string | 32 | 是 | 否 | |
| vehicleNo | 载具编号 | string | 32 | 是 | 否 | |
请求示例:
```json
{
"taskId":"12334534",
"destination": "010101",
"vehicleNo":"T0001"
}
```
## 箱式线:
### 1、WMS向WCS发送输送任务
>客户端WMS
>
>服务端WCS
>
>调用方式POST
>
>接口地址:/api/wms/convey/setConveyTask
`使用场景:`WMS推送拣选任务给WCS
**请求格式:**
| 键名 | 名称 | 数据类型 | 长度 | 是否必填 | 是否主键 | 备注 |
| ---- | ---- | -------- | ---- | -------- | -------- | ---- |
| | 列表 | list | | | | |
| 键名 | 名称 | 数据类型 | 长度 | 是否必填 | 是否主键 | 备注 |
| --------- | ---------- | -------- | ---- | -------- | -------- | ------------------------------------------------------------ |
| taskGroup | 任务组编号 | string | 40 | 否 | 否 | 不填的情况下WCS自动生成 |
| vehicleNo | 载具号 | string | 32 | 是 | 否 | |
| taskType | 任务类型 | int | | 是 | 否 | 任务类型:<br />1拣选<br />2补货<br />3发货<br />4复核 |
| location | 点位 | List | 128 | 是 | 否 | |
| remark | 备注 | string | 256 | 否 | 否 | |
请求示例:
```json
[
{
"taskGroup":"q231231231432",
"vehicleNo":"TP1001",
"taskType": 1,
"location":["2001","2002"],
"remark":""
}
]
```
响应示例:
```json
{
"code":0,
"message":"请求成功"
}
```
```json
{
"code":1,
"message":"请求失败,当前任务未全部完结"
}
```
### 2、WCS向WMS上报箱子到达
>客户端WCS
>
>服务端WMS
>
>调用方式POST
>
>接口地址:
`使用场景:`WCS向WMS上报箱子到达
**请求格式:**
| 键名 | 名称 | 数据类型 | 长度 | 是否必填 | 是否主键 | 备注 |
| --------- | ---------- | -------- | ---- | -------- | -------- | ---- |
| taskGroup | 任务组编号 | string | 4 | 是 | 否 | |
| vehicleNo | 载具号 | string | 32 | 是 | 否 | |
| location | 点位 | string | 32 | 是 | 否 | |
| remark | 备注 | string | 256 | 否 | 否 | |
请求示例:
```json
{
"taskGroup":"q231231231432",
"vehicleNo":"TP1001",
"location":"2001",
"remark":""
}
```
响应示例:
```json
{
"code":0,
"message":"请求成功"
}
```
### 3、WMS请求输送线释放箱子
>客户端WMS
>
>服务端WCS
>
>调用方式POST
>
>接口地址:
`使用场景:`WCS向WMS上报箱子到达
**请求格式:**
| 键名 | 名称 | 数据类型 | 长度 | 是否必填 | 是否主键 | 备注 |
| -------- | ---- | -------- | ---- | -------- | -------- | ------- |
| location | 点位 | string | | 是 | 否 | P1 ~ P9 |
请求示例:
```json
{
"location":"P3"
}
```
响应示例:
```json
{
"code":0,
"message":"请求成功"
}
```
## 电子标签
### 1、WMS向WCS发送电子标签任务
> 客户端WMS
>
> 服务端WCS
>
> 请求方式POST
>
> 接口地址:
**请求格式:**
| 键名 | 名称 | 数据类型 | 长度 | 是否必填 | 是否主键 | 备注 |
| --------- | -------- | -------- | ---- | -------- | -------- | ------------------------------------------------------- |
| taskGroup | 任务组 | string | 40 | 否 | 否 | 不填情况下由WCS自动生成<br />每次发送任务时必须都不一样 |
| taskType | 任务类型 | int | | 是 | 否 | 任务类型:<br />1拣选/配件<br />2存储任务 |
| vehicleNo | 载具号 | string | 32 | 是 | 否 | 箱号 |
| orderId | 订单号 | string | 32 | 否 | 否 | |
| taskData | 任务数据 | List | | 是 | 否 | 任务数据列表 |
**taskData 数据**
| 键名 | 名称 | 数据类型 | 长度 | 是否必填 | 是否主键 | 备注 |
| --------- | -------- | -------- | ---- | -------- | -------- | ---------------------------- |
| taskId | 任务号 | string | 40 | 否 | 是 | 不填情况下由WCS自动生成 |
| location | 点位 | string | 32 | 是 | 否 | 需要拣选或者存储的点位 |
| goodsId | 物料编号 | string | 32 | 否 | 否 | |
| goodsName | 物料名称 | string | 64 | 否 | 否 | |
| needNum | 需求数量 | int | | 是 | 否 | 部分情况下若不需要数量请填 0 |
请求示例:
```json
{
"taskGroup":"Boom1234345",
"taskType": 1,
"vehicleNo": "P0001",
"orderId":"DFG1121312312",
"taskData":[
{
"taskId":"T231231",
"location":"1-L-001",
"goodsId":"B0001",
"goodsName":"宝开牌手榴弹",
"needNum": 20
},
{
"taskId":"T243534553453453451",
"location":"1-L-040",
"goodsId":"R0801",
"goodsName":"火箭筒",
"needNum": 13
}
]
}
```
响应示例:
```json
{
"code":0,
"message":"请求成功"
}
```
### 2、WCS向WMS反馈电子标签确认
> 客户端WCS
>
> 服务端WMS
>
> 请求方式POST
>
> 请求地址:
**请求格式:**
| 键名 | 名称 | 数据类型 | 长度 | 是否必填 | 是否主键 | 备注 |
| ---------- | -------- | -------- | ---- | -------- | -------- | --------------------------------------------- |
| taskGroup | 任务组 | string | 40 | 否 | 否 | |
| taskType | 任务类型 | int | | 是 | 否 | 任务类型:<br />1拣选/配件<br />2存储任务 |
| vehicleNo | 载具号 | string | 32 | 是 | 否 | 箱号 |
| orderId | 订单号 | string | 32 | 否 | 否 | |
| taskId | 任务号 | string | 40 | 否 | 是 | |
| location | 点位 | string | 32 | 是 | 否 | 需要拣选或者存储的点位 |
| goodsId | 物料编号 | string | 32 | 否 | 否 | |
| goodsName | 物料名称 | string | 64 | 否 | 否 | |
| needNum | 需求数量 | int | | 是 | 否 | 部分情况下若不需要数量请填 0 |
| confirmNum | 确认数量 | int | | 是 | 否 | 电子标签的按下确认时显示的数量 |
| | | | | | | |
请求示例:
```json
{
"taskGroup":"123123123",
"taskType": 1,
"vehicleNo":"V12123",
"orderId":"234213",
"taskId":"456456",
"location":"1-L-231",
"goodsId":"7867867",
"goodsName":"宝开牌迫击炮",
"needNum": 34,
"confirmNum": 12
}
```
响应示例:
```json
{
"code":0,
"message":"请求成功"
}
```