From 6b68dddf393b885698d48760c8e1972d574e30c4 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期二, 13 六月 2023 15:43:24 +0800
Subject: [PATCH] 增加报警查询接口 增加报警查看接口
---
ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java | 130 ++++++++++++++++
ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/IGlobalAlarmService.java | 7
ard-work/src/main/java/com/ruoyi/alarm/tubeAlarm/service/impl/ArdAlarmTubeServiceImpl.java | 5
ard-work/src/main/java/com/ruoyi/device/camera/domain/ArdCameras.java | 8 +
ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/controller/ardAlarmStealElecController.java | 9 -
ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/service/IStealElecAlarmService.java | 3
ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/service/impl/IStealElecAlarmServiceImpl.java | 4
ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java | 2
ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml | 9 +
ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/domain/GlobalAlarmData.java | 29 +++
/dev/null | 93 -----------
ard-work/src/main/resources/mapper/stealAlarm/ArdAlarmStealelecMapper.xml | 21 ++
ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/domain/GlobalAlarmCondition.java | 4
ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/domain/ArdAlarmStealelec.java | 12 +
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 | 2
ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/controller/GlobalAlarmController.java | 19 +
ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/mapper/ArdAlarmStealelecMapper.java | 5
ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java | 2
ard-work/src/main/java/com/ruoyi/utils/tube/TubeTools.java | 77 +++-----
20 files changed, 271 insertions(+), 172 deletions(-)
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/controller/GlobalAlarmController.java b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/controller/GlobalAlarmController.java
index 09c3417..3675937 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/controller/GlobalAlarmController.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/controller/GlobalAlarmController.java
@@ -1,9 +1,12 @@
package com.ruoyi.alarm.globalAlarm.controller;
import com.ruoyi.alarm.globalAlarm.domain.GlobalAlarmCondition;
+import com.ruoyi.alarm.globalAlarm.domain.GlobalAlarmData;
import com.ruoyi.alarm.globalAlarm.service.IGlobalAlarmService;
import com.ruoyi.common.annotation.Anonymous;
+import com.ruoyi.common.core.domain.AjaxResult;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
@@ -19,7 +22,7 @@
* @Version: 1.0
**/
@RestController
-@RequestMapping("/ardAlarmLog")
+@RequestMapping("/ardAlarm")
@Api(tags = "鎶ヨ鏁版嵁姹囨�绘帴鍙�")
@Anonymous
public class GlobalAlarmController {
@@ -27,10 +30,16 @@
@Resource
IGlobalAlarmService globalAlarmService;
- @PostMapping("/selectAlarmLog")
+ @PostMapping("/List")
@ApiOperation(value = "鎶ヨ鏌ヨ鎺ュ彛",notes = "杩欓噷鍖呭惈浜嗘墍鏈夋姤璀︾被鍨嬬殑鏁版嵁")
- public List<Object> selectAlarmLog(@RequestBody GlobalAlarmCondition condition) {
- List<Object> result = globalAlarmService.selectAlarmLogs(condition);
- return result;
+ public AjaxResult selectAlarmLog(@RequestBody GlobalAlarmCondition condition) {
+ List<GlobalAlarmData> result = globalAlarmService.selectAlarmLogs(condition);
+ return AjaxResult.success(result);
+ }
+ @PostMapping("/view")
+ @ApiOperation(value = "鏌ョ湅鎶ヨ鎺ュ彛",notes = "鎸囧畾鏌ョ湅鏌愪釜鎶ヨ鏁版嵁")
+ public AjaxResult viewAlarmLog(@RequestBody GlobalAlarmCondition condition) {
+ Object result = globalAlarmService.updateAlarmViewTime(condition);
+ return AjaxResult.success(result);
}
}
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/domain/GlobalAlarmCondition.java b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/domain/GlobalAlarmCondition.java
index 19514fc..9e678d8 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/domain/GlobalAlarmCondition.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/domain/GlobalAlarmCondition.java
@@ -1,10 +1,11 @@
package com.ruoyi.alarm.globalAlarm.domain;
-import com.fasterxml.jackson.annotation.JsonInclude;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+
+import java.util.Date;
/**
@@ -20,4 +21,5 @@
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "鎶ヨ绫诲瀷", name = "command", notes = "鐢ㄦ潵鍖哄垎鎶ヨ绫诲瀷鐨勬爣璁�", required = true)
Integer command;
+ String id;
}
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/domain/GlobalAlarmData.java b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/domain/GlobalAlarmData.java
new file mode 100644
index 0000000..82198c8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/domain/GlobalAlarmData.java
@@ -0,0 +1,29 @@
+package com.ruoyi.alarm.globalAlarm.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+/**
+ * @Description: 鍏ㄥ眬鎶ヨ瀹炰綋
+ * @ClassName: GlobalAlarmData
+ * @Author: 鍒樿嫃涔�
+ * @Date: 2023骞�06鏈�13鏃�13:20
+ * @Version: 1.0
+ **/
+@Data
+@Accessors(chain = true)
+public class GlobalAlarmData {
+
+ String id;
+ String name;
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ Date alarmTime;
+ Double longitude;
+ Double latitude;
+ Double altitude;
+ Integer count;//鏈鏁�
+ Integer total;//鎬绘暟
+}
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/GlobalAlarmServiceImpl.java b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/GlobalAlarmServiceImpl.java
deleted file mode 100644
index 5b9a23f..0000000
--- a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/GlobalAlarmServiceImpl.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package com.ruoyi.alarm.globalAlarm.service;
-
-import com.alibaba.fastjson2.JSONObject;
-import com.ruoyi.alarm.globalAlarm.domain.GlobalAlarmCondition;
-import com.ruoyi.alarm.stealAlarm.domain.ArdAlarmStealelec;
-import com.ruoyi.alarm.stealAlarm.mapper.ArdAlarmStealelecMapper;
-import com.ruoyi.alarm.tubeAlarm.domain.ArdAlarmTube;
-import com.ruoyi.alarm.tubeAlarm.mapper.ArdAlarmTubeMapper;
-import com.ruoyi.alarm.tubeAlarm.service.IArdAlarmTubeService;
-import com.ruoyi.alarmpoints.tube.domain.ArdTubes;
-import com.ruoyi.alarmpoints.tube.domain.ArdTubesDetails;
-import com.ruoyi.alarmpoints.tube.mapper.ArdTubesDetailsMapper;
-import com.ruoyi.alarmpoints.tube.mapper.ArdTubesMapper;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.uuid.UUID;
-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.util.ArrayList;
-import java.util.List;
-
-import static jdk.nashorn.internal.runtime.regexp.joni.Config.log;
-
-/**
- * @ClassName: globalAlarmServiceImpl
- * @Description:
- * @Author: Administrator
- * @Date: 2023骞�03鏈�10鏃� 11:03
- * @Version: 1.0
- **/
-@Service
-@Slf4j(topic = "mqtt")
-public class GlobalAlarmServiceImpl implements IGlobalAlarmService {
- @Resource
- ArdAlarmStealelecMapper ardAlarmStealelecMapper;
- @Resource
- IArdAlarmTubeService ardAlarmTubeService;
- @Resource
- ArdTubesMapper ardTubesMapper;
- @Resource
- ArdTubesDetailsMapper ardTubesDetailsMapper;
- @Override
- public List<Object> selectAlarmLogs(GlobalAlarmCondition condition) {
- switch (condition.getCommand()) {
- case 1001:
- List<ArdAlarmStealelec> ardAlarmStealelecs = ardAlarmStealelecMapper.selectHistoryByCondition(condition);
- return new ArrayList<Object>(ardAlarmStealelecs);
- default:
- return null;
- }
- }
-
- @Override
- @Async("alarmExecutor")
- public void receiveAlarm(String topic,String message)
- {
- switch (topic)
- {
- case "tube":
- ArdAlarmTube ardAlarmTube = JSONObject.parseObject(message,ArdAlarmTube.class);
- ardAlarmTube.setId(UUID.randomUUID().toString().replace("-",""));
- ArdTubesDetails atd=new ArdTubesDetails();
- atd.setReelNumber(ardAlarmTube.getTubeId());
- List<ArdTubesDetails> ardTubesDetails = ardTubesDetailsMapper.selectArdTubesDetailsList(atd);
- if(ardTubesDetails.size()>0)
- {
- String tubeId = ardTubesDetails.get(0).getTubeId();
- ArdTubes ardTubes = ardTubesMapper.selectArdTubesById(tubeId);
- ardAlarmTube.setTubeName(ardTubes.getName());
- ardAlarmTube.setColor(ardTubes.getColor());
- ardAlarmTube.setPipeDiameter(ardTubes.getPipeDiameter());
- ardAlarmTube.setTubeType(ardTubes.getType());
- GeoPoint geoPoint = TubeTools.CalculateCoordinates(ardTubesDetails, ardAlarmTube.getPosition());
- if(StringUtils.isNotNull(geoPoint))
- {
- ardAlarmTube.setLongitude(geoPoint.getLongitude());
- ardAlarmTube.setLatitude(geoPoint.getLatitude());
- ardAlarmTube.setAltitude(geoPoint.getAltitude());
- }
- }
- int i = ardAlarmTubeService.insertArdAlarmTube(ardAlarmTube);
- if(i>0)
- {
- log.info("鍏ュ簱鎴愬姛锛�"+ardAlarmTube.toString());
- }
- break;
- }
- }
-}
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/IGlobalAlarmService.java b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/IGlobalAlarmService.java
index d376822..3b138b7 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/IGlobalAlarmService.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/IGlobalAlarmService.java
@@ -1,18 +1,19 @@
package com.ruoyi.alarm.globalAlarm.service;
import com.ruoyi.alarm.globalAlarm.domain.GlobalAlarmCondition;
+import com.ruoyi.alarm.globalAlarm.domain.GlobalAlarmData;
import java.util.List;
/**
* @ClassName: globalAlarmService
- * @Description:
+ * @Description: 鍏ㄥ眬鎶ヨ澶勭悊涓氬姟鎺ュ彛
* @Author: Administrator
* @Date: 2023骞�03鏈�10鏃� 11:02
* @Version: 1.0
**/
public interface IGlobalAlarmService {
- public List<Object> selectAlarmLogs(GlobalAlarmCondition condition);
-
+ public List<GlobalAlarmData> selectAlarmLogs(GlobalAlarmCondition condition);
+ Object updateAlarmViewTime(GlobalAlarmCondition condition);
public void receiveAlarm(String topic,String message);
}
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
new file mode 100644
index 0000000..55ace11
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java
@@ -0,0 +1,130 @@
+package com.ruoyi.alarm.globalAlarm.service.impl;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.ruoyi.alarm.globalAlarm.domain.GlobalAlarmCondition;
+import com.ruoyi.alarm.globalAlarm.domain.GlobalAlarmData;
+import com.ruoyi.alarm.globalAlarm.service.IGlobalAlarmService;
+import com.ruoyi.alarm.stealAlarm.domain.ArdAlarmStealelec;
+import com.ruoyi.alarm.stealAlarm.mapper.ArdAlarmStealelecMapper;
+import com.ruoyi.alarm.tubeAlarm.domain.ArdAlarmTube;
+import com.ruoyi.alarm.tubeAlarm.mapper.ArdAlarmTubeMapper;
+import com.ruoyi.alarm.tubeAlarm.service.IArdAlarmTubeService;
+import com.ruoyi.alarmpoints.tube.domain.ArdTubes;
+import com.ruoyi.alarmpoints.tube.domain.ArdTubesDetails;
+import com.ruoyi.alarmpoints.tube.mapper.ArdTubesDetailsMapper;
+import com.ruoyi.alarmpoints.tube.mapper.ArdTubesMapper;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.uuid.UUID;
+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.apache.poi.ss.formula.functions.T;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import static jdk.nashorn.internal.runtime.regexp.joni.Config.log;
+
+/**
+ * @ClassName: globalAlarmServiceImpl
+ * @Description:
+ * @Author: Administrator
+ * @Date: 2023骞�03鏈�10鏃� 11:03
+ * @Version: 1.0
+ **/
+@Service
+@Slf4j(topic = "mqtt")
+public class GlobalAlarmServiceImpl implements IGlobalAlarmService {
+ @Resource
+ ArdAlarmStealelecMapper ardAlarmStealelecMapper;
+ @Resource
+ IArdAlarmTubeService ardAlarmTubeService;
+ @Resource
+ ArdTubesMapper ardTubesMapper;
+ @Resource
+ ArdTubesDetailsMapper ardTubesDetailsMapper;
+ @Resource
+ private ISysConfigService configService;
+
+ @Override
+ public List<GlobalAlarmData> selectAlarmLogs(GlobalAlarmCondition condition) {
+ String refreshTime = configService.selectConfigByKey("refreshTime");
+ switch (condition.getCommand()) {
+ case 1001:
+ List<ArdAlarmStealelec> ardAlarmStealelecs = ardAlarmStealelecMapper.selectAllByCommandArdAlarmStealelecList(refreshTime);
+ return ardAlarmStealelecs.stream()
+ .map(ardAlarmStealelec -> {
+ GlobalAlarmData globalAlarmData = new GlobalAlarmData()
+ .setId(ardAlarmStealelec.getId())
+ .setName(ardAlarmStealelec.getDescribe())
+ .setAlarmTime(ardAlarmStealelec.getStartTime())
+ .setLongitude(ardAlarmStealelec.getLongitude())
+ .setLatitude(ardAlarmStealelec.getLatitude())
+ .setAltitude(ardAlarmStealelec.getAltitude())
+ .setCount(ardAlarmStealelec.getCount())
+ .setTotal(ardAlarmStealelec.getTotal());
+ return globalAlarmData;
+ })
+ .collect(Collectors.toList());
+ default:
+ return null;
+ }
+ }
+
+ @Override
+ public Object updateAlarmViewTime(GlobalAlarmCondition condition) {
+ SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ switch (condition.getCommand()) {
+ case 1001:
+ String id = condition.getId();
+ ArdAlarmStealelec ardAlarmStealelec = ardAlarmStealelecMapper.selectByPrimaryKey(id);
+ if(StringUtils.isNotNull(ardAlarmStealelec)) {
+ String describe = ardAlarmStealelec.getDescribe();
+ String startTime = fmt.format(ardAlarmStealelec.getStartTime());
+ int i = ardAlarmStealelecMapper.updateViewTimeByDescribe(describe, startTime, DateUtils.getTime());
+ return ardAlarmStealelec;
+ }
+ default: return null;
+ }
+ }
+
+ @Override
+ @Async("alarmExecutor")
+ public void receiveAlarm(String topic, String message) {
+ switch (topic) {
+ case "tube":
+ ArdAlarmTube ardAlarmTube = JSONObject.parseObject(message, ArdAlarmTube.class);
+ ardAlarmTube.setId(UUID.randomUUID().toString().replace("-", ""));
+ ArdTubesDetails atd = new ArdTubesDetails();
+ atd.setReelNumber(ardAlarmTube.getTubeId());
+ List<ArdTubesDetails> ardTubesDetails = ardTubesDetailsMapper.selectArdTubesDetailsList(atd);
+ if (ardTubesDetails.size() > 0) {
+ String tubeId = ardTubesDetails.get(0).getTubeId();
+ ArdTubes ardTubes = ardTubesMapper.selectArdTubesById(tubeId);
+ ardAlarmTube.setTubeName(ardTubes.getName());
+ ardAlarmTube.setColor(ardTubes.getColor());
+ ardAlarmTube.setPipeDiameter(ardTubes.getPipeDiameter());
+ ardAlarmTube.setTubeType(ardTubes.getType());
+ GeoPoint geoPoint = TubeTools.CalculateCoordinates(ardTubesDetails, ardAlarmTube.getPosition());
+ if (StringUtils.isNotNull(geoPoint)) {
+ ardAlarmTube.setLongitude(geoPoint.getLongitude());
+ ardAlarmTube.setLatitude(geoPoint.getLatitude());
+ ardAlarmTube.setAltitude(geoPoint.getAltitude());
+ }
+ }
+ int i = ardAlarmTubeService.insertArdAlarmTube(ardAlarmTube);
+ if (i > 0) {
+ log.info("鍏ュ簱鎴愬姛锛�" + ardAlarmTube.toString());
+ }
+ break;
+ }
+ }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/controller/ardAlarmStealElecController.java b/ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/controller/ardAlarmStealElecController.java
index 1198e5d..4f57655 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/controller/ardAlarmStealElecController.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/controller/ardAlarmStealElecController.java
@@ -20,14 +20,5 @@
@Anonymous
public class ardAlarmStealElecController {
- @Resource
- IStealElecAlarmService IStealElecAlarmService;
- @GetMapping("/updateViewState")
- String updateViewState() {
- String describe = "娉ㄩ噰901鐝璛2-10-3E7";
- String currentTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
- int i = IStealElecAlarmService.updateViewTimeByDescribe(describe, currentTime);
- return "鏇存柊鎴愬姛" + i;
- }
}
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 f5e4b02..e86be98 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
@@ -1,5 +1,6 @@
package com.ruoyi.alarm.stealAlarm.domain;
+import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
@@ -45,11 +46,13 @@
* 鎶ヨ寮�濮嬫椂闂�
*/
@Excel(name = "鎶ヨ寮�濮嬫椂闂�")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date startTime;
/**
* 鎶ヨ缁撴潫鏃堕棿
*/
@Excel(name = "鎶ヨ缁撴潫鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date endTime;
/**
@@ -79,11 +82,16 @@
@Excel(name = "绾害")
private double latitude;
/**
+ * 楂樺眰
+ */
+ @Excel(name = "楂樺眰")
+ private double altitude;
+ /**
* 鎶ヨ鎬绘暟
*/
- private String total;
+ private Integer total;
/**
* 鏈鎶ヨ鏁伴噺
*/
- private String count;
+ private Integer count;
}
\ 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 026bcf4..b16eca7 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
@@ -3,6 +3,8 @@
import com.ruoyi.alarm.globalAlarm.domain.GlobalAlarmCondition;
import com.ruoyi.alarm.stealAlarm.domain.ArdAlarmStealelec;
import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
import java.util.List;
@@ -11,5 +13,6 @@
ArdAlarmStealelec selectByPrimaryKey(String id);
List<ArdAlarmStealelec> selectRealByCondition(@Param("refreshTime")String refreshTime,@Param("deptId")Long deptId);
List<ArdAlarmStealelec> selectHistoryByCondition(GlobalAlarmCondition condition);
- int updateViewTimeByDescribe(@Param("describe")String describe,@Param("viewTime")String viewTime);
+ List<ArdAlarmStealelec> selectAllByCommandArdAlarmStealelecList(@Param("refreshTime")String refreshTime);
+ int updateViewTimeByDescribe(@Param("describe")String describe,@Param("alarmTime") String alarmTime,@Param("viewTime") String viewTime);
}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/service/IStealElecAlarmService.java b/ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/service/IStealElecAlarmService.java
index bd2c4bd..871fd52 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/service/IStealElecAlarmService.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/stealAlarm/service/IStealElecAlarmService.java
@@ -2,6 +2,7 @@
import com.ruoyi.alarm.stealAlarm.domain.ArdAlarmStealelec;
+import java.util.Date;
import java.util.List;
@@ -15,5 +16,5 @@
public interface IStealElecAlarmService {
void getAlarmByApi();
List<ArdAlarmStealelec> getRealAlarm(Long deptId);
- int updateViewTimeByDescribe(String describe,String DirectLE);
+ int updateViewTimeByDescribe(String describe, String alarmTime, String viewTime);
}
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 6b51f1a..21abced 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
@@ -121,7 +121,7 @@
* @淇敼浜哄拰鍏跺畠淇℃伅
*/
@Override
- public int updateViewTimeByDescribe(String describe, String viewTime) {
- return ardAlarmStealelecMapper.updateViewTimeByDescribe(describe, viewTime);
+ public int updateViewTimeByDescribe(String describe, String alarmTime,String viewTime) {
+ return ardAlarmStealelecMapper.updateViewTimeByDescribe(describe,alarmTime, viewTime);
}
}
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/tubeAlarm/service/impl/ArdAlarmTubeServiceImpl.java b/ard-work/src/main/java/com/ruoyi/alarm/tubeAlarm/service/impl/ArdAlarmTubeServiceImpl.java
index 3b07736..be0e464 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/tubeAlarm/service/impl/ArdAlarmTubeServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/tubeAlarm/service/impl/ArdAlarmTubeServiceImpl.java
@@ -4,9 +4,8 @@
import com.ruoyi.alarm.tubeAlarm.mapper.ArdAlarmTubeMapper;
import com.ruoyi.alarm.tubeAlarm.service.IArdAlarmTubeService;
import com.ruoyi.common.utils.DateUtils;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-
+import javax.annotation.Resource;
import java.util.List;
@@ -18,7 +17,7 @@
*/
@Service
public class ArdAlarmTubeServiceImpl implements IArdAlarmTubeService {
- @Autowired
+ @Resource
private ArdAlarmTubeMapper ardAlarmTubeMapper;
/**
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 1102b9f..c2d323a 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
@@ -152,10 +152,18 @@
*/
@Excel(name = "瑙嗗満瑙�")
private Double camFov;
+
+ /**
+ * 鏈�澶у彲瑙嗚窛绂�
+ */
+ @Excel(name = "鏈�澶у彲瑙嗚窛绂�")
+ private String camMaxVisibleDistance;
+
/**
* 鎵�灞炲ID
*/
private String towerId;
+
/**
* 鐧诲綍ID
*/
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 11831aa..8228b63 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
@@ -94,7 +94,7 @@
public @ResponseBody
AjaxResult PTZControlWithSpeed(@RequestBody CameraCmd cmd) {
cmd.setOperator(SecurityUtils.getUserId());
- return toAjax(sdk.PTZControlWithSpeed(cmd));
+ return toAjax(sdk.pTZControlWithSpeed(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 620712e..168f8e5 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
@@ -29,7 +29,7 @@
boolean isOnLine(CameraCmd cmd);
//浜戝彴鎺у埗
- boolean PTZControlWithSpeed(CameraCmd cmd);
+ boolean pTZControlWithSpeed(CameraCmd cmd);
//璁剧疆鑱氱劍鍊�
boolean setFocusPos(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 e2e2290..646c238 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
@@ -267,7 +267,7 @@
*/
@Override
@SdkOperate
- public boolean PTZControlWithSpeed(CameraCmd cmd) {
+ public boolean pTZControlWithSpeed(CameraCmd cmd) {
String cameraId = cmd.getCameraId();
boolean enable = cmd.isEnable();
Integer channelNum = cmd.getChannelNum();
diff --git a/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java b/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java
index 0920641..aa334a5 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java
@@ -1,6 +1,6 @@
package com.ruoyi.utils.mqtt;
-import com.ruoyi.alarm.globalAlarm.service.GlobalAlarmServiceImpl;
+import com.ruoyi.alarm.globalAlarm.service.impl.GlobalAlarmServiceImpl;
import com.ruoyi.common.utils.spring.SpringUtils;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.*;
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 24f018f..1508874 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
@@ -2,6 +2,9 @@
import com.ruoyi.alarmpoints.tube.domain.ArdTubesDetails;
import lombok.extern.slf4j.Slf4j;
+import org.gavaghan.geodesy.Ellipsoid;
+import org.gavaghan.geodesy.GeodeticCalculator;
+import org.gavaghan.geodesy.GlobalCoordinates;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.Comparator;
@@ -20,22 +23,22 @@
public class TubeTools {
public static void main(String[] args) {
// 鍋囪缁欏畾鐨勪笁涓潗鏍囩偣 A銆丅銆丆
- double x1 = 124.939903268;
- double y1 = 46.684520056;
- double x2 = 124.94049634327537;
- double y2 = 46.68442539350505;
- double x3 = 124.940552075;
- double y3 = 46.684416498;
+ GeoPoint pointA = new GeoPoint(124.939903268, 46.684520056, 143.3 - 0.73);
+ GeoPoint pointB = new GeoPoint(124.94034787826001, 46.68444909044429, 144.12232823014708);
+ GeoPoint pointC = new GeoPoint(124.940552075, 46.684416498, 144.5 - 0.81);
- double distance = getDistance(x1, y1, x3, y3);
- log.debug("鎬昏窛绂�:" + distance);
- double distance1 = getDistance(x1, y1, x2, y2);
- log.debug("璺濈璧风偣璺濈:" + distance1);
- double distance2 = getDistance(x2, y2, x3, y3);
- log.debug("璺濈缁堢偣璺濈:" + distance2);
+ double distance = getDistance(pointA, pointC);
+ double diffAC = pointA.getAltitude() - pointC.getAltitude();
+ log.info("AC鎬昏窛绂�:" + distance + " AC楂樺害宸細" + diffAC);
+ double distance1 = getDistance(pointA, pointB);
+ double diffAB = pointA.getAltitude() - pointB.getAltitude();
+ log.info("AB璺濈:" + distance1 + " AB楂樺害宸細" + diffAB);
+ double distance2 = getDistance(pointB, pointC);
+ double diffBC = pointB.getAltitude() - pointC.getAltitude();
+ log.info("BC璺濈:" + distance2 + " BC楂樺害宸細" + diffBC);
// 璁$畻鏂滅巼
- double slope1 = (y2 - y1) / (x2 - x1);
- double slope2 = (y3 - y2) / (x3 - x2);
+ double slope1 = (pointB.getLatitude() - pointA.getLatitude()) / (pointB.getLongitude() - pointA.getLongitude());
+ double slope2 = (pointC.getLatitude() - pointB.getLatitude()) / (pointC.getLongitude() - pointB.getLongitude());
// 璁剧疆鏂滅巼宸�肩殑闃堝��
double threshold = 0.000001;
@@ -57,21 +60,19 @@
* @淇敼浜哄拰鍏跺畠淇℃伅
*/
public static GeoPoint CalculateCoordinates(List<ArdTubesDetails> ardTubesDetails, Integer alarmPointDistance) {
-
try {
Comparator<ArdTubesDetails> comparator = Comparator.comparingInt(person -> Integer.parseInt(person.getInflectionPointNumber())); // 浣跨敤Collections.sort鏂规硶杩涜鎺掑簭
Collections.sort(ardTubesDetails, comparator);
- double x = ardTubesDetails.get(0).getLongitude();
- double y = ardTubesDetails.get(0).getLatitude();
+ GeoPoint point0 = new GeoPoint(ardTubesDetails.get(0).getLongitude(), ardTubesDetails.get(0).getLatitude(), ardTubesDetails.get(0).getAltitude() - ardTubesDetails.get(0).getDepth());
TreeMap<Integer, Double> distanceMap = new TreeMap<>();
TreeMap<Integer, Object> tubeMap = new TreeMap<>();
double distance = 0.0;
for (ArdTubesDetails atd : ardTubesDetails) {
- distance += getDistance(x, y, atd.getLongitude(), atd.getLatitude());
+ GeoPoint point = new GeoPoint(atd.getLongitude(), atd.getLatitude(), atd.getAltitude() - atd.getDepth());
+ distance += getDistance(point, point0);
distanceMap.put(Integer.parseInt(atd.getInflectionPointNumber()), distance);
tubeMap.put(Integer.parseInt(atd.getInflectionPointNumber()), atd);
- x = atd.getLongitude();
- y = atd.getLatitude();
+ point0 = point;
}
Integer num = 0;
double tempDistance = 0.0;
@@ -184,35 +185,19 @@
return angle;
}
- private static final double EARTH_RADIUS = 6378.137; // 6378.137涓哄湴鐞冨崐寰�(鍗曚綅:鍗冪背)
-
/**
* 鏍规嵁缁忕含搴︼紝璁$畻涓ょ偣闂寸殑璺濈
*
- * @param longitude1 绗竴涓偣鐨勭粡搴�
- * @param latitude1 绗竴涓偣鐨勭含搴�
- * @param longitude2 绗簩涓偣鐨勭粡搴�
- * @param latitude2 绗簩涓偣鐨勭含搴�
- * @return 杩斿洖璺濈 鍗曚綅鍗冪背
+ * @param GeoPoint pa 绗竴涓偣
+ * @param GeoPoint pb 绗簩涓偣
+ * @return 杩斿洖璺濈 鍗曚綅绫�
*/
- private static double getDistance(double longitude1, double latitude1, double longitude2, double latitude2) {
- // 绾害
- double lat1 = Math.toRadians(latitude1);
- double lat2 = Math.toRadians(latitude2);
- // 缁忓害
- double lng1 = Math.toRadians(longitude1);
- double lng2 = Math.toRadians(longitude2);
- // 绾害涔嬪樊
- double a = lat1 - lat2;
- // 缁忓害涔嬪樊
- double b = lng1 - lng2;
- // 璁$畻涓ょ偣璺濈鐨勫叕寮�
- double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
- Math.cos(lat1) * Math.cos(lat2) * Math.pow(Math.sin(b / 2), 2)));
- // 寮ч暱涔樺湴鐞冨崐寰�, 杩斿洖鍗曚綅: 鍗冪背
- s = s * EARTH_RADIUS;
- //System.out.println("璺濈"+s);
- return s * 1000;
+ public static GeodeticCalculator geodeticCalculator = new GeodeticCalculator();
+ public static double getDistance(GeoPoint pa, GeoPoint pb) {
+ GlobalCoordinates source = new GlobalCoordinates(pa.getLatitude(), pa.getLongitude());
+ GlobalCoordinates target = new GlobalCoordinates(pb.getLatitude(), pb.getLongitude());
+ double distance = geodeticCalculator.calculateGeodeticCurve(Ellipsoid.WGS84, source, target).getEllipsoidalDistance();
+ double res = Math.sqrt(Math.pow(pa.getAltitude() - pb.getAltitude(), 2) + Math.pow(distance, 2));
+ return res;
}
-
}
diff --git a/ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml b/ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml
index 1f6187e..aa8f3cb 100644
--- a/ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml
+++ b/ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml
@@ -30,6 +30,7 @@
<result property="loginId" column="login_id"/>
<result property="operatorId" column="operator_id"/>
<result property="operatorExpired" column="operator_expired"/>
+ <result property="camMaxVisibleDistance" column="cam_max_visible_distance" />
</resultMap>
<sql id="selectArdCamerasVo">
@@ -56,7 +57,8 @@
c.cam_depth,
c.cam_fov,
c.operator_id,
- c.operator_expired
+ c.operator_expired,
+ c.cam_max_visible_distance
from ard_cameras c
left join sys_dept d on d.dept_id = c.dept_id
left join sys_user u on u.user_id = c.user_id
@@ -89,6 +91,7 @@
<if test="camAspectratio != null ">and c.cam_aspectratio = #{camAspectratio}</if>
<if test="camDepth != null ">and c.cam_depth = #{camDepth}</if>
<if test="camFov != null ">and c.cam_fov = #{camFov}</if>
+ <if test="camMaxVisibleDistance != null ">and c.cam_max_visible_distance = #{camMaxVisibleDistance}</if>
<if test="loginId != null ">and c.login_id = #{loginId}</if>
<!-- 鏁版嵁鑼冨洿杩囨护 -->
${params.dataScope}
@@ -121,6 +124,7 @@
<if test="camAspectratio != null ">and c.cam_aspectratio = #{camAspectratio}</if>
<if test="camDepth != null ">and c.cam_depth = #{camDepth}</if>
<if test="camFov != null ">and c.cam_fov = #{camFov}</if>
+ <if test="camMaxVisibleDistance != null ">and c.cam_max_visible_distance = #{camMaxVisibleDistance}</if>
<if test="loginId != null ">and c.login_id = #{loginId}</if>
</where>
</select>
@@ -152,6 +156,7 @@
<if test="camAspectratio != null">cam_aspectratio,</if>
<if test="camDepth != null">cam_depth,</if>
<if test="camFov != null">cam_fov,</if>
+ <if test="camMaxVisibleDistance != null ">cam_max_visible_distance,</if>
<if test="loginId != null">login_id,</if>
<if test="deptId != null">dept_id,</if>
<if test="userId != null">user_id,</if>
@@ -181,6 +186,7 @@
<if test="camAspectratio != null">#{camAspectratio},</if>
<if test="camDepth != null">#{camDepth},</if>
<if test="camFov != null">#{camFov},</if>
+ <if test="camMaxVisibleDistance != null ">#{camMaxVisibleDistance},</if>
<if test="loginId != null">#{loginId},</if>
<if test="deptId != null">#{deptId},</if>
<if test="userId != null">#{userId},</if>
@@ -213,6 +219,7 @@
<if test="camAspectratio != null">cam_aspectratio = #{camAspectratio},</if>
<if test="camDepth != null">cam_depth = #{camDepth},</if>
<if test="camFov != null">cam_fov = #{camFov},</if>
+ <if test="camMaxVisibleDistance != null ">cam_max_visible_distance = #{camMaxVisibleDistance},</if>
<if test="loginId != null">login_id = #{loginId},</if>
<if test="deptId != null">dept_id = #{deptId},</if>
<if test="userId != null">user_id = #{userId},</if>
diff --git a/ard-work/src/main/resources/mapper/stealAlarm/ArdAlarmStealelecMapper.xml b/ard-work/src/main/resources/mapper/stealAlarm/ArdAlarmStealelecMapper.xml
index 15970a0..bfc4dcf 100644
--- a/ard-work/src/main/resources/mapper/stealAlarm/ArdAlarmStealelecMapper.xml
+++ b/ard-work/src/main/resources/mapper/stealAlarm/ArdAlarmStealelecMapper.xml
@@ -40,6 +40,24 @@
</if>
</where>
</select>
+ <select id="selectAllByCommandArdAlarmStealelecList" resultMap="BaseResultMap">
+ SELECT T.*
+ FROM (
+ SELECT aas.ID,
+ aas.DESCRIBE,
+ aas.start_time,
+ aas.longitude,
+ aas.latitude,
+ aas.altitude,
+ ROW_NUMBER() OVER ( PARTITION BY aas.DESCRIBE ORDER BY aas.start_time DESC ) AS rn, COUNT(CASE WHEN aas.view_time IS NULL THEN 1 END) OVER ( PARTITION BY aas.DESCRIBE ) AS COUNT,
+ COUNT ( aas.start_time ) OVER ( PARTITION BY DESCRIBE ) AS total
+ FROM
+ ard_alarm_stealelec aas
+ WHERE
+ aas.start_time >= ( CURRENT_TIMESTAMP - INTERVAL '%${refreshTime}%' MINUTE )
+ ) T
+ WHERE T.rn = 1
+ </select>
<select id="selectRealByCondition" resultMap="BaseResultMap">
SELECT aas.*, A.COUNT, A.total
FROM (
@@ -61,10 +79,11 @@
LEFT JOIN ard_alarm_stealelec aas ON A.ID = aas.ID
ORDER BY aas.start_time DESC LIMIT 50
</select>
- <update id="updateViewTimeByDescribe" parameterType="java.lang.String">
+ <update id="updateViewTimeByDescribe" parameterType="String">
update ard_alarm_stealelec
set view_time=#{viewTime}
where describe = #{describe}
+ and start_time<=#{alarmTime}
and view_time is null
</update>
<insert id="insert" parameterType="ArdAlarmStealelec">
--
Gitblit v1.9.3