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