From 6cf4a3e2ba925e75b60f13bb8ebc5e92d37809b2 Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期五, 25 七月 2025 13:53:34 +0800 Subject: [PATCH] # --- src/main/java/com/zy/common/utils/ShuttleOperaUtils.java | 87 ++++++++----------------------------------- 1 files changed, 16 insertions(+), 71 deletions(-) diff --git a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java index 6869199..6108c6f 100644 --- a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java +++ b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java @@ -17,7 +17,6 @@ import com.zy.core.enums.MapNodeType; import com.zy.core.enums.ShuttleRunDirection; import com.zy.core.enums.SlaveType; -import com.zy.core.model.ShuttleSlave; import com.zy.core.model.command.ShuttleAssignCommand; import com.zy.core.model.command.ShuttleCommand; import com.zy.core.model.protocol.ShuttleProtocol; @@ -91,11 +90,14 @@ lockNode.add(node.clone()); } + long startTime = System.currentTimeMillis(); List<ShuttleCommand> commands = new ArrayList<>(); //鑾峰彇鍒嗘璺緞 - ArrayList<ArrayList<NavigateNode>> data = navigateUtils.getSectionPath(nodeList); + List<List<NavigateNode>> data = navigateUtils.getSectionPath(nodeList); + long endTime = System.currentTimeMillis(); + News.info("getSection path time:{}", (endTime - startTime)); //灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护 - for (ArrayList<NavigateNode> nodes : data) { + for (List<NavigateNode> nodes : data) { //寮�濮嬭矾寰� NavigateNode startPath = nodes.get(0); @@ -113,74 +115,17 @@ } assignCommand.setNodes(allNode);//褰撳墠浠诲姟鎵�鍗犵敤鐨勮妭鐐筶ist + assignCommand.setMapTypes(mapTypes); - boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(startLocNo), shuttleNo, lockNode, true);//閿佸畾璺緞 - if (!result) { - News.error("{} dash {} can't lock path!", startLocNo, endLocNo); - shuttleThread.offerSystemMsg("{} dash {} can't lock path!", startLocNo, endLocNo); - return null;//璺緞閿佸畾澶辫触 + //灏忚溅绉诲姩杩炵画涓嬪彂鎸囦护 + boolean shuttleMoveCommandsContinuously = false; + Config shuttleMoveCommandsContinuouslyConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "shuttleMoveCommandsContinuously")); + if (shuttleMoveCommandsContinuouslyConfig != null) { + if (shuttleMoveCommandsContinuouslyConfig.getValue().equals("Y")) { + shuttleMoveCommandsContinuously = true; + } } - return commands; - } - - public synchronized List<ShuttleCommand> shuttleInOutLiftCommand(String startLocNo, String endLocNo, List<NavigationMapType> mapTypes, ShuttleAssignCommand assignCommand, ShuttleThread shuttleThread) { - NavigateNode startNode = NavigatePositionConvert.locNoToNode(startLocNo); - NavigateNode endNode = NavigatePositionConvert.locNoToNode(endLocNo); - List<NavigateNode> unlockPath = new ArrayList<>(); - unlockPath.add(startNode); - unlockPath.add(endNode); - - ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); - if (shuttleProtocol == null) { - return null; - } - - Integer shuttleNo = shuttleProtocol.getShuttleNo(); - //鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹�/瑙i攣 - boolean lockResult = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(endLocNo), shuttleProtocol.getShuttleNo(), unlockPath, false);//鎵�浣跨敤鐨勮矾寰勮繘琛岃В閿� - if (!lockResult) { - News.error("{} dash {} can't find unlock path!", startLocNo, endLocNo); - shuttleThread.offerSystemMsg("{} dash {} can't find unlock path!", startLocNo, endLocNo); - return null;//瑙i攣澶辫触 - } - - //鑾峰彇灏忚溅绉诲姩閫熷害 - Integer runSpeed = Optional.ofNullable(basShuttleService.selectOne(new EntityWrapper<BasShuttle>().eq("shuttle_no", shuttleNo)).getRunSpeed()).orElse(1000); - List<NavigateNode> nodeList = navigateUtils.calc(startLocNo, endLocNo, mapTypes, Utils.getShuttlePoints(shuttleNo, Utils.getLev(startLocNo)), null); - if (nodeList == null) { - News.error("{} dash {} can't find navigate path!", startLocNo, endLocNo); - shuttleThread.offerSystemMsg("{} dash {} can't find navigate path!", startLocNo, endLocNo); - return null; - } - - List<NavigateNode> allNode = new ArrayList<>(); - for (NavigateNode node : nodeList) { - allNode.add(node.clone()); - } - - List<ShuttleCommand> commands = new ArrayList<>(); - //鑾峰彇鍒嗘璺緞 - ArrayList<ArrayList<NavigateNode>> data = navigateUtils.getSectionPath(nodeList); - //灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护 - for (ArrayList<NavigateNode> nodes : data) { - //寮�濮嬭矾寰� - NavigateNode startPath = nodes.get(0); - - //鐩爣璺緞 - NavigateNode endPath = nodes.get(nodes.size() - 1); - Integer allDistance = navigateUtils.getCurrentPathAllDistance(nodes);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂� - //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮� - String startCodeNum = NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY(), startPath.getZ()); - //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮� - String distCodeNum = NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY(), endPath.getZ()); - //鑾峰彇绉诲姩鍛戒护 - ShuttleCommand command = shuttleThread.getMoveCommand(assignCommand.getDeviceTaskNo(), startCodeNum, distCodeNum, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id.intValue(), runSpeed, nodes); - command.setNodes(nodes);//灏嗚璧拌妭鐐规坊鍔犲埌姣忎竴姝ュ懡浠や腑 - commands.add(command); - } - - assignCommand.setNodes(allNode);//褰撳墠浠诲姟鎵�鍗犵敤鐨勮妭鐐筶ist - + assignCommand.setShuttleMoveCommandsContinuously(shuttleMoveCommandsContinuously); return commands; } @@ -331,7 +276,7 @@ NavigateNode currentNode = new NavigateNode(pointArr[0], pointArr[1]); currentNode.setZ(lev); - List<List<MapNode>> lists = navigateMapData.getJsonData(lev, -1, null, null);//鑾峰彇瀹屾暣鍦板浘 + List<List<MapNode>> lists = navigateMapData.getJsonData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);//鑾峰彇瀹屾暣鍦板浘 int[][] map = navigateMapData.parseJsonDataArr(lists); int nodeValue = map[pointArr[0]][pointArr[1]]; currentNode.setNodeValue(nodeValue); @@ -372,7 +317,7 @@ currentNode.setZ(lev); innerNodes.add(currentNode); - List<List<MapNode>> lists = navigateMapData.getJsonData(lev, -1, null, null);//鑾峰彇瀹屾暣鍦板浘 + List<List<MapNode>> lists = navigateMapData.getJsonData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);//鑾峰彇瀹屾暣鍦板浘 int[][] map = navigateMapData.parseJsonDataArr(lists); int nodeValue = map[pointArr[0]][pointArr[1]]; currentNode.setNodeValue(nodeValue); -- Gitblit v1.9.1