From 443e116f5f1684d6811948a2314f33d968799c61 Mon Sep 17 00:00:00 2001 From: lsh <lsh@163.com> Date: 星期四, 05 六月 2025 20:49:37 +0800 Subject: [PATCH] * --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 78 ++++++++++++++++++++++++-------------- 1 files changed, 49 insertions(+), 29 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 cc9b0da..06ab983 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -453,15 +453,13 @@ // } // } public synchronized void taskDown(List<List<List<WrkMast>>> wrkMastListAll) { + + List<Integer> rgvNoM = new ArrayList<>(); + List<Integer> rgvNoR = new ArrayList<>(); + Integer wrkMastRunCount = 0; + Long devperimeter = 0L; for (List<List<WrkMast>> wrkMastLists : wrkMastListAll) { - int wrkMastRunCount = 0; - int wrkMastCount = 0; long rgvId = 0; - for (List<WrkMast> wrkMastList : wrkMastLists) { - for (WrkMast wrkMast : wrkMastList) { - wrkMastCount++; - } - } runRgv: for (List<WrkMast> wrkMastList : wrkMastLists) { for (WrkMast wrkMast : wrkMastList) { @@ -493,34 +491,23 @@ BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("dev_no", wrkMast.getSourceStaNo())); if (basDevpPosition.getPlcPosition()>rgvProtocol.getRgvPos()){ if (basDevpPosition.getPlcPosition()-rgvProtocol.getRgvPos()>taskRunPerimeter){ - if (wrkMastRunCount<wrkMastCount){ - if (rgvProtocol.getStatusType() == RgvStatusType.IDLE) { - if (!MessageQueue.offer(SlaveType.Rgv, rgvProtocol.getRgvNo(), new Task(4,null))) { - log.error("RGV婕父鍚姩鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, "婕父鎸囦护"); - break runRgv; - } - wrkMastRunCount++; - } - continue ; + if (!rgvNoM.contains(rgvProtocol.getRgvNo())){ + rgvNoM.add(rgvProtocol.getRgvNo()); + wrkMastRunCount++; + break; } - break runRgv; + continue ; } } else { if (rgvProtocol.getRgvPos()+ perimeter -basDevpPosition.getPlcPosition()>taskRunPerimeter){ - if (wrkMastRunCount<wrkMastCount){ - if (rgvProtocol.getStatusType() == RgvStatusType.IDLE) { - if (!MessageQueue.offer(SlaveType.Rgv, rgvProtocol.getRgvNo(), new Task(4,null))) { - log.error("RGV婕父鍚姩鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, "婕父鎸囦护"); - break runRgv; - } - wrkMastRunCount++; - } - continue ; + if (!rgvNoM.contains(rgvProtocol.getRgvNo())){ + rgvNoM.add(rgvProtocol.getRgvNo()); + wrkMastRunCount++; + break; } - break runRgv; + continue ; } } - if (rgvProtocol.getStatusType() == RgvStatusType.ROAM) { double finalVelocity = 0.0; // 鏈�缁堥�熷害 (m/s) @@ -539,6 +526,11 @@ } } + if (!rgvNoR.contains(rgvProtocol.getRgvNo())){ + rgvNoR.add(rgvProtocol.getRgvNo()); + } else { + continue ; + } RgvCommand rgvCommand = new RgvCommand(); rgvCommand.setRgvNo(rgvProtocol.getRgvNo()); @@ -563,7 +555,6 @@ wrkMast.setCrnStrTime(now); try { wrkMastService.updateById(wrkMast); - wrkMastCount--; break; } catch (Exception e) { log.error("鏇存柊灏忚溅浠诲姟澶辫触,浠诲姟鍙凤細" + wrkMast.getWrkNo()); @@ -574,6 +565,35 @@ } } } + try{ + for (Integer rgvNo : rgvNoM){ + if (wrkMastRunCount==0){ + break; + } + if (rgvNoR.contains(rgvNo)){ + continue; + } + RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNo); + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (rgvProtocol == null) { + continue; + } + + if (rgvProtocol != null + && rgvProtocol.modeType == RgvModeType.AUTO + && rgvProtocol.getStatusType() == RgvStatusType.IDLE + && rgvProtocol.getTaskNo1() == 0 + && rgvProtocol.getAlarm() == 0) { + if (!MessageQueue.offer(SlaveType.Rgv, rgvProtocol.getRgvNo(), new Task(4,devperimeter))) { + log.error("RGV婕父鍚姩鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvNo, "婕父鎸囦护"); + break; + } + wrkMastRunCount--; + } + } + } catch (Exception e){ + + } } //浠诲姟瀹屾垚 -- Gitblit v1.9.1