From 70210b0eb0c58e1779fd89cbcf0909154d7d4936 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: Sat, 01 Jul 2023 11:45:18 +0800
Subject: [PATCH] 基本完成优先级排队报警逻辑

---
 ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java |   17 +++
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/AlarmTask.java                             |   17 ++++
 ard-work/src/main/java/com/ruoyi/constant/CamPriority.java                                  |    4 -
 ard-work/src/main/java/com/ruoyi/device/camera/domain/CameraCmd.java                        |    3 
 ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java       |  116 +++++-----------------------
 ruoyi-admin/src/main/resources/logback.xml                                                  |   17 ++++
 ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueManager.java           |    8 +
 ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueTaskExecutor.java      |   12 ++
 ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/domain/GuidePriorityQueue.java           |    2 
 ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/SdkOperateAspect.java             |   13 ++
 ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java               |    4 +
 ruoyi-common/src/main/java/com/ruoyi/common/annotation/SdkOperate.java                      |    1 
 12 files changed, 101 insertions(+), 113 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/domain/GuidePriorityQueue.java b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/domain/GuidePriorityQueue.java
index 776da58..210c939 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/domain/GuidePriorityQueue.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/domain/GuidePriorityQueue.java
@@ -16,7 +16,7 @@
  * @Date: 2023年06月29日11:18
  * @Version: 1.0
  **/
