ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/domain/GuidePriorityQueue.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueManager.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueTaskExecutor.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ard-work/src/main/java/com/ruoyi/constant/CamPriority.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/LoginResultCallBack.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ard-work/src/main/java/com/ruoyi/utils/tube/TubeTools.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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()); } } } } 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; } } 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); } } 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()); } } 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);//å·¡æ£ } } 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); 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 { 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(); } /** * è·åå½åæ¥æ, é»è®¤æ ¼å¼ä¸ºyyyy-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; } }