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&lt;=#{alarmTime}
           and view_time is null
     </update>
     <insert id="insert" parameterType="ArdAlarmStealelec">

--
Gitblit v1.9.3