-@Slf4j
+@Slf4j(topic = "guideQueue")
 public class GuidePriorityQueue {
     /**
      * 相机队列,每个相机一个优先级队列
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java
index 63a106c..fcf5f7e 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java
@@ -343,7 +343,13 @@
                     int aat = ardAlarmTubeMapper.insertArdAlarmTube(ardAlarmTube);
                     if (aat > 0) {
                         log.debug("tube入库成功:" + ardAlarmTube);
-                        double[] coordinate=new double[]{ardAlarmTube.getLongitude(),ardAlarmTube.getLatitude()};
+                        Double longitude = ardAlarmTube.getLongitude();
+                        Double latitude = ardAlarmTube.getLatitude();
+                        if(StringUtils.isNull(longitude)||StringUtils.isNull(latitude))
+                        {
+                            return;
+                        }
+                        double[] coordinate=new double[]{longitude,latitude};
                         String nearbyCameraId = getNearbyCamera(new double[]{ardAlarmTube.getLongitude(), ardAlarmTube.getLatitude()});
                         if (StringUtils.isNotEmpty(nearbyCameraId)) {
                             messagesEnqueued(nearbyCameraId, ardAlarmTube.getId(), "sys_tube_leak",ardAlarmTube.getCreateTime(), 1,1,coordinate);
@@ -400,8 +406,11 @@
                             ArdAlarmpointsWell ardAlarmpointsWell = ardAlarmpointsWellMapper.selectArdAlarmpointsWellByWellId(alarmpointName);
                             if(StringUtils.isNotNull(ardAlarmpointsWell) && StringUtils.isNotEmpty(ardAlarmpointsWell.getCameraId()))
                             {
-
                                 String cameraId = ardAlarmpointsWell.getCameraId();
+                                if(cameraIdWithTower.equals(cameraId))
+                                {
+                                    return;
+                                }
                                 log.info("获取到报警点关联的光电:"+cameraId);
                                 //如果报警点关联了光电
                                 messagesEnqueued(cameraId, uuid, alarmType,ardAlarmRadar.getCreateTime(), 1,2,coordinate);
@@ -427,6 +436,10 @@
                                 if(StringUtils.isNotNull(ardAlarmpointsWell) && StringUtils.isNotEmpty(ardAlarmpointsWell.getCameraId()))
                                 {
                                     String cameraId = ardAlarmpointsWell.getCameraId();
+                                    if(cameraIdWithTower.equals(cameraId))
+                                    {
+                                        return;
+                                    }
                                     log.info("获取到报警点关联的光电:"+cameraId);
                                     //如果报警点关联了光电
                                     messagesEnqueued(cameraId, uuid, alarmType,ardAlarmRadar.getCreateTime(), count,2,coordinate);
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueManager.java b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueManager.java
index c4cf0fe..edff059 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueManager.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueManager.java
@@ -24,7 +24,7 @@
  */
 
 @Component
-@Slf4j
+@Slf4j(topic = "guideQueue")
 public class QueueManager {
 
     @Autowired
@@ -64,8 +64,9 @@
         PriorityBlockingQueue<GuideTask> guideTaskQueue = GuidePriorityQueue.cameraQueueMap.get(cameraId);
         if(StringUtils.isNull(guideTaskQueue))
         {
-            log.info("相机未初始化成功,没有队列");
+            log.info("相机未登录,没有队列");
         }
+        log.debug("新任务入队:"+task.getAlarmId());
         guideTaskQueue.add(task);
         /*获取该相机的当前执行线程*/
         TaskThread currentTaskThread = threadMap.get(cameraId);
@@ -92,14 +93,15 @@
             while (!Thread.currentThread().isInterrupted()) {
                 try {
                     GuideTask task = queue.take();
+                    log.debug("取出队列数据:"+task.getAlarmId());
                     taskExecutor.processTask(task);
-                   // GuidePriorityQueue.printPriorityQueue();
                     // 更新线程的当前任务
                     TaskThread currentTaskThread = threadMap.get(queueName);
                     if (currentTaskThread != null) {
                         currentTaskThread.setCurrentTask(task);
                     }
                 } catch (InterruptedException e) {
+                    log.info("中断当前线程");
                     //线程中断,退出循环
                     Thread.currentThread().interrupt();
                 }
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueTaskExecutor.java b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueTaskExecutor.java
index d4c5e1f..659afcc 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueTaskExecutor.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueTaskExecutor.java
@@ -23,7 +23,7 @@
  */
 
 @Component
-@Slf4j
+@Slf4j(topic = "guideQueue")
 public class QueueTaskExecutor {
     @Resource
     IHikClientService hikClientService;
@@ -42,12 +42,18 @@
             cmd.setExpired(30);
             cmd.setRecordBucketName("record");
             cmd.setRecordObjectName("alarm");
+            log.debug("开始引导");
             boolean guideRes = hikClientService.guideTargetPosition(cmd);
             if (guideRes) {
+                log.debug("引导成功");
                 hikClientService.controlLock(cmd);//上锁
                 cmd.setEnable(true);//开始录像
                 hikClientService.recordToMinio(cmd);//开始录像
-                Thread.sleep(30000);
+                try {
+                    Thread.sleep(30000);
+                } catch (InterruptedException e) {
+                    log.info("当前任务ID"+guideTask.getAlarmId()+"线程被终止");
+                }
                 cmd.setEnable(false);//停止录像
                 cmd.setUploadMinio(true);//上传minio
                 String url = hikClientService.recordToMinio(cmd);//停止录像返回url
@@ -83,7 +89,7 @@
                 }
             }
         } catch (Exception ex) {
-            log.info("自动引导异常:" + ex.getMessage());
+            log.info("线程任务异常:" + ex.getMessage());
         }
     }
 }
diff --git a/ard-work/src/main/java/com/ruoyi/constant/CamPriority.java b/ard-work/src/main/java/com/ruoyi/constant/CamPriority.java
index 02214af..d2ba937 100644
--- a/ard-work/src/main/java/com/ruoyi/constant/CamPriority.java
+++ b/ard-work/src/main/java/com/ruoyi/constant/CamPriority.java
@@ -1,12 +1,8 @@
 package com.ruoyi.constant;
 
-import com.ruoyi.alarm.globalAlarm.domain.GuidePriorityQueue;
-import com.ruoyi.alarm.globalAlarm.domain.GuideTask;
 import lombok.extern.slf4j.Slf4j;
-
 import java.util.HashMap;
 import java.util.Map;
-import java.util.PriorityQueue;
 
 /**
  * @Description: 相机控制优先级
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/domain/CameraCmd.java b/ard-work/src/main/java/com/ruoyi/device/camera/domain/CameraCmd.java
index 94e476a..9f39667 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/domain/CameraCmd.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/domain/CameraCmd.java
@@ -8,7 +8,8 @@
 @Data
 @ApiModel(description = "sdk命令实体类")
 public class CameraCmd {
-
+    /*命令标识*/
+    String cmdType;
     /*相机ID*/
     String cameraId;
     /*相机通道号*/
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java
index 6ef6268..3f9325e 100644
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java
@@ -54,8 +54,10 @@
 
     //聚焦模式
     boolean controlFocusMode(CameraCmd cmd);
