From 6dea42fd8f806807982866c1821a66da725eabca Mon Sep 17 00:00:00 2001 From: zhangc <zc@123> Date: 星期日, 20 四月 2025 14:48:59 +0800 Subject: [PATCH] 999 --- src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 102 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java b/src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java index 036411d..885621d 100644 --- a/src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java +++ b/src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java @@ -278,20 +278,11 @@ sameShuttles.put(-1, shuttleThread); continue; } - //TODO - List<NavigateNode> currentShuttlePath; - if (Utils.getLev(currentLocNo) != Utils.getLev(locNo)) { - //褰撳墠绌挎杞︾嚎绋嬪埌鐩爣鍦扮偣璺濈 - currentShuttlePath = navigateUtils.calc(currentLocNo, sourceLocNo, NavigationMapType.NORMAL.id, Utils.getShuttlePoints(shuttleNo, Utils.getLev(currentLocNo)), null);//鎼滅储绌洪棽绌挎杞︼紝浣跨敤姝e父閫氶亾鍦板浘 - if (currentShuttlePath == null) { - continue; - } - } else { - //褰撳墠绌挎杞︾嚎绋嬪埌鐩爣鍦扮偣璺濈 - currentShuttlePath = navigateUtils.calc(currentLocNo, locNo, NavigationMapType.NORMAL.id, Utils.getShuttlePoints(shuttleNo, Utils.getLev(currentLocNo)), null);//鎼滅储绌洪棽绌挎杞︼紝浣跨敤姝e父閫氶亾鍦板浘 - if (currentShuttlePath == null) { - continue; - } + + //褰撳墠绌挎杞︾嚎绋嬪埌鐩爣鍦扮偣璺濈 + List<NavigateNode> currentShuttlePath = navigateUtils.calc(currentLocNo, locNo, NavigationMapType.NORMAL.id, Utils.getShuttlePoints(shuttleNo, Utils.getLev(currentLocNo)), null);//鎼滅储绌洪棽绌挎杞︼紝浣跨敤姝e父閫氶亾鍦板浘 + if (currentShuttlePath == null) { + continue; } Integer currentAllDistance = navigateUtils.getOriginPathAllDistance(currentShuttlePath);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂� @@ -367,6 +358,103 @@ return false; } + /** + * 璋冨害杞﹁締 + */ + public boolean searchDispatchShuttleNoLift(Integer wrkNo, String sourceLocNo, String locNo, String flag) { + ArrayList<ShuttleThread> diffLev = new ArrayList<>();//涓嶅悓妤煎眰鐨勭┛姊溅 + + for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { + //鑾峰彇鍥涘悜绌挎杞︾嚎绋� + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId()); + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); + if (shuttleProtocol == null || shuttleProtocol.getShuttleNo() == null) { + continue; + } + + if (checkChargeWrk(shuttle.getId())) { + continue;//瀛樺湪鍏呯數浠诲姟锛岃繃婊ゅ皬杞� + } + + if (!shuttleThread.isIdle()) { + continue;//灏忚溅蹇欑涓� + } + + BasShuttle basShuttle = basShuttleService.selectOne(new EntityWrapper<BasShuttle>().eq("shuttle_no", shuttle.getId())); + if (basShuttle != null) { + if (basShuttle.getStatus() == 0) { + continue;//灏忚溅琚鐢� + } + } + diffLev.add(shuttleThread); + } + + //瀵绘壘绂讳换鍔℃ゼ灞傛渶杩戠殑绌挎杞�(涓嶈�冭檻璺ㄦゼ灞傚皬杞︾Щ鍔ㄨ窛绂�) + if (!diffLev.isEmpty()) { + Map<Integer, ShuttleThread> diffShuttles = new TreeMap<>();//鑷劧鎺掑簭灏忚溅Map + //鑾峰彇浠诲姟 + WrkMast wrkMast1 = wrkMastService.selectByWorkNo(wrkNo); + if (wrkMast1 != null) { + int lev = 1; + boolean b = wrkMast1.getIoType() < 100; + if (b) { + //ruku + if (wrkMast1.getStaNo() == 1015) { + lev = 1; + } else { + lev = 5; + } + } else { + lev = Utils.getLev(wrkMast1.getSourceLocNo());//鐩爣妤煎眰 + } + + + //妫�娴嬬洰鏍囨ゼ灞傝溅鏁伴噺鏄惁灏忎簬鍏佽鐨勬渶澶ф暟閲� + boolean checkDispatchMaxNum = checkDispatchMaxNum(lev); + if (!checkDispatchMaxNum) { + News.info("{}浠诲姟锛寋}灞傦紝宸茬粡杈惧埌褰撳墠妤煎眰璋冨害杞﹁締鏈�澶у��", wrkMast1.getWrkNo(), lev); + return false; + } + + for (ShuttleThread shuttleThread : diffLev) { + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); + //褰撳墠绌挎杞﹀簱浣嶅彿 + String currentLocNo = shuttleProtocol.getCurrentLocNo(); + int currentLev = Utils.getLev(currentLocNo); + + if (wrkMast1.getIoType() == 101 && currentLocNo.equals(locNo)) { + //杞﹁締褰撳墠浣嶇疆宸茬粡鏄洰鏍囧簱浣嶏紝璋冨害璇ヨ溅 + //缁欏伐浣滄。缁戝畾灏忚溅鍙� + diffShuttles.put(-1, shuttleThread); + } else { + //ABS(鐩爣妤煎眰 - 褰撳墠妤煎眰) 寰楀埌宸窛锛屽彇鏈�灏忓樊鍊� + int currentValue = Math.abs(lev - currentLev); + if (diffShuttles.get(currentValue) != null) { + diffShuttles.put(currentValue + 1, shuttleThread); + } else { + diffShuttles.put(currentValue, shuttleThread); + } + } + } + + //灏濊瘯璋冨害璺ㄦゼ灞傚皬杞� + for (Map.Entry<Integer, ShuttleThread> entry : diffShuttles.entrySet()) { + ShuttleThread shuttleThread = entry.getValue(); + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); + Integer shuttleNo = shuttleProtocol.getShuttleNo(); + //灏濊瘯璋冨害灏忚溅 + boolean result = shuttleMoveGenerate(wrkNo, sourceLocNo, locNo, shuttleNo, flag, false); + if (result) { + return true;//璋冨害鎴愬姛 + } + } + } + } + + News.info("{}鐩爣搴撲綅娌℃湁鎼滅储鍒板彲鐢ㄧ┛姊溅", locNo); + return false; + } + /** * 灏忚溅杩佺Щ浠诲姟鐢熸垚 -- Gitblit v1.9.1