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