From 946b8c5f52fd508890e65cd2c016c7f5174a0a35 Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期五, 25 七月 2025 14:41:41 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/thread/impl/TrafficControlImplThread.java | 31 +++++++++++++++++++++++++++++++ 1 files changed, 31 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/zy/core/thread/impl/TrafficControlImplThread.java b/src/main/java/com/zy/core/thread/impl/TrafficControlImplThread.java index f15a5c2..9d92ed2 100644 --- a/src/main/java/com/zy/core/thread/impl/TrafficControlImplThread.java +++ b/src/main/java/com/zy/core/thread/impl/TrafficControlImplThread.java @@ -9,6 +9,7 @@ import com.zy.common.utils.NavigatePositionConvert; import com.zy.common.utils.NavigateUtils; import com.zy.common.utils.RedisUtil; +import com.zy.common.utils.ShuttleOperaUtils; import com.zy.core.News; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.RedisKeyType; @@ -35,6 +36,7 @@ private HashMap<Integer, HashMap<String, List<Integer>>> levNodesMap = null; + private HashMap<Integer,Long> pathIdleShuttleMap = new HashMap<>(); private HashMap<Integer,Long> applyRecordsMap = new HashMap<>(); private HashMap<String, List<NavigateNode>> taskNodesMap = new HashMap<>(); private List<TrafficControlDataModel> trafficControlDataList = new ArrayList<>(); @@ -443,6 +445,11 @@ @Override public synchronized boolean applyTrafficControl(List<NavigateNode> totalNodeList, List<NavigateNode> nodeList, Integer shuttleNo, Integer taskNo) { + ShuttleOperaUtils shuttleOperaUtils = SpringUtils.getBean(ShuttleOperaUtils.class); + if (shuttleOperaUtils == null) { + return false; + } + //鏇存柊浜ょ淇℃伅 redisUtil.set(RedisKeyType.TRAFFIC_CONTROL_MAP.key, trafficControlDataList); @@ -508,6 +515,30 @@ //妫�娴嬭矾寰勬槸鍚︽湁灏忚溅 for (String loc : totalLocList) { if(shuttleLocList.contains(loc)) { + ShuttleThread pathShuttleThread = Utils.searchShuttle(loc); + if (pathShuttleThread == null) { + return false; + } + + ShuttleProtocol shuttleProtocol = pathShuttleThread.getStatus(); + if(shuttleProtocol == null) { + return false; + } + + if (pathShuttleThread.isIdle()) { + if(pathIdleShuttleMap.containsKey(shuttleProtocol.getShuttleNo())) { + Long idleTime = pathIdleShuttleMap.get(shuttleProtocol.getShuttleNo()); + if((System.currentTimeMillis() - idleTime) > 1000 * 10) { + //妫�娴嬮殰纰嶇墿杞� + boolean checkObstacle = shuttleOperaUtils.checkObstacle(shuttleProtocol.getCurrentLocNo(), new ArrayList<Integer>() {{ + add(shuttleNo); + }}); + pathIdleShuttleMap.remove(shuttleProtocol.getShuttleNo()); + } + }else { + pathIdleShuttleMap.put(shuttleProtocol.getShuttleNo(), System.currentTimeMillis()); + } + } return false;//node has shuttle } } -- Gitblit v1.9.1