|  |  | 
 |  |  | package com.zy.core.model.protocol; | 
 |  |  |  | 
 |  |  | import com.zy.asrs.entity.BasDevp; | 
 |  |  | import com.zy.asrs.entity.CommandInfo; | 
 |  |  | import lombok.Data; | 
 |  |  |  | 
 |  |  | import java.util.ArrayList; | 
 |  |  | import java.util.List; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * 输送线plc单个站点详细信息 | 
 |  |  |  * Created by vincent on 2020/8/6 | 
 |  |  |  */ | 
 |  |  | @Data | 
 |  |  | public class StaProtocol { | 
 |  |  | public class StaProtocol implements Cloneable { | 
 |  |  |  | 
 |  |  |     // 站点编号 | 
 |  |  |     private Integer siteId; | 
 |  |  | 
 |  |  |     // 空板信号 | 
 |  |  |     private boolean emptyMk; | 
 |  |  |  | 
 |  |  |     // 需求1 | 
 |  |  |     private boolean inreq1; | 
 |  |  |     // 满托盘 | 
 |  |  |     private boolean fullPlt; | 
 |  |  |  | 
 |  |  |     // 高 | 
 |  |  |     private boolean high = false; | 
 |  |  |  | 
 |  |  |     // 低 | 
 |  |  |     private boolean low; | 
 |  |  |  | 
 |  |  |     //agv | 
 |  |  |     private boolean car; | 
 |  |  |  | 
 |  |  |     // 锁定标记 | 
 |  |  |     private boolean pakMk; | 
 |  |  |     private boolean pakMk = true; | 
 |  |  |  | 
 |  |  |     // 入库暂存数 | 
 |  |  |     private Short inQty; | 
 |  |  |  | 
 |  |  |     // 隔壁站点(台车位置) | 
 |  |  |     private String nearbySta; | 
 |  |  |  | 
 |  |  |     //指令ID | 
 |  |  |     private Integer commandId; | 
 |  |  |  | 
 |  |  |     // 外形检测 ------------------------------------------------------------------------ | 
 |  |  |  | 
 |  |  |     // 前超限 | 
 |  |  |     private boolean frontErr = false; | 
 |  |  |  | 
 |  |  |     // 后超限 | 
 |  |  |     private boolean backErr = false; | 
 |  |  |  | 
 |  |  |     // 高超限 | 
 |  |  |     private boolean highErr = false; | 
 |  |  |  | 
 |  |  |     // 左超限 | 
 |  |  |     private boolean leftErr = false; | 
 |  |  |  | 
 |  |  |     // 右超限 | 
 |  |  |     private boolean rightErr = false; | 
 |  |  |  | 
 |  |  |     // 超重 | 
 |  |  |     private boolean weightErr = false; | 
 |  |  |  | 
 |  |  |     // 扫码失败 | 
 |  |  |     private boolean barcodeErr = false; | 
 |  |  |  | 
 |  |  |     //故障----------------------------------------------------------------------- | 
 |  |  |     private Boolean breakerErr = false; //断路器故障 | 
 |  |  |  | 
 |  |  |     private Boolean infraredErr = false; //光电异常 | 
 |  |  |  | 
 |  |  |     private Boolean outTimeErr = false; //运行超时 | 
 |  |  |  | 
 |  |  |     private Boolean seizeSeatErr = false; //占位超时 | 
 |  |  |  | 
 |  |  |     private Boolean wrkYgoodsN = false;//有任务无货故障 | 
 |  |  |  | 
 |  |  |     private Boolean inverterErr = false; //变频器故障 | 
 |  |  |  | 
 |  |  |     private Boolean contactErr = false; //电机接触器故障 | 
 |  |  |  | 
 |  |  |     private Boolean upcontactErr = false; //顶升电机接触器故障 | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     private Short agvStartPick; //允许取货 | 
 |  |  |     private Short agvStartPlace; //允许放货 | 
 |  |  |     private Short agvTypeSign; //允许放货 | 
 |  |  |  | 
 |  |  |     private Short agvTargetPick; //取货完成 | 
 |  |  |     private Short agvTargetPlace; //放货完成 | 
 |  |  |     private Short agvTypeSignEnd; //放货完成 | 
 |  |  |  | 
 |  |  |     private List<Integer> alarm; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     public List<Integer> getAlarm(){ | 
 |  |  |         List<Integer> alarm = new ArrayList<>(); | 
 |  |  |         if (breakerErr){ | 
 |  |  |             alarm.add(1); | 
 |  |  |         } | 
 |  |  |         if (infraredErr){ | 
 |  |  |             alarm.add(2); | 
 |  |  |         } | 
 |  |  |         if (outTimeErr){ | 
 |  |  |             alarm.add(3); | 
 |  |  |         } | 
 |  |  |         if (seizeSeatErr){ | 
 |  |  |             alarm.add(4); | 
 |  |  |         } | 
 |  |  |         if (wrkYgoodsN){ | 
 |  |  |             alarm.add(5); | 
 |  |  |         } | 
 |  |  |         if (inverterErr){ | 
 |  |  |             alarm.add(6); | 
 |  |  |         } | 
 |  |  |         if (contactErr){ | 
 |  |  |             alarm.add(7); | 
 |  |  |         } | 
 |  |  |         if (upcontactErr){ | 
 |  |  |             alarm.add(8); | 
 |  |  |         } | 
 |  |  |         return alarm; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     public BasDevp toSqlModel(){ | 
 |  |  |         BasDevp basDevp = new BasDevp(); | 
 |  |  |         basDevp.setDevNo(siteId); | 
 |  |  |         basDevp.setWrkNo(workNo.intValue()); | 
 |  |  |         // 站点 todo:luxiaotao | 
 |  |  |         basDevp.setAutoing(autoing?"Y":"N"); | 
 |  |  |         basDevp.setLoading(loading?"Y":"N"); | 
 |  |  |         if (frontErr){ | 
 |  |  |             basDevp.setStaErr(11); | 
 |  |  |         }else if (backErr){ | 
 |  |  |             basDevp.setStaErr(12); | 
 |  |  |         }else if (highErr){ | 
 |  |  |             basDevp.setStaErr(13); | 
 |  |  |         }else if (leftErr){ | 
 |  |  |             basDevp.setStaErr(14); | 
 |  |  |         }else if (rightErr){ | 
 |  |  |             basDevp.setStaErr(15); | 
 |  |  |         }else if (weightErr){ | 
 |  |  |             basDevp.setStaErr(16); | 
 |  |  |         }else if (barcodeErr){ | 
 |  |  |             basDevp.setStaErr(17); | 
 |  |  |         }else if (breakerErr){ | 
 |  |  |             basDevp.setStaErr(18); | 
 |  |  |         }else if (infraredErr){ | 
 |  |  |             basDevp.setStaErr(19); | 
 |  |  |         }else if (outTimeErr){ | 
 |  |  |             basDevp.setStaErr(110); | 
 |  |  |         }else if (seizeSeatErr){ | 
 |  |  |             basDevp.setStaErr(111); | 
 |  |  |         }else if (wrkYgoodsN){ | 
 |  |  |             basDevp.setStaErr(112); | 
 |  |  |         }else if (inverterErr){ | 
 |  |  |             basDevp.setStaErr(113); | 
 |  |  |         }else if (contactErr){ | 
 |  |  |             basDevp.setStaErr(114); | 
 |  |  |         }else if (upcontactErr){ | 
 |  |  |             basDevp.setStaErr(115); | 
 |  |  |         }else { | 
 |  |  |             if (!loading){ | 
 |  |  |                 basDevp.setStaErr(0); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         basDevp.setInEnable(inEnable?"Y":"N"); | 
 |  |  |         basDevp.setOutEnable(outEnable?"Y":"N"); | 
 |  |  |         basDevp.setInreq1(inreq1?"Y":"N"); | 
 |  |  |         basDevp.setLocType1((short) 0);  // 高低类型{0:未知,1:低库位,2:高库位} | 
 |  |  |         basDevp.setLocType2((short) 0);  // 宽窄类型{0:未知,1:窄库位,2:宽库位} | 
 |  |  |         basDevp.setLocType3((short) 0);  // 轻重类型{0:未知,1:轻库位,2:重库位} | 
 |  |  |         basDevp.setLocType1(high != low && low ? (short) 1 : (short) 2); | 
 |  |  |         basDevp.setInQty(inQty !=null ?(int)inQty : 0); | 
 |  |  | //        basDevp.setAgvStartPick(agvStartPick.intValue()); | 
 |  |  | //        basDevp.setAgvStartPlace(agvStartPlace.intValue()); | 
 |  |  |         return basDevp; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public StaProtocol clone() { | 
 |  |  |         try { | 
 |  |  |             return (StaProtocol) super.clone(); | 
 |  |  |         } catch (CloneNotSupportedException e) { | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } | 
 |  |  |         return null; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } |