package com.zy.core.model.protocol; import com.core.common.Cools; import com.core.common.SpringUtils; import com.zy.common.utils.RedisUtil; import com.zy.core.enums.*; import lombok.Data; import java.util.Map; @Data public class DualCrnProtocol { private volatile Integer crnNo; /** * 1 = 手动模式 * 2 = 自动模式 * 3 = 电脑模式 */ public volatile Integer mode; public volatile DualCrnModeType modeType; /** * 异常码 */ public volatile Integer alarm; /** * WCS工位1任务号 */ public volatile Integer taskNo = 0; /** * WCS工位2任务号 */ public volatile Integer taskNoTwo = 0; /** * 设备工位1任务号 */ public volatile Integer deviceTaskNo = 0; /** * 设备工位2任务号 */ public volatile Integer deviceTaskNoTwo = 0; /** * 工位1当前状态 * 0:空闲,无任务 * 1:取货定位中 * 2:取货中 * 3:取货完成,放货定位中 * 4:放货中 * 5:回原点中 * 6:反原点 * 7:库位移位 * 90:任务完成等待WCS确认 * 99:报警 */ public volatile Integer status; /** * 工位2当前状态 */ public volatile Integer statusTwo; /** * 工位1状态枚举 */ public volatile DualCrnStatusType statusType; /** * 工位2状态枚举 */ public volatile DualCrnStatusType statusTypeTwo; /** * 工位1堆垛机当前列号 */ public volatile Integer bay; /** * 工位2堆垛机当前列号 */ public volatile Integer bayTwo; /** * 工位1堆垛机当前层号 */ public volatile Integer level; /** * 工位2堆垛机当前层号 */ public volatile Integer levelTwo; /** * 工位1当前货叉位置 * 0 = 货叉原位 * 1 = 货叉在左侧 * 2 = 货叉在右侧 */ public volatile Integer forkPos; /** * 工位2当前货叉位置 * 0 = 货叉原位 * 1 = 货叉在左侧 * 2 = 货叉在右侧 */ public volatile Integer forkPosTwo; public volatile DualCrnForkPosType forkPosType; public volatile DualCrnForkPosType forkPosTypeTwo; /** * 当前载货台位置 * 0 = 下定位 * 1 = 上定位 */ public volatile Integer liftPos; public volatile Integer liftPosTwo; public volatile DualCrnLiftPosType liftPosType; public volatile DualCrnLiftPosType liftPosTypeTwo; /** * 走行在定位 * 0 = 在定位 * 1 = 不在定位 */ public volatile Integer walkPos; public volatile Integer walkPosTwo; /** * 载货台有物 */ public volatile Integer loaded; public volatile Integer loadedTwo; /** * 任务接收状态 * 0 = 未接收 * 1 = 已接收 */ public volatile Integer taskReceive; public volatile Integer taskReceiveTwo; public volatile Integer taskSend; public volatile Integer taskSendTwo; private volatile Integer temp1; private Integer temp2; private Integer temp3; private Integer temp4; /** * X行走线速度m/min */ private Double xSpeed; /** * Y行走线速度m/min */ private Double ySpeed; /** * Z行走线速度m/min */ private Double zSpeed; /** * 堆垛机累计走行距离km */ public Double xDistance; /** * 堆垛机累计升降距离km */ public Double yDistance; /** * 堆垛机累计走行时长h */ public Double xDuration; /** * 堆垛机累计升降时长h */ public Double yDuration; //货物类型 private Integer goodsType; //条码 private String barcode; /** * 最近一次入出库类型 * I:入库 * O:出库 */ private String lastIo = "I"; /** * 堆垛机所在巷道 */ private Integer crnLane = 1; /** * 日志采集时间 */ private Long deviceDataLog = System.currentTimeMillis(); /** * 上一次指令下发时间 */ private Long lastCommandTime = System.currentTimeMillis(); /** * 扩展数据 */ private Map extend; public void setMode(Integer mode) { this.mode = mode; this.modeType = DualCrnModeType.get(mode); } public void setMode(DualCrnModeType type) { this.modeType = type; this.mode = DualCrnModeType.get(type).id; } public void setForkPos(Integer forkPos) { this.forkPos = forkPos; this.forkPosType = DualCrnForkPosType.get(forkPos); } public void setForkPosTwo(Integer forkPosTwo) { this.forkPosTwo = forkPosTwo; this.forkPosTypeTwo = DualCrnForkPosType.get(forkPosTwo); } public void setForkPos(DualCrnForkPosType type) { this.forkPosType = type; this.forkPos = DualCrnForkPosType.get(type).id; } public void setForkPosTwo(DualCrnForkPosType type) { this.forkPosTypeTwo = type; this.forkPosTwo = DualCrnForkPosType.get(type).id; } public void setLiftPos(Integer liftPos) { this.liftPos = liftPos; this.liftPosType = DualCrnLiftPosType.get(liftPos); } public void setLiftPosTwo(Integer liftPosTwo) { this.liftPosTwo = liftPosTwo; this.liftPosTypeTwo = DualCrnLiftPosType.get(liftPosTwo); } public void setLiftPos(DualCrnLiftPosType type) { this.liftPosType = type; this.liftPos = DualCrnLiftPosType.get(type).id; } public void setLiftPosTwo(DualCrnLiftPosType type) { this.liftPosTypeTwo = type; this.liftPosTwo = DualCrnLiftPosType.get(type).id; } public void setStatus(Integer status){ this.status = status; this.statusType = DualCrnStatusType.get(status); } public void setStatus(DualCrnStatusType type){ this.statusType = type; this.status = DualCrnStatusType.get(type).id; } public void setStatusTwo(Integer statusTwo){ this.statusTwo = statusTwo; this.statusTypeTwo = DualCrnStatusType.get(statusTwo); } public void setStatusTwo(DualCrnStatusType type){ this.statusTypeTwo = type; this.statusTwo = DualCrnStatusType.get(type).id; } public Integer getTaskNo() { RedisUtil redisUtil = null; try { redisUtil = SpringUtils.getBean(RedisUtil.class); }catch (Exception e) {} if (null != redisUtil) { Object o = redisUtil.get(RedisKeyType.DUAL_CRN_STATION1_FLAG.key + this.crnNo); if (!Cools.isEmpty(o)) { this.taskNo = Integer.parseInt(String.valueOf(o)); } } return this.taskNo == null ? 0 : this.taskNo; } public Integer getTaskNoTwo() { RedisUtil redisUtil = null; try { redisUtil = SpringUtils.getBean(RedisUtil.class); }catch (Exception e) {} if (null != redisUtil) { Object o = redisUtil.get(RedisKeyType.DUAL_CRN_STATION2_FLAG.key + this.crnNo); if (!Cools.isEmpty(o)) { this.taskNoTwo = Integer.parseInt(String.valueOf(o)); } } return this.taskNoTwo == null ? 0 : this.taskNoTwo; } }