package com.zy.asrs.controller;
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.core.annotations.ManagerAuth;
|
import com.core.common.Cools;
|
import com.core.common.R;
|
import com.core.exception.CoolException;
|
import com.zy.asrs.domain.enums.RgvStatusType;
|
import com.zy.asrs.domain.param.CrnDemoParam;
|
import com.zy.asrs.domain.param.CrnOperatorParam;
|
import com.zy.asrs.domain.param.RgvOperatorParam;
|
import com.zy.asrs.domain.vo.RgvMsgTableVo;
|
import com.zy.asrs.domain.vo.RgvStateTableVo;
|
import com.zy.asrs.entity.BasRgv;
|
import com.zy.asrs.entity.BasRgvErr;
|
import com.zy.asrs.entity.WrkMast;
|
import com.zy.asrs.mapper.BasRgvErrMapper;
|
import com.zy.asrs.service.BasRgvService;
|
import com.zy.asrs.service.LocMastService;
|
import com.zy.asrs.service.WrkMastService;
|
import com.zy.asrs.service.impl.MainServiceImpl;
|
import com.zy.core.CrnThread;
|
import com.zy.core.RgvThread;
|
import com.zy.core.cache.MessageQueue;
|
import com.zy.core.cache.OutputQueue;
|
import com.zy.core.cache.SlaveConnection;
|
import com.zy.core.enums.RgvModeType;
|
import com.zy.core.enums.RgvTaskModeType;
|
import com.zy.core.enums.SlaveType;
|
import com.zy.core.model.CrnSlave;
|
import com.zy.core.model.RgvSlave;
|
import com.zy.core.model.Task;
|
import com.zy.core.model.command.CrnCommand;
|
import com.zy.core.model.command.RgvCommand;
|
import com.zy.core.model.protocol.CrnProtocol;
|
import com.zy.core.model.protocol.RgvProtocol;
|
import com.zy.core.properties.SlaveProperties;
|
import com.zy.core.properties.SystemProperties;
|
import com.zy.core.thread.SiemensRgvThread;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.GetMapping;
|
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.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* RGV接口
|
* Created by vincent on 2020-06-01
|
*/
|
@Slf4j
|
@RestController
|
@RequestMapping("/rgv")
|
public class RgvController {
|
|
@Autowired
|
private SlaveProperties slaveProperties;
|
@Autowired
|
private WrkMastService wrkMastService;
|
@Autowired
|
private BasRgvErrMapper basRgvErrMapper;
|
@Autowired
|
private BasRgvService basRgvService;
|
@Autowired
|
private MainServiceImpl mainService;
|
@Autowired
|
private LocMastService locMastService;
|
int wrkNo = 9990;
|
|
|
@ManagerAuth(memo = "演示命令下发")
|
@GetMapping("/rgvDemoTask")
|
public R rgvDemoTask(Integer rgvNo, Integer sta,Integer end){
|
wrkNo++;
|
RgvCommand command = new RgvCommand();
|
command.setRgvNo(rgvNo); // RGV编号
|
command.setAckFinish1(false); // 任务完成确认位
|
command.setTaskNo1(wrkNo); // 工作号
|
command.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 任务模式: 取放货
|
command.setSourceStaNo1(sta.shortValue()); // 源站
|
command.setDestinationStaNo1(end.shortValue()); // 目标站
|
// command.setAckFinish2((short) 0); // 任务完成确认位
|
// command.setTaskNo2((short) 0); // 工作号
|
// command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 任务模式: 取放货
|
// command.setSourceStaNo2(param.getSourceStaNo2()); // 源站
|
// command.setDestinationStaNo2(param.getStaNo2()); // 目标站
|
command.setCommand((short) 0);
|
|
return rgvControl(command)? R.ok(): R.error();
|
}
|
|
@ManagerAuth(memo = "解锁小车")
|
@PostMapping("/lock")
|
public R lock(RgvOperatorParam param ){
|
SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, param.getRgvNo());
|
rgvThread.setPakMk(true);
|
return R.ok();
|
}
|
|
@GetMapping("/demo/status")
|
public R demoStatus(Integer rgvNo){
|
Map<String,Object> map = new HashMap<>();
|
if (Cools.isEmpty(rgvNo)){
|
map.put("demo","X");
|
map.put("rgvMode",0);
|
return R.ok().add(map);
|
}
|
String demo = "X";
|
Integer rgvMode = 0;
|
// List<Map<String, Object>> res = new ArrayList<>();
|
for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
|
SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNo);
|
RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
|
if (rgvSlave.getId().equals(rgvNo)){
|
demo = rgvSlave.getDemo()?"Y":"N";
|
rgvSlave.setRgvMode(rgvProtocol.getMode().intValue());
|
rgvMode = rgvProtocol.getMode().intValue();
|
}
|
}
|
map.put("demo",demo);
|
map.put("rgvMode",rgvMode);
|
return R.ok().add(map);
|
}
|
|
@GetMapping("/demo/status/true")
|
public R demoStatusTrue(Integer rgvNo){
|
if (Cools.isEmpty(rgvNo)){
|
return R.error("请选择rgv");
|
}
|
// List<Map<String, Object>> res = new ArrayList<>();
|
for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
|
if (rgvSlave.getId().equals(rgvNo)){
|
rgvSlave.setDemo(true);
|
}
|
}
|
return R.ok();
|
}
|
@GetMapping("/demo/status/false")
|
public R demoStatusFalse(Integer rgvNo){
|
if (Cools.isEmpty(rgvNo)){
|
return R.error("请选择rgv");
|
}
|
// List<Map<String, Object>> res = new ArrayList<>();
|
for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
|
if (rgvSlave.getId().equals(rgvNo)){
|
rgvSlave.setDemo(false);
|
}
|
}
|
return R.ok();
|
}
|
|
@GetMapping("/demo/status/rgvStatus")
|
public R demoStatusTrue1(Integer rgvNo,Integer status){
|
if (Cools.isEmpty(rgvNo)){
|
return R.error("请选择rgv");
|
}
|
if (Cools.isEmpty(status)){
|
return R.error("选择按钮有误");
|
}
|
// List<Map<String, Object>> res = new ArrayList<>();
|
for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
|
// 获取RGV信息
|
SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNo);
|
if (rgvThread == null) {
|
throw new CoolException("RGV不在线");
|
}
|
RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
|
if (rgvProtocol == null) {
|
throw new CoolException("RGV不在线");
|
}
|
String DB = "";
|
if (rgvSlave.getId().equals(rgvNo)){
|
switch (status){
|
case 5://强制启动
|
DB="4.4";
|
break;
|
// case 6://复位信号
|
// DB="4.5";
|
// break;
|
case 7://报警消音
|
DB="4.6";
|
break;
|
case 8://启动
|
DB="4.7";
|
break;
|
case 9://停止
|
DB="5.0";
|
break;
|
case 10://急停
|
DB="5.1";
|
break;
|
case 11://复位按钮
|
DB="5.2";
|
break;
|
case 12://手动
|
DB="5.3";
|
rgvSlave.setRgvMode(3);
|
break;
|
case 13://手动定位
|
DB="5.4";
|
break;
|
case 14://单机
|
DB="5.5";
|
rgvSlave.setRgvMode(2);
|
break;
|
case 15://联机
|
DB="5.6";
|
rgvSlave.setRgvMode(1);
|
break;
|
case 16://货叉定位回中
|
DB="5.7";
|
break;
|
case 17://恢复联机任务
|
DB="6.0";
|
break;
|
default:
|
return R.error("按钮不存在????!!!");
|
}
|
if (MessageQueue.offer(SlaveType.Rgv, rgvNo, new Task(10, DB))) {
|
return R.ok();
|
} else {
|
return R.error("命令下发失败");
|
}
|
}
|
|
}
|
return R.ok();
|
}
|
|
|
|
@PostMapping("/demo/switch")
|
@ManagerAuth(memo = "RGV演示")
|
public R crnDemo(CrnDemoParam param) throws InterruptedException {
|
if (Cools.isEmpty(param.getCrnId())){
|
return R.error();
|
}
|
if (Cools.isEmpty(param.getPassword())){
|
return R.error("请输入口令");
|
}
|
if (!param.getPassword().equals(SystemProperties.WCS_PASSWORD)){
|
return R.error("口令错误");
|
}
|
Thread.sleep(200L);
|
for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
|
if (rgvSlave.getId().equals(param.getCrnId())) {
|
rgvSlave.setDemo(param.getOpt());
|
}
|
}
|
// mainService.crnDemoOfLocMove(param.getCrnId());
|
return R.ok();
|
}
|
|
@ManagerAuth(memo = "取放货")
|
@PostMapping("/operator/put")
|
public R rgvFetchPut(RgvOperatorParam param){
|
wrkNo++;
|
RgvCommand command = new RgvCommand();
|
command.setRgvNo(param.getRgvNo()); // RGV编号
|
command.setAckFinish1(false); // 任务完成确认位
|
command.setTaskNo1(wrkNo); // 工作号
|
command.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 任务模式: 取放货
|
command.setSourceStaNo1(param.getSourceRow().shortValue()); // 源站
|
command.setDestinationStaNo1(param.getSourceBay().shortValue()); // 目标站
|
// command.setAckFinish2((short) 0); // 任务完成确认位
|
// command.setTaskNo2((short) 0); // 工作号
|
// command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 任务模式: 取放货
|
// command.setSourceStaNo2(param.getSourceStaNo2()); // 源站
|
// command.setDestinationStaNo2(param.getStaNo2()); // 目标站
|
command.setCommand((short) 0);
|
|
return rgvControl(command)? R.ok(): R.error();
|
}
|
|
|
@ManagerAuth(memo = "取")
|
@PostMapping("/operator/single/step/one/put")
|
public R rgvFetchSingleStepOnePut(RgvOperatorParam param){
|
return rgvFetchSingleStepPut(param,1)?R.ok():R.error();
|
}
|
@ManagerAuth(memo = "放")
|
@PostMapping("/operator/single/step/two/put")
|
public R rgvFetchSingleStepTwoPut(RgvOperatorParam param){
|
return rgvFetchSingleStepPut(param,2)?R.ok():R.error();
|
}
|
@ManagerAuth(memo = "X运行")
|
@PostMapping("/operator/single/step/three/put")
|
public R rgvFetchSingleStepThreePut(RgvOperatorParam param){
|
return rgvFetchSingleStepPut(param,3)?R.ok():R.error();
|
}
|
|
@ManagerAuth(memo = "取放")
|
@PostMapping("/operator/single/step/four/put")
|
public R rgvFetchSingleStepFourPut(RgvOperatorParam param){
|
return rgvFetchSingleStepPut(param,4)?R.ok():R.error();
|
}
|
|
public boolean rgvFetchSingleStepPut(RgvOperatorParam param ,Integer type){
|
wrkNo++;
|
RgvCommand command = new RgvCommand();
|
RgvTaskModeType fetchPut = RgvTaskModeType.NONE;
|
switch (type){
|
case 1:
|
fetchPut = RgvTaskModeType.FETCH;
|
param.setSourceBay(0);
|
break;
|
case 2:
|
fetchPut = RgvTaskModeType.PUT;
|
param.setSourceRow(0);
|
break;
|
case 3:
|
fetchPut = RgvTaskModeType.X_MOVE;
|
break;
|
case 4:
|
fetchPut = RgvTaskModeType.FETCH_PUT;
|
break;
|
default:
|
return false;
|
}
|
command.setRgvNo(param.getRgvNo()); // RGV编号
|
command.setAckFinish1(false); // 任务完成确认位
|
command.setTaskNo1(wrkNo); // 工作号
|
command.setTaskMode1(fetchPut); // 任务模式: 取放货
|
command.setSourceStaNo1(param.getSourceRow().shortValue()); // 源站
|
command.setDestinationStaNo1(param.getSourceBay().shortValue()); // 目标站
|
// command.setAckFinish2((short) 0); // 任务完成确认位
|
// command.setTaskNo2((short) 0); // 工作号
|
// command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 任务模式: 取放货
|
// command.setSourceStaNo2(param.getSourceStaNo2()); // 源站
|
// command.setDestinationStaNo2(param.getStaNo2()); // 目标站
|
command.setCommand((short) 0);
|
|
return rgvControlD(command);
|
}
|
|
|
@ManagerAuth(memo = "复位")
|
@PostMapping("/operator/reset")
|
public R crnReset(RgvOperatorParam param){
|
RgvCommand command = new RgvCommand();
|
command.setRgvNo(param.getRgvNo()); // 堆垛机编号
|
command.setReset(true);
|
return rgvControl2(command)?R.ok():R.error();
|
}
|
@ManagerAuth(memo = "联机")
|
@PostMapping("/operator/auto")
|
public R crnAuto(RgvOperatorParam param){
|
RgvCommand command = new RgvCommand();
|
command.setRgvNo(param.getRgvNo()); // 堆垛机编号
|
command.setAuto(true);
|
return rgvControl2(command)?R.ok():R.error();
|
}
|
@ManagerAuth(memo = "恢复任务")
|
@PostMapping("/operator/restoreTask")
|
public R crnRestoreTask(RgvOperatorParam param){
|
RgvCommand command = new RgvCommand();
|
command.setRgvNo(param.getRgvNo()); // 堆垛机编号
|
command.setRestoreTask(true);
|
return rgvControl2(command)?R.ok():R.error();
|
}
|
@ManagerAuth(memo = "完成任务")
|
@PostMapping("/operator/compTask")
|
public R rgvCompTask(RgvOperatorParam param){
|
RgvCommand command = new RgvCommand();
|
command.setRgvNo(param.getRgvNo()); // 堆垛机编号
|
command.setCompTask(true);
|
return rgvControl2(command)?R.ok():R.error();
|
}
|
@ManagerAuth(memo = "急停")
|
@PostMapping("/operator/stop")
|
public R rgvStop(RgvOperatorParam param){
|
RgvCommand command = new RgvCommand();
|
command.setRgvNo(param.getRgvNo()); // 堆垛机编号
|
command.setStop(true);
|
return rgvControl2(command)?R.ok():R.error();
|
}
|
|
@ManagerAuth(memo = "取消急停")
|
@PostMapping("/operator/noStop")
|
public R rgvNoStop(RgvOperatorParam param){
|
RgvCommand command = new RgvCommand();
|
command.setRgvNo(param.getRgvNo()); // 堆垛机编号
|
command.setNoStop(true);
|
return rgvControl2(command)?R.ok():R.error();
|
}
|
|
private boolean rgvControl2(RgvCommand command){
|
if (command.getRgvNo() == null) {
|
throw new CoolException("请选择RGV");
|
}
|
for (RgvSlave rgv : slaveProperties.getRgv()) {
|
// 获取堆垛机信息
|
if (command.getRgvNo().equals(rgv.getId())) {
|
SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
|
if (rgvThread == null) {
|
throw new CoolException("RGV不在线");
|
}
|
RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
|
if (rgvProtocol == null) {
|
throw new CoolException("RGV不在线");
|
}
|
// 空闲判断
|
// if (crnProtocol.getStatusType().equals(com.zy.core.enums.CrnStatusType.IDLE) && crnProtocol.getTaskNo() == 0) {
|
if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(2, command))) {
|
return true;
|
} else {
|
throw new CoolException("命令下发失败");
|
}
|
// } else {
|
// throw new CoolException("堆垛机不在空闲状态");
|
// }
|
}
|
}
|
return false;
|
}
|
|
@PostMapping("/table/rgv/state")
|
@ManagerAuth(memo = "RGV信息表")
|
public R rgvStateTable(){
|
List<RgvStateTableVo> list = new ArrayList<>();
|
List<BasRgv> rgvs = basRgvService.selectList(new EntityWrapper<BasRgv>().orderBy("rgv_no"));
|
for (BasRgv basRgv : rgvs) {
|
// 表格行
|
RgvStateTableVo vo = new RgvStateTableVo();
|
vo.setRgvNo(basRgv.getRgvNo()); // RGV号
|
list.add(vo);
|
// 获取RGV信息
|
SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, basRgv.getRgvNo());
|
if (rgvThread == null) {
|
continue;
|
}
|
RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
|
if (rgvProtocol == null) {
|
continue;
|
}
|
vo.setStatusType(rgvProtocol.modeType.desc); // 模式状态
|
vo.setStatus(rgvProtocol.getStatusType1().desc); // 状态
|
vo.setWorkNo1(rgvProtocol.getTaskNo1()); // 工位1任务号
|
vo.setRgvPos(rgvProtocol.getRgvPos());
|
vo.setPakMk(rgvThread.isPakMk()?"无锁":"锁定");
|
vo.setWalkPos(rgvProtocol.getAlarm() == 0?"正常":"报警");
|
vo.setWarnCode(String.valueOf(rgvProtocol.getAlarm()));
|
// vo.setStaNo(rgvProtocol.getSouSta().intValue());
|
// vo.setSourceStaNo(rgvProtocol.getEndSta().intValue());
|
if (rgvProtocol.getAlarm() > 0) {
|
BasRgvErr rgvErr = basRgvErrMapper.selectById(rgvProtocol.getAlarm());
|
vo.setAlarm(rgvErr==null?"未知异常":rgvErr.getErrName());
|
}
|
}
|
return R.ok().add(list);
|
}
|
|
@PostMapping("/table/rgv/msg")
|
@ManagerAuth(memo = "RGV数据表")
|
public R rgvMsgTable(){
|
List<RgvMsgTableVo> list = new ArrayList<>();
|
List<BasRgv> rgvs = basRgvService.selectList(new EntityWrapper<BasRgv>().orderBy("rgv_no"));
|
for (BasRgv basRgv : rgvs) {
|
// 表格行
|
RgvMsgTableVo vo = new RgvMsgTableVo();
|
vo.setRgvNo(basRgv.getRgvNo()); // RGV号
|
list.add(vo);
|
// 获取RGV信息
|
SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, basRgv.getRgvNo());
|
if (rgvThread == null) {
|
continue;
|
}
|
RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
|
if (rgvProtocol == null) {
|
continue;
|
}
|
|
vo.setWorkNo(rgvProtocol.getTaskNo1()); // 任务号
|
if (rgvProtocol.getTaskNo1()>0) {
|
WrkMast wrkMast = wrkMastService.selectById(rgvProtocol.getTaskNo1());
|
if (wrkMast != null) {
|
vo.setStatus(RgvStatusType.process(wrkMast.getIoType()).getDesc()); // 模式状态
|
vo.setSourceStaNo(wrkMast.getSourceStaNo$()); // 源站
|
vo.setStaNo(wrkMast.getStaNo$()); // 目标站
|
vo.setSourceLocNo(wrkMast.getSourceLocNo()); // 源库位
|
vo.setLocNo(wrkMast.getLocNo()); // 目标库位
|
}
|
} else {
|
vo.setStatus(rgvProtocol.modeType.equals(RgvModeType.AUTO)? rgvProtocol.modeType.desc: RgvModeType.HAND.desc); // 模式状态
|
}
|
vo.setXspeed(rgvProtocol.getXSpeed()); // 走行速度(m/min)
|
vo.setXdistance(rgvProtocol.getXDistance()); // 走行距离(Km)
|
vo.setXduration(rgvProtocol.getXDuration()); // 走行时长(H)
|
}
|
return R.ok().add(list);
|
}
|
|
@PostMapping("/output/site")
|
@ManagerAuth(memo = "RGV报文日志输出")
|
public R rgvOutput(){
|
StringBuilder str = new StringBuilder();
|
String s;
|
int i = 0;
|
while((s = OutputQueue.RGV.poll()) != null && i <=10) {
|
str.append("\n").append(s);
|
i++;
|
}
|
return R.ok().add(str.toString());
|
}
|
|
/****************************************************************/
|
/************************** 手动操作 ******************************/
|
/****************************************************************/
|
|
|
|
|
@ManagerAuth(memo = "任务完成")
|
@PostMapping("/operator/taskComplete")
|
public R rgvTaskComplete(RgvOperatorParam param){
|
RgvCommand command = new RgvCommand();
|
command.setRgvNo(param.getRgvNo()); // RGV编号
|
command.setAckFinish1(false); // 任务完成确认位
|
command.setTaskNo1( 0); // 工作号
|
command.setTaskMode1(RgvTaskModeType.NONE); // 任务模式
|
command.setSourceStaNo1((short) 0); // 源站
|
command.setDestinationStaNo1((short) 0); // 目标站
|
command.setAckFinish2((short) 1); // 任务完成确认位
|
command.setTaskNo2((short) 0); // 工作号
|
command.setTaskMode2(RgvTaskModeType.NONE); // 任务模式
|
command.setSourceStaNo2((short) 0); // 源站
|
command.setDestinationStaNo2((short) 0); // 目标站
|
command.setCommand((short) 0);
|
|
return rgvControl(command)? R.ok(): R.error();
|
}
|
|
@ManagerAuth(memo = "清除命令")
|
@PostMapping("/operator/clearCommand")
|
public R rgvClearCommand(RgvOperatorParam param){
|
if (param.getRgvNo() == null) {
|
throw new CoolException("请选择RGV号");
|
}
|
RgvCommand command = new RgvCommand();
|
command.setRgvNo(param.getRgvNo()); // RGV编号
|
command.setAckFinish1(false); // 任务完成确认位
|
command.setTaskNo1(0); // 工作号
|
command.setTaskMode1(RgvTaskModeType.NONE); // 任务模式
|
command.setSourceStaNo1((short) 0); // 源站
|
command.setDestinationStaNo1((short) 0); // 目标站
|
command.setAckFinish2((short) 0); // 任务完成确认位
|
command.setTaskNo2((short) 0); // 工作号
|
command.setTaskMode2(RgvTaskModeType.NONE); // 任务模式
|
command.setSourceStaNo2((short) 0); // 源站
|
command.setDestinationStaNo2((short) 0); // 目标站
|
command.setCommand((short) 0);
|
|
return rgvControl(command)? R.ok(): R.error();
|
}
|
|
@ManagerAuth(memo = "手动复位")
|
@PostMapping("/operator/handleReset")
|
public R handleReset(RgvOperatorParam param) throws Exception {
|
if (param.getRgvNo() == null) {
|
throw new CoolException("请选择RGV");
|
}
|
// 获取RGV缓存
|
for (RgvSlave rgv : slaveProperties.getRgv()) {
|
// 获取RGV信息
|
if (param.getRgvNo().equals(rgv.getId())) {
|
SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
|
if (rgvThread == null) {
|
throw new CoolException("RGV不在线");
|
}
|
RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
|
if (rgvProtocol == null) {
|
throw new CoolException("RGV不在线");
|
}
|
RgvCommand Command = new RgvCommand();
|
Command.setRgvNo(rgv.getId()); // RGV编号
|
Command.setTaskMode1(RgvTaskModeType.NONE);
|
Command.setAckFinish1(false); // 任务完成确认位
|
Command.setAckFinish2((short) 0); // 任务完成确认位
|
Command.setCommand((short) 0); // 任务完成确认位
|
// 延时发送
|
Thread.sleep(1000L);
|
if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(4, Command))) {
|
return R.ok();
|
} else {
|
throw new CoolException("命令下发失败");
|
}
|
|
}
|
}
|
return R.error();
|
}
|
|
private boolean rgvControl(RgvCommand command){
|
if (command.getRgvNo() == null) {
|
throw new CoolException("请选择RGV");
|
}
|
for (RgvSlave rgv : slaveProperties.getRgv()) {
|
// 获取RGV信息
|
if (command.getRgvNo().equals(rgv.getId())) {
|
SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
|
if (rgvThread == null) {
|
throw new CoolException("RGV不在线");
|
}
|
RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
|
if (rgvProtocol == null) {
|
throw new CoolException("RGV不在线");
|
}
|
if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(4, command))) {
|
return true;
|
} else {
|
throw new CoolException("命令下发失败");
|
}
|
}
|
}
|
return false;
|
}
|
|
private boolean rgvControlD(RgvCommand command){
|
if (command.getRgvNo() == null) {
|
throw new CoolException("请选择RGV");
|
}
|
for (RgvSlave rgv : slaveProperties.getRgv()) {
|
// 获取RGV信息
|
if (command.getRgvNo().equals(rgv.getId())) {
|
// SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
|
// if (rgvThread == null) {
|
// throw new CoolException("RGV不在线");
|
// }
|
// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
|
// if (rgvProtocol == null) {
|
// throw new CoolException("RGV不在线");
|
// }
|
try{
|
if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(11, command))) {
|
return true;
|
} else {
|
throw new CoolException("命令下发失败");
|
}
|
}catch (Exception e){
|
log.error("单步任务下发失败,异常:"+e);
|
throw new CoolException("命令下发失败");
|
}
|
}
|
}
|
return false;
|
}
|
|
}
|