From cfee9013159152736fcf74011abcf8ff1108ffbb Mon Sep 17 00:00:00 2001 From: lsh <lsh@163.com> Date: 星期日, 23 六月 2024 19:38:55 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 572 ++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 483 insertions(+), 89 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java index c81ce35..c8ff8f9 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.mapper.Wrapper; import com.core.common.Cools; import com.core.common.DateUtils; +import com.core.common.R; import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.mapper.*; @@ -33,10 +34,7 @@ import com.zy.core.model.command.LedCommand; import com.zy.core.model.command.RgvCommand; import com.zy.core.model.cpmmandParam.CrnCommandParam; -import com.zy.core.model.protocol.CrnProtocol; -import com.zy.core.model.protocol.JarProtocol; -import com.zy.core.model.protocol.RgvProtocol; -import com.zy.core.model.protocol.StaProtocol; +import com.zy.core.model.protocol.*; import com.zy.core.properties.SlaveProperties; import com.zy.core.thread.*; import lombok.extern.slf4j.Slf4j; @@ -4438,7 +4436,6 @@ break; } if (basJarMastService.selectJarMastOperation(jarSlave.getJarOtherId(),3)!=0){ -// log.error("{}鍙峰皬杞�",jarSlave.getJarOtherId()); break; } if (basJarMastService.getJarMastByJarIdCount(jarSlave.getId())>=14){ @@ -4585,7 +4582,28 @@ * JarWrkMastExecute浠诲姟鍒涘缓 //瀹屾垚 */ public synchronized void jarWrkMastExecuteGenerate(Integer sign) { + try{ + boolean[] signExecute = new boolean[]{false,false}; + switch (sign){ + case 1: + case 2: + case 3: + case 4: + signExecute = jarWrkMastExecuteGenerateJar(signExecute,sign);//纭寲缃愪换鍔� + case 5: + signExecute = jarWrkMastExecuteGenerateBurial(signExecute, sign);//鍐峰嵈妲藉彇杈撻�佺嚎 + default: + jarWrkMastExecuteGenerateSte(signExecute,sign);//灏忚溅绉诲姩 + } + } catch (Exception e){ + + } + + } + + public synchronized boolean[] jarWrkMastExecuteGenerateJar(boolean[] signExecute,Integer sign) { for (JarSlave jarSlave : slaveProperties.getJar()) { + int i = jarSlave.getId()>2? 1:0; try{ if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){ continue; @@ -4595,16 +4613,16 @@ JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId()); JarProtocol jarProtocol = jarThread.getJarProtocol(); if (jarProtocol == null) { - break; + continue; } if (jarProtocol.modeType != JarModeType.AUTO){ - break; + continue; } JarThread jarOtherThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getJarOtherId()); JarProtocol jarOtherProtocol = jarOtherThread.getJarProtocol(); if (jarOtherProtocol == null) { - break; + continue; } // if (jarOtherProtocol.modeType != JarModeType.AUTO){ // continue; @@ -4613,22 +4631,33 @@ BasJar basJar = basJarMapper.selectById(jarProtocol.getJarNo()); if (Cools.isEmpty(basJar)){ log.error("{}鍙风~鍖栫綈鏌ヨ璁惧妗f鏃犱俊鎭紒锛侊紒",jarProtocol.getJarNo()); - break; + continue; } - //闂ㄤ綔涓� 鏃� //鑷姩銆佺┖闂层�佸彸闂ㄥ叧闂�� Other宸﹂棬鍏抽棴 if (jarProtocol.isAutoing() && jarProtocol.jarErr==0 && jarProtocol.leftDoorOpen==0 && jarProtocol.leftDoorClose==0 && jarProtocol.rightDoorOpen==0 && jarProtocol.rightDoorClose==0){ switch (sign){ case 0: - case 2: + case 1: if (jarWrkMastExecuteGenerate1(jarSlave,sign)){ - break; + signExecute[i] = true; + break;//寮�闂ㄤ换鍔� 鐢熸垚鍏ョ~鍖栫綈浠诲姟 + } + case 2: + if (jarWrkMastExecuteGenerate2(jarSlave,sign)){ + signExecute[i] = true; + break;//鍏宠繘鏂欓棬 } case 3: - if (jarWrkMastExecuteGenerate2(jarSlave,sign)){ - break; + if (jarWrkMastExecuteGenerate3(jarSlave,sign)){ + signExecute[i] = true; + break;//寮�鍑烘枡闂� + } + case 4: + if (jarWrkMastExecuteGenerate4(jarSlave,sign)){ + signExecute[i] = true; + break;//鍑虹~鍖栫綈 ===銆� 鍏ュ喎鍗存Ы } } } @@ -4636,6 +4665,106 @@ log.error("{}鍙风~鍖栫綈JarWrkMastExecute浠诲姟鍒涘缓寮傚父,寮傚父鍘熷洜={}",jarSlave.getId(),e.getMessage()); } } + return signExecute; + } + + public synchronized boolean[] jarWrkMastExecuteGenerateBurial(boolean[] signExecute,Integer sign) { + for (JarSlave jarSlave : slaveProperties.getJar()) { + try{ + if (signExecute[jarSlave.getId()-5]){ + continue; + } + if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){ + signExecute[jarSlave.getId()-5] = true; + continue; + } + + // 鑾峰彇纭寲缃愪俊鎭� + JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId()); + JarProtocol jarProtocol = jarThread.getJarProtocol(); + if (jarProtocol == null) { + signExecute[jarSlave.getId()-5] = true; + continue; + } + if (jarProtocol.modeType != JarModeType.AUTO){ + signExecute[jarSlave.getId()-5] = true; + continue; + } + + BasJar basJar = basJarMapper.selectById(jarProtocol.getJarNo()); + if (Cools.isEmpty(basJar)){ + log.error("{}鍙风~鍖栫綈鏌ヨ璁惧妗f鏃犱俊鎭紒锛侊紒",jarProtocol.getJarNo()); + continue; + } + //闂ㄤ綔涓� 鏃� + //鑷姩銆佺┖闂层�佸彸闂ㄥ叧闂�� Other宸﹂棬鍏抽棴 + if (jarProtocol.isAutoing() && jarProtocol.jarErr==0){ + switch (sign){ + case 5: + if (jarWrkMastExecuteGenerate5(jarSlave,sign)){ + signExecute[jarSlave.getId()-5] = true; + break;//鍑虹~鍖栫綈 ===銆� 鍏ュ喎鍗存Ы + } + } + } + } catch (Exception e){ + log.error("{}鍙风~鍖栫綈JarWrkMastExecute浠诲姟鍒涘缓寮傚父,寮傚父鍘熷洜={}",jarSlave.getId(),e.getMessage()); + } + } + return signExecute; + } + + public synchronized boolean[] jarWrkMastExecuteGenerateSte(boolean[] signExecute,Integer sign) { + for (JarSlave jarSlave : slaveProperties.getJar()) { + try{ + if (signExecute[jarSlave.getId()-5]){ + continue; + } + if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){ + continue; + } + + // 鑾峰彇纭寲缃愪俊鎭� + JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId()); + JarProtocol jarProtocol = jarThread.getJarProtocol(); + if (jarProtocol == null) { + continue; + } + if (jarProtocol.modeType != JarModeType.AUTO){ + continue; + } + + JarThread jarOtherThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getJarOtherId()); + JarProtocol jarOtherProtocol = jarOtherThread.getJarProtocol(); + if (jarOtherProtocol == null) { + continue; + } +// if (jarOtherProtocol.modeType != JarModeType.AUTO){ +// continue; +// } + + BasJar basJar = basJarMapper.selectById(jarProtocol.getJarNo()); + if (Cools.isEmpty(basJar)){ + log.error("{}鍙风~鍖栫綈鏌ヨ璁惧妗f鏃犱俊鎭紒锛侊紒",jarProtocol.getJarNo()); + continue; + } + //闂ㄤ綔涓� 鏃� + //鑷姩銆佺┖闂层�佸彸闂ㄥ叧闂�� Other宸﹂棬鍏抽棴 + if (jarProtocol.isAutoing() && jarProtocol.jarErr==0 + && jarProtocol.leftDoorOpen==0 && jarProtocol.leftDoorClose==0 && jarProtocol.rightDoorOpen==0 && jarProtocol.rightDoorClose==0){ + switch (sign){ + case 5: + if (jarWrkMastExecuteGenerate5(jarSlave,sign)){ + signExecute[jarSlave.getId()-5] = true; + break;//鍑虹~鍖栫綈 ===銆� 鍏ュ喎鍗存Ы + } + } + } + } catch (Exception e){ + log.error("{}鍙风~鍖栫綈JarWrkMastExecute浠诲姟鍒涘缓寮傚父,寮傚父鍘熷洜={}",jarSlave.getId(),e.getMessage()); + } + } + return signExecute; } /** @@ -4652,6 +4781,12 @@ add(0); add(2); }}); + + //鍒ゆ柇灏忚溅鐘舵�� + if (!jarWrkMastExecuteGenerateSteStatus(jarSlave.getJarInSte().get(0).getSteNo(),1)){ + return false; + } + for (BasJarMast basJarMast : basJarMastList){ JarSlave.StaStn staStn = null; for (JarSlave.StaStn staStn1 : jarSlave.getJarInSta()){ @@ -4679,7 +4814,7 @@ } else { staProtocolRGV = staProtocolRGV.clone(); } - if (staProtocolRGV.isRGV1() && !staProtocolRGV.isRGV2() && !staProtocolRGV.isRGV3() && !staProtocolRGV.isRGV4() && !staProtocolRGV.isRGV5() && !staProtocolRGV.isRGV6()){ + if (staProtocolRGV.rgvBoolean(1)){ // 鑾峰彇纭寲缃愪俊鎭� JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId()); JarProtocol jarProtocol = jarThread.getJarProtocol(); @@ -4710,15 +4845,15 @@ if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0 && jarProtocol.leftDoorOpen==0 && jarProtocol.leftDoorClose==0 && jarProtocol.rightDoorOpen==0 && jarProtocol.rightDoorClose==0 && !jarOtherProtocol.isLeftDoor() && jarOtherProtocol.leftDoorOpen==0 && jarOtherProtocol.leftDoorClose==0){ - if (jarProtocol.statusType == JarStatusType.IDLE && !jarProtocol.isLeftDoor() && basJarMast.getStatus()==0){ + if (!jarProtocol.isLeftDoor() && basJarMast.getStatus()==0){ //鐢熸垚寮�闂ㄤ换鍔� OpenTheDoor - if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMast,new int[]{basJar.getEnterSteNo(),basJar.getEnterRgvId(),1,1})){ + if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMast,basJar.getJarNo(),new int[]{basJar.getEnterSteNo(),basJar.getEnterRgvId(),1,1})){ log.error("JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц寮傚父===銆嬪紓甯告暟鎹細BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(basJarMast)); } return true; - } else if (jarProtocol.statusType == JarStatusType.MOVING && jarProtocol.isLeftDoor()){ + } else if (jarProtocol.statusType == JarStatusType.WAITING3 && jarProtocol.isLeftDoor()){ //鐢熸垚鍏ョ~鍖栫綈浠诲姟 - if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMast,new int[]{basJar.getEnterSteNo(),basJar.getEnterRgvId(),5,1})){ + if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMast,basJar.getJarNo(),new int[]{basJar.getEnterSteNo(),basJar.getEnterRgvId(),5,1})){ log.error("JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц寮傚父===銆嬪紓甯告暟鎹細BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(basJarMast)); } return true; @@ -4741,8 +4876,8 @@ } /** - * JarWrkMastExecute浠诲姟鍒涘缓 //鏈畬鎴� - * 鍏冲叆鏂欓棬銆佸紑鍑烘枡闂ㄣ�佸叧鍑烘枡闂� + * JarWrkMastExecute浠诲姟鍒涘缓 //瀹屾垚 + * 鍏宠繘鏂欓棬 */ public synchronized boolean jarWrkMastExecuteGenerate2(JarSlave jarSlave,Integer sign) { try{ @@ -4750,10 +4885,24 @@ return false; } List<BasJarMast> basJarMastList = basJarMastService.getJarMastByJarIdAndStatusList(jarSlave.getId(), new ArrayList<Integer>() {{ - add(0); - add(2); + add(4); }}); - for (BasJarMast basJarMast : basJarMastList){ + if (basJarMastList.size() != 7){ + return false; + } + + BasJarMast basJarMastSign = basJarMastList.get(0); + if (Cools.isEmpty(basJarMastSign)){ + return false; + } + //鍒ゆ柇灏忚溅鐘舵�� + if (!jarWrkMastExecuteGenerateSteStatus(jarSlave.getJarInSte().get(0).getSteNo(),1)){ + return false; + } + + JarSlave.RgvStn rgvStn = jarSlave.getJarInRgv().get(0); + + if (jarWrkMastExecuteGenerateRgvStatus(rgvStn.getRgvNo(),rgvStn.getDevpPlcId(),1)){ // 鑾峰彇纭寲缃愪俊鎭� JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId()); JarProtocol jarProtocol = jarThread.getJarProtocol(); @@ -4764,42 +4913,29 @@ return false; } - JarThread jarOtherThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getJarOtherId()); - JarProtocol jarOtherProtocol = jarOtherThread.getJarProtocol(); - if (jarOtherProtocol == null) { - return false; - } -// if (jarOtherProtocol.modeType != JarModeType.AUTO){ -// continue; -// } - BasJar basJar = basJarMapper.selectById(jarProtocol.getJarNo()); if (Cools.isEmpty(basJar)){ log.error("{}鍙风~鍖栫綈鏌ヨ璁惧妗f鏃犱俊鎭紒锛侊紒",jarProtocol.getJarNo()); return false; } + if (basJar.getJarCount()!=7){ + log.error("{}鍙风~鍖栫綈鏌ヨ璁惧搴撳瓨鏁板紓甯革紒锛侊紒搴撳瓨寰呭叆鏁帮細{}",jarProtocol.getJarNo(),basJar.getJarCount()); + return false; + } //闂ㄤ綔涓� 鏃� - //鑷姩銆佺┖闂层�佸彸闂ㄥ叧闂�� Other宸﹂棬鍏抽棴 - if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0 - && jarProtocol.leftDoorOpen==0 && jarProtocol.leftDoorClose==0 && jarProtocol.rightDoorOpen==0 && jarProtocol.rightDoorClose==0 - && !jarOtherProtocol.isLeftDoor() && jarOtherProtocol.leftDoorOpen==0 && jarOtherProtocol.leftDoorClose==0){ - if (jarProtocol.statusType == JarStatusType.IDLE && !jarProtocol.isLeftDoor() && basJarMast.getStatus()==0){ - //鐢熸垚寮�闂ㄤ换鍔� OpenTheDoor - if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMast,new int[]{basJar.getEnterSteNo(),basJar.getEnterRgvId(),1,1})){ - log.error("JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц寮傚父===銆嬪紓甯告暟鎹細BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(basJarMast)); - } - return true; - } else if (jarProtocol.statusType == JarStatusType.MOVING && jarProtocol.isLeftDoor()){ - //鐢熸垚鍏ョ~鍖栫綈浠诲姟 - if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMast,new int[]{basJar.getEnterSteNo(),basJar.getEnterRgvId(),5,1})){ - log.error("JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц寮傚父===銆嬪紓甯告暟鎹細BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(basJarMast)); - } - return true; - } else if (jarProtocol.statusType == JarStatusType.IDLE && jarProtocol.isLeftDoor()){ - log.error("JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц寮傚父===銆嬬~鍖栫綈绌洪棽浣嗘槸闂ㄦ湭鍏�===銆嬪紓甯告暟鎹細BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(basJarMast)); + if (jarProtocol.isAutoing() && jarProtocol.statusType == JarStatusType.WAITING3 && jarProtocol.jarErr==0 + && !jarProtocol.isRightDoor() && jarProtocol.isLeftDoor() + && jarProtocol.leftDoorOpen==0 && jarProtocol.leftDoorClose==0 && jarProtocol.rightDoorOpen==0 && jarProtocol.rightDoorClose==0){ + //鍏宠繘鏂欓棬 + if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMastSign,basJar.getJarNo(),new int[]{basJar.getEnterSteNo(),basJar.getEnterRgvId(),2,1})){ + log.error("JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц寮傚父===銆嬪紓甯告暟鎹細BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(basJarMastSign)); } + return true; } + return false; + } else { + log.error("JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц寮傚父===銆婻GV涓嶆弧瓒虫潯浠讹紝绛夊緟===銆嬪紓甯告暟鎹細BasJar:"+ JSON.toJSONString(rgvStn)+";BasJarMast:"+JSON.toJSONString(basJarMastSign)); return false; } } catch (Exception e){ @@ -4809,15 +4945,295 @@ } /** - * JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц //鏈畬鎴� + * JarWrkMastExecute浠诲姟鍒涘缓 //瀹屾垚 + * 寮�鍑烘枡闂� */ - public synchronized boolean jarWrkMastExecuteGenerateExecute(BasJar basJar,BasJarMast basJarMast,int[] digit) { + public synchronized boolean jarWrkMastExecuteGenerate3(JarSlave jarSlave,Integer sign) { + try{ + if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){ + return false; + } + List<BasJarMast> basJarMastList = basJarMastService.getJarMastByJarIdAndStatusList(jarSlave.getId(), new ArrayList<Integer>() {{ + add(6); + }}); + if (basJarMastList.size() != 7){ + return false; + } + if (basJarMastService.selectJarMastOperation(jarSlave.getJarOtherId(),5)!=0){ + return false; + } + + BasJarMast basJarMastSign = basJarMastList.get(0); + if (Cools.isEmpty(basJarMastSign)){ + return false; + } + //鍒ゆ柇灏忚溅鐘舵�� + if (!jarWrkMastExecuteGenerateSteStatus(jarSlave.getJarInSte().get(0).getSteNo(),2)){ + return false; + } + + //鍒ゆ柇RGV鐘舵�� + JarSlave.RgvStn rgvStn = jarSlave.getJarOutRgv().get(0); + + if (jarWrkMastExecuteGenerateRgvStatus(rgvStn.getRgvNo(),rgvStn.getDevpPlcId(),1)){ + // 鑾峰彇纭寲缃愪俊鎭� + JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId()); + JarProtocol jarProtocol = jarThread.getJarProtocol(); + if (jarProtocol == null) { + return false; + } + if (jarProtocol.modeType != JarModeType.AUTO){ + return false; + } + + BasJar basJar = basJarMapper.selectById(jarProtocol.getJarNo()); + if (Cools.isEmpty(basJar)){ + log.error("{}鍙风~鍖栫綈鏌ヨ璁惧妗f鏃犱俊鎭紒锛侊紒",jarProtocol.getJarNo()); + return false; + } + + //闂ㄤ綔涓� 鏃� + if (jarProtocol.isAutoing() && jarProtocol.statusType == JarStatusType.WAITING2 && jarProtocol.jarErr==0 + && !jarProtocol.isLeftDoor() && !jarProtocol.isRightDoor() + && jarProtocol.leftDoorOpen==0 && jarProtocol.leftDoorClose==0 && jarProtocol.rightDoorOpen==0 && jarProtocol.rightDoorClose==0){ + //寮�鍑烘枡闂� + if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMastSign,basJar.getJarNo(),new int[]{basJar.getOutSteId(),basJar.getOutRgvId(),3,1})){ + log.error("JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц寮傚父===銆嬪紓甯告暟鎹細BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(basJarMastSign)); + } + return true; + } + return false; + } else { + log.error("JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц寮傚父===銆婻GV涓嶆弧瓒虫潯浠讹紝绛夊緟===銆嬪紓甯告暟鎹細BasJar:"+ JSON.toJSONString(rgvStn)+";BasJarMast:"+JSON.toJSONString(basJarMastSign)); + return false; + } + } catch (Exception e){ + log.error("{}鍙风~鍖栫綈JarWrkMastExecute浠诲姟鍒涘缓寮傚父,寮傚父鍘熷洜={}",jarSlave.getId(),e.getMessage()); + } + return false; + } + + /** + * JarWrkMastExecute浠诲姟鍒涘缓 //瀹屾垚 + * 鍑虹~鍖栫綈 ===銆� 鍏ュ喎鍗存Ы + */ + public synchronized boolean jarWrkMastExecuteGenerate4(JarSlave jarSlave,Integer sign) { + try{ + if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){ + return false; + } + List<BasJarMast> basJarMastList = basJarMastService.getJarMastByJarIdAndStatusList(jarSlave.getId(), new ArrayList<Integer>() {{ + add(8); + }}); + if (basJarMastList.isEmpty()){ + return false; + } + + if (basJarMastService.selectJarMastOperation(jarSlave.getJarOtherId(),4)!=0){ + return false; + } + + BasJarMast jarMastByJarIdMin = basJarMastService.getJarMastByJarIdMax(jarSlave.getId(),8,8); + if (Cools.isEmpty(jarMastByJarIdMin)){ + return false; + } + //鍒ゆ柇灏忚溅鐘舵�� + if (!jarWrkMastExecuteGenerateSteStatus(jarSlave.getJarOutSte().get(0).getSteNo(),2)){ + return false; + } + + //鍒ゆ柇RGV鐘舵�� + JarSlave.RgvStn rgvStn = jarSlave.getJarOutRgv().get(0); + + if (jarWrkMastExecuteGenerateRgvStatus(rgvStn.getRgvNo(),rgvStn.getDevpPlcId(),1)){ + // 鑾峰彇纭寲缃愪俊鎭� + JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId()); + JarProtocol jarProtocol = jarThread.getJarProtocol(); + if (jarProtocol == null) { + return false; + } + if (jarProtocol.modeType != JarModeType.AUTO){ + return false; + } + + BasJar basJar = basJarMapper.selectById(jarProtocol.getJarNo()); + if (Cools.isEmpty(basJar)){ + log.error("{}鍙风~鍖栫綈鏌ヨ璁惧妗f鏃犱俊鎭紒锛侊紒",jarProtocol.getJarNo()); + return false; + } + + //闂ㄤ綔涓� 鏃� + if (jarProtocol.isAutoing() && jarProtocol.statusType == JarStatusType.WAITING4 && jarProtocol.jarErr==0 + && !jarProtocol.isLeftDoor() && jarProtocol.isRightDoor() + && jarProtocol.leftDoorOpen==0 && jarProtocol.leftDoorClose==0 && jarProtocol.rightDoorOpen==0 && jarProtocol.rightDoorClose==0){ + //鍏宠繘鏂欓棬 + if (!jarWrkMastExecuteGenerateExecute(basJar,jarMastByJarIdMin,basJar.getJarNo(),new int[]{basJar.getOutSteId(),basJar.getOutRgvId(),3,1})){ + log.error("JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц寮傚父===銆嬪紓甯告暟鎹細BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(jarMastByJarIdMin)); + } + return true; + } + return false; + } else { + log.error("JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц寮傚父===銆婻GV涓嶆弧瓒虫潯浠讹紝绛夊緟===銆嬪紓甯告暟鎹細BasJar:"+ JSON.toJSONString(rgvStn)+";BasJarMast:"+JSON.toJSONString(jarMastByJarIdMin)); + return false; + } + } catch (Exception e){ + log.error("{}鍙风~鍖栫綈JarWrkMastExecute浠诲姟鍒涘缓寮傚父,寮傚父鍘熷洜={}",jarSlave.getId(),e.getMessage()); + } + return false; + } + + /** + * JarWrkMastExecute浠诲姟鍒涘缓 //瀹屾垚 + * 鍐峰嵈瀹屾垚涓婅緭閫佺嚎 + */ + public synchronized boolean jarWrkMastExecuteGenerate5(JarSlave jarSlave,Integer sign) { + try{ + if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){ + return false; + } + List<BasJarMast> basJarMastList = basJarMastService.getJarMastByJarIdAndStatusList(jarSlave.getId(), new ArrayList<Integer>() {{ + add(14);//鍐峰嵈瀹屾垚 + }}); + if (basJarMastList.isEmpty()){ + return false; + } + + if (basJarMastService.selectJarMastOperation(jarSlave.getJarOtherId(),7)!=0){ + return false; + } + + BasJarMast jarMastByJarIdMin = basJarMastService.getJarMastByJarIdMin(jarSlave.getId(),14,14); + if (Cools.isEmpty(jarMastByJarIdMin)){ + return false; + } + + //鍒ゆ柇灏忚溅鐘舵�� + if (!jarWrkMastExecuteGenerateSteStatus(jarSlave.getJarOutSte().get(0).getSteNo(),2)){ + return false; + } + + //鍒ゆ柇RGV鐘舵�� + JarSlave.RgvStn rgvStn = jarSlave.getJarOutRgv().get(0); + + if (jarWrkMastExecuteGenerateRgvStatus(rgvStn.getRgvNo(),rgvStn.getDevpPlcId(),1)){ + // 鑾峰彇纭寲缃愪俊鎭� + JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId()); + JarProtocol jarProtocol = jarThread.getJarProtocol(); + if (jarProtocol == null) { + return false; + } + if (jarProtocol.modeType != JarModeType.AUTO){ + return false; + } + + BasJar basJar = basJarMapper.selectById(jarProtocol.getJarNo()); + if (Cools.isEmpty(basJar)){ + log.error("{}鍙风~鍖栫綈鏌ヨ璁惧妗f鏃犱俊鎭紒锛侊紒",jarProtocol.getJarNo()); + return false; + } + + //闂ㄤ綔涓� 鏃� + if (jarProtocol.isAutoing() && jarProtocol.jarErr==0){ + //鍏宠繘鏂欓棬 + if (!jarWrkMastExecuteGenerateExecute(basJar,jarMastByJarIdMin,basJar.getBurial(),new int[]{basJar.getOutSteId(),basJar.getOutRgvId(),3,1})){ + log.error("JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц寮傚父===銆嬪紓甯告暟鎹細BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(jarMastByJarIdMin)); + } + return true; + } + return false; + } else { + log.error("JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц寮傚父===銆婻GV涓嶆弧瓒虫潯浠讹紝绛夊緟===銆嬪紓甯告暟鎹細BasJar:"+ JSON.toJSONString(rgvStn)+";BasJarMast:"+JSON.toJSONString(jarMastByJarIdMin)); + return false; + } + } catch (Exception e){ + log.error("{}鍙风~鍖栫綈JarWrkMastExecute浠诲姟鍒涘缓寮傚父,寮傚父鍘熷洜={}",jarSlave.getId(),e.getMessage()); + } + return false; + } + + /** + * 鍒ゆ柇STE灏忚溅鐘舵�� //瀹屾垚 + */ + public synchronized boolean jarWrkMastExecuteGenerateSteStatus(Integer steNo,Integer type) { + try{ + //鍒ゆ柇灏忚溅鐘舵�� + SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); + if (steThread == null) { + return false; + } + SteProtocol steProtocol = steThread.getSteProtocol(); + if (steProtocol == null) { + return false; + } + if (steProtocol.getMode() == 0) { + log.error(steNo + "鍙峰皬杞︾绾匡紝鏃犳硶鎿嶄綔"); + return false; + } + if (!steProtocol.getStatusType().equals(SteStatusType.IDLE)) { + log.error(steNo + "鍙峰皬杞︿笉鏄┖闂诧紝鏃犳硶鎿嶄綔"); + return false; + } + switch (type){ + case 1: + if (!steProtocol.getLocaType().equals(SteLocaType.POINT20)) { + log.error(steNo + "鍙峰皬杞︿笉鍦ˋ闈㈠钩绉昏溅锛屾棤娉曟搷浣�"); + return false; + } + break; + case 2: + if (!steProtocol.getLocaType().equals(SteLocaType.POINT23)) { + log.error(steNo + "鍙峰皬杞︿笉鍦˙闈㈠钩绉昏溅锛屾棤娉曟搷浣�"); + return false; + } + break; + case 3: + if (!steProtocol.getLocaType().equals(SteLocaType.POINT26) && !steProtocol.getLocaType().equals(SteLocaType.POINT25)) { + log.error(steNo + "鍙峰皬杞︿笉鍦ㄦ按妲紹绔紝鏃犳硶鎿嶄綔"); + return false; + } + break; + default: return false; + } + return true; + } catch (Exception e){ + log.error("{}鍙峰皬杞︾姸鎬佸垽鏂姸鎬佸紓甯�,寮傚父鍘熷洜={}",steNo,e.getMessage()); + } + return false; + } + /** + * 鍒ゆ柇RGV灏忚溅鐘舵�� //瀹屾垚 + */ + public synchronized boolean jarWrkMastExecuteGenerateRgvStatus(Integer rgvNo,Integer rgvPlcId,Integer type) { + try{ + //妫�娴婻GV鐘舵�� + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvPlcId); + StaProtocol staProtocolRGV = devpThread.getStation().get(rgvNo); + if (staProtocolRGV == null) { + return false; + } else { + staProtocolRGV = staProtocolRGV.clone(); + } + if (staProtocolRGV == null) { + return false; + } + return staProtocolRGV.rgvBoolean(type); + } catch (Exception e){ + log.error("{}鍙稲GV鐘舵�佸垽鏂姸鎬佸紓甯�,寮傚父鍘熷洜={}",rgvNo,e.getMessage()); + } + return false; + } + + /** + * JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц //瀹屾垚 + */ + public synchronized boolean jarWrkMastExecuteGenerateExecute(BasJar basJar,BasJarMast basJarMast,Integer id,int[] digit) { try { WrkMastExecute wrkMastExecute = new WrkMastExecute(basJarMast); - wrkMastExecute.setJarId(digit[3]==2? basJar.getBurial():basJar.getJarNo()); + wrkMastExecute.setJarId(id); wrkMastExecute.setSteId(digit[0]);//绌挎鏉縄D wrkMastExecute.setRgvId(digit[1]);//RGV ID - wrkMastExecute.setIoType(digit[2]);//浠诲姟绫诲瀷 0: 鏈煡 1: 寮�杩涙枡闂� 2: 鍏宠繘鏂欓棬 3: 寮�鍑烘枡闂� 4: 鍏冲嚭鏂欓棬 5: 鍏ョ~鍖栫綈 6: 鍏ュ喎鍗存Ы 7: 绌挎杞﹁繘鍐峰嵈妲� 8: 绌挎杞︾寮�鍐峰嵈妲� 9: 鍑哄喎鍗存Ы + wrkMastExecute.setIoType(digit[2]);//浠诲姟绫诲瀷 0: 鏈煡 1: 寮�杩涙枡闂� 2: 鍏宠繘鏂欓棬 3: 寮�鍑烘枡闂� 4: 鍏冲嚭鏂欓棬 5: 鍏ョ~鍖栫綈 6: 鍏ュ喎鍗存Ы 7: 绌挎杞﹁繘鍐峰嵈妲� 8: 绌挎杞︾寮�鍐峰嵈妲� 9: 鍑哄喎鍗存Ы 10锛欰=>B 11:B=>A wrkMastExecute.setType(digit[3]);//璁惧 0: 鏈煡 1: 纭寲缃� 2: 鍐峰嵈妲� 3: 纭寲缃�==>鍐峰嵈妲� return wrkMastExecuteService.insert(wrkMastExecute); } catch (Exception e) { @@ -4837,47 +5253,25 @@ } } + /* + * Rgv 鍔ㄤ綔 + * */ + public synchronized boolean jarRgvTake(Integer rgvNo,WrkMastExecute wrkMastExecute,Integer type){ + return false; + } /* - * Rgv 绉诲姩 + * Ste 鍔ㄤ綔 * */ - public synchronized boolean jarRgvTake2(Integer rgvId,BasJarMast basJarMast){ + public synchronized boolean jarSteTake(Integer steNo,WrkMastExecute wrkMastExecute,Integer type){ return false; } + /* - * 灏忚溅鍙栫┖鏉胯嚦宸ヤ綅浠诲姟 婊″彇 + * Jar 鍔ㄤ綔 * */ - public synchronized boolean jarRgvTake3(Integer rgvId,BasJarMast basJarMast){ + public synchronized boolean jarDoorTake(Integer jarNo,WrkMastExecute wrkMastExecute,Integer type){ return false; } - /* - * 灏忚溅鍙栫┖鏉胯嚦宸ヤ綅浠诲姟 婊″彇 - * */ - public synchronized boolean jarRgvTake4(Integer rgvId,BasJarMast basJarMast){ - return false; - } - /* - * 灏忚溅鍙栫┖鏉胯嚦宸ヤ綅浠诲姟 婊″彇 - * */ - public synchronized boolean jarRgvTake5(Integer rgvId,BasJarMast basJarMast){ - return false; - } - /* - * 灏忚溅鍙栫┖鏉胯嚦宸ヤ綅浠诲姟 婊″彇 - * */ - public synchronized boolean jarRgvTake6(Integer rgvId,BasJarMast basJarMast){ - return false; - } - /* - * 灏忚溅鍙栫┖鏉胯嚦宸ヤ綅浠诲姟 婊″彇 - * */ - public synchronized boolean jarRgvTake7(Integer rgvId,BasJarMast basJarMast){ - return false; - } - /* - * 绌挎鏉跨Щ鍔� - * */ - public synchronized boolean jarRgvTake8(Integer rgvId,BasJarMast basJarMast){ - return false; - } + } -- Gitblit v1.9.1