From 39004678a36c17fcea0674b54675a76c2d3b0528 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期五, 19 四月 2024 16:29:39 +0800
Subject: [PATCH] 增加雷达报警和视频巡检引导类型上报

---
 ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java |  128 +++++++++++++++++++++++++++++++-----------
 1 files changed, 93 insertions(+), 35 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java b/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java
index 73831f6..1b0fdff 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java
@@ -30,7 +30,10 @@
 import com.ruoyi.alarmpoints.tube.mapper.ArdTubesDetailsMapper;
 import com.ruoyi.alarmpoints.tube.mapper.ArdTubesMapper;
 import com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWell;
+import com.ruoyi.alarmpoints.well.domain.ArdWellGuideCamera;
 import com.ruoyi.alarmpoints.well.mapper.ArdAlarmpointsWellMapper;
+import com.ruoyi.alarmpoints.well.mapper.ArdWellGuideCameraMapper;
+import com.ruoyi.common.config.ARDConfig;
 import com.ruoyi.common.constant.CacheConstants;
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.utils.ConfigUtils;
@@ -48,6 +51,7 @@
 import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.utils.tube.GeoPoint;
 import com.ruoyi.utils.tube.TubeTools;
+import com.ruoyi.utils.websocket.util.WebSocketUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
@@ -86,8 +90,6 @@
     private ArdAlarmAccessMapper ardAlarmAccessMapper;
     @Resource
     private ArdAlarmExternalMapper ardAlarmExternalMapper;
-    //@Resource
-    //private ArdAlarmRadarMapper ardAlarmRadarMapper;
     @Resource
     private ArdAlarmRadarMoveMapper ardAlarmRadarMoveMapper;
     @Resource
@@ -116,6 +118,9 @@
     private QueueHandler queueHandler;
     @Resource
     private ArdEquipRadarMapper ardEquipRadarMapper;
+    @Resource
+    private ArdWellGuideCameraMapper ardWellGuideCameraMapper;
+
     //endregion
 
     /**
@@ -777,25 +782,28 @@
      * @淇敼浜哄拰鍏跺畠淇℃伅
      */
     @Override
