|  |  |  | 
|---|
|  |  |  | 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 Integer taskNo = 0; | 
|---|
|  |  |  | public Short taskNo = 0; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 正在执行任务 | 
|---|
|  |  |  | 
|---|
|  |  |  | * 电池电量 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public Float charge = 0.0F; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void setCharge(Float charge) { | 
|---|
|  |  |  | if (charge >= 0) { | 
|---|
|  |  |  | this.charge = charge; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 满电 | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | 
|---|
|  |  |  | 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() { | 
|---|
|  |  |  | return this.statusType.equals(SteStatusType.IDLE) | 
|---|
|  |  |  | boolean res = this.statusType.equals(SteStatusType.IDLE) | 
|---|
|  |  |  | && this.mode == 1 | 
|---|
|  |  |  | && this.pakMk.equals("N") | 
|---|
|  |  |  | && !isAlarm(); | 
|---|
|  |  |  | && !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 > 0; | 
|---|
|  |  |  | return this.alarm > 1; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public Boolean isEnable() { | 
|---|
|  |  |  | if (Cools.isEmpty(row, bay, lev)) { | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return row > 0 && bay > 0 && lev > 0; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|