|  |  |  | 
|---|
|  |  |  | import com.zy.asrs.entity.BasDevp; | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public BasDevp toSqlModel(){ | 
|---|
|  |  |  | // 入库暂存数 | 
|---|
|  |  |  | private Short inQty; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 隔壁站点(台车位置) | 
|---|
|  |  |  | private String nearbySta; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //指令ID | 
|---|
|  |  |  | private Integer commandId; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 物料号列表 | 
|---|
|  |  |  | private List<String> matIdList; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 高度 | 
|---|
|  |  |  | private String height; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 条码,侧面出库给输送线 | 
|---|
|  |  |  | private String barcode; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 高度,侧面码盘的高度 | 
|---|
|  |  |  | private short mpHigh; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 1:码盘。  2不码盘 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private short mp; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 种类1 永远不叠盘;2叠2层;3叠三层;4叠四层 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private short lx; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 码盘层数 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private short lev; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 外形检测 ------------------------------------------------------------------------ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 前超限 | 
|---|
|  |  |  | 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 Boolean pushTheEnvelopeErr = false; // 提升上极限 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private Boolean raiseTheLowerLimitErr = false; // 提升下极限 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private Boolean leftProtectionTriggersErr = false; // 左保护触发 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private Boolean rightProtectionTriggersErr = false; // 右保护触发 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private Boolean gratingBlockingErr = false; // 光栅阻挡 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private Short agvStartPick; //允许取货 | 
|---|
|  |  |  | private Short agvStartPlace; //允许放货 | 
|---|
|  |  |  | private Short agvTypeSign; //允许放货 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private Short agvTargetPick; //取货完成 | 
|---|
|  |  |  | private Short agvTargetPlace; //放货完成 | 
|---|
|  |  |  | private Short agvTypeSignEnd; //放货完成 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private List<Integer> alarm; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 获取故障描述 | 
|---|
|  |  |  | public String getFaultDescription(){ | 
|---|
|  |  |  | String faultDescription = ""; | 
|---|
|  |  |  | if (breakerErr) { | 
|---|
|  |  |  | faultDescription = "电路保护器断开"; | 
|---|
|  |  |  | } else if(infraredErr) { | 
|---|
|  |  |  | faultDescription = "光电异常(检查托盘是否卡住)"; | 
|---|
|  |  |  | }else if(outTimeErr) { | 
|---|
|  |  |  | faultDescription = "运行超时(检查托盘是否卡住)"; | 
|---|
|  |  |  | }else if(seizeSeatErr) { | 
|---|
|  |  |  | faultDescription = "占位超时(检查AGV是否长时间阻挡光电且无交互信号)"; | 
|---|
|  |  |  | }else if(wrkYgoodsN) { | 
|---|
|  |  |  | faultDescription = "有任务无货故障(AGV取货离开后长时间没有收到AGV离开信号)"; | 
|---|
|  |  |  | }else if(inverterErr) { | 
|---|
|  |  |  | faultDescription = "变频器故障:"; | 
|---|
|  |  |  | }else if(contactErr) { | 
|---|
|  |  |  | faultDescription = "接触器故障"; | 
|---|
|  |  |  | }else if(upcontactErr) { | 
|---|
|  |  |  | faultDescription = "顶升电机接触器故障"; | 
|---|
|  |  |  | } else if(pushTheEnvelopeErr) { | 
|---|
|  |  |  | faultDescription = "提升上极限"; | 
|---|
|  |  |  | } else if(raiseTheLowerLimitErr) { | 
|---|
|  |  |  | faultDescription = "提升下极限"; | 
|---|
|  |  |  | } else if(leftProtectionTriggersErr) { | 
|---|
|  |  |  | faultDescription = "保护光电触发(检查AGV放货位置)"; | 
|---|
|  |  |  | } else if(rightProtectionTriggersErr) { | 
|---|
|  |  |  | faultDescription = "右保护触发"; | 
|---|
|  |  |  | } else if(gratingBlockingErr) { | 
|---|
|  |  |  | faultDescription = "光栅阻挡"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return faultDescription; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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"); | 
|---|
|  |  |  | basDevp.setInEnable(inEnable?"Y":"N"); | 
|---|
|  |  |  | basDevp.setOutEnable(outEnable?"Y":"N"); | 
|---|
|  |  |  | basDevp.setInreq1(inreq1?"Y":"N"); | 
|---|
|  |  |  | 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.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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|