+
     //获取聚焦模式
     String getFocusMode(CameraCmd cmd);
+
     //云台加热
     boolean controlPTHeateRpwron(CameraCmd cmd);
 
@@ -64,8 +66,10 @@
 
     //配置锁定
     boolean controlLock(CameraCmd cmd);
+
     //配置解锁
     boolean controlUnLock(CameraCmd cmd);
+
     //获取云台锁定信息
     int getPTZLockInfo(CameraCmd cmd);
 
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
index 97944f4..3a4971f 100644
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
@@ -1,13 +1,8 @@
 package com.ruoyi.device.hiksdk.service.impl;
 
 import com.ruoyi.common.annotation.SdkOperate;
-import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.core.domain.model.LoginUser;
-import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.file.FileUtils;
 import com.ruoyi.common.utils.uuid.IdUtils;
-import com.ruoyi.constant.CamPriority;
 import com.ruoyi.device.camera.domain.CameraCmd;
 import com.ruoyi.device.camera.mapper.ArdCamerasMapper;
 import com.ruoyi.device.hiksdk.common.GlobalVariable;
@@ -18,7 +13,6 @@
 import com.ruoyi.device.hiksdk.service.IHikClientService;
 import com.ruoyi.device.hiksdk.util.hikSdkUtil.LoginResultCallBack;
 import com.ruoyi.device.hiksdk.util.minio.MinioUtils;
-import com.ruoyi.system.mapper.SysUserMapper;
 import com.sun.jna.Native;
 import com.sun.jna.Platform;
 import com.sun.jna.Pointer;
@@ -30,6 +24,7 @@
 import javax.annotation.Resource;
 import java.io.*;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.nio.ByteBuffer;
 import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
@@ -50,9 +45,6 @@
 
     @Resource
     ArdCamerasMapper ardCamerasMapper;
-
-    @Resource
-    SysUserMapper sysUserMapper;
 
     private static HCNetSDK hCNetSDK;
 
@@ -132,11 +124,8 @@
             hCNetSDK.NET_DVR_Cleanup();
             camera.setLoginId(-1);
         }
-        if (GlobalVariable.loginMap.containsKey(camera.getId())) {
-            GlobalVariable.loginMap.remove(camera.getId());
-        }
+        GlobalVariable.loginMap.remove(camera.getId());
         GlobalVariable.loginMap.put(camera.getId(), lUserID);
-
         camera.setLoginId(lUserID);
         camera.setChannel((int) m_strDeviceInfo.byStartChan);
         return camera;
@@ -242,7 +231,7 @@
     /**
      * 是否在线
      *
-     * @param cmd
+     * @param cmd 相机命令
      */
     @Override
     public boolean isOnLine(CameraCmd cmd) {
@@ -251,8 +240,7 @@
             return false;
         }
         Integer userId = GlobalVariable.loginMap.get(cameraId);
-        boolean isOnLine = hCNetSDK.NET_DVR_RemoteControl(userId, HCNetSDK.NET_DVR_CHECK_USER_STATUS, null, 0);
-        return isOnLine;
+        return hCNetSDK.NET_DVR_RemoteControl(userId, HCNetSDK.NET_DVR_CHECK_USER_STATUS, null, 0);
     }
 
     /**
@@ -277,13 +265,13 @@
             return false;
         }
         Integer userId = GlobalVariable.loginMap.get(cameraId);
-        Integer dwStop;
+        int dwStop;
         if (enable) {
             dwStop = 0;//开启
         } else {
             dwStop = 1;//关闭
         }
-        Integer dwPTZCommand = -1;
+        int dwPTZCommand = -1;
         switch (code) {
             /*方向*/
             case 1:
@@ -350,7 +338,7 @@
     /**
      * 设置聚焦值
      *
-     * @param cmd
+     * @param cmd 相机命令
      */
     @Override
     @SdkOperate
