wcs_file_kate_suzhou/WMS_WCS交互协议 R4.0.md

607 lines
17 KiB
Markdown
Raw Permalink Normal View History

2024-07-24 11:28:14 +08:00
# 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":"请求成功"
}
```