From 4aa86f1386d20c9ad811e2d18b7e56f00b06e25c Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: Thu, 15 Jun 2023 16:51:55 +0800
Subject: [PATCH] 优化
---
ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java | 187 +++++++++++++-------
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/AlarmTask.java | 87 ---------
ard-work/src/main/java/com/ruoyi/utils/tools/ArdTool.java | 2
ard-work/src/main/java/com/ruoyi/device/camera/domain/CameraCmd.java | 2
ard-work/src/main/java/com/ruoyi/inspect/controller/ArdVideoInspectTaskController.java | 3
ard-work/src/main/java/com/ruoyi/utils/tools/GisTool.java | 32 +++
ard-work/src/main/java/com/ruoyi/device/camera/domain/ArdCameras.java | 5
ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/service/impl/IStealElecAlarmServiceImpl.java | 2
ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java | 4
ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTask.java | 2
ruoyi-common/pom.xml | 6
/dev/null | 20 --
ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/domain/ArdAlarmStealelec.java | 5
ard-work/src/main/java/com/ruoyi/constant/CamPriority.java | 21 ++
ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/SdkController.java | 2
ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java | 45 ++--
ruoyi-admin/src/main/resources/logback.xml | 4
ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java | 12
ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java | 6
ard-work/src/main/resources/mapper/alarm/ArdAlarmStealelecMapper.xml | 23 ++
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/SdkOperateAspect.java | 20 +-
ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/mapper/ArdAlarmStealelecMapper.java | 10 +
ard-work/src/main/java/com/ruoyi/utils/tube/TubeTools.java | 6
23 files changed, 277 insertions(+), 229 deletions(-)
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 0405f7a..26b741a 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
@@ -16,21 +16,21 @@
import com.ruoyi.alarmpoints.well.mapper.ArdAlarmpointsWellMapper;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.tools.ArdTool;
+import com.ruoyi.utils.tools.ArdTool;
+import com.ruoyi.utils.tools.GisTool;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.device.camera.domain.ArdCameras;
import com.ruoyi.device.camera.domain.CameraCmd;
import com.ruoyi.device.camera.mapper.ArdCamerasMapper;
import com.ruoyi.device.hiksdk.common.GlobalVariable;
-import com.ruoyi.device.hiksdk.config.MinioClientSingleton;
import com.ruoyi.device.hiksdk.service.IHikClientService;
-import com.ruoyi.device.hiksdk.util.hikSdkUtil.GisUtil;
import com.ruoyi.system.service.ISysConfigService;
import com.ruoyi.utils.tube.GeoPoint;
import com.ruoyi.utils.tube.TubeTools;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
+
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -63,6 +63,14 @@
private ArdCamerasMapper ardCamerasMapper;
@Resource
private IHikClientService hikClientService;
+ /**
+ * @描述 按条件查询报警
+ * @参数 [condition]
+ * @返回值 java.util.List<com.ruoyi.alarm.globalAlarm.domain.GlobalAlarmData>
+ * @创建人 刘苏义
+ * @创建时间 2023/6/15 15:48
+ * @修改人和其它信息
+ */
@Override
public List<GlobalAlarmData> selectAlarmLogs(GlobalAlarmCondition condition) {
String refreshTime = configService.selectConfigByKey("refreshTime");
@@ -103,14 +111,21 @@
return null;
}
}
-
+ /**
+ * @描述 按条件更新查看时间
+ * @参数 [condition]
+ * @返回值 java.lang.Object
+ * @创建人 刘苏义
+ * @创建时间 2023/6/15 15:48
+ * @修改人和其它信息
+ */
@Override
public Object updateAlarmViewTime(GlobalAlarmCondition condition) {
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
switch (condition.getCommand()) {
case 1001:
ArdAlarmStealelec ardAlarmStealelec = ardAlarmStealelecMapper.selectByPrimaryKey(condition.getId());
- if(StringUtils.isNotNull(ardAlarmStealelec)) {
+ if (StringUtils.isNotNull(ardAlarmStealelec)) {
String describe = ardAlarmStealelec.getDescribe();
String startTime = fmt.format(ardAlarmStealelec.getStartTime());
int i = ardAlarmStealelecMapper.updateViewTimeByDescribe(describe, startTime, DateUtils.getTime());
@@ -118,16 +133,24 @@
}
case 1014:
ArdAlarmTube ardAlarmTube = ardAlarmTubeMapper.selectArdAlarmTubeById(condition.getId());
- if(StringUtils.isNotNull(ardAlarmTube)) {
+ if (StringUtils.isNotNull(ardAlarmTube)) {
String tubeId = ardAlarmTube.getTubeId();
String alarmTime = fmt.format(ardAlarmTube.getAlarmTime());
int i = ardAlarmTubeMapper.updateViewTimeByTubeId(tubeId, alarmTime, DateUtils.getTime());
return ardAlarmTube;
}
- default: return null;
+ default:
+ return null;
}
}
-
+ /**
+ * @描述 异步处理接收的报警
+ * @参数 [topic, message]
+ * @返回值 void
+ * @创建人 刘苏义
+ * @创建时间 2023/6/15 15:46
+ * @修改人和其它信息
+ */
@Override
@Async("alarmExecutor")
public void receiveAlarm(String topic, String message) {
@@ -135,23 +158,39 @@
String simpleUUID = IdUtils.simpleUUID();
switch (topic) {
case "stealelec":
+ //region 处理盗电报警
ArdAlarmStealelec ardAlarmStealelec = JSONObject.parseObject(message, ArdAlarmStealelec.class);
ArdAlarmpointsWell well = ardAlarmpointsWellMapper.selectArdAlarmpointsWellByWellId(ardAlarmStealelec.getDescribe());
if (well != null) {
ardAlarmStealelec.setLongitude(well.getLongitude());
ardAlarmStealelec.setLatitude(well.getLatitude());
- ardAlarmStealelec.setDeptId(well.getDeptId());
+ ardAlarmStealelec.setAltitude(well.getAltitude());
}
ArdAlarmStealelec existe = ardAlarmStealelecMapper.selectByPrimaryKey(ardAlarmStealelec.getId());
if (StringUtils.isNotNull(existe)) {
return;
}
- int aas = ardAlarmStealelecMapper.insert(ardAlarmStealelec);
+ int aas = ardAlarmStealelecMapper.insertArdAlarmStealelec(ardAlarmStealelec);
if (aas > 0) {
log.info("stealelec入库成功:" + ardAlarmStealelec);
+ //引导录像
+ CameraCmd cmd = new CameraCmd();
+ cmd.setRecordBucketName("record");
+ cmd.setRecordObjectName("stealelec");
+ cmd.setOperator("sys_steal_elec");
+ cmd.setExpired(30);
+ cmd.setTargetPosition(new double[]{well.getLongitude(), well.getLatitude(), well.getAltitude()});
+ String url = guideCamera(cmd);
+ if (StringUtils.isNotEmpty(url)) {
+ //更新录像
+ ardAlarmStealelec.setRecordUrl(url);
+ ardAlarmStealelecMapper.updateArdAlarmStealelec(ardAlarmStealelec);
+ }
}
+ //endregion
break;
case "tube":
+ //region 处理管线泄露报警
ArdAlarmTube ardAlarmTube = JSONObject.parseObject(message, ArdAlarmTube.class);
ardAlarmTube.setId(simpleUUID);
ArdTubesDetails atd = new ArdTubesDetails();
@@ -173,81 +212,101 @@
}
int aat = ardAlarmTubeMapper.insertArdAlarmTube(ardAlarmTube);
if (aat > 0) {
- log.info("tube入库成功:" + ardAlarmTube);
- //查询所有大光电
- ArdCameras ardCamera = new ArdCameras();
- ardCamera.setGdtype("1");
- List<ArdCameras> ardCamerasList = ardCamerasMapper.selectArdCamerasList(ardCamera);
- //统计所有大光电可视范围内与报警点的距离
- Map<String, Double> distanceMap = new HashMap<>();
- for (ArdCameras camera : ardCamerasList) {
- double distance = GisUtil.getDistance(ardAlarmTube.getLongitude(), ardAlarmTube.getLatitude(), camera.getLongitude(), camera.getLatitude());
- if (distance <= camera.getCamMaxVisibleDistance()) {
- distanceMap.put(camera.getId(), distance);
- }
- }
- if(distanceMap.size()<0)
- {
- return;
- }
- //获取距离字典中最近的一个相机ID
- String minDistanceCameraId = ArdTool.getKeyByMinValue(distanceMap);
- //引导光电
+ log.debug("tube入库成功:" + ardAlarmTube);
+ //引导录像
CameraCmd cmd = new CameraCmd();
- cmd.setCameraId(minDistanceCameraId);
- cmd.setChannelNum(1);
- cmd.setTargetPosition(new double[]{ardAlarmTube.getLongitude(), ardAlarmTube.getLatitude()});
+ cmd.setRecordBucketName("record");
+ cmd.setRecordObjectName("tube");
cmd.setOperator("sys_tube_leak");
cmd.setExpired(30);
- boolean guideRes = hikClientService.setTargetPosition(cmd);
- if(guideRes) {
- hikClientService.controlLock(cmd);
- cmd.setEnable(true);
- cmd.setRecordBucketName("record");
- String time = new SimpleDateFormat("yyyyMMdd").format(new Date());
- String recordName = minDistanceCameraId + "/" + time + "/" + simpleUUID + ".mp4";
- cmd.setRecordObjectName(recordName);
- hikClientService.recordToMinio(cmd);
- GlobalVariable.threadMap.put(minDistanceCameraId,Thread.currentThread().getName());//将相机id与当前处理线程名称绑定
- Thread.sleep(30000);
- String thread = GlobalVariable.threadMap.get(minDistanceCameraId);
- String currentThread = Thread.currentThread().getName();
- //判断相机绑定线程是否是当前线程,如果是,停止录像,如果不是,说明相机被其他线程抢占,不停止录像
- if(thread.equals(currentThread)) {
- cmd.setEnable(false);
- cmd.setUploadMinio(true);
- hikClientService.recordToMinio(cmd);
- //更新录像
- String url = MinioClientSingleton.domainUrl + "/" + cmd.getRecordBucketName() + "/" + recordName;
- ardAlarmTube.setRecordUrl(url);
- ardAlarmTubeMapper.updateArdAlarmTube(ardAlarmTube);
- }
+ cmd.setTargetPosition(new double[]{ardAlarmTube.getLongitude(), ardAlarmTube.getLatitude(), ardAlarmTube.getAltitude()});
+ String url = guideCamera(cmd);
+ //更新录像
+ if (StringUtils.isNotEmpty(url)) {
+ ardAlarmTube.setRecordUrl(url);
+ ardAlarmTubeMapper.updateArdAlarmTube(ardAlarmTube);
}
}
+ //endregion
break;
}
- }
- catch (Exception ex)
- {
- log.error("接收报警异常:"+ex.getMessage());
+ } catch (Exception ex) {
+ log.error("接收报警异常:" + ex.getMessage());
}
}
+
+ /**
+ * @描述 引导最近的大光电指向目标
+ * @参数 [targetPosition]
+ * @返回值 java.lang.String
+ * @创建人 刘苏义
+ * @创建时间 2023/6/15 11:55
+ * @修改人和其它信息
+ */
+ private String guideCamera(CameraCmd cmd) {
+ String url = "";
+ try {
+ //获取所有大光电
+ List<ArdCameras> ardCamerasList = ardCamerasMapper.selectArdCamerasList(new ArdCameras("1"));
+ //统计所有大光电可视范围内与报警点的距离
+ Map<String, Double> distanceMap = new HashMap<>();
+ for (ArdCameras camera : ardCamerasList) {
+ double[] camPosition = new double[]{camera.getLongitude(), camera.getLatitude()};
+ double distance = GisTool.getDistance(cmd.getTargetPosition(), camPosition);
+ if (distance != 0.0 && distance <= camera.getCamMaxVisibleDistance()) {
+ distanceMap.put(camera.getId(), distance);
+ }
+ }
+ if (distanceMap.size() > 0) {
+ log.debug("尝试查找最近光电");
+ //获取距离字典中最近的一个相机ID
+ String minDistanceCameraId = ArdTool.getKeyByMinValue(distanceMap);
+ log.debug("查找到最近光电:"+minDistanceCameraId+",尝试引导");
+ //引导光电
+ cmd.setCameraId(minDistanceCameraId);
+ cmd.setChannelNum(1);
+ boolean guideRes = hikClientService.guideTargetPosition(cmd);
+ if (guideRes) {
+ log.debug("引导成功,尝试录像");
+ hikClientService.controlLock(cmd);//上锁
+ cmd.setEnable(true);//开始录像
+ hikClientService.recordToMinio(cmd);//开始录像
+ GlobalVariable.threadMap.put(minDistanceCameraId, Thread.currentThread().getName());//将相机id与当前处理线程名称绑定
+ Thread.sleep(cmd.getExpired() * 1000);//录像时长
+ String thread = GlobalVariable.threadMap.get(minDistanceCameraId);
+ String currentThread = Thread.currentThread().getName();
+ //判断相机绑定线程是否是当前线程,如果是,停止录像,如果不是,说明相机被其他线程抢占,不停止录像
+ if (thread.equals(currentThread)) {
+ cmd.setEnable(false);//停止录像
+ cmd.setUploadMinio(true);//上传minio
+ url = hikClientService.recordToMinio(cmd);//停止录像返回url
+ }
+ }
+ } else {
+ log.debug("未查找到最近光电");
+ }
+ } catch (Exception ex) {
+ log.error("引导异常:" + ex.getMessage());
+ }
+ return url;
+ }
+
/**
* @描述 查询所有报警的当前数量
* @参数 []
- * @返回值 java.util.Map<java.lang.String,java.lang.Integer>
+ * @返回值 java.util.Map<java.lang.String, java.lang.Integer>
* @创建人 刘苏义
* @创建时间 2023/6/13 16:30
* @修改人和其它信息
*/
@Override
public Map<String, Integer> selectAlarmLogsCount() {
- Map<String, Integer> countMap=new HashMap<>();
+ Map<String, Integer> countMap = new HashMap<>();
String refreshTime = configService.selectConfigByKey("refreshTime");
int count1001 = ardAlarmStealelecMapper.selectCountByStartTime(refreshTime);
- countMap.put("1001",count1001);
+ countMap.put("1001", count1001);
int count1014 = ardAlarmTubeMapper.selectCountByStartTime(refreshTime);
- countMap.put("1014 ",count1014);
+ countMap.put("1014 ", count1014);
return countMap;
}
}
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/domain/ArdAlarmStealelec.java b/ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/domain/ArdAlarmStealelec.java
index e86be98..45a28a8 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/domain/ArdAlarmStealelec.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/domain/ArdAlarmStealelec.java
@@ -94,4 +94,9 @@
* 未读报警数量
*/
private Integer count;
+ /**
+ * 引导录像url
+ */
+ @Excel(name = "引导录像url")
+ private String recordUrl;
}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/mapper/ArdAlarmStealelecMapper.java b/ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/mapper/ArdAlarmStealelecMapper.java
index 0ec906a..0b3b1d9 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/mapper/ArdAlarmStealelecMapper.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/mapper/ArdAlarmStealelecMapper.java
@@ -2,6 +2,7 @@
import com.ruoyi.alarm.globalAlarm.domain.GlobalAlarmCondition;
import com.ruoyi.alarm.stealAlarm.domain.ArdAlarmStealelec;
+import com.ruoyi.alarm.tubeAlarm.domain.ArdAlarmTube;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
@@ -9,11 +10,18 @@
public interface ArdAlarmStealelecMapper{
- int insert(ArdAlarmStealelec record);
+ int insertArdAlarmStealelec(ArdAlarmStealelec record);
ArdAlarmStealelec selectByPrimaryKey(String id);
List<ArdAlarmStealelec> selectRealByCondition(@Param("refreshTime")String refreshTime,@Param("deptId")Long deptId);
List<ArdAlarmStealelec> selectHistoryByCondition(GlobalAlarmCondition condition);
List<ArdAlarmStealelec> selectListAllByCommand(@Param("refreshTime")String refreshTime);
int selectCountByStartTime(@Param("refreshTime")String refreshTime);
int updateViewTimeByDescribe(@Param("describe")String describe,@Param("alarmTime") String alarmTime,@Param("viewTime") String viewTime);
+ /**
+ * 修改防盗电报警
+ *
+ * @param ardAlarmStealelec 防盗电报警
+ * @return 结果
+ */
+ public int updateArdAlarmStealelec(ArdAlarmStealelec ardAlarmStealelec);
}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/service/impl/IStealElecAlarmServiceImpl.java b/ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/service/impl/IStealElecAlarmServiceImpl.java
index 21abced..481a931 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/service/impl/IStealElecAlarmServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/service/impl/IStealElecAlarmServiceImpl.java
@@ -80,7 +80,7 @@
wd.setLatitude(well.getLatitude());
wd.setDeptId(well.getDeptId());
}
- int insert = ardAlarmStealelecMapper.insert(wd);
+ int insert = ardAlarmStealelecMapper.insertArdAlarmStealelec(wd);
if (insert > 0) {
log.info("数据插入成功:" + wd.getId());
} else {
diff --git a/ard-work/src/main/java/com/ruoyi/constant/CamPriority.java b/ard-work/src/main/java/com/ruoyi/constant/CamPriority.java
new file mode 100644
index 0000000..b8e6d9f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/constant/CamPriority.java
@@ -0,0 +1,21 @@
+package com.ruoyi.constant;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @Description: 相机控制优先级
+ * @ClassName: sdkPriority
+ * @Author: 刘苏义
+ * @Date: 2023年05月23日11:25
+ * @Version: 1.0
+ **/
+public class CamPriority {
+ public static Map<String,Object> priorityMap=new HashMap<>();
+ static {
+ priorityMap.put("sys_radar_fire",999);//雷达防火报警
+ priorityMap.put("sys_tube_leak",998);//管线泄露报警
+ priorityMap.put("sys_steal_elec",997);//盗电报警
+ priorityMap.put("sys_patrol_inspect",1);//巡检
+ }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/constant/sdkPriority.java b/ard-work/src/main/java/com/ruoyi/constant/sdkPriority.java
deleted file mode 100644
index 62a9617..0000000
--- a/ard-work/src/main/java/com/ruoyi/constant/sdkPriority.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.ruoyi.constant;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @Description: sdk控制优先级
- * @ClassName: sdkPriority
- * @Author: 刘苏义
- * @Date: 2023年05月23日11:25
- * @Version: 1.0
- **/
-public class sdkPriority {
- public static Map<String,Object> priorityMap=new HashMap<>();
- static {
- priorityMap.put("sys_radar_fire",999);
- priorityMap.put("sys_tube_leak",998);
- priorityMap.put("sys_patrol_inspect",1);
- }
-}
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/domain/ArdCameras.java b/ard-work/src/main/java/com/ruoyi/device/camera/domain/ArdCameras.java
index 379d083..9177d82 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/domain/ArdCameras.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/domain/ArdCameras.java
@@ -20,7 +20,10 @@
@NoArgsConstructor
public class ArdCameras extends BaseEntity {
private static final long serialVersionUID = 1L;
-
+ public ArdCameras(String gdtype)
+ {
+ this.gdtype=gdtype;
+ }
/**
* id
*/
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 7f8f0ec..94e476a 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
@@ -26,8 +26,6 @@
/*PTZ值*/
Map<String,Double>ptzMap;
- /*相机经纬度*/
-// double[] camPosition;
/*目标经纬度*/
double[] targetPosition;
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
index 1b42fc8..4335379 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
@@ -1,7 +1,5 @@
package com.ruoyi.device.camera.service.impl;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -10,9 +8,7 @@
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.common.utils.bean.BeanUtils;
-import com.ruoyi.common.utils.spring.SpringUtils;
-import com.ruoyi.common.utils.tools.ArdTool;
+import com.ruoyi.utils.tools.ArdTool;
import com.ruoyi.device.camera.domain.ArdCameras;
import com.ruoyi.device.camera.mapper.ArdCamerasMapper;
import com.ruoyi.device.camera.service.IArdCamerasService;
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/SdkController.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/SdkController.java
index 8228b63..7727ce8 100644
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/SdkController.java
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/SdkController.java
@@ -170,7 +170,7 @@
@ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum", "cmd.targetPosition"})
public @ResponseBody
AjaxResult setTargetPosition(@RequestBody CameraCmd cmd) {
- return toAjax(sdk.setTargetPosition(cmd));
+ return toAjax(sdk.guideTargetPosition(cmd));
}
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 168f8e5..4cb73e6 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
@@ -88,8 +88,8 @@
String record(CameraCmd cmd);
//手动录像
- void recordToMinio(CameraCmd cmd);
+ String recordToMinio(CameraCmd cmd);
//引导目标位置
- boolean setTargetPosition(CameraCmd cmd);
+ boolean guideTargetPosition(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 46511ca..c488645 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
@@ -6,13 +6,13 @@
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.file.FileUtils;
-import com.ruoyi.constant.sdkPriority;
+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;
import com.ruoyi.device.camera.domain.ArdCameras;
import com.ruoyi.device.hiksdk.config.MinioClientSingleton;
-import com.ruoyi.device.hiksdk.domain.recordInfo;
import com.ruoyi.device.hiksdk.util.hikSdkUtil.GisUtil;
import com.ruoyi.device.hiksdk.util.hikSdkUtil.HCNetSDK;
import com.ruoyi.device.hiksdk.service.IHikClientService;
@@ -24,7 +24,6 @@
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import sun.misc.BASE64Encoder;
@@ -36,7 +35,6 @@
import java.text.SimpleDateFormat;
import java.util.*;
-import static com.ruoyi.device.hiksdk.common.GlobalVariable.threadMap;
import static com.ruoyi.device.hiksdk.util.hikSdkUtil.HCNetSDK.*;
/**
@@ -655,7 +653,7 @@
@Override
@SdkOperate
- public boolean setTargetPosition(CameraCmd cmd) {
+ public boolean guideTargetPosition(CameraCmd cmd) {
String cameraId = cmd.getCameraId();
Integer channelNum = cmd.getChannelNum();
if (!GlobalVariable.loginMap.containsKey(cameraId)) {
@@ -728,18 +726,18 @@
} else {
//如果非本人比较优先级
Integer currentLevel = 0;//当前操作者的优先级
- if (sdkPriority.priorityMap.containsKey(currentOperator)) {
+ if (CamPriority.priorityMap.containsKey(currentOperator)) {
/*当前控制者为系统报警用户*/
- currentLevel = (Integer) sdkPriority.priorityMap.get(currentOperator);
+ currentLevel = (Integer) CamPriority.priorityMap.get(currentOperator);
} else {
/*当前控制者为普通用户*/
SysUser sysUser = sysUserMapper.selectUserById(currentOperator);
currentLevel = sysUser.getCameraPriority();
}
Integer operatorLevel = 0;//获取申请者的优先级
- if (sdkPriority.priorityMap.containsKey(operator)) {
+ if (CamPriority.priorityMap.containsKey(operator)) {
/*包含说明当前申请控制者为系统报警用户*/
- operatorLevel = (Integer) sdkPriority.priorityMap.get(operator);
+ operatorLevel = (Integer) CamPriority.priorityMap.get(operator);
} else {
/*否则申请控制者为当前登录用户*/
LoginUser loginUser = SecurityUtils.getLoginUser();
@@ -1307,14 +1305,14 @@
}
@Override
- public void recordToMinio(CameraCmd cmd) {
+ public String recordToMinio(CameraCmd cmd) {
try {
String cameraId = cmd.getCameraId();
Integer channelNum = cmd.getChannelNum();
String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4");
boolean enable = cmd.isEnable();
if (!GlobalVariable.loginMap.containsKey(cameraId)) {
- return;
+ return "";
}
Integer userId = GlobalVariable.loginMap.get(cameraId);
//强制I帧结构体对象
@@ -1342,40 +1340,47 @@
Integer lRealHandle = GlobalVariable.previewMap.get(cameraId);
hCNetSDK.NET_DVR_StopRealPlay(lRealHandle);
GlobalVariable.previewMap.remove(cameraId);
- log.info("录像停止");
+ log.debug("停止当前录像");
}
int lRealHandle = hCNetSDK.NET_DVR_RealPlay_V40(userId, previewinfo, null, null);
if (lRealHandle == -1) {
log.error("取流失败" + hCNetSDK.NET_DVR_GetLastError());
- return;
+ return "";
}
- log.info("取流成功");
- GlobalVariable.threadMap.put(cameraId,Thread.currentThread().getName());
+ log.debug("取流成功");
+ GlobalVariable.threadMap.put(cameraId, Thread.currentThread().getName());
GlobalVariable.previewMap.put(cameraId, lRealHandle);
if (!hCNetSDK.NET_DVR_SaveRealData_V30(GlobalVariable.previewMap.get(cameraId), 2, path)) {
log.error("保存视频文件到临时文件夹失败 错误码为: " + hCNetSDK.NET_DVR_GetLastError());
- return;
+ return "";
}
- log.info("录像开始");
+ log.debug("录像开始");
} else {
if (GlobalVariable.previewMap.containsKey(cameraId)) {
Integer lRealHandle = GlobalVariable.previewMap.get(cameraId);
hCNetSDK.NET_DVR_StopRealPlay(lRealHandle);
GlobalVariable.previewMap.remove(cameraId);
}
- log.info("录像停止");
+ log.debug("录像停止");
//存入minio
String BucketName = cmd.getRecordBucketName();
String ObjectName = cmd.getRecordObjectName();
String ContentType = "video/MP4";
FileInputStream stream = new FileInputStream(path);
- boolean b = MinioUtils.uploadObject(BucketName, ObjectName, stream, stream.available(), ContentType);
+ String simpleUUID = IdUtils.simpleUUID();
+ String time = new SimpleDateFormat("yyyyMMdd").format(new Date());
+ String recordName = cameraId + "/" + time + "/" + ObjectName +"_"+ simpleUUID + ".mp4";
+ boolean b = MinioUtils.uploadObject(BucketName, recordName, stream, stream.available(), ContentType);
if (b) {
- log.info("上传文件成功!" + MinioClientSingleton.domainUrl + "/" + BucketName + "/" + ObjectName);
+ String url = MinioClientSingleton.domainUrl + "/" + BucketName + "/" + recordName;
+ log.debug("上传文件成功!" + url);
+ return url;
}
}
+ return "";
} catch (Exception ex) {
log.error("录像异常" + ex.getMessage());
+ return "";
}
}
}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/inspect/controller/ArdVideoInspectTaskController.java b/ard-work/src/main/java/com/ruoyi/inspect/controller/ArdVideoInspectTaskController.java
index f86dbfb..fc30265 100644
--- a/ard-work/src/main/java/com/ruoyi/inspect/controller/ArdVideoInspectTaskController.java
+++ b/ard-work/src/main/java/com/ruoyi/inspect/controller/ArdVideoInspectTaskController.java
@@ -3,6 +3,7 @@
import java.util.List;
import javax.servlet.http.HttpServletResponse;
+import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.common.utils.uuid.UUID;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
@@ -87,7 +88,7 @@
@Log(title = "视频巡检任务", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody ArdVideoInspectTask ardVideoInspectTask) {
- ardVideoInspectTask.setId(UUID.randomUUID().toString());
+ ardVideoInspectTask.setId(IdUtils.simpleUUID());
return toAjax(ardVideoInspectTaskService.insertArdVideoInspectTask(ardVideoInspectTask));
}
diff --git a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java
index df4af33..68386dd 100644
--- a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java
@@ -450,7 +450,7 @@
cmd.setTargetPosition(targetPositon);
cmd.setOperator("sys_patrol_inspect");
cmd.setExpired(step.getRecordingTime()*60);
- boolean setTargetPosition = hikClientService.setTargetPosition(cmd);
+ boolean setTargetPosition = hikClientService.guideTargetPosition(cmd);
if (setTargetPosition) {
/*控制相机巡检成功,开始录像*/
cmd.setEnable(true);//启动录像
@@ -503,7 +503,7 @@
cmd.setTargetPosition(targetPositon);
cmd.setOperator("sys_patrol_inspect");
cmd.setExpired(step.getRecordingTime()*60);
- boolean setTargetPosition = hikClientService.setTargetPosition(cmd);
+ boolean setTargetPosition = hikClientService.guideTargetPosition(cmd);
if (!setTargetPosition) {
/*控制失败,当前步骤启动时间置null*/
ardVideoInspectTask.setCurrentStepStartTime("");
@@ -538,13 +538,10 @@
cmd.setChannelNum(channel);
cmd.setOperator("sys_patrol_inspect");
cmd.setEnable(false);//停止录像
- String uuid = UUID.randomUUID().toString().replace("-", "");
- String time = new SimpleDateFormat("yyyyMMdd").format(new Date());
- String recordName = cameraId + "/" + time + "/" + uuid + ".mp4";
cmd.setRecordBucketName("record");
- cmd.setRecordObjectName(recordName);
+ cmd.setRecordObjectName("inspect");
cmd.setUploadMinio(true);
- hikClientService.recordToMinio(cmd);
+ String url= hikClientService.recordToMinio(cmd);
/*插入巡检记录*/
ArdVideoInspectRecord ardVideoInspectRecord = new ArdVideoInspectRecord();
ardVideoInspectRecord.setStepId(step.getId());
@@ -556,7 +553,6 @@
Date currentStepStopDate = DateUtils.addMinutes(currentStepStartDate, step.getRecordingTime());
ardVideoInspectRecord.setStartTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, currentStepStartDate));
ardVideoInspectRecord.setEndTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, currentStepStopDate));
- String url = MinioClientSingleton.domainUrl + "/" + cmd.getRecordBucketName() + "/" + recordName;
ardVideoInspectRecord.setRecordFilePath(url);
ardVideoInspectRecordMapper.insertArdVideoInspectRecord(ardVideoInspectRecord);
}
diff --git a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTask.java b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTask.java
index ebec5a6..65b4e5e 100644
--- a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTask.java
+++ b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/InspectionTask.java
@@ -37,7 +37,7 @@
public void run() {
while (isRunning) {
// 巡检任务的具体逻辑
- log.debug("巡检任务执行中:" + taskId);
+ log.debug("手动巡检任务执行中:" + taskId);
ArdVideoInspectTaskServiceImpl ardVideoInspectTaskService = SpringUtils.getBean(ArdVideoInspectTaskServiceImpl.class);
ardVideoInspectTaskService.manualTaskRun(taskId);
try {
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/tools/ArdTool.java b/ard-work/src/main/java/com/ruoyi/utils/tools/ArdTool.java
similarity index 97%
rename from ruoyi-common/src/main/java/com/ruoyi/common/utils/tools/ArdTool.java
rename to ard-work/src/main/java/com/ruoyi/utils/tools/ArdTool.java
index 627bc7c..9b7516f 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/tools/ArdTool.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/tools/ArdTool.java
@@ -1,4 +1,4 @@
-package com.ruoyi.common.utils.tools;
+package com.ruoyi.utils.tools;
import java.lang.reflect.Field;
import java.util.*;
diff --git a/ard-work/src/main/java/com/ruoyi/utils/tools/GisTool.java b/ard-work/src/main/java/com/ruoyi/utils/tools/GisTool.java
new file mode 100644
index 0000000..661fd91
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/utils/tools/GisTool.java
@@ -0,0 +1,32 @@
+package com.ruoyi.utils.tools;
+
+import org.gavaghan.geodesy.Ellipsoid;
+import org.gavaghan.geodesy.GeodeticCalculator;
+import org.gavaghan.geodesy.GlobalCoordinates;
+
+/**
+ * @Description:
+ * @ClassName: GisTool
+ * @Author: 刘苏义
+ * @Date: 2023年06月15日13:26
+ * @Version: 1.0
+ **/
+public class GisTool {
+ public static GeodeticCalculator geodeticCalculator = new GeodeticCalculator();
+ /**
+ * 根据经纬度,计算两点间的距离
+ *
+ * @param From 第一个点的经纬度
+ * @param To 第二个点的经纬度
+ * @return 返回距离 单位米
+ */
+ public static double getDistance(double[] From, double[] To) {
+ double longitudeFrom = From[0];
+ double latitudeFrom = From[1];
+ double longitudeTo = To[0];
+ double latitudeTo = To[1];
+ GlobalCoordinates source = new GlobalCoordinates(latitudeFrom, longitudeFrom);
+ GlobalCoordinates target = new GlobalCoordinates(latitudeTo, longitudeTo);
+ return geodeticCalculator.calculateGeodeticCurve(Ellipsoid.WGS84, source, target).getEllipsoidalDistance();
+ }
+}
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 1508874..efa4764 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
@@ -1,6 +1,7 @@
package com.ruoyi.utils.tube;
import com.ruoyi.alarmpoints.tube.domain.ArdTubesDetails;
+import com.ruoyi.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.gavaghan.geodesy.Ellipsoid;
import org.gavaghan.geodesy.GeodeticCalculator;
@@ -61,6 +62,11 @@
*/
public static GeoPoint CalculateCoordinates(List<ArdTubesDetails> ardTubesDetails, Integer alarmPointDistance) {
try {
+ if(StringUtils.isNull(alarmPointDistance))
+ {
+ log.debug("报警点距离为空,无法计算坐标");
+ return null;
+ }
Comparator<ArdTubesDetails> comparator = Comparator.comparingInt(person -> Integer.parseInt(person.getInflectionPointNumber())); // 使用Collections.sort方法进行排序
Collections.sort(ardTubesDetails, comparator);
GeoPoint point0 = new GeoPoint(ardTubesDetails.get(0).getLongitude(), ardTubesDetails.get(0).getLatitude(), ardTubesDetails.get(0).getAltitude() - ardTubesDetails.get(0).getDepth());
diff --git a/ard-work/src/main/resources/mapper/alarm/ArdAlarmStealelecMapper.xml b/ard-work/src/main/resources/mapper/alarm/ArdAlarmStealelecMapper.xml
index 25ad3ff..17ba21c 100644
--- a/ard-work/src/main/resources/mapper/alarm/ArdAlarmStealelecMapper.xml
+++ b/ard-work/src/main/resources/mapper/alarm/ArdAlarmStealelecMapper.xml
@@ -16,7 +16,7 @@
<result column="dept_id" property="deptId"/>
</resultMap>
<sql id="Base_Column_List">
- id, name, describe, catalog_text, description, start_time, end_time,view_time,longitude,latitude,create_by,create_time,user_id,dept_id
+ id, name, describe, catalog_text, description, start_time, end_time,view_time,longitude,latitude,altitude,create_by,create_time,user_id,dept_id
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
select
@@ -88,9 +88,26 @@
and start_time<=#{alarmTime}
and view_time is null
</update>
- <insert id="insert" parameterType="ArdAlarmStealelec">
+ <update id="updateArdAlarmStealelec" parameterType="ArdAlarmStealelec">
+ update ard_alarm_stealelec
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="name != null">name = #{name},</if>
+ <if test="describe != null">describe = #{describe},</if>
+ <if test="catalogText != null">catalog_text = #{catalogText},</if>
+ <if test="description != null">description = #{description},</if>
+ <if test="startTime != null">start_time = #{startTime},</if>
+ <if test="endTime != null">end_time = #{endTime},</if>
+ <if test="longitude != null">longitude = #{longitude},</if>
+ <if test="latitude != null">latitude = #{latitude},</if>
+ <if test="altitude != null">altitude = #{altitude},</if>
+ <if test="recordUrl != null">record_url = #{recordUrl},</if>
+ <if test="viewTime != null">view_time = #{viewTime},</if>
+ </trim>
+ where id = #{id}
+ </update>
+ <insert id="insertArdAlarmStealelec" parameterType="ArdAlarmStealelec">
insert into ard_alarm_stealelec(<include refid="Base_Column_List"/>)
values (#{id}, #{name},#{describe},#{catalogText},#{description}, #{startTime}, #{endTime},
- #{viewTime},#{longitude},#{latitude},#{createBy},#{createTime},#{userId},#{deptId})
+ #{viewTime},#{longitude},#{latitude},#{altitude},#{createBy},#{createTime},#{userId},#{deptId})
</insert>
</mapper>
\ 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 7018a83..dcaeff9 100644
--- a/ruoyi-admin/src/main/resources/logback.xml
+++ b/ruoyi-admin/src/main/resources/logback.xml
@@ -188,7 +188,7 @@
<appender-ref ref="minio"/>
</logger>
<!--hiksdk日志打印等级-->
- <logger name="hikSdk" level="INFO">
+ <logger name="hikSdk" level="DEBUG">
<appender-ref ref="hikSdk"/>
</logger>
<!--盗电报警日志打印等级-->
@@ -204,7 +204,7 @@
<appender-ref ref="PatrolInspectionTask"/>
</logger>
<!--mqtt日志打印等级-->
- <logger name="mqtt" level="INFO">
+ <logger name="mqtt" level="DEBUG">
<appender-ref ref="mqtt"/>
</logger>
</configuration>
\ No newline at end of file
diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml
index 745ce49..8a465c4 100644
--- a/ruoyi-common/pom.xml
+++ b/ruoyi-common/pom.xml
@@ -146,6 +146,12 @@
<version>1.6.2</version>
<scope>compile</scope>
</dependency>
+ <dependency>
+ <groupId>org.gavaghan</groupId>
+ <artifactId>geodesy</artifactId>
+ <version>1.1.3</version>
+ <scope>compile</scope>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
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 868981f..3217b04 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
@@ -4,12 +4,11 @@
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.constant.sdkPriority;
+import com.ruoyi.constant.CamPriority;
import com.ruoyi.device.camera.domain.ArdCameras;
import com.ruoyi.device.camera.domain.CameraCmd;
import com.ruoyi.device.camera.service.IArdCamerasService;
import com.ruoyi.system.service.ISysUserService;
-import org.apache.ibatis.jdbc.Null;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
@@ -40,8 +39,8 @@
@Around("dsPointCut()")
public Object around(ProceedingJoinPoint point) throws Throwable {
- Boolean resultMap = dataScopeFilter(point);
- if (resultMap) {
+ Boolean result = controlScopeFilter(point);
+ if (result) {
return point.proceed();
} else {
return false;//代替目标方法的返回值
@@ -53,7 +52,7 @@
*
* @param joinPoint 切点
*/
- public Boolean dataScopeFilter(ProceedingJoinPoint joinPoint) {
+ public Boolean controlScopeFilter(ProceedingJoinPoint joinPoint) {
//获取请求控制相机的命令信息
CameraCmd cmd = (CameraCmd) joinPoint.getArgs()[0];
String operator = cmd.getOperator();//申请者
@@ -84,18 +83,18 @@
} else {
/*当前相机有人控制并且配置了过期时间,先判断优先级,优先级高允许控制*/
Integer currentLevel = 0;//当前相机的操作者的优先级
- if (sdkPriority.priorityMap.containsKey(currentOperator)) {
+ if (CamPriority.priorityMap.containsKey(currentOperator)) {
/*当前控制者为系统报警用户*/
- currentLevel = (Integer) sdkPriority.priorityMap.get(currentOperator);
+ currentLevel = (Integer) CamPriority.priorityMap.get(currentOperator);
} else {
/*当前控制者为普通用户*/
SysUser sysUser = sysUserService.selectUserById(currentOperator);
currentLevel = sysUser.getCameraPriority();
}
Integer operatorLevel = 0;//获取申请者的优先级
- if (sdkPriority.priorityMap.containsKey(operator)) {
+ if (CamPriority.priorityMap.containsKey(operator)) {
/*包含说明当前申请控制者为系统报警用户*/
- operatorLevel = (Integer) sdkPriority.priorityMap.get(operator);
+ operatorLevel = (Integer) CamPriority.priorityMap.get(operator);
} else {
/*否则申请控制者为当前登录用户*/
LoginUser loginUser = SecurityUtils.getLoginUser();
@@ -111,7 +110,6 @@
return true;
} else {
/*如果申请者优先级低,则判断过期时间*/
- Date now = new Date();
if (currentExpired == null) {
/*当前相机未配置过期时间,可控*/
ardCameras.setOperatorId(operator);
@@ -119,7 +117,7 @@
ardCamerasService.updateArdCameras(ardCameras);//更新相机当前控制者
return true;
} else {
- if (now.before(currentExpired)) {
+ if (new Date().before(currentExpired)) {
/*时间未过期,不可控*/
return false;
} else {
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 1b552c7..16d4594 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
@@ -28,98 +28,15 @@
public class AlarmTask {
@Resource
- IStealElecAlarmService IStealElecAlarmService;
- @Resource
- ISysUserService sysUserService;
- @Resource
IGlobalAlarmService globalAlarmService;
-
/**
- * @描述 盗电报警实时推送任务
+ * @描述 定时推送所有报警的点位数量
* @参数 []
* @返回值 void
* @创建人 刘苏义
- * @创建时间 2023/3/6 15:10
+ * @创建时间 2023/6/15 15:43
* @修改人和其它信息
*/
- public void stealElecAlarmPush() {
- log.info("盗电报警推送开始");
- // 开始时间
- long stime = System.currentTimeMillis();
- try {
- for (String userId : ONLINE_USER_SESSIONS.keySet()) {
- SysUser sysUser = sysUserService.selectUserById(userId);
- List<ArdAlarmStealelec> alarms = IStealElecAlarmService.getRealAlarm(sysUser.getDeptId());
- Map<String, Object> map = new HashMap<>();
- List<ArdAlarmStealelec> objs = new ArrayList<>();
- for (ArdAlarmStealelec data : alarms) {
-
- //经纬度火星转84
- if (data.getLongitude() != 0 && data.getLatitude() != 0) {
- double[] wgs84 = LonlatConver.gcj02_To_Wgs84(data.getLongitude(), data.getLatitude());//火星转84
- data.setLongitude(wgs84[0]);
- data.setLatitude(wgs84[1]);
- }
-
- //判断当前数据是否10S内
- Date startTime = data.getStartTime();
- SimpleDateFormat formatTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//HH是24小时制,12小时用hh
- Calendar calendar = Calendar.getInstance();
- //从当前时间减去10秒
- calendar.add(Calendar.MINUTE, -30);
- String currentTime = formatTime.format(calendar.getTime());
- int dateFlag = formatTime.format(startTime).compareTo(currentTime);
- if (dateFlag > 0) {
- objs.add(data);
- }
- data.setId(data.getDescribe() + "&" + data.getCommand());
- }
- if (objs.size() > 0) {
- map.put("obj", objs);
- } else {
- map.put("obj", -1);
- }
- map.put("Command", 8000);
- map.put("count", objs.size());
- map.put("total", alarms.size());
- map.put("data", alarms);
- if (alarms.size() > 0) {
- WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(userId), map);
- }
- }
- } catch (Exception ex) {
- log.error("盗电报警推送异常:" + ex.getMessage());
- }
- // 结束时间
- long etime = System.currentTimeMillis();
- // 计算执行时间
- log.info("盗电报警推送结束:" + (etime - stime) + " 毫秒");
- }
-
- /**
- * @描述 盗电报警api拉取任务
- * @参数 []
- * @返回值 void
- * @创建人 刘苏义
- * @创建时间 2023/2/28 11:51
- * @修改人和其它信息
- */
- public void stealElecAlarmPull() {
- log.info("盗电数据拉取开始");
- // 开始时间
- long stime = System.currentTimeMillis();
- try {
- // String url = "http://iot.zhdk.net:8090/Warning/GetWarning?userName=cy4oil";
- IStealElecAlarmService.getAlarmByApi();
- } catch (Exception ex) {
- log.error("盗电数据拉取异常:" + ex.getMessage());
- }
- // 结束时间
- long etime = System.currentTimeMillis();
- // 计算执行时间
- log.info("盗电数据拉取结束:" + (etime - stime) + " 毫秒");
- }
-
public void globalAlarmCountPush() {
Map<String, Integer> stringIntegerMap = globalAlarmService.selectAlarmLogsCount();
if (ONLINE_USER_SESSIONS.size() > 0) {
--
Gitblit v1.9.3