| 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.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 { | 
|   | 
|     /** | 
|      * 设备号 | 
|      */ | 
|     private Short steNo; | 
|   | 
|     /** | 
|      * 1 = 联机模式 | 
|      * 0 = 脱机模式 | 
|      */ | 
|     public Short mode; | 
|   | 
|     /** | 
|      IDLE(0, "空闲"), | 
|      MOVING(1, "作业中"), | 
|      SOS(2, "报警"), | 
|      WAITING(3, "任务完成等待WCS确认"), | 
|      */ | 
|     public Short status; | 
|   | 
|     public SteStatusType statusType; | 
|   | 
|     /** | 
|      * 任务号 | 
|      */ | 
|     public Short taskNo = 0; | 
|   | 
|     /** | 
|      * 正在执行任务 | 
|      */ | 
|     public Boolean execute; | 
|   | 
|     /** | 
|      * 任务完成,等待WCS确认 | 
|      */ | 
|     public Boolean waiting; | 
|   | 
|   | 
|     /** | 
|      * 异常码1 | 
|      */ | 
|     public Short alarm; | 
|   | 
|   | 
|     /** | 
|      * 异常码2 | 
|      */ | 
|     public Short alarm0; | 
|   | 
|     /** | 
|      * 电池电量 | 
|      */ | 
|     public Float charge = 0.0F; | 
|   | 
|     /** | 
|      * 满电 | 
|      */ | 
|     public Boolean fullCharge; | 
|   | 
|     /** | 
|      * 低电量 | 
|      */ | 
|     public Boolean lowCharge; | 
|   | 
|     /** | 
|      * 电池馈电    0,欠电,1低电 2满电 | 
|      */ | 
|     public Short feed; | 
|   | 
|     /** | 
|      * 当前位置     1,近点,2远点,3A点,4B点 | 
|      */ | 
|     public Short loca; | 
|   | 
|     public SteLocaType locaType; | 
|   | 
|     /** | 
|      * 近点距离 | 
|      */ | 
|     public Double closer; | 
|   | 
|     /** | 
|      * 当前速度 | 
|      */ | 
|     public Double speed = 0.0D; | 
|   | 
|     /** | 
|      * 高低位 0,低位,1高位 | 
|      */ | 
|     public Short pos; | 
|   | 
|     /** | 
|      * 有货 0,没货,1有货 | 
|      */ | 
|     public Short load; | 
|   | 
|     /** | 
|      * 在轨道上 0不在,1在 | 
|      */ | 
|     public Short track; | 
|   | 
|     /** | 
|      * 任务类型 | 
|      */ | 
|     public Short taskType; | 
|   | 
|     /** | 
|      * 排 | 
|      */ | 
|     public Short row; | 
|   | 
|     /** | 
|      * 列 | 
|      */ | 
|     public Short bay; | 
|   | 
|     /** | 
|      * 层 | 
|      */ | 
|     public Short lev; | 
|   | 
|     /** | 
|      * 过账指令任务号 | 
|      */ | 
|     public Integer hisTaskNo; | 
|   | 
|     /** | 
|      * 过账指令状态 | 
|      * 0初始 1执行完成 2删除 | 
|      */ | 
|     public Short hisTaskStatus; | 
|   | 
|     public SteHisTaskStatusType hisTaskStatusType; | 
|   | 
|     /** | 
|      * 盘点数量 | 
|      */ | 
|     public Short checkQty; | 
|   | 
|     /** | 
|      * 就绪状态  0未就绪 1就绪 | 
|      */ | 
|     public Short ready; | 
|   | 
|     /** | 
|      * 打开充电桩号 | 
|      */ | 
|     public Short chargeNo; | 
|   | 
|     /** | 
|      * 心跳指令 1-2每秒切换一次 | 
|      */ | 
|     public Short heart; | 
|   | 
|     /** | 
|      * 堆垛机禁止运行 1运行,0禁止 | 
|      */ | 
|     public Short crnStopRun; | 
|   | 
|     /** | 
|      * 堆垛机禁止伸叉 1运行,0禁止 | 
|      */ | 
|     public Short crnStopFork; | 
|   | 
|     /** | 
|      * 堆垛机搬移允许 0不允许   1允许 | 
|      */ | 
|     public Short crnAllowRun; | 
|   | 
|     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){ | 
|         this.hisTaskStatus = hisTaskStatus; | 
|         this.hisTaskStatusType = SteHisTaskStatusType.get(hisTaskStatus); | 
|     } | 
|   | 
|     public void setHisTaskStatus(SteHisTaskStatusType type){ | 
|         this.hisTaskStatusType = type; | 
|         this.hisTaskStatus = SteHisTaskStatusType.get(type).id.shortValue(); | 
|     } | 
|   | 
|     /** | 
|      * 最近一次入出库类型 | 
|      *       I:入库 | 
|      *       O:出库 | 
|      */ | 
|     private String lastIo = "I"; | 
|   | 
|     private String pakMk = "-"; | 
|   | 
|     public BasSte toSqlModel(BasSte basSte){ | 
|         if (alarm!=null) { | 
|             basSte.setSteErr(alarm.longValue()); | 
|         } | 
|         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.pakMk.equals("N") | 
|                 && !isAlarm(); | 
|         if (!res) { | 
|             return res; | 
|         } else { | 
|             // 电量 | 
|             try { | 
|                 String chargeLine = SpringUtils.getBean(BasSteService.class).selectById(this.steNo).getChargeLine(); | 
|                 return charge > Float.parseFloat(chargeLine); | 
|             } catch (Exception e) { | 
|                 log.error("fail", e); | 
|                 return false; | 
|             } | 
|         } | 
|     } | 
|   | 
|     // 是否处于报警状态 | 
|     public Boolean isAlarm() { | 
|         return this.alarm > 1; | 
|     } | 
|   | 
| } |