From cabc8e23b0b1eb4d256813e3941a4f214b32f4e4 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期五, 01 八月 2025 17:20:23 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/action/ShuttleAction.java                 |   19 +++++++++++--------
 src/main/java/com/zy/core/thread/impl/TrafficControlImplThread.java |    5 +++--
 src/main/java/com/zy/core/enums/RedisKeyType.java                   |    2 ++
 src/main/java/com/zy/core/task/TrafficApplyProcess.java             |   15 +++++++++++++++
 4 files changed, 31 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/zy/core/action/ShuttleAction.java b/src/main/java/com/zy/core/action/ShuttleAction.java
index 6a968c0..2486dd8 100644
--- a/src/main/java/com/zy/core/action/ShuttleAction.java
+++ b/src/main/java/com/zy/core/action/ShuttleAction.java
@@ -360,7 +360,8 @@
             }
 
             //鐢宠鍙栨秷绠″埗
-            trafficControlThread.cancelTrafficControl(shuttleNo, shuttleProtocol.getTaskNo());
+            cancelTrafficControl(shuttleNo, shuttleProtocol.getTaskNo());
+
             //鍒犻櫎redis
             redisUtil.del(RedisKeyType.SHUTTLE_WORK_FLAG.key + redisCommand.getWrkNo());
             return 0;//绂佹鍐嶄笅鍙戝懡浠�
@@ -511,16 +512,18 @@
 
     //鏌ヨ鏄惁鐢宠绠″埗鎴愬姛
     public boolean queryTrafficControl(Integer shuttleNo, Integer taskNo) {
-        TrafficControlThread trafficControlThread = (TrafficControlThread) SlaveConnection.get(SlaveType.TrafficControl, 1);
-        if (trafficControlThread == null) {
+        Object object = redisUtil.get(RedisKeyType.TRAFFIC_CONTROL_SUCCESS_APPLY.key + shuttleNo + "_" + taskNo);
+        if (object == null) {
             return false;
         }
+        return true;
+    }
 
-        TrafficControlDataModel trafficControlDataModel = trafficControlThread.queryTrafficControl(shuttleNo, taskNo);
-        if (trafficControlDataModel == null) {
-            return false;
-        }
-
+    public boolean cancelTrafficControl(Integer shuttleNo, Integer taskNo) {
+        TrafficControlDataModel model = new TrafficControlDataModel();
+        model.setShuttleNo(shuttleNo);
+        model.setTaskNo(taskNo);
+        redisUtil.set(RedisKeyType.TRAFFIC_CONTROL_CANCEL_LIST.key + shuttleNo + "_" + taskNo, model);
         return true;
     }
 
diff --git a/src/main/java/com/zy/core/enums/RedisKeyType.java b/src/main/java/com/zy/core/enums/RedisKeyType.java
index abb0917..085875f 100644
--- a/src/main/java/com/zy/core/enums/RedisKeyType.java
+++ b/src/main/java/com/zy/core/enums/RedisKeyType.java
@@ -20,7 +20,9 @@
     //浜ょ淇℃伅
     TRAFFIC_CONTROL_MAP("traffic_control_map"),
     TRAFFIC_CONTROL_APPLY("traffic_control_apply_"),
+    TRAFFIC_CONTROL_SUCCESS_APPLY("traffic_control_success_apply_"),
     TRAFFIC_CONTROL_REPORT_LIST("traffic_control_report_list_"),
+    TRAFFIC_CONTROL_CANCEL_LIST("traffic_control_cancel_list_"),
     TRAFFIC_CONTROL_LOCK_APPLY("traffic_control_lock_apply_"),
     TRAFFIC_CONTROL_SHUTTLE_APPLY_COUNT("traffic_control_shuttle_apply_count_"),
 
diff --git a/src/main/java/com/zy/core/task/TrafficApplyProcess.java b/src/main/java/com/zy/core/task/TrafficApplyProcess.java
index 2935d3e..7b7e79d 100644
--- a/src/main/java/com/zy/core/task/TrafficApplyProcess.java
+++ b/src/main/java/com/zy/core/task/TrafficApplyProcess.java
@@ -88,6 +88,21 @@
         }
     }
 
+    @Scheduled(cron = "0/3 * * * * ? ")
+    public void processCancel() {
+        TrafficControlThread trafficControlThread = (TrafficControlThread) SlaveConnection.get(SlaveType.TrafficControl, 1);
+        if (trafficControlThread == null) {
+            return;
+        }
+        Set<String> keys = redisUtil.searchKeys(RedisKeyType.TRAFFIC_CONTROL_CANCEL_LIST.key);
+
+        for (String key : keys) {
+            TrafficControlDataModel param = (TrafficControlDataModel) redisUtil.get(key);
+            redisUtil.del(key);
+            boolean apply = trafficControlThread.cancelTrafficControl(param.getShuttleNo(), param.getTaskNo());
+        }
+    }
+
     class ApplyKey{
         @Getter
         String key;
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 1f3f4f2..9008544 100644
--- a/src/main/java/com/zy/core/thread/impl/TrafficControlImplThread.java
+++ b/src/main/java/com/zy/core/thread/impl/TrafficControlImplThread.java
@@ -199,6 +199,7 @@
         operateTrafficControl(param);
 
         applyRecordsMap.remove(shuttleNo);
+        redisUtil.set(RedisKeyType.TRAFFIC_CONTROL_SUCCESS_APPLY.key + shuttleNo + "_" + taskNo, 1, 60 * 60);
         News.info("receipt traffic {},{}", shuttleNo, taskNo);
         return true;
     }
@@ -259,7 +260,7 @@
     }
 
     @Override
-    public synchronized boolean cancelTrafficControl(Integer shuttleNo, Integer taskNo) {
+    public boolean cancelTrafficControl(Integer shuttleNo, Integer taskNo) {
         TrafficControlDataModel dataModel = queryTrafficControl(shuttleNo, taskNo);
         if (dataModel == null) {
             return false;
@@ -273,7 +274,7 @@
     }
 
     @Override
-    public synchronized boolean forceCancelTrafficControl(Integer shuttleNo) {
+    public boolean forceCancelTrafficControl(Integer shuttleNo) {
         TrafficControlDataModel dataModel = queryTrafficControl(shuttleNo);
         if (dataModel == null) {
             return false;

--
Gitblit v1.9.1