From 9af152509959409830bf542f147aca01d7616221 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期六, 02 八月 2025 13:48:41 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/common/utils/ShuttleOperaUtils.java | 85 +++++++-----------------------------------
1 files changed, 15 insertions(+), 70 deletions(-)
diff --git a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
index 170dc3e..c421287 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;
}
@@ -555,7 +500,7 @@
private boolean is_valid(int[][] map, int x, int y) {
if (x < 0 || x >= map.length
- || y < 0 || y >= map[0].length) {
+ || y < 0 || y >= map[1].length) {
return false;
}
// 濡傛灉缁撶偣鐨勪綅缃皬浜�0锛屽垯涓嶅悎娉�
--
Gitblit v1.9.1