From 3daa378637a5ceeb4965b554f528a7a36e3d5c2a Mon Sep 17 00:00:00 2001 From: liusuyi <13324259@qq.com> Date: 星期四, 29 六月 2023 23:17:39 +0800 Subject: [PATCH] 优化 --- ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java | 230 ++++++++++++------------- ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/LoginResultCallBack.java | 6 ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java | 105 +++++------ ard-work/src/main/java/com/ruoyi/constant/CamPriority.java | 22 + ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueManager.java | 86 +++++++++ ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueTaskExecutor.java | 25 ++ ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/domain/GuidePriorityQueue.java | 17 + ard-work/src/main/java/com/ruoyi/utils/tube/TubeTools.java | 10 8 files changed, 307 insertions(+), 194 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 11c5aac..1ba629f 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 @@ -1,9 +1,12 @@ package com.ruoyi.alarm.globalAlarm.domain; +import lombok.extern.slf4j.Slf4j; + import java.util.Comparator; import java.util.HashMap; import java.util.Map; import java.util.PriorityQueue; +import java.util.concurrent.PriorityBlockingQueue; /** * @Description: 寮曞浼樺厛绾ч槦鍒� @@ -12,11 +15,12 @@ * @Date: 2023骞�06鏈�29鏃�11:18 * @Version: 1.0 **/ +@Slf4j public class GuidePriorityQueue { /** * 鐩告満闃熷垪锛屾瘡涓浉鏈轰竴涓紭鍏堢骇闃熷垪 */ - public static Map<String, PriorityQueue<GuideTask>> cameraQueueMap = new HashMap<>(); + public static Map<String, PriorityBlockingQueue<GuideTask>> cameraQueueMap = new HashMap<>(); /** * 鍒涘缓涓�涓嚜瀹氫箟鐨勬瘮杈冨櫒锛屾牴鎹紭鍏堢骇灞炴�ц繘琛屾瘮杈� @@ -29,4 +33,15 @@ return Comparator; } + /** + * 娴嬭瘯浣跨敤锛氭墦鍗伴槦鍒� + */ + public static void printPriorityQueue() { + for (String cameraId : GuidePriorityQueue.cameraQueueMap.keySet()) { + PriorityBlockingQueue<GuideTask> priorityQueue = GuidePriorityQueue.cameraQueueMap.get(cameraId); + for (GuideTask task : priorityQueue) { + log.info("alarmId:" + task.getAlarmId() + " alarmTime:" + task.getAlarmTime() + " priority:" + task.getPriority() + " num:" + task.getNum() + " cameraId:" + task.getCameraId()); + } + } + } } 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 2fa6745..1a0e990 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 @@ -43,6 +43,7 @@ import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.*; +import java.util.concurrent.PriorityBlockingQueue; import java.util.stream.Collectors; @@ -56,6 +57,7 @@ @Service @Slf4j(topic = "mqtt") public class GlobalAlarmServiceImpl implements IGlobalAlarmService { + //region 渚濊禆娉ㄥ叆 @Resource private ArdAlarmRadarMapper ardAlarmRadarMapper; @Resource @@ -78,6 +80,36 @@ private IHikClientService hikClientService; @Resource private RedisCache redisCache; + @Resource + private QueueManager queueManager; + //endregion + + /** + * @鎻忚堪 鏌ヨ鎵�鏈夋姤璀︾殑褰撳墠鏁伴噺 + * @鍙傛暟 [] + * @杩斿洖鍊� java.util.Map<java.lang.String, java.lang.Integer> + * @鍒涘缓浜� 鍒樿嫃涔� + * @鍒涘缓鏃堕棿 2023/6/13 16:30 + * @淇敼浜哄拰鍏跺畠淇℃伅 + */ + @Override + public Map<String, Object> selectAlarmLogsCount() { + Map<String, Object> map = new HashMap<>(); + Map<String, Integer> countMap = new HashMap<>(); + String refreshTime = configService.selectConfigByKey("refreshTime"); + int count1001 = ardAlarmStealelecMapper.selectCountByStartTime(refreshTime); + countMap.put("1001", count1001); + int count1002 = ardAlarmCameraMapper.selectCountByAlarmTime(refreshTime); + countMap.put("1002", count1002); + int count1003 = ardAlarmRadarMapper.selectCountByAlarmTime(refreshTime, "杩愬姩鐩爣妫�娴�"); + countMap.put("1003", count1003); + int count1004 = ardAlarmRadarMapper.selectCountByAlarmTime(refreshTime, "鐑簮妫�娴�"); + countMap.put("1004", count1004); + int count1014 = ardAlarmTubeMapper.selectCountByAlarmTime(refreshTime); + countMap.put("1014", count1014); + map.put("20000", countMap); + return map; + } /** * @鎻忚堪 鎸夋潯浠舵煡璇㈡姤璀� @@ -174,6 +206,61 @@ } /** + * @鎻忚堪 鍘嗗彶鎶ヨ鏌ヨ + * @鍙傛暟 [command, beginTime, endTime, pageNum, pageSize] + * @杩斿洖鍊� java.lang.Object + * @鍒涘缓浜� 鍒樿嫃涔� + * @鍒涘缓鏃堕棿 2023/6/28 13:30 + * @淇敼浜哄拰鍏跺畠淇℃伅 + */ + @Override + public Object selectAlarmList(Integer command, String beginTime, String endTime, Integer pageNum, Integer pageSize) { + Map<String, Object> params = new HashMap<>(); + params.put("beginTime", beginTime); + params.put("endTime", endTime); + switch (command) { + case 1001: + ArdAlarmStealelec aas = new ArdAlarmStealelec(); + aas.setParams(params); + aas.setPageNum(pageNum); + aas.setPageSize(pageSize); + List<ArdAlarmStealelec> ardAlarmStealelecs = ardAlarmStealelecMapper.selectArdAlarmStealelecList(aas); + return ardAlarmStealelecs; + case 1002: + ArdAlarmCamera aac = new ArdAlarmCamera(); + aac.setParams(params); + aac.setPageNum(pageNum); + aac.setPageSize(pageSize); + List<ArdAlarmCamera> ardAlarmCameras = ardAlarmCameraMapper.selectArdAlarmCameraList(aac); + return ardAlarmCameras; + case 1003: + ArdAlarmRadar aar = new ArdAlarmRadar(); + aar.setParams(params); + aar.setPageNum(pageNum); + aar.setPageSize(pageSize); + aar.setAlarmType("杩愬姩鐩爣妫�娴�"); + List<ArdAlarmRadar> ardAlarmRadar = ardAlarmRadarMapper.selectArdAlarmRadarList(aar); + return ardAlarmRadar; + case 1004: + ArdAlarmRadar aarr = new ArdAlarmRadar(); + aarr.setParams(params); + aarr.setPageNum(pageNum); + aarr.setPageSize(pageSize); + aarr.setAlarmType("鐑簮妫�娴�"); + List<ArdAlarmRadar> ardAlarmRadarr = ardAlarmRadarMapper.selectArdAlarmRadarList(aarr); + return ardAlarmRadarr; + case 1014: + ArdAlarmTube aat = new ArdAlarmTube(); + aat.setParams(params); + aat.setPageNum(pageNum); + aat.setPageSize(pageSize); + List<ArdAlarmTube> ardAlarmTubes = ardAlarmTubeMapper.selectArdAlarmTubeList(aat); + return ardAlarmTubes; + } + return null; + } + + /** * @鎻忚堪 鎸夋潯浠舵洿鏂版煡鐪嬫椂闂� * @鍙傛暟 [condition] * @杩斿洖鍊� java.lang.Object @@ -215,21 +302,19 @@ * @淇敼浜哄拰鍏跺畠淇℃伅 */ @Override -// @Async("alarmExecutor") + @Async("alarmExecutor") public void receiveAlarm(String topic, String message) { try { switch (topic) { case "stealelec": //region 澶勭悊鐩楃數鎶ヨ ArdAlarmStealelec ardAlarmStealelec = JSONObject.parseObject(message, ArdAlarmStealelec.class); - - ArdAlarmStealelec existe = ardAlarmStealelecMapper.selectByPrimaryKey(ardAlarmStealelec.getId()); - if (StringUtils.isNotNull(existe)) { - return; - } - int aas = ardAlarmStealelecMapper.insertArdAlarmStealelec(ardAlarmStealelec); - if (aas > 0) { - log.info("stealelec鍏ュ簱鎴愬姛锛�" + ardAlarmStealelec); + ArdAlarmStealelec isExiste = ardAlarmStealelecMapper.selectByPrimaryKey(ardAlarmStealelec.getId()); + if (StringUtils.isNull(isExiste)) { + int aas = ardAlarmStealelecMapper.insertArdAlarmStealelec(ardAlarmStealelec); + if (aas > 0) { + log.info("stealelec鍏ュ簱鎴愬姛锛�" + ardAlarmStealelec); + } } //endregion break; @@ -258,8 +343,8 @@ if (aat > 0) { log.debug("tube鍏ュ簱鎴愬姛锛�" + ardAlarmTube); String nearbyCamera = getNearbyCamera(new double[]{ardAlarmTube.getLongitude(), ardAlarmTube.getLatitude()}); - if(StringUtils.isNotEmpty(nearbyCamera)) { - addTaskQueue(nearbyCamera, ardAlarmTube.getId(), "sys_tube_leak", ardAlarmTube.getAlarmTime(), 1); + if (StringUtils.isNotEmpty(nearbyCamera)) { + messagesEnqueued(nearbyCamera, ardAlarmTube.getId(), "sys_tube_leak", ardAlarmTube.getAlarmTime(), 1); } } //endregion @@ -273,8 +358,8 @@ if (aac > 0) { log.debug("camera鍏ュ簱鎴愬姛锛�" + ardAlarmCamera); String nearbyCamera = getNearbyCamera(new double[]{ardAlarmCamera.getLongitude(), ardAlarmCamera.getLatitude()}); - if(StringUtils.isNotEmpty(nearbyCamera)) { - addTaskQueue(nearbyCamera, ardAlarmCamera.getId(), "sys_camera", ardAlarmCamera.getAlarmTime(), 1); + if (StringUtils.isNotEmpty(nearbyCamera)) { + messagesEnqueued(nearbyCamera, ardAlarmCamera.getId(), "sys_camera", ardAlarmCamera.getAlarmTime(), 1); } //寮曞褰曞儚 // CameraCmd cmd = new CameraCmd(); @@ -325,7 +410,7 @@ String cameraIdWithTower = ardAlarmRadarMapper.getCameraByRadar(radarAlarmData.getRadarId()); if (StringUtils.isNotNull(cameraIdWithTower) && StringUtils.isNotEmpty(cameraIdWithTower)) { //鍏ラ槦鍒楀緟寮曞 - addTaskQueue(cameraIdWithTower, uuid, alarmType, ardAlarmRadar.getAlarmTime(), 1); + messagesEnqueued(cameraIdWithTower, uuid, alarmType, ardAlarmRadar.getAlarmTime(), 1); } } else { //5鍒嗛挓鍐呮湁寮曞 @@ -341,7 +426,7 @@ String cameraIdWithTower = ardAlarmRadarMapper.getCameraByRadar(radarAlarmData.getRadarId()); if (StringUtils.isNotNull(cameraIdWithTower) && StringUtils.isNotEmpty(cameraIdWithTower)) { //濡傛灉闆疯揪濉斾笂鏈夊厜鐢� - addTaskQueue(cameraIdWithTower, uuid, alarmType, ardAlarmRadar.getAlarmTime(), count); + messagesEnqueued(cameraIdWithTower, uuid, alarmType, ardAlarmRadar.getAlarmTime(), count); } } else { //鏈紩瀵兼湭瓒呰繃3娆★紝鐩存帴鍏ュ簱 @@ -361,21 +446,20 @@ // } } - printPriorityQueue(); //endregion break; } - printPriorityQueue(); + GuidePriorityQueue.printPriorityQueue();//鎵撳嵃闃熷垪 } catch (Exception ex) { log.error("鎺ユ敹鎶ヨ寮傚父:" + ex.getMessage()); } } - /** - * 寮曞浠诲姟鍏ラ槦鏂规硶 - */ - private void addTaskQueue(String cameraId, String alarmId, String alarmType, Date alarmTime, Integer num) { + /** + * 娑堟伅鍏ラ槦 + */ + private void messagesEnqueued (String cameraId, String alarmId, String alarmType, Date alarmTime, Integer num) { GuideTask guideTask = new GuideTask(); guideTask.setCameraId(cameraId); guideTask.setAlarmId(alarmId); @@ -384,23 +468,9 @@ Integer priority = CamPriority.priorityMap.get(alarmType); guideTask.setPriority(priority); guideTask.setNum(num); - - PriorityQueue<GuideTask> priorityQueue = GuidePriorityQueue.cameraQueueMap.get(guideTask.getCameraId()); - priorityQueue.add(guideTask); - } - - /** - * 鎵撳嵃闃熷垪 - */ - private void printPriorityQueue() { - for (String cameraId : GuidePriorityQueue.cameraQueueMap.keySet()) { - log.info("cameraId" + cameraId); - PriorityQueue<GuideTask> priorityQueue = GuidePriorityQueue.cameraQueueMap.get(cameraId); - for (GuideTask task : priorityQueue) { - log.info("alarmId:" + task.getAlarmId() + " alarmTime:" + task.getAlarmTime() + " priority:" + task.getPriority() + " num:" + task.getNum() + " cameraId:" + task.getCameraId()); - } - - } + queueManager.addTaskToQueue(cameraId,guideTask); +// PriorityBlockingQueue<GuideTask> priorityBlockingQueue = GuidePriorityQueue.cameraQueueMap.get(guideTask.getCameraId()); +// priorityBlockingQueue.add(guideTask); } /** @@ -475,7 +545,7 @@ * @鍒涘缓鏃堕棿 2023/6/28 16:33 * @淇敼浜哄拰鍏跺畠淇℃伅 */ - public String alarmToRecord(CameraCmd cmd) { + private String alarmToRecord(CameraCmd cmd) { String url = ""; try { log.debug("寮曞鎴愬姛锛屽皾璇曞綍鍍�"); @@ -497,88 +567,6 @@ log.error("褰曞儚寮傚父:" + ex.getMessage()); } return url; - } - - /** - * @鎻忚堪 鏌ヨ鎵�鏈夋姤璀︾殑褰撳墠鏁伴噺 - * @鍙傛暟 [] - * @杩斿洖鍊� java.util.Map<java.lang.String, java.lang.Integer> - * @鍒涘缓浜� 鍒樿嫃涔� - * @鍒涘缓鏃堕棿 2023/6/13 16:30 - * @淇敼浜哄拰鍏跺畠淇℃伅 - */ - @Override - public Map<String, Object> selectAlarmLogsCount() { - Map<String, Object> map = new HashMap<>(); - Map<String, Integer> countMap = new HashMap<>(); - String refreshTime = configService.selectConfigByKey("refreshTime"); - int count1001 = ardAlarmStealelecMapper.selectCountByStartTime(refreshTime); - countMap.put("1001", count1001); - int count1002 = ardAlarmCameraMapper.selectCountByAlarmTime(refreshTime); - countMap.put("1002", count1002); - int count1003 = ardAlarmRadarMapper.selectCountByAlarmTime(refreshTime, "杩愬姩鐩爣妫�娴�"); - countMap.put("1003", count1003); - int count1004 = ardAlarmRadarMapper.selectCountByAlarmTime(refreshTime, "鐑簮妫�娴�"); - countMap.put("1004", count1004); - int count1014 = ardAlarmTubeMapper.selectCountByAlarmTime(refreshTime); - countMap.put("1014", count1014); - map.put("20000", countMap); - return map; - } - - /** - * @鎻忚堪 鍘嗗彶鎶ヨ鏌ヨ - * @鍙傛暟 [command, beginTime, endTime, pageNum, pageSize] - * @杩斿洖鍊� java.lang.Object - * @鍒涘缓浜� 鍒樿嫃涔� - * @鍒涘缓鏃堕棿 2023/6/28 13:30 - * @淇敼浜哄拰鍏跺畠淇℃伅 - */ - @Override - public Object selectAlarmList(Integer command, String beginTime, String endTime, Integer pageNum, Integer pageSize) { - Map<String, Object> params = new HashMap<>(); - params.put("beginTime", beginTime); - params.put("endTime", endTime); - switch (command) { - case 1001: - ArdAlarmStealelec aas = new ArdAlarmStealelec(); - aas.setParams(params); - aas.setPageNum(pageNum); - aas.setPageSize(pageSize); - List<ArdAlarmStealelec> ardAlarmStealelecs = ardAlarmStealelecMapper.selectArdAlarmStealelecList(aas); - return ardAlarmStealelecs; - case 1002: - ArdAlarmCamera aac = new ArdAlarmCamera(); - aac.setParams(params); - aac.setPageNum(pageNum); - aac.setPageSize(pageSize); - List<ArdAlarmCamera> ardAlarmCameras = ardAlarmCameraMapper.selectArdAlarmCameraList(aac); - return ardAlarmCameras; - case 1003: - ArdAlarmRadar aar = new ArdAlarmRadar(); - aar.setParams(params); - aar.setPageNum(pageNum); - aar.setPageSize(pageSize); - aar.setAlarmType("杩愬姩鐩爣妫�娴�"); - List<ArdAlarmRadar> ardAlarmRadar = ardAlarmRadarMapper.selectArdAlarmRadarList(aar); - return ardAlarmRadar; - case 1004: - ArdAlarmRadar aarr = new ArdAlarmRadar(); - aarr.setParams(params); - aarr.setPageNum(pageNum); - aarr.setPageSize(pageSize); - aarr.setAlarmType("鐑簮妫�娴�"); - List<ArdAlarmRadar> ardAlarmRadarr = ardAlarmRadarMapper.selectArdAlarmRadarList(aarr); - return ardAlarmRadarr; - case 1014: - ArdAlarmTube aat = new ArdAlarmTube(); - aat.setParams(params); - aat.setPageNum(pageNum); - aat.setPageSize(pageSize); - List<ArdAlarmTube> ardAlarmTubes = ardAlarmTubeMapper.selectArdAlarmTubeList(aat); - return ardAlarmTubes; - } - return null; } } 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 new file mode 100644 index 0000000..0703126 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueManager.java @@ -0,0 +1,86 @@ +package com.ruoyi.alarm.globalAlarm.service.impl; + +import com.ruoyi.alarm.globalAlarm.domain.GuidePriorityQueue; +import com.ruoyi.alarm.globalAlarm.domain.GuideTask; +import org.apache.tomcat.util.threads.TaskThread; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.PriorityBlockingQueue; + +/** + * @ClassName QueueManager + * @Description: + * @Author 鍒樿嫃涔� + * @Date 2023/6/29 21:09 + * @Version 1.0 + */ + +@Component +public class QueueManager { + + @Autowired + private QueueTaskExecutor taskExecutor; + private Map<String, TaskThread> threadMap = new ConcurrentHashMap<>(); + + private static class TaskThread { + private Thread thread; + private GuideTask currentTask; + + public TaskThread(Thread thread, GuideTask currentTask) { + this.thread = thread; + this.currentTask = currentTask; + } + + public Thread getThread() { + return thread; + } + + public GuideTask getCurrentTask() { + return currentTask; + } + + public void setCurrentTask(GuideTask task) { + this.currentTask = task; + } + } + + public void addTaskToQueue(String queueName, GuideTask task) { + PriorityBlockingQueue<GuideTask> guideTaskQueue = GuidePriorityQueue.cameraQueueMap.get(queueName); + guideTaskQueue.add(task); + TaskThread currentTaskThread = threadMap.get(queueName); + if (currentTaskThread != null && task.getPriority() > currentTaskThread.getCurrentTask().getPriority()) { + currentTaskThread.getThread().interrupt(); + } + + // Start a new thread if no thread is currently running for the queue + if (currentTaskThread == null || !currentTaskThread.getThread().isAlive()) { + Thread newThread = createThread(queueName, guideTaskQueue); + threadMap.put(queueName, new TaskThread(newThread, task)); + newThread.start(); + } + } + + private Thread createThread(String queueName, PriorityBlockingQueue<GuideTask> queue) { + return new Thread(() -> { + while (!Thread.currentThread().isInterrupted()) { + try { + GuideTask task = queue.take(); + taskExecutor.processTask(task); + GuidePriorityQueue.printPriorityQueue(); + // Update the current task for the thread + TaskThread currentTaskThread = threadMap.get(queueName); + if (currentTaskThread != null) { + currentTaskThread.setCurrentTask(task); + } + } catch (InterruptedException e) { + // Thread interrupted, exit the loop + Thread.currentThread().interrupt(); + } + } + }, queueName); + } +} 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 new file mode 100644 index 0000000..553da24 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueTaskExecutor.java @@ -0,0 +1,25 @@ +package com.ruoyi.alarm.globalAlarm.service.impl; + +/** + * @ClassName QueueTaskExecutor + * @Description: + * @Author 鍒樿嫃涔� + * @Date 2023/6/29 21:10 + * @Version 1.0 + */ + +import com.ruoyi.alarm.globalAlarm.domain.GuideTask; +import org.springframework.stereotype.Component; + +@Component +public class QueueTaskExecutor { + public void processTask(GuideTask guideTask) { + System.out.println("Executing task: " + guideTask.getAlarmId()); + try { + Thread.sleep(30000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + System.out.println("finished task: " + guideTask.getAlarmId()); + } +} 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 a9315b5..f997ff0 100644 --- a/ard-work/src/main/java/com/ruoyi/constant/CamPriority.java +++ b/ard-work/src/main/java/com/ruoyi/constant/CamPriority.java @@ -1,7 +1,12 @@ 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: 鐩告満鎺у埗浼樺厛绾� @@ -10,15 +15,18 @@ * @Date: 2023骞�05鏈�23鏃�11:25 * @Version: 1.0 **/ +@Slf4j public class CamPriority { - public static Map<String,Integer> priorityMap=new HashMap<>(); + public static Map<String, Integer> priorityMap = new HashMap<>(); + static { - priorityMap.put("sys_radar_fire",999);//闆疯揪闃茬伀鎶ヨ - priorityMap.put("sys_radar_move",999);//闆疯揪绉诲姩鎶ヨ - priorityMap.put("sys_tube_leak",998);//绠$嚎娉勯湶鎶ヨ - priorityMap.put("sys_camera",997);//閫氱敤鍏夌數鎶ヨ - priorityMap.put("sys_steal_elec",996);//鐩楃數鎶ヨ - priorityMap.put("sys_patrol_inspect",1);//宸℃ + priorityMap.put("sys_radar_fire", 999);//闆疯揪闃茬伀鎶ヨ + priorityMap.put("sys_radar_move", 999);//闆疯揪绉诲姩鎶ヨ + priorityMap.put("sys_tube_leak", 998);//绠$嚎娉勯湶鎶ヨ + priorityMap.put("sys_camera", 997);//閫氱敤鍏夌數鎶ヨ + priorityMap.put("sys_steal_elec", 996);//鐩楃數鎶ヨ + priorityMap.put("sys_patrol_inspect", 1);//宸℃ } + } diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/LoginResultCallBack.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/LoginResultCallBack.java index a4d1d6c..4ea42ef 100644 --- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/LoginResultCallBack.java +++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/LoginResultCallBack.java @@ -13,6 +13,7 @@ import javax.annotation.Resource; import java.util.Comparator; import java.util.PriorityQueue; +import java.util.concurrent.PriorityBlockingQueue; /** * @Description: 寮傛鐧诲綍鍥炶皟 @@ -25,6 +26,7 @@ public class LoginResultCallBack implements HCNetSDK.FLoginResultCallBack { private ArdCameras camera; + public LoginResultCallBack(ArdCameras camera) { this.camera = camera; } @@ -41,8 +43,8 @@ camera.setChannel((int) lpDeviceinfo.byChanNum); //鍒涘缓寮曞闃熷垪 Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator(); - PriorityQueue<GuideTask> priorityQueue=new PriorityQueue<>(comparator); - GuidePriorityQueue.cameraQueueMap.put(camera.getId(),priorityQueue); + PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000,comparator); + GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue); } else { log.info(camera.getIp() + ":" + camera.getPort() + "鐧诲綍澶辫触"); camera.setChannel(0); diff --git a/ard-work/src/main/java/com/ruoyi/utils/tube/TubeTools.java b/ard-work/src/main/java/com/ruoyi/utils/tube/TubeTools.java index efa4764..9f633bd 100644 --- a/ard-work/src/main/java/com/ruoyi/utils/tube/TubeTools.java +++ b/ard-work/src/main/java/com/ruoyi/utils/tube/TubeTools.java @@ -53,12 +53,10 @@ } /** - * @鎻忚堪 璁$畻鍧愭爣 - * @鍙傛暟 [ardTubesDetails, alarmPointDistance] - * @杩斿洖鍊� void - * @鍒涘缓浜� 鍒樿嫃涔� - * @鍒涘缓鏃堕棿 2023/6/8 14:38 - * @淇敼浜哄拰鍏跺畠淇℃伅 + * 璁$畻鍧愭爣 + * + * 鍒樿嫃涔� + * 2023/6/8 14:38 */ public static GeoPoint CalculateCoordinates(List<ArdTubesDetails> ardTubesDetails, Integer alarmPointDistance) { try { diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java index 00f2c57..60a46f4 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java @@ -9,15 +9,15 @@ import java.time.ZoneId; import java.time.ZonedDateTime; import java.util.Date; + import org.apache.commons.lang3.time.DateFormatUtils; /** * 鏃堕棿宸ュ叿绫� - * + * * @author ruoyi */ -public class DateUtils extends org.apache.commons.lang3.time.DateUtils -{ +public class DateUtils extends org.apache.commons.lang3.time.DateUtils { public static String YYYY = "yyyy"; public static String YYYY_MM = "yyyy-MM"; @@ -31,65 +31,54 @@ public static String HH_MM_SS = "HH:mm:ss"; private static String[] parsePatterns = { - "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", + "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"}; /** * 鑾峰彇褰撳墠Date鍨嬫棩鏈� - * + * * @return Date() 褰撳墠鏃ユ湡 */ - public static Date getNowDate() - { + public static Date getNowDate() { return new Date(); } /** * 鑾峰彇褰撳墠鏃ユ湡, 榛樿鏍煎紡涓簓yyy-MM-dd - * + * * @return String */ - public static String getDate() - { + public static String getDate() { return dateTimeNow(YYYY_MM_DD); } - public static final String getTime() - { + public static final String getTime() { return dateTimeNow(YYYY_MM_DD_HH_MM_SS); } - public static final String dateTimeNow() - { + public static final String dateTimeNow() { return dateTimeNow(YYYYMMDDHHMMSS); } public static final String dateTimeNowMS() { return dateTimeNow(YYYY_MM_DD_HH_MM_SS_MS); } - public static final String dateTimeNow(final String format) - { + public static final String dateTimeNow(final String format) { return parseDateToStr(format, new Date()); } - public static final String dateTime(final Date date) - { + public static final String dateTime(final Date date) { return parseDateToStr(YYYY_MM_DD, date); } - public static final String parseDateToStr(final String format, final Date date) - { + public static final String parseDateToStr(final String format, final Date date) { return new SimpleDateFormat(format).format(date); } - public static final Date dateTime(final String format, final String ts) - { - try - { + public static final Date dateTime(final String format, final String ts) { + try { return new SimpleDateFormat(format).parse(ts); - } - catch (ParseException e) - { + } catch (ParseException e) { throw new RuntimeException(e); } } @@ -97,8 +86,7 @@ /** * 鏃ユ湡璺緞 鍗冲勾/鏈�/鏃� 濡�2018/08/08 */ - public static final String datePath() - { + public static final String datePath() { Date now = new Date(); return DateFormatUtils.format(now, "yyyy/MM/dd"); } @@ -106,8 +94,7 @@ /** * 鏃ユ湡璺緞 鍗冲勾/鏈�/鏃� 濡�20180808 */ - public static final String dateTime() - { + public static final String dateTime() { Date now = new Date(); return DateFormatUtils.format(now, "yyyyMMdd"); } @@ -115,18 +102,13 @@ /** * 鏃ユ湡鍨嬪瓧绗︿覆杞寲涓烘棩鏈� 鏍煎紡 */ - public static Date parseDate(Object str) - { - if (str == null) - { + public static Date parseDate(Object str) { + if (str == null) { return null; } - try - { + try { return parseDate(str.toString(), parsePatterns); - } - catch (ParseException e) - { + } catch (ParseException e) { return null; } } @@ -134,8 +116,7 @@ /** * 鑾峰彇鏈嶅姟鍣ㄥ惎鍔ㄦ椂闂� */ - public static Date getServerStartDate() - { + public static Date getServerStartDate() { long time = ManagementFactory.getRuntimeMXBean().getStartTime(); return new Date(time); } @@ -143,16 +124,14 @@ /** * 璁$畻鐩稿樊澶╂暟 */ - public static int differentDaysByMillisecond(Date date1, Date date2) - { + public static int differentDaysByMillisecond(Date date1, Date date2) { return Math.abs((int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24))); } /** * 璁$畻涓や釜鏃堕棿宸� */ - public static String getDatePoor(Date endDate, Date nowDate) - { + public static String getDatePoor(Date endDate, Date nowDate) { long nd = 1000 * 24 * 60 * 60; long nh = 1000 * 60 * 60; long nm = 1000 * 60; @@ -173,8 +152,7 @@ /** * 澧炲姞 LocalDateTime ==> Date */ - public static Date toDate(LocalDateTime temporalAccessor) - { + public static Date toDate(LocalDateTime temporalAccessor) { ZonedDateTime zdt = temporalAccessor.atZone(ZoneId.systemDefault()); return Date.from(zdt.toInstant()); } @@ -182,31 +160,29 @@ /** * 澧炲姞 LocalDate ==> Date */ - public static Date toDate(LocalDate temporalAccessor) - { + public static Date toDate(LocalDate temporalAccessor) { LocalDateTime localDateTime = LocalDateTime.of(temporalAccessor, LocalTime.of(0, 0, 0)); ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault()); return Date.from(zdt.toInstant()); } /*鍒ゆ柇鏃堕棿鏄惁鍦ㄦ椂闂村唴*/ - public static boolean TimeCompare(String startT,String endT) - { + public static boolean TimeCompare(String startT, String endT) { LocalTime startTime = LocalTime.parse(startT); // 寮�濮嬫椂闂� LocalTime endTime = LocalTime.parse(endT); // 缁撴潫鏃堕棿 LocalTime currentTime = LocalTime.now(); // 褰撳墠鏃堕棿 // 鍒ゆ柇褰撳墠鏃堕棿鏄惁鍦ㄦ椂闂村尯闂村唴 if (currentTime.isAfter(startTime) && currentTime.isBefore(endTime)) { - // System.out.println("褰撳墠鏃堕棿鍦ㄦ椂闂村尯闂村唴"); + // System.out.println("褰撳墠鏃堕棿鍦ㄦ椂闂村尯闂村唴"); return true; } else { - // System.out.println("褰撳墠鏃堕棿涓嶅湪鏃堕棿鍖洪棿鍐�"); + // System.out.println("褰撳墠鏃堕棿涓嶅湪鏃堕棿鍖洪棿鍐�"); return false; } } - public static boolean TimeCompare(Date startT,Date endT) - { - Date current=new Date(); + + public static boolean TimeCompare(Date startT, Date endT) { + Date current = new Date(); // 鍒ゆ柇褰撳墠鏃堕棿鏄惁鍦ㄦ椂闂村尯闂村唴 if (current.after(startT) && current.before(endT)) { // System.out.println("褰撳墠鏃堕棿鍦ㄦ椂闂村尯闂村唴"); @@ -216,4 +192,19 @@ return false; } } + + /** + * 璁$畻涓や釜鏃堕棿绉掔殑宸� + */ + public static long getSecDatePoor(Date endDate, Date nowDate) { + long nd = 1000 * 24 * 60 * 60; + long nh = 1000 * 60 * 60; + long nm = 1000 * 60; + long ns = 1000; + // 鑾峰緱涓や釜鏃堕棿鐨勬绉掓椂闂村樊寮� + long diff = endDate.getTime() - nowDate.getTime(); + // 璁$畻宸灏戠//杈撳嚭缁撴灉 + long sec = diff % nd % nh % nm / ns; + return sec; + } } -- Gitblit v1.9.3