From 7a7c50a1ecf82fe070cf4dd86b73ba7386b33da6 Mon Sep 17 00:00:00 2001 From: lsh <lsh@163.com> Date: 星期四, 24 四月 2025 17:28:28 +0800 Subject: [PATCH] * --- src/main/java/com/zy/asrs/utils/RouteUtils.java | 25 ++++++ src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 196 +++++++++++++++++++++++-------------------------- src/main/java/com/zy/core/model/protocol/RgvProtocol.java | 4 + 3 files changed, 120 insertions(+), 105 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 441f1e3..41f29ec 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -1183,74 +1183,7 @@ return false; } - public boolean deviceRgvDetection(Integer startSta,RgvSlave rgvSlave,Integer endSta){ - BasDevpPosition basDevpPositionStartSta = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", startSta)); - if (basDevpPositionStartSta == null){ - return false; - } - - BasDevpPosition basDevpPositionEndSta = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", endSta)); - if (basDevpPositionEndSta == null){ - return false; - } - - DevpThread devpThreadEnd = (DevpThread) SlaveConnection.get(SlaveType.Devp, basDevpPositionEndSta.getPlcId()); - StaProtocol staProtocolEnd = devpThreadEnd.getStation().get(endSta); - if (staProtocolEnd == null){ - return false; - } - // 鍒ゆ柇鏄惁婊¤冻鏀捐揣鏉′欢 - if (!staProtocolEnd.isAutoing() || staProtocolEnd.isLoading()) { - return false; - } - - if (!rgvDetection(rgvSlave)){ - return false; - } - - // a褰撳墠 b other - // b鍙敤 - // b鏃犱换鍔� - // 鍗婅竟鍖哄煙鍐呭叏浠诲姟 - // 鍗婅竟鍖哄煙鍐呭彇璐т换鍔� - // 鍗婅竟鍖哄煙鍐呮斁璐т换鍔� - //鍒囨崲B - // 鍗婅竟鍖哄煙鍐呭叏浠诲姟 - // 鍗婅竟鍖哄煙鍐呭彇璐т换鍔� - // 鍗婅竟鍖哄煙鍐呮斁璐т换鍔� - //b 鏈変换鍔� - // 鍙敤鍖哄煙浠诲姟 - // 鍙敤鍖哄煙浠诲姟鍐呭彇璐т换鍔� - // - // b绂佺敤 - // 鍏ㄥ尯鍩熶换鍔� 灏辫繎鍙栬揣 - - - return false; - } - public synchronized void taskStart() { - for (RgvSlave rgvSlave : slaveProperties.getRgv()) { - try{ - if (rgvDetection(rgvSlave)){ - for (RgvSlave.RgvStn inSta : rgvSlave.getRgvInSta()){ - TaskWrk taskWrk = deviceDetection(inSta); - if (taskWrk!=null){ - if (deviceRgvDetection(inSta.getStaNo(),rgvSlave,taskWrk.getTargetPointConvert())){ - RgvProtocol rgvStatus = RgvStatusCache.getRgvStatus(rgvSlave.getId()); - - - } - } - } - } - } catch (Exception e){ - log.error("浠诲姟鐢熸垚澶辫触===銆嬪紓甯镐俊鎭細{}",e.getMessage()); - } - } - } - - public synchronized void DevpTaskNoRun() { for (RgvSlave rgvSlave : slaveProperties.getRgv()) { try{ if (rgvDetection(rgvSlave)){ @@ -1272,69 +1205,124 @@ } } + boolean sign = false; + if (rgvOtherStatusEnable(rgvSlave)){ //鍒嗘垚涓婁笅涓ら儴鍒嗕换鍔� - List<Integer>[] avoidRange = RouteUtils.avoidRange(staList, basDevpPositions); + List<Integer>[] avoidRange = RouteUtils.gradeRange(staList, basDevpPositions); List<Integer> rangeListSou = avoidRange[itSmall ? 0 : 1]; List<Integer> rangeListSouOther = avoidRange[itSmall ? 1 : 0]; //灏辫繎鎺掑簭 RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(rgvSlave.getId()); List<Integer> rangeList = RouteUtils.SortNearby(rangeListSou, rgvProtocol.RgvPos, basDevpPositions); List<Integer> rangeListOther = RouteUtils.SortNearby(rangeListSouOther, rgvProtocol.RgvPos, basDevpPositions); - if (taskNoNow.equals("鏃�")){ //b 鏃犱换鍔� - //鎵�灞為儴鍒嗗氨杩涘彇璐� - // 鍗婅竟鍖哄煙鍐呭叏浠诲姟 - boolean sign = false; + //鎵�灞為儴鍒嗗氨杩涘彇璐� + + //绛涢�夎寖鍥村唴浠诲姟 + //灏辫繎鎺掑簭 + RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(rgvSlave.getOtherId()); + //绛涢�夊湪鑼冨洿浠诲姟 + List<Integer> belongToRange = RouteUtils.belongToRange(rangeList, rgvProtocolOther.getRgvPosDestination(), basDevpPositions); + for (Integer staNoNow : belongToRange){ + for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()){ + if (rgvStn.getStaNo().equals(staNoNow)){ + TaskWrk taskWrk = deviceDetection(rgvStn); + if (taskWrk!=null){ + if (RouteUtils.CheckIfItIsWithinTheRange(rangeList,taskWrk.getTargetPointConvert(),basDevpPositions)){ + sign = taskGenerate(rgvSlave,rgvStn,0); + } + } + break; + } + } + if (sign){ + break; + } + } + if (!sign){ + // 绛涢�夎寖鍥村唴鍙栬揣浠诲姟 + for (Integer staNoNow : belongToRange){ + for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()){ + if (rgvStn.getStaNo().equals(staNoNow)){ + sign = taskGenerate(rgvSlave,rgvStn,0); + break; + } + } + if (sign){ + break; + } + } + } + + if (!sign){ for (Integer staNoNow : rangeList){ for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()){ if (rgvStn.getStaNo().equals(staNoNow)){ TaskWrk taskWrk = deviceDetection(rgvStn); if (taskWrk!=null){ + if (RouteUtils.CheckIfItIsWithinTheRange(rangeList,taskWrk.getTargetPointConvert(),basDevpPositions)){ + sign = taskGenerate(rgvSlave,rgvStn,0); + } } - } - } - } - if (!sign){ - // 鍗婅竟鍖哄煙鍐呭彇璐т换鍔� - for (Integer staNoNow : rangeList){ - for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()){ - if (rgvStn.getStaNo().equals(staNoNow)){ - sign = taskGenerate(rgvSlave,rgvStn,0); - break; - } - } - if (sign){ break; } } + if (sign){ + break; + } } - if (!sign){ - // 鍗婅竟鍖哄煙鍐呮斁璐т换鍔� - for (Integer staNoNow : rangeListOther){ - for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()){ - if (rgvStn.getStaNo().equals(staNoNow)){ - - break; - } - } - if (sign){ + } + if (!sign){ + // 鍗婅竟鍖哄煙鍐呭彇璐т换鍔� + for (Integer staNoNow : rangeList){ + for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()){ + if (rgvStn.getStaNo().equals(staNoNow)){ + sign = taskGenerate(rgvSlave,rgvStn,0); break; } } + if (sign){ + break; + } } - //鍒囨崲B - continue; - } else {//b 鏈変换鍔� - - // 鍙敤鍖哄煙浠诲姟 - // 鍙敤鍖哄煙浠诲姟鍐呭彇璐т换鍔� - //鍒囨崲B - - continue; + } + if (!sign){ + // 鍗婅竟鍖哄煙鍐呮斁璐т换鍔� + for (Integer staNoNow : rangeListOther){ + for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()){ + if (rgvStn.getStaNo().equals(staNoNow)){ + TaskWrk taskWrk = deviceDetection(rgvStn); + if (taskWrk!=null){ + if (RouteUtils.CheckIfItIsWithinTheRange(rangeList,taskWrk.getTargetPointConvert(),basDevpPositions)){ + sign = taskGenerate(rgvSlave,rgvStn,0); + } + } + break; + } + } + if (sign){ + break; + } + } } } else { //鍙敤鍖哄煙灏辫繎鍙栬揣 + //灏辫繎鎺掑簭 + RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(rgvSlave.getId()); + List<Integer> rangeList = RouteUtils.SortNearby(staList, rgvProtocol.RgvPos, basDevpPositions); + // 鍗婅竟鍖哄煙鍐呭彇璐т换鍔� + for (Integer staNoNow : rangeList){ + for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()){ + if (rgvStn.getStaNo().equals(staNoNow)){ + sign = taskGenerate(rgvSlave,rgvStn,0); + break; + } + } + if (sign){ + break; + } + } } } } catch (Exception e){ diff --git a/src/main/java/com/zy/asrs/utils/RouteUtils.java b/src/main/java/com/zy/asrs/utils/RouteUtils.java index 36ac1a3..899c8d1 100644 --- a/src/main/java/com/zy/asrs/utils/RouteUtils.java +++ b/src/main/java/com/zy/asrs/utils/RouteUtils.java @@ -16,7 +16,7 @@ */ public class RouteUtils { //鎺掑簭 鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 0:宸� 灏� 1:鍙� 澶� - public static List<Integer>[] avoidRange(List<Integer> staNoList,List<BasDevpPosition> basDevpPositions) { + public static List<Integer>[] gradeRange(List<Integer> staNoList,List<BasDevpPosition> basDevpPositions) { List<Integer>[] avoidRangeArray = new ArrayList[2]; @@ -25,6 +25,16 @@ return avoidRangeArray; + } + + + + + //鑾峰彇鍦ㄨ寖鍥寸殑绔欑偣 + public static List<Integer> belongToRange(List<Integer> staNoList,Long position,List<BasDevpPosition> basDevpPositions){ + List<Integer> siteList = new ArrayList<>(); + + return siteList; } //鎻愬彇绔欑偣闆嗗悎 @@ -44,4 +54,17 @@ return siteList; } + + + + //妫�娴嬫槸鍚﹀湪鑼冨洿 + public static boolean CheckIfItIsWithinTheRange(List<Integer> staNoList,Integer staNo,List<BasDevpPosition> basDevpPositions){ + List<Integer> siteList = new ArrayList<>(); + if (staNoList.isEmpty()){ + return true; + } + + return false; + } + } diff --git a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java index 081e59b..10b4588 100644 --- a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java @@ -49,6 +49,10 @@ * RGV褰撳墠浣嶇疆 */ public Long RgvPos = 0L; + + /** + * RGV鐩殑浣嶇疆 + */ public Long RgvPosDestination = 0L; /** -- Gitblit v1.9.1