@@ -378,7 +366,7 @@
     /**
      * 获取聚焦值
      *
-     * @param cmd
+     * @param cmd 相机命令
      */
     @Override
     public Map<String, Object> getFocusPos(CameraCmd cmd) {
@@ -411,7 +399,7 @@
     /**
      * 设置预置点
      *
-     * @param cmd
+     * @param cmd 相机命令
      */
     @Override
     @SdkOperate
@@ -434,7 +422,7 @@
     /**
      * 转到预置点
      *
-     * @param cmd
+     * @param cmd 相机命令
      */
     @Override
     @SdkOperate
@@ -481,8 +469,8 @@
             if (bool) {
                 resolution.read();
                 //视频输出口分辨率:0- 1024x768,1- 1280x720,2-1280x1024,3- 1680x1050,4- 1920x1080,5- 3840*2160
-                byte byStreamType = resolution.struNormHighRecordPara.byStreamType;
-                int dwVideoBitrate = resolution.struNormHighRecordPara.dwVideoBitrate;
+//                byte byStreamType = resolution.struNormHighRecordPara.byStreamType;
+//                int dwVideoBitrate = resolution.struNormHighRecordPara.dwVideoBitrate;
                 int byResolution = resolution.struNormHighRecordPara.byResolution;
                 switch (byResolution) {
                     case 0:
@@ -560,7 +548,6 @@
     }
 
     /**
-     * @return
      * @描述 获取ptz信息
      * @参数 [userId, channelNum]
      * @返回值 boolean
@@ -584,7 +571,7 @@
         boolean bool = hCNetSDK.NET_DVR_GetDVRConfig(userId, HCNetSDK.NET_DVR_GET_PTZPOS, channelNum, pioint, m_ptzPosCurrent.size(), ibrBytesReturned);
         if (bool) {
             m_ptzPosCurrent.read();
-            DecimalFormat df = new DecimalFormat("0.0");//设置保留位数
+            // DecimalFormat df = new DecimalFormat("0.0");//设置保留位数
             //16进制转Integer后除10,保留小数点1位
             //实际显示的PTZ值是获取到的十六进制值的十分之一,
             //如获取的水平参数P的值是0x1750,实际显示的P值为175度;
@@ -596,7 +583,7 @@
             double p = b.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
             double t = c.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
             double z = d.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
-//            log.debug("T垂直参数为: " + p + "P水平参数为: " + t + "Z变倍参数为: " + z);
+            //log.debug("T垂直参数为: " + p + "P水平参数为: " + t + "Z变倍参数为: " + z);
             Map<String, Object> ptzMap = new HashMap<>();
             ptzMap.put("p", p);
             ptzMap.put("t", t);
@@ -704,67 +691,9 @@
         now.setTime(now.getTime() + cmd.getExpired() * 1000);
         ardCameras.setOperatorExpired(now);//设置当前过期时间
         ardCamerasMapper.updateArdCameras(ardCameras);
-//        String cameraId = cmd.getCameraId();//申请锁的相机
-//        ArdCameras ardCameras = ardCamerasMapper.selectArdCamerasById(cameraId);
-//        if (StringUtils.isNull(ardCameras)) {
-//            return false;//找不到相机拒绝操控
-//        }
-//        Integer expired = cmd.getExpired();//申请控制时长
-//        String operator = cmd.getOperator();//申请者
-//        String currentOperator = ardCameras.getOperatorId();//相机当前控制者
-//        Date currentExpired = ardCameras.getOperatorExpired();//相机当前过期时间
-//        if (currentExpired == null) {
-//            //设置当前操作用户ID
-//            ardCameras.setOperatorId(operator);
-//            //设置当前过期时间
-//            Date now = new Date();
-//            now.setTime(now.getTime() + expired * 1000);
-//            ardCameras.setOperatorExpired(now);
-//            ardCamerasMapper.updateArdCameras(ardCameras);
-//        } else {
-//            //如果过期时间有值
-//            //如果是本人直接修改
-//            if (currentOperator.equals(operator)) {
-//                //设置当前过期时间
-//                Date now = new Date();
-//                now.setTime(now.getTime() + expired * 1000);
-//                ardCameras.setOperatorExpired(now);
-//                ardCamerasMapper.updateArdCameras(ardCameras);
-//            } else {
-//                //如果非本人比较优先级
-//                Integer currentLevel = 0;//当前操作者的优先级
-//                if (CamPriority.priorityMap.containsKey(currentOperator)) {
-//                    /*当前控制者为系统报警用户*/
-//                    currentLevel = (Integer) CamPriority.priorityMap.get(currentOperator);
-//                } else {
-//                    /*当前控制者为普通用户*/
-//                    SysUser sysUser = sysUserMapper.selectUserById(currentOperator);
-//                    currentLevel = sysUser.getCameraPriority();
-//                }
-//                Integer operatorLevel = 0;//获取申请者的优先级
-//                if (CamPriority.priorityMap.containsKey(operator)) {
-//                    /*包含说明当前申请控制者为系统报警用户*/
-//                    operatorLevel = (Integer) CamPriority.priorityMap.get(operator);
-//                } else {
-//                    /*否则申请控制者为当前登录用户*/
-//                    LoginUser loginUser = SecurityUtils.getLoginUser();
-//                    SysUser user = loginUser.getUser();//获取登录用户的信息
-//                    operatorLevel = user.getCameraPriority();
-//                }
-//                //判断优先级
-//                if (operatorLevel > currentLevel) {
-//                    Date now = new Date();
-//                    now.setTime(now.getTime() + expired * 60);
-//                    ardCameras.setOperatorExpired(now);//设置当前过期时间
-//                    ardCameras.setOperatorId(operator);//设置当前用户
-//                    ardCamerasMapper.updateArdCameras(ardCameras);
-//                } else {
-//                    return false;//优先级低无法上锁
-//                }
-//            }
-//        }
         return true;
     }
+
     /**
      * @描述 操控解锁
      * @参数 [userId, channelNum]
@@ -778,14 +707,12 @@
         String cameraId = cmd.getCameraId();//申请解锁的相机
         String operator = cmd.getOperator();//申请者
         ArdCameras ardCameras = ardCamerasMapper.selectArdCamerasById(cameraId);
-        if(ardCameras.getOperatorId().equals(operator))
-        {
+        if (ardCameras.getOperatorId().equals(operator)) {
             //如果解锁相机的当前用户是申请者,则清空该相机的过期时间
             ardCameras.setOperatorExpired(null);
             int i = ardCamerasMapper.updateArdCameras(ardCameras);
-            if(i>0)
-            {
-                log.debug(cameraId+"--解锁成功");
+            if (i > 0) {
+                log.debug(cameraId + "--解锁成功");
             }
         }
         return true;
@@ -1046,8 +973,7 @@
         return bool;
     }
 
-    public String getFocusMode(CameraCmd cmd)
-    {
+    public String getFocusMode(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         Integer channelNum = cmd.getChannelNum();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
@@ -1065,6 +991,7 @@
         log.info("当前聚焦模式:" + struFocusMode.byFocusMode);
         return String.valueOf(struFocusMode.byFocusMode);
     }
+
     /**
      * @描述 云台加热开关
      * @参数 [userId, channelNum, enable]
@@ -1420,7 +1347,7 @@
                 FileInputStream stream = new FileInputStream(path);
                 String simpleUUID = IdUtils.simpleUUID();
                 String time = new SimpleDateFormat("yyyyMMdd").format(new Date());
-                String recordName = cameraId + "/" + time + "/" + ObjectName +"_"+ simpleUUID + ".mp4";
+                String recordName = cameraId + "/" + time + "/" + ObjectName + "_" + simpleUUID + ".mp4";
                 boolean b = MinioUtils.uploadObject(BucketName, recordName, stream, stream.available(), ContentType);
                 if (b) {
                     String url = MinioClientSingleton.domainUrl + "/" + BucketName + "/" + recordName;
@@ -1434,4 +1361,5 @@
             return "";
         }
     }
+
 }
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/logback.xml b/ruoyi-admin/src/main/resources/logback.xml
index dcaeff9..267157c 100644
--- a/ruoyi-admin/src/main/resources/logback.xml
+++ b/ruoyi-admin/src/main/resources/logback.xml
@@ -147,6 +147,19 @@
             <pattern>${log.pattern}</pattern>
         </encoder>
     </appender>
+    <!--guideQueue日志输出-->
+    <appender name="guideQueue" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/guideQueue.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!--按天回滚daily-->
+            <fileNamePattern>${log.path}/guideQueue.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!--日志最大的历史60天-->
+            <maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+    </appender>
     <!--PatrolInspectionTask日志输出-->
     <appender name="PatrolInspectionTask" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${log.path}/PatrolInspectionTask.log</file>
@@ -207,4 +220,8 @@
     <logger name="mqtt" level="DEBUG">
         <appender-ref ref="mqtt"/>
     </logger>
+    <!--guideQueue日志打印等级-->
+    <logger name="guideQueue" level="DEBUG">
+        <appender-ref ref="guideQueue"/>
+    </logger>
 </configuration> 
\ No newline at end of file
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/SdkOperate.java b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/SdkOperate.java
index 05f51b2..24da383 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/SdkOperate.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/SdkOperate.java
@@ -6,5 +6,4 @@
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
 public @interface SdkOperate {
-
 }
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/SdkOperateAspect.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/SdkOperateAspect.java
index dd79534..25cb772 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/SdkOperateAspect.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/SdkOperateAspect.java
@@ -1,5 +1,6 @@
 package com.ruoyi.framework.aspectj;
 
+import com.ruoyi.common.annotation.SdkOperate;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.utils.SecurityUtils;
@@ -10,13 +11,18 @@
 import com.ruoyi.device.camera.service.IArdCamerasService;
 import com.ruoyi.system.service.ISysUserService;
 import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.ProceedingJoinPoint;
 import org.aspectj.lang.annotation.Around;
 import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
 import org.aspectj.lang.annotation.Pointcut;
+import org.aspectj.lang.reflect.MethodSignature;
 import org.springframework.stereotype.Component;
 
+import javax.annotation.Nullable;
 import javax.annotation.Resource;
+import java.lang.reflect.Method;
 import java.util.Date;
 
 import static jdk.nashorn.internal.runtime.regexp.joni.Config.log;
@@ -43,12 +49,14 @@
 
     @Around("dsPointCut()")
     public Object around(ProceedingJoinPoint point) throws Throwable {
+        MethodSignature signature = (MethodSignature) point.getSignature();
+        Method method = signature.getMethod();
         Boolean result = controlScopeFilter(point);
         if (result) {
-            log.debug("已获取相机控制权");
+            log.debug("已获取相机控制权--" + method.getName());
             return point.proceed();
         } else {
-            log.debug("未获取相机控制权");
+            log.debug("未获取相机控制权--" + method.getName());
             return false;//代替目标方法的返回值
         }
     }
@@ -137,6 +145,5 @@
                 }
             }
         }
-
     }
 }
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/AlarmTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/AlarmTask.java
index cf22a3f..1dc3ebe 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/AlarmTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/AlarmTask.java
@@ -1,5 +1,7 @@
 package com.ruoyi.quartz.task;
 
+import com.ruoyi.alarm.globalAlarm.domain.GuidePriorityQueue;
+import com.ruoyi.alarm.globalAlarm.domain.GuideTask;
 import com.ruoyi.alarm.globalAlarm.service.IGlobalAlarmService;
 import com.ruoyi.alarm.stealAlarm.domain.ArdAlarmStealelec;
 import com.ruoyi.alarm.stealAlarm.service.IStealElecAlarmService;
@@ -15,6 +17,7 @@
 import javax.annotation.Resource;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.concurrent.PriorityBlockingQueue;
 
 import static com.ruoyi.common.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS;
 
@@ -26,7 +29,7 @@
  * @Version: 1.0
  **/
 @Component("AlarmTask")
-@Slf4j(topic = "AlarmTask")
+@Slf4j
 public class AlarmTask {
 
     /**
@@ -44,4 +47,16 @@
                 WebSocketUtils.sendMessageAll(stringIntegerMap);
         }
     }
+    /**
+     * 定时清空引导队列
+     * 刘苏义
+     * 2023/7/1 10:41
+     */
+    public void clearGuideQueue() {
+        log.info("定时清理引导队列");
+        for(PriorityBlockingQueue<GuideTask> guideQueue:GuidePriorityQueue.cameraQueueMap.values())
+        {
+            guideQueue.clear();
+        }
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3