package com.zy.asrs.controller;
|
|
import com.core.annotations.ManagerAuth;
|
import com.core.common.R;
|
import com.zy.asrs.domain.enums.CrnStatusType;
|
import com.zy.asrs.domain.param.CrnOperatorParam;
|
import com.zy.asrs.domain.vo.CommandLogVo;
|
import com.zy.asrs.domain.vo.CrnMsgTableVo;
|
import com.zy.asrs.domain.vo.CrnStateTableVo;
|
import com.zy.asrs.entity.WrkMast;
|
import com.zy.asrs.service.WrkMastService;
|
import com.zy.core.cache.SlaveConnection;
|
import com.zy.core.enums.CrnModeType;
|
import com.zy.core.enums.SlaveType;
|
import com.zy.core.model.CrnSlave;
|
import com.zy.core.model.protocol.CrnProtocol;
|
import com.zy.core.properties.SlaveProperties;
|
import com.zy.core.thread.CrnThread;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.UUID;
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
/**
|
* 堆垛机接口
|
* Created by vincent on 2020-06-01
|
*/
|
@Slf4j
|
@RestController
|
@RequestMapping("/crn")
|
public class CrnController {
|
private static AtomicInteger integer = new AtomicInteger();
|
@Autowired
|
private SlaveProperties slaveProperties;
|
@Autowired
|
private WrkMastService wrkMastService;
|
|
@ManagerAuth(memo = "进行中的命令")
|
@PostMapping("/command/ongoing")
|
public R ongoingCommand(){
|
List<CommandLogVo> list = new ArrayList<>();
|
for (int i=1;i<=4;i++){
|
CommandLogVo vo = new CommandLogVo();
|
vo.setCrnNo(String.valueOf(i));
|
vo.setStatus(1);
|
vo.setCommand(UUID.randomUUID().toString());
|
list.add(vo);
|
}
|
return R.ok().add(list);
|
}
|
|
@PostMapping("/table/crn/state")
|
@ManagerAuth(memo = "堆垛机信息表")
|
public R crnStateTable(){
|
List<CrnStateTableVo> list = new ArrayList<>();
|
for (CrnSlave crn : slaveProperties.getCrn()) {
|
// 获取堆垛机信息
|
CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
|
if (crnThread == null) {
|
log.error("{}号堆垛机连接失败", crn.getId());
|
continue;
|
}
|
CrnProtocol crnProtocol = crnThread.getCrnProtocol();
|
if (crnProtocol == null) {
|
log.error("{}号堆垛机连接失败", crn.getId());
|
continue;
|
}
|
// 表格行
|
CrnStateTableVo vo = new CrnStateTableVo();
|
vo.setCrnNo(crn.getId()); // 堆垛机号
|
vo.setWorkNo(crnProtocol.getTaskNo()); // 任务号
|
if (crnProtocol.getTaskNo()>0) {
|
WrkMast wrkMast = wrkMastService.selectById(crnProtocol.getTaskNo());
|
if (wrkMast != null) {
|
vo.setStatusType(CrnStatusType.process(wrkMast.getIoType()).getDesc()); // 模式状态
|
}
|
} else {
|
vo.setStatusType(crnProtocol.modeType.equals(CrnModeType.AUTO)? CrnStatusType.AUTO.getDesc(): CrnStatusType.UN_AUTO.getDesc()); // 模式状态
|
}
|
vo.setStatus(crnProtocol.getStatusType().desc); // 状态
|
vo.setWarn(""); // 报警 todo
|
vo.setLoading(crnProtocol.getLoaded()==1?"Y":"N"); // 有物
|
vo.setBay(crnProtocol.getBay()); // 列
|
vo.setLev(crnProtocol.getLevel()); // 层
|
vo.setForkOffset(crnProtocol.getForkPosType().desc); // 货叉位置
|
vo.setLiftPos(crnProtocol.getLiftPosType().desc); // 载货台位置
|
list.add(vo);
|
}
|
return R.ok().add(list);
|
}
|
|
@PostMapping("/table/crn/msg")
|
@ManagerAuth(memo = "堆垛机数据表")
|
public R crnMsgTable(){
|
List<CrnMsgTableVo> list = new ArrayList<>();
|
for (CrnSlave crn : slaveProperties.getCrn()) {
|
// 获取堆垛机信息
|
CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
|
if (crnThread == null) {
|
log.error("{}号堆垛机连接失败", crn.getId());
|
continue;
|
}
|
CrnProtocol crnProtocol = crnThread.getCrnProtocol();
|
if (crnProtocol == null) {
|
log.error("{}号堆垛机连接失败", crn.getId());
|
continue;
|
}
|
// 表格行
|
CrnMsgTableVo vo = new CrnMsgTableVo();
|
vo.setCrnNo(crn.getId()); // 堆垛机号
|
vo.setWorkNo(crnProtocol.getTaskNo()); // 任务号
|
if (crnProtocol.getTaskNo()>0) {
|
WrkMast wrkMast = wrkMastService.selectById(crnProtocol.getTaskNo());
|
if (wrkMast != null) {
|
vo.setStatus(CrnStatusType.process(wrkMast.getIoType()).getDesc()); // 模式状态
|
vo.setSourceStaNo(wrkMast.getSourceStaNo$()); // 源站
|
vo.setStaNo(wrkMast.getStaNo$()); // 目标站
|
vo.setSourceLocNo(wrkMast.getSourceLocNo()); // 源库位
|
vo.setLocNo(wrkMast.getLocNo()); // 目标库位
|
}
|
} else {
|
vo.setStatus(crnProtocol.modeType.equals(CrnModeType.AUTO)? CrnStatusType.AUTO.getDesc(): CrnStatusType.UN_AUTO.getDesc()); // 模式状态
|
}
|
list.add(vo);
|
|
}
|
return R.ok().add(list);
|
}
|
|
@PostMapping("/output/site")
|
@ManagerAuth(memo = "堆垛机报文日志输出")
|
public R crnOutput(){
|
String str = "\n" +new Date().toLocaleString() + "【2020-5-29 13:14:22】扫描plcA 目标站--273283723728327636432343234323422732837237283276364323432343234227328372372832763643234323432342";
|
return R.ok().add(str);
|
}
|
|
/****************************************************************/
|
/************************** 手动操作 ******************************/
|
/****************************************************************/
|
|
@ManagerAuth(memo = "入库")
|
@PostMapping("/operator/put")
|
public R crnPut(CrnOperatorParam param){
|
return R.ok("入库成功");
|
}
|
|
@ManagerAuth(memo = "出库")
|
@PostMapping("/operator/take")
|
public R crnTake(CrnOperatorParam param){
|
return R.ok("出库成功");
|
}
|
|
@ManagerAuth(memo = "库位转移")
|
@PostMapping("/operator/stockMove")
|
public R crnStockMove(CrnOperatorParam param){
|
return R.ok("库位转移成功");
|
}
|
|
@ManagerAuth(memo = "站到站")
|
@PostMapping("/operator/siteMove")
|
public R crnSiteMove(CrnOperatorParam param){
|
return R.ok("站到站成功");
|
}
|
|
@ManagerAuth(memo = "坐标移动")
|
@PostMapping("/operator/coorMove")
|
public R crnCoorMove(CrnOperatorParam param){
|
return R.ok("坐标移动成功");
|
}
|
|
@ManagerAuth(memo = "回原点")
|
@PostMapping("/operator/bacOrigin")
|
public R crnBacOrigin(CrnOperatorParam param){
|
return R.ok("回原点成功");
|
}
|
|
@ManagerAuth(memo = "任务完成")
|
@PostMapping("/operator/taskComplete")
|
public R crnTaskComplete(CrnOperatorParam param){
|
return R.ok("任务完成");
|
}
|
|
@ManagerAuth(memo = "暂停")
|
@PostMapping("/operator/pause")
|
public R crnPause(CrnOperatorParam param){
|
return R.ok("暂停成功");
|
}
|
|
@ManagerAuth(memo = "启动")
|
@PostMapping("/operator/boot")
|
public R crnBoot(CrnOperatorParam param){
|
return R.ok("启动成功");
|
}
|
|
@ManagerAuth(memo = "清除命令")
|
@PostMapping("/operator/clearCommand")
|
public R crnClearCommand(CrnOperatorParam param){
|
return R.ok("清除命令成功");
|
}
|
|
}
|