|  |  |  | 
|---|
|  |  |  | 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 { | 
|---|
|  |  |  | public class StaProtocol implements Cloneable { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 站点编号 | 
|---|
|  |  |  | private Integer siteId; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // ---------------------------------------------------------------- | 
|---|
|  |  |  | // 工作号 | 
|---|
|  |  |  | private Integer workNo = 0; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // ---------------------------------------------------------------- | 
|---|
|  |  |  | // 目标站 | 
|---|
|  |  |  | private Short staNo; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private String barcode; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // ---------------------------------------------------------------- | 
|---|
|  |  |  | // 自动 | 
|---|
|  |  |  | private boolean autoing; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | // 空板信号 | 
|---|
|  |  |  | private boolean emptyMk; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 需求1 | 
|---|
|  |  |  | private boolean inreq1; | 
|---|
|  |  |  | // 满托盘 | 
|---|
|  |  |  | private boolean fullPlt; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 高 | 
|---|
|  |  |  | private boolean high; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 低 | 
|---|
|  |  |  | private boolean low; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 叠盘叠满 | 
|---|
|  |  |  | private boolean full; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 锁定标记 | 
|---|
|  |  |  | private boolean pakMk; | 
|---|
|  |  |  | private boolean pakMk = true; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 工作号 | 
|---|
|  |  |  | private Integer workNO; | 
|---|
|  |  |  | // 入库暂存数 | 
|---|
|  |  |  | private Short inQty; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 目标站 | 
|---|
|  |  |  | private Integer staNo; | 
|---|
|  |  |  | // 隔壁站点(台车位置) | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | basDevp.setBarcode(this.getBarcode()); | 
|---|
|  |  |  | 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<Integer, Integer> 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<Integer, Integer> entry : posMap.entrySet()) { | 
|---|
|  |  |  | //            int site = entry.getKey(); | 
|---|
|  |  |  | //            int basePos = entry.getValue(); | 
|---|
|  |  |  | //            if (Math.abs(getNearbySta - basePos) <= tolerance) { | 
|---|
|  |  |  | //                return site; | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //        return 0; // 没匹配到站点 | 
|---|
|  |  |  | //    } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|