package com.zy.core.model.protocol; import com.zy.asrs.entity.BasDevp; import lombok.Data; import java.util.HashMap; import java.util.Map; /** * 输送线plc单个站点详细信息 * Created by vincent on 2020/8/6 */ @Data public class StaProtocol implements Cloneable { // 站点编号 private Integer siteId; // ---------------------------------------------------------------- // 工作号 private Integer workNo = 0; // ---------------------------------------------------------------- // 目标站 private Short staNo; private String barcode; // ---------------------------------------------------------------- // 自动 private boolean autoing; // 有物 private boolean loading; // 可入 private boolean inEnable; // 可出 private boolean outEnable; // 空板信号 private boolean emptyMk; // 满托盘 private boolean fullPlt; // 高 private boolean high; // 低 private boolean low; // 叠盘叠满 private boolean full; // 锁定标记 private boolean pakMk = true; // 入库暂存数 private Short inQty; // 隔壁站点(台车位置) private String nearbySta; //lfd入库印记 当stamp>=2时才入库 private Integer stamp = 0; private boolean err = false; // 外形检测 ------------------------------------------------------------------------ // 前超限 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; //顶升电机接触器故障 public Boolean isErr(){ if (frontErr || backErr || highErr || leftErr || rightErr || weightErr || barcodeErr){ return true; }else { return false; } } public BasDevp toSqlModel(){ BasDevp basDevp = new BasDevp(); basDevp.setDevNo(siteId); basDevp.setWrkNo(workNo.intValue()); basDevp.setBarcode(barcode); basDevp.setAutoing(autoing?"Y":"N"); basDevp.setLoading(loading?"Y":"N"); basDevp.setInEnable(inEnable?"Y":"N"); basDevp.setOutEnable(outEnable?"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); return basDevp; } @Override public StaProtocol clone() { try { return (StaProtocol) super.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return null; } // public Integer getNearbySta() { // if (getNearbySta == null) return 0; // // // key: 站点号 value: 基准物理位置 // Map posMap = new HashMap<>(); // posMap.put(1004, 6534); // posMap.put(1007, 33634); // posMap.put(1010, 75174); // posMap.put(1014, 102124); // posMap.put(1018, 138224); // posMap.put(1021, 178034); // posMap.put(1024, 219684); // posMap.put(1028, 246724); // posMap.put(1031, 288194); // posMap.put(1035, 315204); // int tolerance = 50; // 允许误差范围 // // for (Map.Entry entry : posMap.entrySet()) { // int site = entry.getKey(); // int basePos = entry.getValue(); // if (Math.abs(getNearbySta - basePos) <= tolerance) { // return site; // } // } // // return 0; // 没匹配到站点 // } }