-    public Object selectAlarmList(Integer command, String beginTime, String endTime, Integer pageNum, Integer pageSize) {
+    public Object selectAlarmList(String name, Integer command, String beginTime, String endTime, Integer pageNum, Integer pageSize) {
         Map<String, Object> params = new HashMap<>();
         params.put("beginTime", beginTime);
         params.put("endTime", endTime);
         switch (command) {
             case 1001:
                 ArdAlarmStealelec aas = new ArdAlarmStealelec();
+                aas.setName(name);
                 aas.setParams(params);
                 aas.setPageNum(pageNum);
                 aas.setPageSize(pageSize);
                 return ardAlarmStealelecMapper.selectArdAlarmStealelecList(aas);
             case 1002:
                 ArdAlarmCamera aac = new ArdAlarmCamera();
+                aac.setCameraName(name);
                 aac.setParams(params);
                 aac.setPageNum(pageNum);
                 aac.setPageSize(pageSize);
                 return ardAlarmCameraMapper.selectArdAlarmCameraList(aac);
             case 1003:
                 ArdAlarmRadarMove aarm = new ArdAlarmRadarMove();
+                aarm.setName(name);
                 aarm.setParams(params);
                 aarm.setPageNum(pageNum);
                 aarm.setPageSize(pageSize);
@@ -803,6 +811,7 @@
                 return ardAlarmRadarMoveMapper.selectArdAlarmRadarMoveList(aarm);
             case 1004:
                 ArdAlarmRadarFire aarf = new ArdAlarmRadarFire();
+                aarf.setName(name);
                 aarf.setParams(params);
                 aarf.setPageNum(pageNum);
                 aarf.setPageSize(pageSize);
@@ -810,6 +819,7 @@
                 return ardAlarmRadarFireMapper.selectArdAlarmRadarFireList(aarf);
             case 1007:
                 ArdAlarmRadarPump aarp = new ArdAlarmRadarPump();
+                aarp.setName(name);
                 aarp.setParams(params);
                 aarp.setPageNum(pageNum);
                 aarp.setPageSize(pageSize);
@@ -817,6 +827,7 @@
                 return ardAlarmRadarPumpMapper.selectArdAlarmRadarPumpList(aarp);
             case 1005:
                 ArdAlarmExternal aae = new ArdAlarmExternal();
+                aae.setAlarmName(name);
                 aae.setParams(params);
                 aae.setPageNum(pageNum);
                 aae.setPageSize(pageSize);
@@ -824,6 +835,7 @@
                 return ardAlarmExternalMapper.selectArdAlarmExternalList(aae);
             case 1006:
                 ArdAlarmAccess aaa = new ArdAlarmAccess();
+                aaa.setAcsName(name);
                 aaa.setParams(params);
                 aaa.setPageNum(pageNum);
                 aaa.setPageSize(pageSize);
@@ -831,30 +843,35 @@
                 return ardAlarmAccessMapper.selectArdAlarmAccessList(aaa);
             case 1009:
                 ArdAlarmApponekey aaak = new ArdAlarmApponekey();
+                aaak.setName(name);
                 aaak.setParams(params);
                 aaak.setPageNum(pageNum);
                 aaak.setPageSize(pageSize);
                 return ardAlarmApponekeyMapper.selectArdAlarmApponekeyList(aaak);
             case 1010:
                 ArdAlarmWall aaw = new ArdAlarmWall();
+                aaw.setWallName(name);
                 aaw.setParams(params);
                 aaw.setPageNum(pageNum);
                 aaw.setPageSize(pageSize);
                 return ardAlarmWallMapper.selectArdAlarmWallList(aaw);
             case 1012:
                 ArdAlarmDigitization3 aad3 = new ArdAlarmDigitization3();
+                aad3.setfName(name);
                 aad3.setParams(params);
                 aad3.setPageNum(pageNum);
                 aad3.setPageSize(pageSize);
                 return ardAlarmDigitization3Mapper.selectArdAlarmDigitization3List(aad3);
             case 1014:
                 ArdAlarmTube aat = new ArdAlarmTube();
+                aat.setTubeName(name);
                 aat.setParams(params);
                 aat.setPageNum(pageNum);
                 aat.setPageSize(pageSize);
                 return ardAlarmTubeMapper.selectArdAlarmTubeList(aat);
             case 1015:
                 ArdAlarmSuperBrain aasb = new ArdAlarmSuperBrain();
+                aasb.setAlarmName(name);
                 aasb.setParams(params);
                 aasb.setPageNum(pageNum);
                 aasb.setPageSize(pageSize);
@@ -1034,15 +1051,15 @@
                         if (StringUtils.isNull(longitude) || StringUtils.isNull(latitude)) {
                             return;
                         }
-                        double[] coordinate = new double[]{longitude, latitude};
-                        String cameraId = getCameraByNear(new double[]{ardAlarmTube.getLongitude(), ardAlarmTube.getLatitude()});
+                        GuidePoint guidePoint = new GuidePoint().setLongitude(longitude).setLatitude(latitude);
+                        String cameraId = getCameraByNear(guidePoint);
                         if (StringUtils.isNotEmpty(cameraId)) {
                             GuideDataDto guideDataDto = new GuideDataDto()
-                                    .setAlarmId(cameraId)
+                                    .setCameraId(cameraId)
                                     .setAlarmId(ardAlarmTube.getId())
                                     .setAlarmType("sys_tube_leak")
                                     .setReceiveTime(ardAlarmTube.getCreateTime())
-                                    .setTargetPosition(coordinate);
+                                    .setTargetPosition(guidePoint);
                             messagesEnqueued(guideDataDto);
                         }
                         //endregion
@@ -1070,8 +1087,11 @@
                         String alarmpointName = ardAlarmRadar.getName();//鍏磋叮鐐瑰悕绉�
                         ArdAlarmpointsWell well = ardAlarmpointsWellMapper.selectArdAlarmpointsWellByWellId(alarmpointName);
                         if (well == null) {
-                            String path=System.getProperty("user.dir") + File.separator +"noExistWell.txt";
-                            writeStringToFile(alarmpointName,path);
+                            Map<String, Object> map = new HashMap<>();
+                            map.put("80000", alarmpointName);
+                            WebSocketUtils.sendMessageAll(map);
+                            String filePath = ARDConfig.getDownloadPath() + "noExistWell.txt";
+                            writeStringToFile(alarmpointName, filePath);
                             continue;
                         }
 
@@ -1136,11 +1156,17 @@
                     //澶栬仈闃插尯鍚嶇О灏辨槸鍏磋叮鐐癸紝鏌ュ叴瓒g偣鍧愭爣
                     String defenseName = ardAlarmExternal.getDefenseName();
                     ArdAlarmpointsWell well = ardAlarmpointsWellMapper.selectArdAlarmpointsWellByWellId(defenseName);
-
-                    if (StringUtils.isNotNull(well)) {
-                        ardAlarmExternal.setLongitude(well.getLongitude());
-                        ardAlarmExternal.setLatitude(well.getLatitude());
+                    if (well == null) {
+                        Map<String, Object> map = new HashMap<>();
+                        map.put("80000", defenseName);
+                        WebSocketUtils.sendMessageAll(map);
+                        String filePath = ARDConfig.getDownloadPath() + "noExistWell.txt";
+                        writeStringToFile(defenseName, filePath);
+                        return;
                     }
+
+                    ardAlarmExternal.setLongitude(well.getLongitude());
+                    ardAlarmExternal.setLatitude(well.getLatitude());
                     int aae = ardAlarmExternalMapper.insertArdAlarmExternal(ardAlarmExternal);
                     if (aae > 0) {
                         log.debug("external鍏ュ簱鎴愬姛锛�" + ardAlarmExternal);
@@ -1148,15 +1174,16 @@
                         if (StringUtils.isNull(ardAlarmExternal.getLongitude()) || StringUtils.isNull(ardAlarmExternal.getLatitude())) {
                             return;
                         }
-                        double[] coordinate = new double[]{ardAlarmExternal.getLongitude(), ardAlarmExternal.getLatitude()};//寮曞鍧愭爣
-                        String cameraId = getCameraByNear(coordinate);//鏈�杩戠浉鏈篒D
+                        GuidePoint guidePoint = new GuidePoint().setLongitude(ardAlarmExternal.getLongitude()).setLatitude(ardAlarmExternal.getLatitude());
+                        //寮曞鍧愭爣
+                        String cameraId = getCameraByNear(guidePoint);//鏈�杩戠浉鏈篒D
                         if (StringUtils.isNotEmpty(cameraId)) {
                             GuideDataDto guideDataDto = new GuideDataDto()
-                                    .setAlarmId(cameraId)
+                                    .setCameraId(cameraId)
                                     .setAlarmId(ardAlarmExternal.getId())
                                     .setAlarmType("sys_external")
                                     .setReceiveTime(ardAlarmExternal.getCreateTime())
-                                    .setTargetPosition(coordinate)
+                                    .setTargetPosition(guidePoint)
                                     .setWellId(well.getId());
                             messagesEnqueued(guideDataDto);
                         }
@@ -1186,15 +1213,15 @@
                         if (StringUtils.isNull(ardAlarmAccess.getLongitude()) || StringUtils.isNull(ardAlarmAccess.getLatitude())) {
                             return;
                         }
-                        double[] coordinate = new double[]{ardAlarmAccess.getLongitude(), ardAlarmAccess.getLatitude()};//寮曞鍧愭爣
-                        String cameraId = getCameraByNear(coordinate);//鏈�杩戠浉鏈篒D
+                        GuidePoint guidePoint = new GuidePoint().setLongitude(ardAlarmAccess.getLongitude()).setLatitude(ardAlarmAccess.getLatitude());//寮曞鍧愭爣
+                        String cameraId = getCameraByNear(guidePoint);//鏈�杩戠浉鏈篒D
                         if (StringUtils.isNotEmpty(cameraId)) {
                             GuideDataDto guideDataDto = new GuideDataDto()
-                                    .setAlarmId(cameraId)
+                                    .setCameraId(cameraId)
                                     .setAlarmId(ardAlarmAccess.getId())
                                     .setAlarmType("sys_external")
                                     .setReceiveTime(ardAlarmAccess.getCreateTime())
-                                    .setTargetPosition(coordinate);
+                                    .setTargetPosition(guidePoint);
                             messagesEnqueued(guideDataDto);
                         }
                         //endregion
@@ -1263,6 +1290,10 @@
             }
             GuideTask guideTask = new GuideTask();
             guideTask.setCameraId(cameraId);//鐩告満ID
+            guideTask.setIsGuidePTZ(guideDataDto.getIsGuidePTZ());
+            if (guideTask.getIsGuidePTZ()) {
+                guideTask.setTargetPTZ(guideDataDto.getGuidePTZ());
+            }
             String alarmType = guideDataDto.getAlarmType();
             switch (alarmType) {
                 case "杩愬姩鐩爣妫�娴�":
@@ -1317,7 +1348,7 @@
     /**
      * 鑾峰彇闄勮繎寮�鍚姤璀﹀紩瀵煎姛鑳藉厜鐢�
      */
-    private String getCameraByNear(double[] targetPosition) {
+    private String getCameraByNear(GuidePoint guidePoint) {
         String minDistanceCameraId = "";
         try {
             //鑾峰彇鎵�鏈夊ぇ鍏夌數
@@ -1330,6 +1361,7 @@
                     continue;
                 }
                 double[] camPosition = new double[]{camera.getLongitude(), camera.getLatitude()};
+                double[] targetPosition = new double[]{guidePoint.getLongitude(), guidePoint.getLatitude()};
                 double distance = GisUtil.getDistance(targetPosition, camPosition);
                 if (distance != 0.0 && distance <= camera.getCamMaxVisibleDistance()) {
                     distanceMap.put(camera.getId(), distance);
@@ -1357,15 +1389,37 @@
 
     //鑾峰彇鐩告満寮曞鍏ラ槦
     private void getCameraGuideToQueue(GuideDataDto guideDataDto) {
-        //鑾峰彇闆疯揪鎵�鍦ㄥ涓婄殑澶у厜鐢�
-        ArdCameras cameraWithTower = ardEquipRadarMapper.getCameraByRadar(guideDataDto.getRadarId());
-        if (StringUtils.isNotNull(cameraWithTower)) {
-            log.debug("鑾峰彇鍒伴浄杈惧涓婄殑鍏夌數:" + cameraWithTower.getId());
-            //濡傛灉闆疯揪濉斾笂鏈夊厜鐢�
-            guideDataDto.setCameraId(cameraWithTower.getId());
+        //鑾峰彇鍏磋叮鐐瑰叧鑱旂殑鐩告満
+        ArdAlarmpointsWell well = ardAlarmpointsWellMapper.selectArdAlarmpointsWellByWellId(guideDataDto.getWellId());
+        ArdWellGuideCamera ardWellGuideCamera = new ArdWellGuideCamera();
+        ardWellGuideCamera.setWellId(well.getId());
+        List<ArdWellGuideCamera> ardWellGuideCameras = ardWellGuideCameraMapper.selectArdWellGuideCameraList(ardWellGuideCamera);
+        if (ardWellGuideCameras.size() > 0) {
+            //浼樺厛鑾峰彇浜曞叧鑱旂浉鏈虹殑棰勭疆浣�
+            ardWellGuideCamera = ardWellGuideCameras.get(0);
+            guideDataDto.setIsGuidePTZ(true);
+            guideDataDto.setCameraId(ardWellGuideCamera.getCameraId());
+            guideDataDto.setGuidePTZ(new GuidePTZ()
+                    .setP1(ardWellGuideCamera.getP1())
+                    .setT1(ardWellGuideCamera.getT1())
+                    .setZ1(ardWellGuideCamera.getZ1())
+                    .setP2(ardWellGuideCamera.getP2())
+                    .setT2(ardWellGuideCamera.getT2())
+                    .setZ2(ardWellGuideCamera.getZ2())
+            );
             messagesEnqueued(guideDataDto);
         } else {
-            log.debug("鏈幏鍙栧埌闆疯揪濉斾笂鐨勫厜鐢�,鏃犳硶寮曞");
+            //鑾峰彇闆疯揪鎵�鍦ㄥ涓婄殑澶у厜鐢�
+            ArdCameras cameraWithTower = ardEquipRadarMapper.getCameraByRadar(guideDataDto.getRadarId());
+            if (StringUtils.isNotNull(cameraWithTower)) {
+                log.debug("鑾峰彇鍒伴浄杈惧涓婄殑鍏夌數:" + cameraWithTower.getId());
+                //濡傛灉闆疯揪濉斾笂鏈夊厜鐢�
+                guideDataDto.setIsGuidePTZ(false);
+                guideDataDto.setCameraId(cameraWithTower.getId());
+                messagesEnqueued(guideDataDto);
+            } else {
+                log.debug("鏈幏鍙栧埌闆疯揪濉斾笂鐨勫厜鐢�,鏃犳硶寮曞");
+            }
         }
     }
 
@@ -1380,7 +1434,9 @@
             log.debug("鍧愭爣涓虹┖涓嶅紩瀵�");
             return;
         }
-        double[] coordinate = new double[]{ardAlarmRadarMove.getLongitude(), ardAlarmRadarMove.getLatitude()};//鎶ヨ鍧愭爣
+        GuidePoint guidePoint = new GuidePoint().setLongitude(ardAlarmRadarMove.getLongitude())
+                .setLatitude(ardAlarmRadarMove.getLatitude());
+        //鎶ヨ鍧愭爣
         //寮曞鍏ラ槦
         GuideDataDto guideDataDto = new GuideDataDto()
                 .setRadarId(ardAlarmRadarMove.getRadarId())
@@ -1389,7 +1445,7 @@
                 .setAlarmType(ardAlarmRadarMove.getAlarmType())
                 .setReceiveTime(ardAlarmRadarMove.getCreateTime())
                 .setWellId(ardAlarmRadarMove.getWellId())
-                .setTargetPosition(coordinate);
+                .setTargetPosition(guidePoint);
         getCameraGuideToQueue(guideDataDto);//鑾峰彇鐩告満鍏ラ槦
     }
 
@@ -1404,7 +1460,8 @@
             log.debug("鍧愭爣涓虹┖涓嶅紩瀵�");
             return;
         }
-        double[] coordinate = new double[]{ardAlarmRadarFire.getLongitude(), ardAlarmRadarFire.getLatitude()};//鎶ヨ鍧愭爣
+        GuidePoint guidePoint = new GuidePoint().setLongitude(ardAlarmRadarFire.getLongitude())//鎶ヨ鍧愭爣
+                .setLatitude(ardAlarmRadarFire.getLatitude());
         //寮曞鍏ラ槦
         GuideDataDto guideDataDto = new GuideDataDto()
                 .setRadarId(ardAlarmRadarFire.getRadarId())
@@ -1413,7 +1470,7 @@
                 .setAlarmType(ardAlarmRadarFire.getAlarmType())
                 .setReceiveTime(ardAlarmRadarFire.getCreateTime())
                 .setWellId(ardAlarmRadarFire.getWellId())
-                .setTargetPosition(coordinate);
+                .setTargetPosition(guidePoint);
         getCameraGuideToQueue(guideDataDto);//鑾峰彇鐩告満鍏ラ槦
     }
 
@@ -1429,7 +1486,8 @@
             log.debug("鍧愭爣涓虹┖涓嶅紩瀵�");
             return;
         }
-        double[] coordinate = new double[]{ardAlarmRadarPump.getLongitude(), ardAlarmRadarPump.getLatitude()};//鎶ヨ鍧愭爣
+        GuidePoint guidePoint = new GuidePoint().setLongitude(ardAlarmRadarPump.getLongitude())
+                .setLatitude(ardAlarmRadarPump.getLatitude());//鎶ヨ鍧愭爣
         //寮曞鍏ラ槦
         GuideDataDto guideDataDto = new GuideDataDto()
                 .setRadarId(ardAlarmRadarPump.getRadarId())
@@ -1438,7 +1496,7 @@
                 .setAlarmType(ardAlarmRadarPump.getAlarmType())
                 .setReceiveTime(ardAlarmRadarPump.getCreateTime())
                 .setWellId(ardAlarmRadarPump.getWellId())
-                .setTargetPosition(coordinate);
+                .setTargetPosition(guidePoint);
         getCameraGuideToQueue(guideDataDto);//鑾峰彇鐩告満鍏ラ槦
     }
 

--
Gitblit v1.9.3