| | |
| | | package com.zy.core.model.protocol; |
| | | |
| | | import com.core.common.Cools; |
| | | import com.core.common.SpringUtils; |
| | | import com.zy.asrs.entity.BasSte; |
| | | import com.zy.asrs.service.BasSteService; |
| | | import com.zy.core.News; |
| | | import com.zy.core.enums.SteHisTaskStatusType; |
| | | import com.zy.core.enums.SteLocaType; |
| | | import com.zy.core.enums.SteStatusType; |
| | | import lombok.Data; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | |
| | | /** |
| | | * Created by vincent on 2020/8/7 |
| | | */ |
| | | @Slf4j |
| | | @Data |
| | | public class SteProtocol { |
| | | |
| | |
| | | public SteStatusType statusType; |
| | | |
| | | /** |
| | | * 任务号 |
| | | */ |
| | | public Short taskNo = 0; |
| | | |
| | | /** |
| | | * 正在执行任务 |
| | | */ |
| | | public Boolean execute; |
| | |
| | | /** |
| | | * 异常码1 |
| | | */ |
| | | public Integer alarm; |
| | | public Short alarm; |
| | | |
| | | |
| | | /** |
| | | * 异常码2 |
| | | */ |
| | | public Integer alarm0; |
| | | public Short alarm0; |
| | | |
| | | /** |
| | | * 电池电量 |
| | | */ |
| | | public Short charge; |
| | | public Float charge = 0.0F; |
| | | |
| | | public void setCharge(Float charge) { |
| | | if (charge >= 0) { |
| | | this.charge = charge; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 满电 |
| | |
| | | public Boolean lowCharge; |
| | | |
| | | /** |
| | | * 电池馈电 0,正常,1馈电 |
| | | * 电池馈电 0,欠电,1低电 2满电 |
| | | */ |
| | | public Short feed; |
| | | |
| | | |
| | | /** |
| | | * 当前位置 1,近点,2远点,3A点,4B点 |
| | | */ |
| | | public Short loca; |
| | | |
| | | public SteLocaType locaType; |
| | | |
| | | /** |
| | | * 近点距离 |
| | |
| | | /** |
| | | * 当前速度 |
| | | */ |
| | | public Double speed; |
| | | public Double speed = 0.0D; |
| | | |
| | | /** |
| | | * 高低位 0,低位,1高位 |
| | |
| | | * 在轨道上 0不在,1在 |
| | | */ |
| | | public Short track; |
| | | |
| | | /** |
| | | * 任务号 |
| | | */ |
| | | public Integer taskNo = 0; |
| | | |
| | | /** |
| | | * 任务类型 |
| | |
| | | */ |
| | | public Short crnAllowRun; |
| | | |
| | | /** |
| | | * 充电状态 1:在充电;0:不在充电 |
| | | */ |
| | | private Short chargeStatus; |
| | | |
| | | // 入库取空 |
| | | private Boolean inEmpty; |
| | | |
| | | // 出库取空 |
| | | private Boolean outEmpty; |
| | | |
| | | // 穿梭车异常 ------------------------------------------------------------------------ |
| | | |
| | | /** |
| | | * 0.升降超时报警 |
| | | */ |
| | | private boolean liftErr; |
| | | |
| | | /** |
| | | * 2.入库取空报警 |
| | | */ |
| | | private boolean inFetchErr; |
| | | |
| | | /** |
| | | * 3.出库取空报警 |
| | | */ |
| | | private boolean outFetchErr; |
| | | |
| | | /** |
| | | * 4.防撞保护 |
| | | */ |
| | | private boolean antiErr; |
| | | |
| | | /** |
| | | * 5.升降接近开关故障 |
| | | */ |
| | | private boolean liftSwitchErr; |
| | | |
| | | /** |
| | | * 6.轨道检测报警 |
| | | */ |
| | | private boolean trackErr; |
| | | |
| | | /** |
| | | * 7.设备运行超时报警 |
| | | */ |
| | | private boolean timeoutErr; |
| | | |
| | | /** |
| | | * 8.通信错误报警 |
| | | */ |
| | | private boolean connectErr; |
| | | |
| | | /** |
| | | * 9.设备急停 |
| | | */ |
| | | private boolean emergencyErr; |
| | | |
| | | /** |
| | | * 10.任务类型缺失 |
| | | */ |
| | | private boolean taskTypeErr; |
| | | |
| | | /** |
| | | * 11.任务号缺失 |
| | | */ |
| | | private boolean taskNoErr; |
| | | |
| | | /** |
| | | * 12.运行中有新任务 |
| | | */ |
| | | private boolean newTaskErr; |
| | | |
| | | /** |
| | | * 13.故障中有任务 |
| | | */ |
| | | private boolean errTaskErr; |
| | | |
| | | /** |
| | | * 14.运行中停止 |
| | | */ |
| | | private boolean stopErr; |
| | | |
| | | /** |
| | | * 15.脱机模式下有任务 |
| | | */ |
| | | private boolean offlineTaskErr; |
| | | |
| | | /** |
| | | * 16.条件未满足启动任务 |
| | | */ |
| | | private boolean startTaskErr; |
| | | |
| | | /** |
| | | * 17.低电压时有任务 |
| | | */ |
| | | private boolean voltageTaskErr; |
| | | |
| | | /** |
| | | * 63.设备故障标志位 |
| | | */ |
| | | private boolean devpErr; |
| | | // 穿梭车异常 ------------------------------------------------------------------------ |
| | | |
| | | // 穿梭车提示信息 ------------------------------------------------------------------------ |
| | | /** |
| | | * 64.联机状态 |
| | | */ |
| | | private boolean online; |
| | | |
| | | /** |
| | | * 65.不在轨道上 |
| | | */ |
| | | private boolean notOnTrack; |
| | | |
| | | /** |
| | | * 66.低电量提醒 |
| | | */ |
| | | private boolean lowVoltage; |
| | | |
| | | /** |
| | | * 67.亏电中 |
| | | */ |
| | | private boolean electricityLoss; |
| | | |
| | | /** |
| | | * 68.强制行走启动 |
| | | */ |
| | | private boolean forcedTravel; |
| | | |
| | | /** |
| | | * 69.演示模式开启 |
| | | */ |
| | | private boolean demoMode; |
| | | |
| | | /** |
| | | * 70.充电刷已接通 |
| | | */ |
| | | private boolean brushConnect; |
| | | |
| | | /** |
| | | * 71.任务中禁止手动 |
| | | */ |
| | | private boolean taskManualForbid; |
| | | |
| | | /** |
| | | * 72.联机中禁止手动 |
| | | */ |
| | | private boolean onlineManualForbid; |
| | | |
| | | /** |
| | | * 73.设备急停中 |
| | | */ |
| | | private boolean devpEmergency; |
| | | |
| | | /** |
| | | * 74.任务中断中 |
| | | */ |
| | | private boolean taskInterrupt; |
| | | |
| | | /** |
| | | * 75.任务已清除 |
| | | */ |
| | | private boolean taskClear; |
| | | |
| | | /** |
| | | * 76.任务确认已超时 |
| | | */ |
| | | private boolean taskConfirmTimeout; |
| | | |
| | | /** |
| | | * 77.充电中有任务 |
| | | */ |
| | | private boolean taskWithCharge; |
| | | |
| | | // 任务信息 --------------------------------------------------------- |
| | | /** |
| | | * 96.入库任务中 |
| | | */ |
| | | private boolean pakInTask; |
| | | |
| | | /** |
| | | * 97. 出库任务中 |
| | | */ |
| | | private boolean pakOutTask; |
| | | |
| | | /** |
| | | * 98. 移库任务中 |
| | | */ |
| | | private boolean pakMoveTask; |
| | | |
| | | /** |
| | | * 99. 回原点任务中 |
| | | */ |
| | | private boolean goHpTask; |
| | | |
| | | /** |
| | | * 100. 去反原点任务中 |
| | | */ |
| | | private boolean goOHpTask; |
| | | |
| | | /** |
| | | * 101. 去原点避让位 |
| | | */ |
| | | private boolean goHpAvoid; |
| | | |
| | | /** |
| | | * 102. 去反原点避让位 |
| | | */ |
| | | private boolean goOHpAvoid; |
| | | |
| | | /** |
| | | * 104. 入库取空结束 |
| | | */ |
| | | private boolean pakInEmpty; |
| | | |
| | | /** |
| | | * 105. 入库正常结束 |
| | | */ |
| | | private boolean pakInFinish; |
| | | |
| | | /** |
| | | * 106. 出库取空结束 |
| | | */ |
| | | private boolean pakOutEmpty; |
| | | |
| | | /** |
| | | * 107. 出库正常结束 |
| | | */ |
| | | private boolean pakOutFinish; |
| | | |
| | | /** |
| | | * 108. 去原点避让完成 |
| | | */ |
| | | private boolean goHpAvoidFinish; |
| | | |
| | | /** |
| | | * 109. 去反原点避让完成 |
| | | */ |
| | | private boolean goOHpAvoidFinish; |
| | | |
| | | /** |
| | | * 110. 去原点避让完成 |
| | | */ |
| | | private boolean goHpAvoidErr; |
| | | |
| | | /** |
| | | * 111. 去反原点避让完成 |
| | | */ |
| | | private boolean goOHpAvoidErr; |
| | | |
| | | // 状态信息 --------------------------------------------------------- |
| | | /** |
| | | * 112. 联机模式 |
| | | */ |
| | | private boolean autoMode; |
| | | |
| | | /** |
| | | * 113. 电压过低 |
| | | */ |
| | | private boolean voltageLow; |
| | | |
| | | |
| | | public void setStatus(Short status){ |
| | | this.status = status; |
| | | this.statusType = SteStatusType.get(status); |
| | |
| | | public void setStatus(SteStatusType type){ |
| | | this.statusType = type; |
| | | this.status = SteStatusType.get(type).id.shortValue(); |
| | | } |
| | | |
| | | public void setLoca(Short loca){ |
| | | this.loca = loca; |
| | | this.locaType = SteLocaType.get(loca); |
| | | } |
| | | |
| | | public void setLoca(SteLocaType type){ |
| | | this.locaType = type; |
| | | this.loca = SteLocaType.get(type).id.shortValue(); |
| | | } |
| | | |
| | | public void setHisTaskStatus(Short hisTaskStatus){ |
| | |
| | | */ |
| | | private String lastIo = "I"; |
| | | |
| | | private String pakMk = "-"; |
| | | |
| | | public BasSte toSqlModel(BasSte basSte){ |
| | | if (alarm!=null) { |
| | | basSte.setSteErr(alarm.longValue()); |
| | | } |
| | | basSte.setWrkNo(taskNo); |
| | | basSte.setWrkNo(taskNo.intValue()); |
| | | // if (basSte.getPakMk().equals("N")) { |
| | | // if (!Cools.isEmpty(row)) { |
| | | // basSte.setRow(row.intValue()); |
| | | // } |
| | | // if (!Cools.isEmpty(bay)) { |
| | | // basSte.setBay(bay.intValue()); |
| | | // } |
| | | // if (!Cools.isEmpty(lev)) { |
| | | // basSte.setLev(lev.intValue()); |
| | | // } |
| | | // } |
| | | return basSte; |
| | | } |
| | | |
| | | // 是否处于空闲待命状态 |
| | | public Boolean isIdle() { |
| | | boolean res = this.statusType.equals(SteStatusType.IDLE) |
| | | && this.mode == 1 |
| | | && this.pakMk.equals("N") |
| | | && !isAlarm() |
| | | && this.chargeStatus == 0 |
| | | && isEnable() |
| | | ; |
| | | if (!res) { |
| | | return res; |
| | | } else { |
| | | // 电量 |
| | | try { |
| | | String chargeLine = SpringUtils.getBean(BasSteService.class).selectById(this.steNo).getChargeLine(); |
| | | return charge > Float.parseFloat(chargeLine); |
| | | } catch (Exception e) { |
| | | News.error("fail", e); |
| | | return false; |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 小车电量 |
| | | public Float isIdle2() { |
| | | return this.charge; |
| | | } |
| | | |
| | | // 是否处于报警状态 |
| | | public Boolean isAlarm() { |
| | | return this.alarm > 1; |
| | | } |
| | | |
| | | public Boolean isEnable() { |
| | | if (Cools.isEmpty(row, bay, lev)) { |
| | | return false; |
| | | } |
| | | return row > 0 && bay > 0 && lev > 0; |
| | | } |
| | | |
| | | } |