package com.zy.core.model.protocol; import com.zy.entity.BasRgv; import com.zy.core.enums.RgvModeType; import com.zy.core.enums.RgvStatusType; import lombok.Data; import java.util.HashMap; import java.util.Map; /** * Created by vincent on 2020/8/7 */ @Data public class RgvProtocol implements Cloneable{ private Integer RgvNo; /** * 1 = 手动模式 * 2 = 自动模式 * 3 = 电脑模式 */ public Short mode; public RgvModeType modeType; /** * RGV当前状态 * 0:空闲,无任务 * 1:作业中 * 2:报警 */ public Short status; /** * 状态枚举 */ public RgvStatusType statusType; /** * 工位1任务号 */ public Short taskNo1 = 0; /** * RGV工位1当前状态 * 0:空闲,无任务 * 11:取货中 * 12:放货中 * 10:任务完成等待WCS确认 */ public Short status1; /** * 状态枚举 */ public RgvStatusType statusType1; /** * 工位1有物 */ public Short loaded1; /** * RGV当前位置 */ public Short RgvPos; /** * 走行在定位 * 0 = 在定位 * 1 = 不在定位 */ public Short walkPos; ////////////////////// 工位2定义 ////////////////////////////////////////////////// // /** // * 工位2任务号 // */ // public Short taskNo2 = 0; // // /** // * RGV工位2当前状态 // * 0:空闲,无任务 // * 11:取货中 // * 12:放货中 // * 10:任务完成等待WCS确认 // */ // public Short status2; // // /** // * 状态枚举 // */ // public RgvStatusType statusType2; // // /** // * 工位2有物 // */ // public Short loaded2; /////////////////////////////////////////////////////////////////////////////////////// /** * 异常码 */ public Short alarm; /** * 心跳指令 1-2每秒切换一次 */ public Short heart; private Short temp1; private Short temp2; private Short temp3; private Short temp4; private Short temp5; /** * X行走行速度m/min */ private Float xSpeed; /** * 堆垛机累计走行距离km */ public Float xDistance; /** * 堆垛机累计走行时长h */ public Float xDuration; public void setMode(Short mode) { this.mode = mode; this.modeType = RgvModeType.get(mode); } public void setMode(RgvModeType type) { this.modeType = type; this.mode = RgvModeType.get(type).id.shortValue(); } public void setStatus(Short status){ this.status = status; this.statusType = RgvStatusType.get(status); } public void setStatus(RgvStatusType type){ this.statusType = type; this.status = RgvStatusType.get(type).id.shortValue(); } public void setStatus1(Short status1){ this.status1 = status1; this.statusType1 = RgvStatusType.get(status1); } public void setStatus1(RgvStatusType type1){ this.statusType1 = type1; this.status1 = RgvStatusType.get(type1).id.shortValue(); } // public void setStatus2(Short status2){ // this.status2 = status2; // this.statusType2 = RgvStatusType.get(status2); // } // // public void setStatus2(RgvStatusType type2){ // this.statusType2 = type2; // this.status2 = RgvStatusType.get(type2).id.shortValue(); // } /** * 最近一次入出库类型 * I:入库 * O:出库 */ private String lastIo = "I"; public BasRgv toSqlModel(BasRgv basRgv){ if (alarm!=null) { basRgv.setRgvErr(alarm.longValue()); } basRgv.setWrkNo1(taskNo1.intValue()); // basRgv.setWrkNo2(taskNo2.intValue()); return basRgv; } public void setxSpeed(Short xSpeed) { this.xSpeed = Float.valueOf(xSpeed); } public void setxDistance(Short xDistance) { this.xDistance = Float.valueOf(xDistance); } public void setxDuration(Short xDuration) { this.xDuration = Float.valueOf(xDuration); } public Integer getRgvPosI(){ //需要根据现场改造 根据读到的值获取对应站点位置 Map map = new HashMap<>(); map.put((short) 1,100);map.put((short) 2,101); map.put((short) 3,106);map.put((short) 4,107); map.put((short) 5,112);map.put((short) 6,113); map.put((short) 7,119);map.put((short) 8,124); map.put((short) 9,149);map.put((short) 10,153); map.put((short) 11,157);map.put((short) 12,161); if (RgvPos==null) return 0; return map.get(RgvPos); } @Override public RgvProtocol clone() { try { return (RgvProtocol) super.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return null; } }