From 8926d27639d8cb9826941b482926f774bd10dc92 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期二, 16 一月 2024 17:28:48 +0800
Subject: [PATCH] 增加引导井关联相机ptz

---
 ard-work/src/main/resources/mapper/alarmpoints/ArdWellGuideCameraMapper.xml                       |   93 +++
 ard-work/src/main/java/com/ruoyi/alarmpoints/well/controller/ArdWellGuideCameraController.java    |  113 ++++
 ard-work/src/main/java/com/ruoyi/alarmpoints/well/domain/GuideCamera.java                         |   26 +
 ard-work/src/main/java/com/ruoyi/alarmpoints/well/service/IArdWellGuideCameraService.java         |   61 ++
 ard-work/src/main/java/com/ruoyi/utils/tools/ArdTool.java                                         |    2 
 ard-work/src/main/java/com/ruoyi/alarm/global/domain/GuideTask.java                               |    4 
 ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties                                     |    7 
 ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java             |  214 +++++++
 ruoyi-admin/src/main/resources/i18n/messages_en_US.properties                                     |    5 
 ard-work/src/main/java/com/ruoyi/alarmpoints/well/mapper/ArdWellGuideCameraMapper.java            |   61 ++
 ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java                  |   10 
 ard-work/src/main/java/com/ruoyi/alarm/global/domain/GuideDataDto.java                            |    2 
 ard-work/src/main/java/com/ruoyi/alarmpoints/well/service/impl/ArdWellGuideCameraServiceImpl.java |   92 +++
 bin/run.bat                                                                                       |    2 
 ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java            |   39 -
 ard-work/src/main/java/com/ruoyi/alarmpoints/well/domain/ArdAlarmpointsWell.java                  |   22 
 ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/QueueHandler.java                      |   53 -
 ard-work/src/main/java/com/ruoyi/alarmpoints/well/service/impl/ArdAlarmpointsWellServiceImpl.java |  395 +++++++-------
 ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java         |   45 -
 ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java                       |    4 
 ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java                                  |    6 
 ard-work/src/main/java/com/ruoyi/alarm/radar/domain/ArdAlarmRadarMove.java                        |    9 
 ard-work/src/main/resources/mapper/alarmpoints/ArdAlarmpointsWellMapper.xml                       |   44 
 ard-work/src/main/java/com/ruoyi/device/camera/domain/CameraCmd.java                              |    2 
 ard-work/src/main/java/com/ruoyi/alarm/radar/domain/ArdAlarmRadarPump.java                        |    8 
 ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java                |   11 
 /dev/null                                                                                         |   32 -
 ruoyi-admin/src/main/resources/i18n/messages.properties                                           |    5 
 ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java                     |    5 
 ard-work/src/main/java/com/ruoyi/alarmpoints/well/domain/ArdWellGuideCamera.java                  |  149 +++++
 ard-work/src/main/java/com/ruoyi/alarm/radar/domain/ArdAlarmRadarFire.java                        |    9 
 31 files changed, 1,085 insertions(+), 445 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/alarm/global/domain/GuideDataDto.java b/ard-work/src/main/java/com/ruoyi/alarm/global/domain/GuideDataDto.java
index 08bb607..060b9de 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/global/domain/GuideDataDto.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/global/domain/GuideDataDto.java
@@ -21,5 +21,5 @@
     String alarmType;
     Date receiveTime;
     double[] targetPosition;
-    GuidePTZ guidePTZ;
+    String wellId;
 }
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/global/domain/GuidePTZ.java b/ard-work/src/main/java/com/ruoyi/alarm/global/domain/GuidePTZ.java
deleted file mode 100644
index 23d96dd..0000000
--- a/ard-work/src/main/java/com/ruoyi/alarm/global/domain/GuidePTZ.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.ruoyi.alarm.global.domain;
-
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-/**
- * @Description:
- * @ClassName: GuidePTZ
- * @Author: 鍒樿嫃涔�
- * @Date: 2023骞�12鏈�09鏃�10:13:28
- **/
-@Data
-@Accessors(chain = true)
-public class GuidePTZ {
-    /** 寮曞P1鍊� */
-    private Double P1;
-
-    /** 寮曞T1鍊� */
-    private Double T1;
-
-    /** 寮曞Z1鍊� */
-    private Double Z1;
-
-    /** 寮曞P2鍊� */
-    private Double P2;
-
-    /** 寮曞T2鍊� */
-    private Double T2;
-
-    /** 寮曞Z2鍊� */
-    private Double Z2;
-}
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/global/domain/GuideTask.java b/ard-work/src/main/java/com/ruoyi/alarm/global/domain/GuideTask.java
index 2086b80..234adb7 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/global/domain/GuideTask.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/global/domain/GuideTask.java
@@ -45,8 +45,4 @@
      * 寮曞鐩爣缁忕含搴�
      */
     double[] targetPosition;
-
-    /** 寮曞PTZ鍊� */
-    private GuidePTZ guidePTZ;
-
 }
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 7db19e7..ba87d51 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
@@ -1073,13 +1073,6 @@
                         Double longitude = well.getLongitude();
                         Double latitude = well.getLatitude();
                         String targetId = ardAlarmRadar.getTargetId();
-                        GuidePTZ guidePTZ = new GuidePTZ();
-                        guidePTZ.setP1(well.getGuideP1());
-                        guidePTZ.setT1(well.getGuideT1());
-                        guidePTZ.setZ1(well.getGuideZ1());
-                        guidePTZ.setP2(well.getGuideP2());
-                        guidePTZ.setT2(well.getGuideT2());
-                        guidePTZ.setZ2(well.getGuideZ2());
                         switch (ardAlarmRadar.getAlarmType()) {
                             case "杩愬姩鐩爣妫�娴�":
                                 ArdAlarmRadarMove ardAlarmRadarMove = new ArdAlarmRadarMove();
@@ -1093,8 +1086,6 @@
                                 ardAlarmRadarMove.setLatitude(latitude);
                                 ardAlarmRadarMove.setUpdateTime(radarAlarmData.getAlarmTime());
                                 ardAlarmRadarMove.setRadarId(radarId);
-                                ardAlarmRadarMove.setGuidePTZ(guidePTZ);
-                                //
                                 ardAlarmRadarMoveHandler(ardAlarmRadarMove);
                                 break;
                             case "鐑簮妫�娴�":
@@ -1107,10 +1098,8 @@
                                 ardAlarmRadarFire.setAlarmType("鐑簮妫�娴�");
                                 ardAlarmRadarFire.setLongitude(longitude);
                                 ardAlarmRadarFire.setLatitude(latitude);
-                                ardAlarmRadarFire.setGuidePTZ(guidePTZ);
                                 ardAlarmRadarFire.setRadarId(radarId);
                                 ardAlarmRadarFire.setUpdateTime(radarAlarmData.getAlarmTime());
-                                //
                                 ardAlarmRadarFireHandler(ardAlarmRadarFire);
                                 break;
                             case "闆疯揪鎶芥补鏈哄仠鏈�":
@@ -1125,8 +1114,6 @@
                                 ardAlarmRadarPump.setUpdateTime(radarAlarmData.getAlarmTime());
                                 ardAlarmRadarPump.setLongitude(well.getLongitude());
                                 ardAlarmRadarPump.setLatitude(well.getLatitude());
-                                ardAlarmRadarPump.setGuidePTZ(guidePTZ);
-                                //
                                 ardAlarmRadarPumpHandler(ardAlarmRadarPump);
                                 break;
                         }
@@ -1141,16 +1128,10 @@
                     //澶栬仈闃插尯鍚嶇О灏辨槸鍏磋叮鐐癸紝鏌ュ叴瓒g偣鍧愭爣
                     String defenseName = ardAlarmExternal.getDefenseName();
                     ArdAlarmpointsWell well = ardAlarmpointsWellMapper.selectArdAlarmpointsWellByWellId(defenseName);
-                    GuidePTZ guidePTZ = new GuidePTZ();
+
                     if (StringUtils.isNotNull(well)) {
                         ardAlarmExternal.setLongitude(well.getLongitude());
                         ardAlarmExternal.setLatitude(well.getLatitude());
-                        guidePTZ.setP1(well.getGuideP1());
-                        guidePTZ.setT1(well.getGuideT1());
-                        guidePTZ.setZ1(well.getGuideZ1());
-                        guidePTZ.setP2(well.getGuideP2());
-                        guidePTZ.setT2(well.getGuideT2());
-                        guidePTZ.setZ2(well.getGuideZ2());
                     }
                     int aae = ardAlarmExternalMapper.insertArdAlarmExternal(ardAlarmExternal);
                     if (aae > 0) {
@@ -1168,7 +1149,7 @@
                                     .setAlarmType("sys_external")
                                     .setReceiveTime(ardAlarmExternal.getCreateTime())
                                     .setTargetPosition(coordinate)
-                                    .setGuidePTZ(guidePTZ);
+                                    .setWellId(well.getId());
                             messagesEnqueued(guideDataDto);
                         }
                         //endregion
@@ -1298,10 +1279,7 @@
                 return;
             }
             guideTask.setPriority(Integer.valueOf(priority));
-            guideTask.setTargetPosition(guideDataDto.getTargetPosition());//鐩爣缁忕含搴�
-            if (guideDataDto.getGuidePTZ() != null) {
-                guideTask.setGuidePTZ(guideDataDto.getGuidePTZ());//鐩爣PTZ
-            }
+            guideTask.setTargetPosition(guideDataDto.getTargetPosition());//寮曞浜旾D
             //娑堟伅鍏ラ槦
             queueHandler.addTaskToQueue(cameraId, guideTask);
             //鎵撳嵃闃熷垪
@@ -1370,7 +1348,6 @@
 
     //鑾峰彇鐩告満寮曞鍏ラ槦
     private void getCameraGuideToQueue(GuideDataDto guideDataDto) {
-
         //鑾峰彇闆疯揪鎵�鍦ㄥ涓婄殑澶у厜鐢�
         ArdCameras cameraWithTower = ardEquipRadarMapper.getCameraByRadar(guideDataDto.getRadarId());
         if (StringUtils.isNotNull(cameraWithTower)) {
@@ -1402,8 +1379,7 @@
                 .setAlarmId(ardAlarmRadarMove.getId())
                 .setAlarmType(ardAlarmRadarMove.getAlarmType())
                 .setReceiveTime(ardAlarmRadarMove.getCreateTime())
-                .setTargetPosition(coordinate)
-                .setGuidePTZ(ardAlarmRadarMove.getGuidePTZ());
+                .setTargetPosition(coordinate);
         getCameraGuideToQueue(guideDataDto);//鑾峰彇鐩告満鍏ラ槦
     }
 
@@ -1426,8 +1402,7 @@
                 .setAlarmId(ardAlarmRadarFire.getId())
                 .setAlarmType(ardAlarmRadarFire.getAlarmType())
                 .setReceiveTime(ardAlarmRadarFire.getCreateTime())
-                .setTargetPosition(coordinate)
-                .setGuidePTZ(ardAlarmRadarFire.getGuidePTZ());
+                .setTargetPosition(coordinate);
         getCameraGuideToQueue(guideDataDto);//鑾峰彇鐩告満鍏ラ槦
     }
 
@@ -1451,11 +1426,9 @@
                 .setAlarmId(ardAlarmRadarPump.getId())
                 .setAlarmType(ardAlarmRadarPump.getAlarmType())
                 .setReceiveTime(ardAlarmRadarPump.getCreateTime())
-                .setTargetPosition(coordinate)
-                .setGuidePTZ(ardAlarmRadarPump.getGuidePTZ());
+                .setTargetPosition(coordinate);
         getCameraGuideToQueue(guideDataDto);//鑾峰彇鐩告満鍏ラ槦
     }
-
 
     /**
      * 闆疯揪鐩爣绉诲姩鎶ヨ澶勭悊
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/QueueHandler.java b/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/QueueHandler.java
index 1ca7cc7..9d5fe47 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/QueueHandler.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/QueueHandler.java
@@ -15,7 +15,9 @@
 import com.ruoyi.alarm.tube.domain.ArdAlarmTube;
 import com.ruoyi.alarm.tube.service.IArdAlarmTubeService;
 import com.ruoyi.common.constant.CacheConstants;
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.device.camera.domain.ArdCameras;
@@ -58,25 +60,6 @@
         }
         log.debug("鏂颁换鍔″叆闃�:" + task.getAlarmId());
         guideTaskQueue.add(task);
-        /*鑾峰彇璇ョ浉鏈虹殑褰撳墠鎵ц绾跨▼-----寮冪敤*/
-        //TaskThread currentTaskThread = threadMap.get(cameraId);
-        ////濡傛灉闃熷垪褰撳墠绾跨▼姝e湪杩愯锛岃嫢鍏ラ槦浠诲姟浼樺厛绾уぇ浜庡綋鍓嶄换鍔′紭鍏堢骇锛屽垯缁堟褰撳墠绾跨▼
-        //if (currentTaskThread != null){
-        //    if (task.getPriority() > currentTaskThread.getCurrentTask().getPriority()) {
-        //        currentTaskThread.getThread().interrupt();
-        //    }
-        //    if (!currentTaskThread.getThread().isAlive()) {
-        //        Thread newThread = createThread(cameraId, guideTaskQueue);
-        //        threadMap.put(cameraId, new TaskThread(newThread, task));
-        //        newThread.start();
-        //    }
-        //}
-        ////濡傛灉闃熷垪褰撳墠娌℃湁绾跨▼姝e湪杩愯锛屽垯鍚姩鏂扮嚎绋�
-        //else {
-        //    Thread newThread = createThread(cameraId, guideTaskQueue);
-        //    threadMap.put(cameraId, new TaskThread(newThread, task));
-        //    newThread.start();
-        //}
     }
 
     @Async("guideExecutor")
@@ -94,7 +77,7 @@
                 }
                 log.debug("鎵ц鏂颁换鍔�:銆�" + newTask.getAlarmId() + "銆�");
                 log.debug("鍓╀綑浠诲姟鏁�:銆�" + guideTasks.size() + "銆�");
-                // 寮傛澶勭悊浠诲姟锛屽苟鑾峰彇Future
+                // 澶勭悊浠诲姟
                 processTask(newTask);
             }
             try {
@@ -104,7 +87,7 @@
             }
         }
     }
-
+    //寮傛澶勭悊浠诲姟
     public void processTask(GuideTask guideTask) {
         try {
             if (!IsEnableGuide(guideTask.getCameraId())) {
@@ -114,35 +97,15 @@
             CameraCmd cmd = new CameraCmd();
             cmd.setCameraId(guideTask.getCameraId());
             cmd.setChanNo(guideTask.getChanNo());
-            cmd.setTargetPosition(guideTask.getTargetPosition());
             cmd.setOperator(guideTask.getAlarmType());
             cmd.setExpired(30);
             cmd.setRecordBucketName("record");
-            Map<String, Double> ptzMap = new HashMap<>();
-            switch (guideTask.getChanNo()) {
-                case 1:
-                    ptzMap.put("p", guideTask.getGuidePTZ().getP1());
-                    ptzMap.put("t", guideTask.getGuidePTZ().getT1());
-                    ptzMap.put("z", guideTask.getGuidePTZ().getZ1());
-                    break;
-                case 2:
-                    ptzMap.put("p", guideTask.getGuidePTZ().getP2());
-                    ptzMap.put("t", guideTask.getGuidePTZ().getT2());
-                    ptzMap.put("z", guideTask.getGuidePTZ().getZ2());
-                    break;
-            }
-            cmd.setPtzMap(ptzMap);
-            cmd.setRecordObjectName("alarm_" + guideTask.getAlarmId());
+            cmd.setTargetPosition(guideTask.getTargetPosition());
+            cmd.setRecordObjectName("alarmGuide/"+ DateUtils.getDateYYYYMMDD()+"/"+guideTask.getAlarmType()+"/"+guideTask.getAlarmId());
             ICameraSdkService cameraSdkService = SpringUtils.getBean(ICameraSdkService.class);
             log.debug("寮�濮嬪紩瀵�");
-            boolean guideRes = false;
             boolean recordFlag = false;
-            if (cmd.getPtzMap().get("p") != null) {
-                //p鍊煎瓨鍦� 浼樺厛寮曞ptz
-                guideRes = cameraSdkService.setPtz(cmd);
-            } else {
-                guideRes = cameraSdkService.guideTargetPosition(cmd);
-            }
+            boolean guideRes = cameraSdkService.guideTargetPosition(cmd);
             if (guideRes) {
                 log.debug("寮曞鎴愬姛");
                 cameraSdkService.controlLock(cmd);//涓婇攣
@@ -236,4 +199,4 @@
         }
         return enabled;
     }
-}
\ No newline at end of file
+}
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/radar/domain/ArdAlarmRadarFire.java b/ard-work/src/main/java/com/ruoyi/alarm/radar/domain/ArdAlarmRadarFire.java
index 1b1c22c..0f96657 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/radar/domain/ArdAlarmRadarFire.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/radar/domain/ArdAlarmRadarFire.java
@@ -2,16 +2,13 @@
 
 import java.util.Date;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.ruoyi.alarm.global.domain.GuidePTZ;
 import lombok.Data;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.BaseEntity;
 
 /**
  * 闆疯揪闃茬伀鎶ヨ瀵硅薄 ard_alarm_radar_fire
- * 
+ *
  * @author ard
  * @date 2023-09-02
  */
@@ -82,9 +79,5 @@
      * 闆疯揪ID
      */
     private String radarId;
-
-    /** 寮曞PTZ鍊� */
-    private GuidePTZ guidePTZ;
-
 
 }
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/radar/domain/ArdAlarmRadarMove.java b/ard-work/src/main/java/com/ruoyi/alarm/radar/domain/ArdAlarmRadarMove.java
index 871d1d6..2b6e41b 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/radar/domain/ArdAlarmRadarMove.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/radar/domain/ArdAlarmRadarMove.java
@@ -2,16 +2,13 @@
 
 import java.util.Date;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.ruoyi.alarm.global.domain.GuidePTZ;
 import lombok.Data;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.BaseEntity;
 
 /**
  * 闆疯揪绉诲姩鎶ヨ瀵硅薄 ard_alarm_radar_move
- * 
+ *
  * @author ard
  * @date 2023-09-02
  */
@@ -82,9 +79,5 @@
      * 闆疯揪ID
      */
     private String RadarId;
-
-
-    /** 寮曞PTZ鍊� */
-    private GuidePTZ guidePTZ;
 
 }
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/radar/domain/ArdAlarmRadarPump.java b/ard-work/src/main/java/com/ruoyi/alarm/radar/domain/ArdAlarmRadarPump.java
index 07a03c0..ea173b0 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/radar/domain/ArdAlarmRadarPump.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/radar/domain/ArdAlarmRadarPump.java
@@ -3,10 +3,7 @@
 import java.util.Date;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.ruoyi.alarm.global.domain.GuidePTZ;
 import lombok.Data;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.BaseEntity;
 
@@ -106,9 +103,6 @@
      * 闆疯揪ID
      */
     private String radarId;
-    /**
-     * 寮曞PTZ鍊�
-     */
-    private GuidePTZ guidePTZ;
+
 
 }
diff --git a/ard-work/src/main/java/com/ruoyi/alarmpoints/well/controller/ArdWellGuideCameraController.java b/ard-work/src/main/java/com/ruoyi/alarmpoints/well/controller/ArdWellGuideCameraController.java
new file mode 100644
index 0000000..d5a406f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/alarmpoints/well/controller/ArdWellGuideCameraController.java
@@ -0,0 +1,113 @@
+package com.ruoyi.alarmpoints.well.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.alarmpoints.well.domain.ArdWellGuideCamera;
+import com.ruoyi.alarmpoints.well.service.IArdWellGuideCameraService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 浜曞叧鑱斿紩瀵肩浉鏈篊ontroller
+ *
+ * @author ard
+ * @date 2024-01-15
+ */
+@Api(tags = "浜曞叧鑱斿紩瀵肩浉鏈烘帴鍙�")
+@RestController
+@RequestMapping("/well/guidecamera")
+public class ArdWellGuideCameraController extends BaseController
+{
+    @Autowired
+    private IArdWellGuideCameraService ardWellGuideCameraService;
+
+    /**
+     * 鏌ヨ浜曞叧鑱斿紩瀵肩浉鏈哄垪琛�
+     */
+    @ApiOperation("鏌ヨ浜曞叧鑱斿紩瀵肩浉鏈哄垪琛�")
+    @PreAuthorize("@ss.hasPermi('well:guidecamera:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(ArdWellGuideCamera ardWellGuideCamera)
+    {
+        startPage();
+        List<ArdWellGuideCamera> list = ardWellGuideCameraService.selectArdWellGuideCameraList(ardWellGuideCamera);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭浜曞叧鑱斿紩瀵肩浉鏈哄垪琛�
+     */
+    @PreAuthorize("@ss.hasPermi('well:guidecamera:export')")
+    @Log(title = "浜曞叧鑱斿紩瀵肩浉鏈�", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ArdWellGuideCamera ardWellGuideCamera)
+    {
+        List<ArdWellGuideCamera> list = ardWellGuideCameraService.selectArdWellGuideCameraList(ardWellGuideCamera);
+        ExcelUtil<ArdWellGuideCamera> util = new ExcelUtil<ArdWellGuideCamera>(ArdWellGuideCamera.class);
+        util.exportExcel(response, list, "浜曞叧鑱斿紩瀵肩浉鏈烘暟鎹�");
+    }
+
+    /**
+     * 鑾峰彇浜曞叧鑱斿紩瀵肩浉鏈鸿缁嗕俊鎭�
+     */
+    @ApiOperation("鑾峰彇浜曞叧鑱斿紩瀵肩浉鏈鸿缁嗕俊鎭�")
+    @PreAuthorize("@ss.hasPermi('well:guidecamera:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id)
+    {
+        return success(ardWellGuideCameraService.selectArdWellGuideCameraById(id));
+    }
+
+    /**
+     * 鏂板浜曞叧鑱斿紩瀵肩浉鏈�
+     */
+    @ApiOperation("鏂板浜曞叧鑱斿紩瀵肩浉鏈�")
+    @PreAuthorize("@ss.hasPermi('well:guidecamera:add')")
+    @Log(title = "浜曞叧鑱斿紩瀵肩浉鏈�", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ArdWellGuideCamera ardWellGuideCamera)
+    {
+        return toAjax(ardWellGuideCameraService.insertArdWellGuideCamera(ardWellGuideCamera));
+    }
+
+    /**
+     * 淇敼浜曞叧鑱斿紩瀵肩浉鏈�
+     */
+    @ApiOperation("淇敼浜曞叧鑱斿紩瀵肩浉鏈�")
+    @PreAuthorize("@ss.hasPermi('well:guidecamera:edit')")
+    @Log(title = "浜曞叧鑱斿紩瀵肩浉鏈�", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ArdWellGuideCamera ardWellGuideCamera)
+    {
+        return toAjax(ardWellGuideCameraService.updateArdWellGuideCamera(ardWellGuideCamera));
+    }
+
+    /**
+     * 鍒犻櫎浜曞叧鑱斿紩瀵肩浉鏈�
+     */
+    @ApiOperation("鍒犻櫎浜曞叧鑱斿紩瀵肩浉鏈�")
+    @PreAuthorize("@ss.hasPermi('well:guidecamera:remove')")
+    @Log(title = "浜曞叧鑱斿紩瀵肩浉鏈�", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids)
+    {
+        return toAjax(ardWellGuideCameraService.deleteArdWellGuideCameraByIds(ids));
+    }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/alarmpoints/well/domain/ArdAlarmpointsWell.java b/ard-work/src/main/java/com/ruoyi/alarmpoints/well/domain/ArdAlarmpointsWell.java
index a734150..b587a8a 100644
--- a/ard-work/src/main/java/com/ruoyi/alarmpoints/well/domain/ArdAlarmpointsWell.java
+++ b/ard-work/src/main/java/com/ruoyi/alarmpoints/well/domain/ArdAlarmpointsWell.java
@@ -1,6 +1,7 @@
 package com.ruoyi.alarmpoints.well.domain;
 
 import java.util.Date;
+import java.util.List;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
@@ -14,7 +15,7 @@
 
 /**
  * 浜曠鐞嗗璞� ard_alarmpoints_well
- * 
+ *
  * @author 鍒樿嫃涔�
  * @date 2023-03-07
  */
@@ -98,26 +99,11 @@
     /** 鐢ㄦ埛id */
     private String userId;
 
-    /** 寮曞P1鍊� */
-    private Double guideP1;
-
-    /** 寮曞T1鍊� */
-    private Double guideT1;
-
-    /** 寮曞Z1鍊� */
-    private Double guideZ1;
-
-    /** 寮曞P2鍊� */
-    private Double guideP2;
-
-    /** 寮曞T2鍊� */
-    private Double guideT2;
-
-    /** 寮曞Z2鍊� */
-    private Double guideZ2;
 
     @TableField(exist = false)
     private String type;
 
+    /** 鍏宠仈寮曞鐩告満鍒楄〃 */
+    List<ArdWellGuideCamera> ardWellGuideCameraList;
 
 }
diff --git a/ard-work/src/main/java/com/ruoyi/alarmpoints/well/domain/ArdWellGuideCamera.java b/ard-work/src/main/java/com/ruoyi/alarmpoints/well/domain/ArdWellGuideCamera.java
new file mode 100644
index 0000000..92b5a29
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/alarmpoints/well/domain/ArdWellGuideCamera.java
@@ -0,0 +1,149 @@
+package com.ruoyi.alarmpoints.well.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 浜曞叧鑱斿紩瀵肩浉鏈哄璞� ard_well_guide_camera
+ *
+ * @author ard
+ * @date 2024-01-15
+ */
+public class ArdWellGuideCamera extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 涓婚敭 */
+    private String id;
+
+    /** 鐩告満ID */
+    @Excel(name = "鐩告満ID")
+    private String cameraId;
+
+    /** 鍙鍏塸鍊� */
+    @Excel(name = "鍙鍏塸鍊�")
+    private Double p1;
+
+    /** 鍙鍏塼鍊� */
+    @Excel(name = "鍙鍏塼鍊�")
+    private Double t1;
+
+    /** 鍙鍏墇鍊� */
+    @Excel(name = "鍙鍏墇鍊�")
+    private Double z1;
+
+    /** 鐑孩澶杙鍊� */
+    @Excel(name = "鐑孩澶杙鍊�")
+    private Double p2;
+
+    /** 鐑孩澶杢鍊� */
+    @Excel(name = "鐑孩澶杢鍊�")
+    private Double t2;
+
+    /** 鐑孩澶杬鍊� */
+    @Excel(name = "鐑孩澶杬鍊�")
+    private Double z2;
+
+    /** 浜旾D */
+    @Excel(name = "浜旾D")
+    private String wellId;
+
+    public void setId(String id)
+    {
+        this.id = id;
+    }
+
+    public String getId()
+    {
+        return id;
+    }
+    public void setCameraId(String cameraId)
+    {
+        this.cameraId = cameraId;
+    }
+
+    public String getCameraId()
+    {
+        return cameraId;
+    }
+    public void setP1(Double p1)
+    {
+        this.p1 = p1;
+    }
+
+    public Double getP1()
+    {
+        return p1;
+    }
+    public void setT1(Double t1)
+    {
+        this.t1 = t1;
+    }
+
+    public Double getT1()
+    {
+        return t1;
+    }
+    public void setZ1(Double z1)
+    {
+        this.z1 = z1;
+    }
+
+    public Double getZ1()
+    {
+        return z1;
+    }
+    public void setP2(Double p2)
+    {
+        this.p2 = p2;
+    }
+
+    public Double getP2()
+    {
+        return p2;
+    }
+    public void setT2(Double t2)
+    {
+        this.t2 = t2;
+    }
+
+    public Double getT2()
+    {
+        return t2;
+    }
+    public void setZ2(Double z2)
+    {
+        this.z2 = z2;
+    }
+
+    public Double getZ2()
+    {
+        return z2;
+    }
+    public void setWellId(String wellId)
+    {
+        this.wellId = wellId;
+    }
+
+    public String getWellId()
+    {
+        return wellId;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("cameraId", getCameraId())
+                .append("p1", getP1())
+                .append("t1", getT1())
+                .append("z1", getZ1())
+                .append("p2", getP2())
+                .append("t2", getT2())
+                .append("z2", getZ2())
+                .append("wellId", getWellId())
+                .toString();
+    }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/alarmpoints/well/domain/GuideCamera.java b/ard-work/src/main/java/com/ruoyi/alarmpoints/well/domain/GuideCamera.java
new file mode 100644
index 0000000..be4d659
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/alarmpoints/well/domain/GuideCamera.java
@@ -0,0 +1,26 @@
+package com.ruoyi.alarmpoints.well.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @Description: 浜曞叧鑱斿紩瀵紁tz鍒楄〃
+ * @ClassName: GuideCamera
+ * @Author: 鍒樿嫃涔�
+ * @Date: 2024骞�01鏈�15鏃�15:30:54
+ **/
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class GuideCamera {
+    Long  id;
+    String cameraId;//鐩告満
+    Double p1;
+    Double t1;
+    Double z1;
+    Double p2;
+    Double t2;
+    Double z2;
+    String wellId;//浜昳d
+}
diff --git a/ard-work/src/main/java/com/ruoyi/alarmpoints/well/mapper/ArdWellGuideCameraMapper.java b/ard-work/src/main/java/com/ruoyi/alarmpoints/well/mapper/ArdWellGuideCameraMapper.java
new file mode 100644
index 0000000..6d623fb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/alarmpoints/well/mapper/ArdWellGuideCameraMapper.java
@@ -0,0 +1,61 @@
+package com.ruoyi.alarmpoints.well.mapper;
+
+import java.util.List;
+import com.ruoyi.alarmpoints.well.domain.ArdWellGuideCamera;
+
+/**
+ * 浜曞叧鑱斿紩瀵肩浉鏈篗apper鎺ュ彛
+ *
+ * @author ard
+ * @date 2024-01-15
+ */
+public interface ArdWellGuideCameraMapper
+{
+    /**
+     * 鏌ヨ浜曞叧鑱斿紩瀵肩浉鏈�
+     *
+     * @param id 浜曞叧鑱斿紩瀵肩浉鏈轰富閿�
+     * @return 浜曞叧鑱斿紩瀵肩浉鏈�
+     */
+    public ArdWellGuideCamera selectArdWellGuideCameraById(String id);
+
+    /**
+     * 鏌ヨ浜曞叧鑱斿紩瀵肩浉鏈哄垪琛�
+     *
+     * @param ardWellGuideCamera 浜曞叧鑱斿紩瀵肩浉鏈�
+     * @return 浜曞叧鑱斿紩瀵肩浉鏈洪泦鍚�
+     */
+    public List<ArdWellGuideCamera> selectArdWellGuideCameraList(ArdWellGuideCamera ardWellGuideCamera);
+
+    /**
+     * 鏂板浜曞叧鑱斿紩瀵肩浉鏈�
+     *
+     * @param ardWellGuideCamera 浜曞叧鑱斿紩瀵肩浉鏈�
+     * @return 缁撴灉
+     */
+    public int insertArdWellGuideCamera(ArdWellGuideCamera ardWellGuideCamera);
+
+    /**
+     * 淇敼浜曞叧鑱斿紩瀵肩浉鏈�
+     *
+     * @param ardWellGuideCamera 浜曞叧鑱斿紩瀵肩浉鏈�
+     * @return 缁撴灉
+     */
+    public int updateArdWellGuideCamera(ArdWellGuideCamera ardWellGuideCamera);
+
+    /**
+     * 鍒犻櫎浜曞叧鑱斿紩瀵肩浉鏈�
+     *
+     * @param id 浜曞叧鑱斿紩瀵肩浉鏈轰富閿�
+     * @return 缁撴灉
+     */
+    public int deleteArdWellGuideCameraById(String id);
+
+    /**
+     * 鎵归噺鍒犻櫎浜曞叧鑱斿紩瀵肩浉鏈�
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteArdWellGuideCameraByIds(String[] ids);
+}
diff --git a/ard-work/src/main/java/com/ruoyi/alarmpoints/well/service/IArdWellGuideCameraService.java b/ard-work/src/main/java/com/ruoyi/alarmpoints/well/service/IArdWellGuideCameraService.java
new file mode 100644
index 0000000..948cb35
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/alarmpoints/well/service/IArdWellGuideCameraService.java
@@ -0,0 +1,61 @@
+package com.ruoyi.alarmpoints.well.service;
+
+import java.util.List;
+import com.ruoyi.alarmpoints.well.domain.ArdWellGuideCamera;
+
+/**
+ * 浜曞叧鑱斿紩瀵肩浉鏈篠ervice鎺ュ彛
+ *
+ * @author ard
+ * @date 2024-01-15
+ */
+public interface IArdWellGuideCameraService
+{
+    /**
+     * 鏌ヨ浜曞叧鑱斿紩瀵肩浉鏈�
+     *
+     * @param id 浜曞叧鑱斿紩瀵肩浉鏈轰富閿�
+     * @return 浜曞叧鑱斿紩瀵肩浉鏈�
+     */
+    public ArdWellGuideCamera selectArdWellGuideCameraById(String id);
+
+    /**
+     * 鏌ヨ浜曞叧鑱斿紩瀵肩浉鏈哄垪琛�
+     *
+     * @param ardWellGuideCamera 浜曞叧鑱斿紩瀵肩浉鏈�
+     * @return 浜曞叧鑱斿紩瀵肩浉鏈洪泦鍚�
+     */
+    public List<ArdWellGuideCamera> selectArdWellGuideCameraList(ArdWellGuideCamera ardWellGuideCamera);
+
+    /**
+     * 鏂板浜曞叧鑱斿紩瀵肩浉鏈�
+     *
+     * @param ardWellGuideCamera 浜曞叧鑱斿紩瀵肩浉鏈�
+     * @return 缁撴灉
+     */
+    public int insertArdWellGuideCamera(ArdWellGuideCamera ardWellGuideCamera);
+
+    /**
+     * 淇敼浜曞叧鑱斿紩瀵肩浉鏈�
+     *
+     * @param ardWellGuideCamera 浜曞叧鑱斿紩瀵肩浉鏈�
+     * @return 缁撴灉
+     */
+    public int updateArdWellGuideCamera(ArdWellGuideCamera ardWellGuideCamera);
+
+    /**
+     * 鎵归噺鍒犻櫎浜曞叧鑱斿紩瀵肩浉鏈�
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑浜曞叧鑱斿紩瀵肩浉鏈轰富閿泦鍚�
+     * @return 缁撴灉
+     */
+    public int deleteArdWellGuideCameraByIds(String[] ids);
+
+    /**
+     * 鍒犻櫎浜曞叧鑱斿紩瀵肩浉鏈轰俊鎭�
+     *
+     * @param id 浜曞叧鑱斿紩瀵肩浉鏈轰富閿�
+     * @return 缁撴灉
+     */
+    public int deleteArdWellGuideCameraById(String id);
+}
diff --git a/ard-work/src/main/java/com/ruoyi/alarmpoints/well/service/impl/ArdAlarmpointsWellServiceImpl.java b/ard-work/src/main/java/com/ruoyi/alarmpoints/well/service/impl/ArdAlarmpointsWellServiceImpl.java
index 6970cce..16aebd2 100644
--- a/ard-work/src/main/java/com/ruoyi/alarmpoints/well/service/impl/ArdAlarmpointsWellServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/alarmpoints/well/service/impl/ArdAlarmpointsWellServiceImpl.java
@@ -9,11 +9,9 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWell;
-import com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWellDeptVo;
-import com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWellParam;
-import com.ruoyi.alarmpoints.well.domain.RTU_DATA_YJ_8;
+import com.ruoyi.alarmpoints.well.domain.*;
 import com.ruoyi.alarmpoints.well.mapper.ArdAlarmpointsWellMapper;
+import com.ruoyi.alarmpoints.well.mapper.ArdWellGuideCameraMapper;
 import com.ruoyi.alarmpoints.well.service.IArdAlarmpointsWellService;
 import com.ruoyi.common.annotation.DataScope;
 import com.ruoyi.common.core.domain.entity.SysConfig;
@@ -50,6 +48,9 @@
     private static final Logger log = LoggerFactory.getLogger(ArdAlarmpointsWellServiceImpl.class);
     @Resource
     private ArdAlarmpointsWellMapper ardAlarmpointsWellMapper;
+    @Resource
+    private ArdWellGuideCameraMapper ardWellGuideCameraMapper;
+
     @Autowired
     protected Validator validator;
 
@@ -137,6 +138,7 @@
         ardAlarmpointsWell.setUpdateTime(DateUtils.getNowDate());
         return ardAlarmpointsWellMapper.updateArdAlarmpointsWell(ardAlarmpointsWell);
     }
+
     @Override
     @Transactional
     public int updateArdAlarmpointsWellByWellId(ArdAlarmpointsWell ardAlarmpointsWell) {
@@ -144,6 +146,7 @@
         ardAlarmpointsWell.setUpdateTime(DateUtils.getNowDate());
         return ardAlarmpointsWellMapper.updateArdAlarmpointsWellByWellId(ardAlarmpointsWell);
     }
+
     /**
      * 鎵归噺鍒犻櫎浜曠鐞�
      *
@@ -312,11 +315,11 @@
     }
 
     @Override
-    public List<ArdAlarmpointsWell> getNearbyWellList(Double longitudeCenter,Double latitudeCenter, Long deptId, Integer range) {
+    public List<ArdAlarmpointsWell> getNearbyWellList(Double longitudeCenter, Double latitudeCenter, Long deptId, Integer range) {
         List<ArdAlarmpointsWell> nearbyWellList = new ArrayList<>();
         try {
             if (longitudeCenter != null && latitudeCenter != null) {
-                ArdAlarmpointsWell ardAlarmpointsWell=new ArdAlarmpointsWell();
+                ArdAlarmpointsWell ardAlarmpointsWell = new ArdAlarmpointsWell();
                 ardAlarmpointsWell.setDeptId(deptId);
                 List<ArdAlarmpointsWell> ardAlarmpointsWells = ardAlarmpointsWellMapper.selectArdAlarmpointsWellList(ardAlarmpointsWell);
                 if (ardAlarmpointsWells.size() > 0) {
@@ -341,167 +344,167 @@
     @Override
     public Map<String, Object> getWellDataByWellId(String wellId, List<SysConfig> config) {
         ArdAlarmpointsWell ardAlarmpointsWell = ardAlarmpointsWellMapper.selectArdAlarmpointsWellByWellId(wellId);
-        Map<String,Object> result = new HashMap();
-        if(ardAlarmpointsWell.getWellId() != null){
-            result.put("wellId",ardAlarmpointsWell.getWellId());
-        }else{
-            result.put("wellId","");
+        Map<String, Object> result = new HashMap();
+        if (ardAlarmpointsWell.getWellId() != null) {
+            result.put("wellId", ardAlarmpointsWell.getWellId());
+        } else {
+            result.put("wellId", "");
         }
-        if(ardAlarmpointsWell.getWellNumber() != null){
-            result.put("wellNumber",ardAlarmpointsWell.getWellNumber());
-        }else{
-            result.put("wellNumber","");
+        if (ardAlarmpointsWell.getWellNumber() != null) {
+            result.put("wellNumber", ardAlarmpointsWell.getWellNumber());
+        } else {
+            result.put("wellNumber", "");
         }
-        if(ardAlarmpointsWell.getOilProduction() != null){
-            result.put("oilProduction",ardAlarmpointsWell.getOilProduction());
-        }else{
-            result.put("oilProduction","");
+        if (ardAlarmpointsWell.getOilProduction() != null) {
+            result.put("oilProduction", ardAlarmpointsWell.getOilProduction());
+        } else {
+            result.put("oilProduction", "");
         }
-        if(ardAlarmpointsWell.getWellBlock() != null){
-            result.put("wellBlock",ardAlarmpointsWell.getWellBlock());
-        }else{
-            result.put("wellBlock","");
+        if (ardAlarmpointsWell.getWellBlock() != null) {
+            result.put("wellBlock", ardAlarmpointsWell.getWellBlock());
+        } else {
+            result.put("wellBlock", "");
         }
-        if(ardAlarmpointsWell.getProductionDate() != null){
-            result.put("productionDate",ardAlarmpointsWell.getProductionDate());
-        }else{
-            result.put("productionDate","");
+        if (ardAlarmpointsWell.getProductionDate() != null) {
+            result.put("productionDate", ardAlarmpointsWell.getProductionDate());
+        } else {
+            result.put("productionDate", "");
         }
-        if(ardAlarmpointsWell.getDisplacementMode() != null){
-            result.put("displacementMode",ardAlarmpointsWell.getDisplacementMode());
-        }else{
-            result.put("displacementMode","");
+        if (ardAlarmpointsWell.getDisplacementMode() != null) {
+            result.put("displacementMode", ardAlarmpointsWell.getDisplacementMode());
+        } else {
+            result.put("displacementMode", "");
         }
-        if(ardAlarmpointsWell.getSurroundingEnvironment() != null){
-            result.put("surroundingEnvironment",ardAlarmpointsWell.getSurroundingEnvironment());
-        }else{
-            result.put("surroundingEnvironment","");
+        if (ardAlarmpointsWell.getSurroundingEnvironment() != null) {
+            result.put("surroundingEnvironment", ardAlarmpointsWell.getSurroundingEnvironment());
+        } else {
+            result.put("surroundingEnvironment", "");
         }
-        if(ardAlarmpointsWell.getWellType() != null){
-            result.put("wellType",ardAlarmpointsWell.getWellType());
-        }else{
-            result.put("wellType","");
+        if (ardAlarmpointsWell.getWellType() != null) {
+            result.put("wellType", ardAlarmpointsWell.getWellType());
+        } else {
+            result.put("wellType", "");
         }
-        if(ardAlarmpointsWell.getInstalledLoad() != null){
-            result.put("installedLoad",ardAlarmpointsWell.getInstalledLoad());
-        }else{
-            result.put("installedLoad","");
+        if (ardAlarmpointsWell.getInstalledLoad() != null) {
+            result.put("installedLoad", ardAlarmpointsWell.getInstalledLoad());
+        } else {
+            result.put("installedLoad", "");
         }
-        if(ardAlarmpointsWell.getMeteringStation() != null){
-            result.put("meteringStation",ardAlarmpointsWell.getMeteringStation());
-        }else{
-            result.put("meteringStation","");
+        if (ardAlarmpointsWell.getMeteringStation() != null) {
+            result.put("meteringStation", ardAlarmpointsWell.getMeteringStation());
+        } else {
+            result.put("meteringStation", "");
         }
-        if(ardAlarmpointsWell.getTransferStation() != null){
-            result.put("transferStation",ardAlarmpointsWell.getTransferStation());
-        }else{
-            result.put("transferStation","");
+        if (ardAlarmpointsWell.getTransferStation() != null) {
+            result.put("transferStation", ardAlarmpointsWell.getTransferStation());
+        } else {
+            result.put("transferStation", "");
         }
-        if(ardAlarmpointsWell.getDehydrationStation() != null){
-            result.put("dehydrationStation",ardAlarmpointsWell.getDehydrationStation());
-        }else{
-            result.put("dehydrationStation","");
+        if (ardAlarmpointsWell.getDehydrationStation() != null) {
+            result.put("dehydrationStation", ardAlarmpointsWell.getDehydrationStation());
+        } else {
+            result.put("dehydrationStation", "");
         }
-        if(ardAlarmpointsWell.getRunStatus() != null){
-            result.put("runStatus",ardAlarmpointsWell.getRunStatus());
-        }else{
-            result.put("runStatus","");
+        if (ardAlarmpointsWell.getRunStatus() != null) {
+            result.put("runStatus", ardAlarmpointsWell.getRunStatus());
+        } else {
+            result.put("runStatus", "");
         }
-        if(ardAlarmpointsWell.getLongitude() != null){
-            result.put("longitude",ardAlarmpointsWell.getLongitude());
-        }else{
-            result.put("longitude","");
+        if (ardAlarmpointsWell.getLongitude() != null) {
+            result.put("longitude", ardAlarmpointsWell.getLongitude());
+        } else {
+            result.put("longitude", "");
         }
-        if(ardAlarmpointsWell.getLatitude() != null){
-            result.put("latitude",ardAlarmpointsWell.getLatitude());
-        }else{
-            result.put("latitude","");
+        if (ardAlarmpointsWell.getLatitude() != null) {
+            result.put("latitude", ardAlarmpointsWell.getLatitude());
+        } else {
+            result.put("latitude", "");
         }
-        if(ardAlarmpointsWell.getAltitude() != null){
-            result.put("altitude",ardAlarmpointsWell.getAltitude());
-        }else{
-            result.put("altitude","");
+        if (ardAlarmpointsWell.getAltitude() != null) {
+            result.put("altitude", ardAlarmpointsWell.getAltitude());
+        } else {
+            result.put("altitude", "");
         }
-        if(ardAlarmpointsWell.getUserId() != null){
-            result.put("userId",ardAlarmpointsWell.getUserId());
-        }else{
-            result.put("userId","");
+        if (ardAlarmpointsWell.getUserId() != null) {
+            result.put("userId", ardAlarmpointsWell.getUserId());
+        } else {
+            result.put("userId", "");
         }
-        if(ardAlarmpointsWell.getDeptId() != null){
-            result.put("deptId",ardAlarmpointsWell.getDeptId());
+        if (ardAlarmpointsWell.getDeptId() != null) {
+            result.put("deptId", ardAlarmpointsWell.getDeptId());
             SysDept sysDept = sysDeptMapper.selectDeptById(ardAlarmpointsWell.getDeptId());//鏌ヨ鍏磋叮鐐规墍鍦ㄩ儴闂�
-            if(sysDept != null){
-                result.put("deptName",sysDept.getDeptName());
-            }else{
-                result.put("deptName","");
+            if (sysDept != null) {
+                result.put("deptName", sysDept.getDeptName());
+            } else {
+                result.put("deptName", "");
             }
-        }else{
-            result.put("deptId","");
-            result.put("deptName","");
+        } else {
+            result.put("deptId", "");
+            result.put("deptName", "");
         }
-        if(ardAlarmpointsWell.getCreateBy() != null){
-            result.put("createBy",ardAlarmpointsWell.getCreateBy());
-        }else{
-            result.put("createBy","");
+        if (ardAlarmpointsWell.getCreateBy() != null) {
+            result.put("createBy", ardAlarmpointsWell.getCreateBy());
+        } else {
+            result.put("createBy", "");
         }
-        if(ardAlarmpointsWell.getCreateTime() != null){
-            result.put("createTime",ardAlarmpointsWell.getCreateTime());
-        }else{
-            result.put("createTime","");
+        if (ardAlarmpointsWell.getCreateTime() != null) {
+            result.put("createTime", ardAlarmpointsWell.getCreateTime());
+        } else {
+            result.put("createTime", "");
         }
-        if(ardAlarmpointsWell.getUpdateBy() != null){
-            result.put("updateBy",ardAlarmpointsWell.getUpdateBy());
-        }else{
-            result.put("updateBy","");
+        if (ardAlarmpointsWell.getUpdateBy() != null) {
+            result.put("updateBy", ardAlarmpointsWell.getUpdateBy());
+        } else {
+            result.put("updateBy", "");
         }
-        if(ardAlarmpointsWell.getUpdateTime() != null){
-            result.put("updateTime",ardAlarmpointsWell.getUpdateTime());
-        }else{
-            result.put("updateTime","");
+        if (ardAlarmpointsWell.getUpdateTime() != null) {
+            result.put("updateTime", ardAlarmpointsWell.getUpdateTime());
+        } else {
+            result.put("updateTime", "");
         }
-        if(ardAlarmpointsWell.getGuideP1() != null){
-            result.put("guideP1",ardAlarmpointsWell.getGuideP1());
-        }else{
-            result.put("guideP1","");
-        }
-        if(ardAlarmpointsWell.getGuideP2() != null){
-            result.put("guideP2",ardAlarmpointsWell.getGuideP2());
-        }else{
-            result.put("guideP2","");
-        }
-        if(ardAlarmpointsWell.getGuideT1() != null){
-            result.put("guideT1",ardAlarmpointsWell.getGuideT1());
-        }else{
-            result.put("guideT1","");
-        }
-        if(ardAlarmpointsWell.getGuideT2() != null){
-            result.put("guideT2",ardAlarmpointsWell.getGuideT2());
-        }else{
-            result.put("guideT2","");
-        }
-        if(ardAlarmpointsWell.getGuideZ1() != null){
-            result.put("guideZ1",ardAlarmpointsWell.getGuideZ1());
-        }else{
-            result.put("guideZ1","");
-        }
-        if(ardAlarmpointsWell.getGuideZ2() != null){
-            result.put("guideZ2",ardAlarmpointsWell.getGuideZ2());
-        }else{
-            result.put("guideZ2","");
-        }
-        if(config.size() != 0){
+        //if(ardAlarmpointsWell.getGuideP1() != null){
+        //    result.put("guideP1",ardAlarmpointsWell.getGuideP1());
+        //}else{
+        //    result.put("guideP1","");
+        //}
+        //if(ardAlarmpointsWell.getGuideP2() != null){
+        //    result.put("guideP2",ardAlarmpointsWell.getGuideP2());
+        //}else{
+        //    result.put("guideP2","");
+        //}
+        //if(ardAlarmpointsWell.getGuideT1() != null){
+        //    result.put("guideT1",ardAlarmpointsWell.getGuideT1());
+        //}else{
+        //    result.put("guideT1","");
+        //}
+        //if(ardAlarmpointsWell.getGuideT2() != null){
+        //    result.put("guideT2",ardAlarmpointsWell.getGuideT2());
+        //}else{
+        //    result.put("guideT2","");
+        //}
+        //if(ardAlarmpointsWell.getGuideZ1() != null){
+        //    result.put("guideZ1",ardAlarmpointsWell.getGuideZ1());
+        //}else{
+        //    result.put("guideZ1","");
+        //}
+        //if(ardAlarmpointsWell.getGuideZ2() != null){
+        //    result.put("guideZ2",ardAlarmpointsWell.getGuideZ2());
+        //}else{
+        //    result.put("guideZ2","");
+        //}
+        if (config.size() != 0) {
             String oracle = config.get(0).getConfigValue();
             String[] oracleArr = oracle.split(";");
-            if(oracleArr.length == 3){
+            if (oracleArr.length == 3) {
                 String url = oracle.split(";")[0];
                 String username = oracle.split(";")[1];
                 String password = oracle.split(";")[2];
                 try {
-                    int checkMark = checkTable(url,username,password,"\'RTU_DATA_YJ_8\'");//涓夊巶琛ㄥ瓨鍦�
-                    if(checkMark == 1){
-                        Map<String,Object> resultRTU = getRtuDataYjByJH(url,username,password,"RTU_DATA_YJ_8","\'" + wellId + "\'");
+                    int checkMark = checkTable(url, username, password, "\'RTU_DATA_YJ_8\'");//涓夊巶琛ㄥ瓨鍦�
+                    if (checkMark == 1) {
+                        Map<String, Object> resultRTU = getRtuDataYjByJH(url, username, password, "RTU_DATA_YJ_8", "\'" + wellId + "\'");
                         result.putAll(resultRTU);
-                    }else{
+                    } else {
                         result.put("wellRunningState", "n");//娌逛簳杩愯鐘舵��
                         result.put("totalPowerConsumption", "n");//鎬昏�楃數閲�
                         result.put("communicationMachine", "n");//璁惧閫氳
@@ -533,18 +536,18 @@
                 } catch (Exception e) {
                     e.printStackTrace();
                 }
-            }else if(oracleArr.length == 4){
+            } else if (oracleArr.length == 4) {
                 String url = oracle.split(";")[0];
                 String username = oracle.split(";")[1];
                 String password = oracle.split(";")[2];
                 String prod = oracle.split(";")[3];
                 try {
                     //int checkMark = checkTable(url,username,password,"\'RTU_DATA_YJ_8\'");//涓夊巶琛ㄥ瓨鍦�
-                    int checkMark = checkTable(url,username,password,"\'" + prod + ".RTU_DATA_YJ_8\'");//涓夊巶琛ㄥ瓨鍦�
-                    if(checkMark == 1){
-                        Map<String,Object> resultRTU = getRtuDataYjByJH(url,username,password,prod + ".RTU_DATA_YJ_8","\'" + wellId + "\'");
+                    int checkMark = checkTable(url, username, password, "\'" + prod + ".RTU_DATA_YJ_8\'");//涓夊巶琛ㄥ瓨鍦�
+                    if (checkMark == 1) {
+                        Map<String, Object> resultRTU = getRtuDataYjByJH(url, username, password, prod + ".RTU_DATA_YJ_8", "\'" + wellId + "\'");
                         result.putAll(resultRTU);
-                    }else{
+                    } else {
                         result.put("wellRunningState", "n");//娌逛簳杩愯鐘舵��
                         result.put("totalPowerConsumption", "n");//鎬昏�楃數閲�
                         result.put("communicationMachine", "n");//璁惧閫氳
@@ -577,7 +580,7 @@
                     e.printStackTrace();
                 }
             }
-        }else{
+        } else {
             result.put("wellRunningState", "n");//娌逛簳杩愯鐘舵��
             result.put("totalPowerConsumption", "n");//鎬昏�楃數閲�
             result.put("communicationMachine", "n");//璁惧閫氳
@@ -609,7 +612,7 @@
         return result;
     }
 
-    public int checkTable(String url,String username,String password,String tableName) throws ClassNotFoundException, SQLException {
+    public int checkTable(String url, String username, String password, String tableName) throws ClassNotFoundException, SQLException {
         Connection connection = null;
 
         Statement updateStatement = null;
@@ -618,7 +621,7 @@
 
         try {
             Class.forName("oracle.jdbc.OracleDriver");
-            connection =  DriverManager.getConnection(url,username,password);
+            connection = DriverManager.getConnection(url, username, password);
             //Statement 瀵硅薄 鍙戦�乻ql
             updateStatement = connection.createStatement();
             //鏌ヨ
@@ -626,7 +629,7 @@
             ResultSet resultSet = queryStatement.executeQuery("select count(*) from user_tables where table_name = upper(" + tableName + ")");
 
             int result = 0;
-            while(resultSet.next()){
+            while (resultSet.next()) {
                 int column = resultSet.getInt(1);
                 result = column;
             }
@@ -635,19 +638,19 @@
             e.printStackTrace();
             return 0;
         } finally {
-            if (updateStatement != null){
+            if (updateStatement != null) {
                 updateStatement.close();
             }
-            if (queryStatement != null){
+            if (queryStatement != null) {
                 queryStatement.close();
             }
-            if (connection != null){
+            if (connection != null) {
                 connection.close();
             }
         }
     }
 
-    public Map<String,Object> getRtuDataYjByJH(String url,String username,String password,String tableName,String JH) throws ClassNotFoundException, SQLException{
+    public Map<String, Object> getRtuDataYjByJH(String url, String username, String password, String tableName, String JH) throws ClassNotFoundException, SQLException {
         Connection connection = null;
 
         Statement updateStatement = null;
@@ -656,7 +659,7 @@
 
         try {
             Class.forName("oracle.jdbc.OracleDriver");
-            connection =  DriverManager.getConnection(url,username,password);
+            connection = DriverManager.getConnection(url, username, password);
             //Statement 瀵硅薄 鍙戦�乻ql
             updateStatement = connection.createStatement();
             //鏌ヨ
@@ -665,8 +668,8 @@
                     "select rdy.JH,max(rdy.RQ) as RQ from RTU_DATA_YJ_8 rdy group by rdy.JH" +
                     ")t on rdy0.JH = t.JH and rdy0.RQ = t.RQ where rdy0.JH = " + JH);
 
-            Map<String,Object> result = new HashMap();
-            while(resultSet.next()){
+            Map<String, Object> result = new HashMap();
+            while (resultSet.next()) {
                 result.put("wellRunningState", "n");
                 result.put("totalPowerConsumption", "n");//鎬昏�楃數閲�
                 result.put("communicationMachine", "n");//璁惧閫氳
@@ -675,108 +678,108 @@
                 result.put("meteringPlantWaterPressure", "n");//璁¢噺闂存幒姘村帇鍔�//
                 result.put("torque", "n");//鎵煩
 
-                if(resultSet.getString("MAT") != null){//鍥炴补娓╁害
+                if (resultSet.getString("MAT") != null) {//鍥炴补娓╁害
                     result.put("MAT", resultSet.getString("MAT"));
-                }else{
+                } else {
                     result.put("MAT", "n");
                 }
-                if(resultSet.getString("TGP") != null){//浜曞彛娌瑰帇
+                if (resultSet.getString("TGP") != null) {//浜曞彛娌瑰帇
                     result.put("TGP", resultSet.getString("TGP"));
-                }else{
+                } else {
                     result.put("TGP", "n");
                 }
-                if(resultSet.getString("CPV") != null){//浜曞彛濂楀帇
+                if (resultSet.getString("CPV") != null) {//浜曞彛濂楀帇
                     result.put("CPV", resultSet.getString("CPV"));
-                }else{
+                } else {
                     result.put("CPV", "n");
                 }
-                if(resultSet.getString("ADL") != null){//A鐩哥數娴�
+                if (resultSet.getString("ADL") != null) {//A鐩哥數娴�
                     result.put("ADL", resultSet.getString("ADL"));
-                }else{
+                } else {
                     result.put("ADL", "n");
                 }
-                if(resultSet.getString("ADY") != null){//A鐩哥數鍘�
+                if (resultSet.getString("ADY") != null) {//A鐩哥數鍘�
                     result.put("ADY", resultSet.getString("ADY"));
-                }else{
+                } else {
                     result.put("ADY", "n");
                 }
-                if(resultSet.getString("BDL") != null){//B鐩哥數娴�
+                if (resultSet.getString("BDL") != null) {//B鐩哥數娴�
                     result.put("BDL", resultSet.getString("BDL"));
-                }else{
+                } else {
                     result.put("BDL", "n");
                 }
-                if(resultSet.getString("BDY") != null){//B鐩哥數鍘�
+                if (resultSet.getString("BDY") != null) {//B鐩哥數鍘�
                     result.put("BDY", resultSet.getString("BDY"));
-                }else{
+                } else {
                     result.put("BDY", "n");
                 }
-                if(resultSet.getString("CDL") != null){//C鐩哥數娴�
+                if (resultSet.getString("CDL") != null) {//C鐩哥數娴�
                     result.put("CDL", resultSet.getString("CDL"));
-                }else{
+                } else {
                     result.put("CDL", "n");
                 }
-                if(resultSet.getString("CDY") != null){//C鐩哥數鍘�
+                if (resultSet.getString("CDY") != null) {//C鐩哥數鍘�
                     result.put("CDY", resultSet.getString("CDY"));
-                }else{
+                } else {
                     result.put("CDY", "n");
                 }
-                if(resultSet.getString("UCV") != null){//涓婅鐢垫祦
+                if (resultSet.getString("UCV") != null) {//涓婅鐢垫祦
                     result.put("UCV", resultSet.getString("UCV"));
-                }else{
+                } else {
                     result.put("UCV", "n");
                 }
-                if(resultSet.getString("DCV") != null){//涓嬭鐢垫祦
+                if (resultSet.getString("DCV") != null) {//涓嬭鐢垫祦
                     result.put("DCV", resultSet.getString("DCV"));
-                }else{
+                } else {
                     result.put("DCV", "n");
                 }
-                if(resultSet.getString("SLV") != null){//鍐茬▼
+                if (resultSet.getString("SLV") != null) {//鍐茬▼
                     result.put("SLV", resultSet.getString("SLV"));
-                }else{
+                } else {
                     result.put("SLV", "n");
                 }
-                if(resultSet.getString("CHC") != null){//鍐叉
+                if (resultSet.getString("CHC") != null) {//鍐叉
                     result.put("CHC", resultSet.getString("CHC"));
-                }else{
+                } else {
                     result.put("CHC", "n");
                 }
-                if(resultSet.getString("BPV") != null){//浜曞彛鍥炲帇
+                if (resultSet.getString("BPV") != null) {//浜曞彛鍥炲帇
                     result.put("BPV", resultSet.getString("BPV"));
-                }else{
+                } else {
                     result.put("BPV", "n");
                 }
-                if(resultSet.getString("ZWG") != null){//鎬绘棤鍔熷姛鐜�
+                if (resultSet.getString("ZWG") != null) {//鎬绘棤鍔熷姛鐜�
                     result.put("ZWG", resultSet.getString("ZWG"));
-                }else{
+                } else {
                     result.put("ZWG", "n");
                 }
-                if(resultSet.getString("ZYG") != null){//鎬绘湁鍔熷姛鐜�
+                if (resultSet.getString("ZYG") != null) {//鎬绘湁鍔熷姛鐜�
                     result.put("ZYG", resultSet.getString("ZYG"));
-                }else{
+                } else {
                     result.put("ZYG", "n");
                 }
-                if(resultSet.getString("GYS") != null){//鍔熺巼鍥犳暟
+                if (resultSet.getString("GYS") != null) {//鍔熺巼鍥犳暟
                     result.put("GYS", resultSet.getString("GYS"));
-                }else{
+                } else {
                     result.put("GYS", "n");
                 }
-                if(resultSet.getString("UWL") != null){//鏈�澶ц浇鑽�
+                if (resultSet.getString("UWL") != null) {//鏈�澶ц浇鑽�
                     result.put("UWL", resultSet.getString("UWL"));
-                }else{
+                } else {
                     result.put("UWL", "n");
                 }
-                if(resultSet.getString("DWL") != null){//鏈�灏忚浇鑽�
+                if (resultSet.getString("DWL") != null) {//鏈�灏忚浇鑽�
                     result.put("DWL", resultSet.getString("DWL"));
-                }else{
+                } else {
                     result.put("DWL", "n");
                 }
-                if(resultSet.getString("ZHS") != null){//杞��
+                if (resultSet.getString("ZHS") != null) {//杞��
                     result.put("ZHS", resultSet.getString("ZHS"));
-                }else{
+                } else {
                     result.put("ZHS", "n");
                 }
             }
-            if(result.size() == 0){
+            if (result.size() == 0) {
                 result.put("wellRunningState", "n");//娌逛簳杩愯鐘舵��
                 result.put("totalPowerConsumption", "n");//鎬昏�楃數閲�
                 result.put("communicationMachine", "n");//璁惧閫氳
@@ -807,13 +810,13 @@
             }
             return result;
         } finally {
-            if (updateStatement != null){
+            if (updateStatement != null) {
                 updateStatement.close();
             }
-            if (queryStatement != null){
+            if (queryStatement != null) {
                 queryStatement.close();
             }
-            if (connection != null){
+            if (connection != null) {
                 connection.close();
             }
         }
diff --git a/ard-work/src/main/java/com/ruoyi/alarmpoints/well/service/impl/ArdWellGuideCameraServiceImpl.java b/ard-work/src/main/java/com/ruoyi/alarmpoints/well/service/impl/ArdWellGuideCameraServiceImpl.java
new file mode 100644
index 0000000..7dfe5f6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/alarmpoints/well/service/impl/ArdWellGuideCameraServiceImpl.java
@@ -0,0 +1,92 @@
+package com.ruoyi.alarmpoints.well.service.impl;
+
+import java.util.List;
+
+import com.ruoyi.common.utils.uuid.IdUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.util.ArrayList;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.alarmpoints.well.mapper.ArdWellGuideCameraMapper;
+import com.ruoyi.alarmpoints.well.domain.ArdWellGuideCamera;
+import com.ruoyi.alarmpoints.well.service.IArdWellGuideCameraService;
+
+/**
+ * 浜曞叧鑱斿紩瀵肩浉鏈篠ervice涓氬姟灞傚鐞�
+ *
+ * @author ard
+ * @date 2024-01-15
+ */
+@Service
+public class ArdWellGuideCameraServiceImpl implements IArdWellGuideCameraService {
+    @Autowired
+    private ArdWellGuideCameraMapper ardWellGuideCameraMapper;
+
+    /**
+     * 鏌ヨ浜曞叧鑱斿紩瀵肩浉鏈�
+     *
+     * @param id 浜曞叧鑱斿紩瀵肩浉鏈轰富閿�
+     * @return 浜曞叧鑱斿紩瀵肩浉鏈�
+     */
+    @Override
+    public ArdWellGuideCamera selectArdWellGuideCameraById(String id) {
+        return ardWellGuideCameraMapper.selectArdWellGuideCameraById(id);
+    }
+
+    /**
+     * 鏌ヨ浜曞叧鑱斿紩瀵肩浉鏈哄垪琛�
+     *
+     * @param ardWellGuideCamera 浜曞叧鑱斿紩瀵肩浉鏈�
+     * @return 浜曞叧鑱斿紩瀵肩浉鏈�
+     */
+    @Override
+    public List<ArdWellGuideCamera> selectArdWellGuideCameraList(ArdWellGuideCamera ardWellGuideCamera) {
+        return ardWellGuideCameraMapper.selectArdWellGuideCameraList(ardWellGuideCamera);
+    }
+
+    /**
+     * 鏂板浜曞叧鑱斿紩瀵肩浉鏈�
+     *
+     * @param ardWellGuideCamera 浜曞叧鑱斿紩瀵肩浉鏈�
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertArdWellGuideCamera(ArdWellGuideCamera ardWellGuideCamera) {
+        ardWellGuideCamera.setId(IdUtils.simpleUUID());
+        return ardWellGuideCameraMapper.insertArdWellGuideCamera(ardWellGuideCamera);
+    }
+
+    /**
+     * 淇敼浜曞叧鑱斿紩瀵肩浉鏈�
+     *
+     * @param ardWellGuideCamera 浜曞叧鑱斿紩瀵肩浉鏈�
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateArdWellGuideCamera(ArdWellGuideCamera ardWellGuideCamera) {
+        return ardWellGuideCameraMapper.updateArdWellGuideCamera(ardWellGuideCamera);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎浜曞叧鑱斿紩瀵肩浉鏈�
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑浜曞叧鑱斿紩瀵肩浉鏈轰富閿�
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteArdWellGuideCameraByIds(String[] ids) {
+        return ardWellGuideCameraMapper.deleteArdWellGuideCameraByIds(ids);
+    }
+
+    /**
+     * 鍒犻櫎浜曞叧鑱斿紩瀵肩浉鏈轰俊鎭�
+     *
+     * @param id 浜曞叧鑱斿紩瀵肩浉鏈轰富閿�
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteArdWellGuideCameraById(String id) {
+        return ardWellGuideCameraMapper.deleteArdWellGuideCameraById(id);
+    }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java b/ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java
index a6e4edc..45dffb9 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java
@@ -44,8 +44,10 @@
     private ICameraSdkService cameraSdkService;
     @Resource
     private IArdCamerasService ardCamerasService;
+
     @Autowired
     private IArdCameraNoGuideZoneService ardCameraNoGuideZoneService;
+
 
     @RequestMapping("/preview")
     private String preview() {
@@ -206,6 +208,15 @@
         return toAjax(cameraSdkService.guideTargetPosition(cmd));
     }
 
+    @ApiOperation("鎸囧悜鐩爣浜�")
+    @PostMapping("/setTargetWell")
+    @Log(title = "鎸囧悜鐩爣浜�", businessType = BusinessType.CONTROL)
+    @ApiOperationSupport(includeParameters = {"cmd.wellId"})
+    public @ResponseBody
+    AjaxResult setTargetWell(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        return cameraSdkService.guideTargetWell(cmd);
+    }
 
     @ApiOperation("璁剧疆闆舵柟浣嶈")
     @PostMapping("/setZeroPTZ")
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/domain/CameraCmd.java b/ard-work/src/main/java/com/ruoyi/device/camera/domain/CameraCmd.java
index 0b67dcb..d1706be 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/domain/CameraCmd.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/domain/CameraCmd.java
@@ -38,6 +38,8 @@
 
     /*鐩爣缁忕含搴�*/
     double[] targetPosition;
+    /*鐩爣浜�*/
+    String wellId;
 
     /*褰撳墠鎿嶄綔鑰�*/
     String operator;
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java
index 94abde8..f941580 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java
@@ -1,5 +1,6 @@
 package com.ruoyi.device.camera.service;
 
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.device.camera.domain.ArdCameras;
 import com.ruoyi.device.camera.domain.CameraCmd;
 import org.springframework.scheduling.annotation.Async;
@@ -74,6 +75,7 @@
     //鑾峰彇ptz鑼冨洿
     Map<String, Object> getPtzScope(CameraCmd cmd);
 
+    //璁剧疆ptz
     boolean setPtz(CameraCmd cmd);
 
     //璁剧疆闆舵柟浣嶈
@@ -82,6 +84,9 @@
     //寮曞鐩爣浣嶇疆
     boolean guideTargetPosition(CameraCmd cmd);
 
+    //寮曞鐩爣浜�
+    AjaxResult guideTargetWell(CameraCmd cmd);
+
     //褰曞儚
     String record(CameraCmd cmd);
 
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java
index 55f8e45..06866e8 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java
@@ -1,23 +1,34 @@
 package com.ruoyi.device.camera.service.impl;
 
+import com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWell;
+import com.ruoyi.alarmpoints.well.domain.ArdWellGuideCamera;
+import com.ruoyi.alarmpoints.well.service.IArdAlarmpointsWellService;
 import com.ruoyi.common.annotation.SdkOperate;
 import com.ruoyi.common.constant.CacheConstants;
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.device.camera.domain.ArdCameras;
 import com.ruoyi.device.camera.domain.CameraCmd;
 import com.ruoyi.device.camera.service.IArdCamerasService;
 import com.ruoyi.device.camera.service.ICameraSdkService;
 import com.ruoyi.device.camera.factory.CameraSDK;
 import com.ruoyi.device.camera.factory.CameraSDKFactory;
+import com.ruoyi.device.noguidezone.domain.ArdCameraNoGuideZone;
+import com.ruoyi.device.noguidezone.service.IArdCameraNoGuideZoneService;
+import com.ruoyi.utils.gis.GisUtil;
+import com.ruoyi.utils.gis.Point;
+import com.ruoyi.utils.sdk.common.GlobalVariable;
+import com.ruoyi.utils.tools.ArdTool;
+import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.boot.ApplicationArguments;
 import org.springframework.boot.ApplicationRunner;
 import org.springframework.stereotype.Service;
+
 import javax.annotation.Resource;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 
 /**
@@ -35,6 +46,10 @@
     private RedisCache redisCache;
     @Resource
     private CameraSDKFactory cameraSDKFactory;
+    @Resource
+    private IArdAlarmpointsWellService ardAlarmpointsWellService;
+    @Resource
+    private IArdCameraNoGuideZoneService ardCameraNoGuideZoneService;
 
     /**
      * 鍚姩绾跨▼鏂规硶锛岀敤浜庢墽琛屽垵濮嬪寲鐧诲綍鐩告満鐨勯�昏緫
@@ -67,7 +82,7 @@
                 CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
                 //sdkStrategy.login(ardCamera);//鍚屾鐧诲綍
                 cameraSDK.asyncLogin(ardCamera);//寮傛鐧诲綍
-                result=true;
+                result = true;
             }
         } catch (Exception ex) {
             log.error("鐧诲綍寮傚父锛�" + ex.getMessage());
@@ -114,7 +129,6 @@
     }
 
     //浜戝彴鎺у埗
-    @SdkOperate
     @Override
     public boolean pTZControl(CameraCmd cmd) {
         try {
@@ -172,7 +186,6 @@
 
     //璁剧疆棰勭疆浣�
     @Override
-    @SdkOperate
     public boolean setPreset(CameraCmd cmd) {
         boolean result = false;
         try {
@@ -191,7 +204,6 @@
 
     //璋冪敤棰勭疆浣�
     @Override
-    @SdkOperate
     public boolean gotoPreset(CameraCmd cmd) {
         boolean result = false;
         try {
@@ -358,7 +370,6 @@
     }
 
     //鎶撳浘
-    @SdkOperate
     @Override
     public String picCutCate(CameraCmd cmd) {
         String url = "";
@@ -416,7 +427,6 @@
     }
 
     //璁剧疆ptz
-    @SdkOperate
     @Override
     public boolean setPtz(CameraCmd cmd) {
         boolean result = false;
@@ -427,11 +437,10 @@
                 String factory = ardCamera.getFactory();
                 CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
                 String gdtype = ardCamera.getGdtype();
-                if(gdtype.equals("1")) {
+                if (gdtype.equals("1")) {
                     //澶у厜鐢典娇鐢ㄩ珮绮惧害ptz璁剧疆
                     result = cameraSDK.setPtz(cmd);
-                }else
-                {
+                } else {
                     result = cameraSDK.setPtz1(cmd);
                 }
 
@@ -443,7 +452,6 @@
     }
 
     //璁剧疆闆舵柟浣嶈
-    @SdkOperate
     @Override
     public boolean setZeroPtz(CameraCmd cmd) {
         boolean result = false;
@@ -462,7 +470,6 @@
     }
 
     //寮曞鎸囧悜鐩爣
-    @SdkOperate
     @Override
     public boolean guideTargetPosition(CameraCmd cmd) {
         boolean result = false;
@@ -476,6 +483,181 @@
             }
         } catch (Exception ex) {
             log.error("寮曞鎸囧悜鐩爣寮傚父锛�" + ex.getMessage());
+        }
+        return result;
+    }
+
+    //寮曞鎸囧悜浜�
+    @Override
+    public AjaxResult guideTargetWell(CameraCmd cmd) {
+
+        //鎸夋棩澶滃垏鎹㈤厤缃幏鍙栫浉鏈洪�氶亾
+        Integer chanNo = ArdTool.getChannelBydayNightTime(redisCache.getCacheObject("sys_config:dayNightTime"));
+        cmd.setChanNo(chanNo);
+
+        //鑾峰彇浜�
+        ArdAlarmpointsWell well = ardAlarmpointsWellService.selectArdAlarmpointsWellById(cmd.getWellId());
+        if (well == null) {
+            return AjaxResult.error("浜曚笉瀛樺湪");
+        }
+        cmd.setTargetPosition(new double[]{well.getLongitude(), well.getLatitude()});
+
+        //鑾峰彇浜曢厤缃殑寮曞鐩告満鍒楄〃
+        List<ArdWellGuideCamera> ardWellGuideCameraList = well.getArdWellGuideCameraList();
+        if (ardWellGuideCameraList != null && ardWellGuideCameraList.size() > 0) {
+            //鑾峰彇鐩告満鍜屼簳鐨勮窛绂昏繘琛屾帓搴忥紝鍙栧嚭鏈�杩戠殑涓�涓浉鏈�
+            Map<String, Double> distanceMap = new HashMap<>();
+            for (ArdWellGuideCamera ardWellGuideCamera : ardWellGuideCameraList) {
+                ArdCameras cameras = ardCamerasService.selectArdCamerasById(ardWellGuideCamera.getCameraId());
+                if (cameras == null) {
+                    continue;
+                }
+                double[] targetPosition = new double[]{well.getLongitude(), well.getLatitude()};
+                double[] camPosition = new double[]{cameras.getLongitude(), cameras.getLatitude()};
+                double distance = GisUtil.getDistance(targetPosition, camPosition);
+                distanceMap.put(ardWellGuideCamera.getCameraId(), distance);//瀛樺叆缂撳瓨map
+            }
+            //浠庣紦瀛橀噷鍙栧嚭璺濈鏈�杩戠浉鏈篒D
+            String cameraId = ArdTool.getKeyByMinValue(distanceMap);
+            cmd.setCameraId(cameraId);
+            //鑾峰彇鏈�杩戠浉鏈虹殑瀵硅薄
+            Optional<ArdWellGuideCamera> first = ardWellGuideCameraList.stream().filter(s -> s.getCameraId().equals(cameraId)).findFirst();
+            if(first.isPresent())
+            {
+                ArdWellGuideCamera ardWellGuideCamera = first.get();
+                Map<String, Double> ptzMap = null;
+                //閫氳繃閫氶亾鑾峰彇棰勭疆浣�
+                switch (chanNo) {
+                    case 1:
+                        if (ardWellGuideCamera.getP1() != null) {
+                            ptzMap = new HashMap<>();
+                            ptzMap.put("p", ardWellGuideCamera.getP1());
+                            ptzMap.put("t", ardWellGuideCamera.getT1());
+                            ptzMap.put("z", ardWellGuideCamera.getZ1());
+                        }
+                        break;
+                    case 2:
+                        if (ardWellGuideCamera.getP2() != null) {
+                            ptzMap = new HashMap<>();
+                            ptzMap.put("p", ardWellGuideCamera.getP2());
+                            ptzMap.put("t", ardWellGuideCamera.getT2());
+                            ptzMap.put("z", ardWellGuideCamera.getZ2());
+                        }
+                        break;
+
+                }
+                //寮曞
+                if (ptzMap != null) {
+                    //浣跨敤ptz寮曞
+                    cmd.setPtzMap(ptzMap);
+                    boolean res = setPtz(cmd);
+                    if (!res) {
+                        return AjaxResult.error("ptz寮曞澶辫触", "cameraId:" + cameraId);
+                    }
+                    return AjaxResult.success("ptz寮曞鎴愬姛", "cameraId:" + cameraId);
+                }
+            }
+
+        }
+        log.debug("鏈壘鍒皃tz寮曞鐩告満,鏌ユ壘鏈�杩戠浉鏈�");
+
+        //浠庨檮杩戠浉鏈烘壘鏈�杩戠殑涓�涓浉鏈�
+        String cameraId = getCameraByNear(new double[]{well.getLongitude(), well.getLatitude()});
+        cmd.setCameraId(cameraId);
+        if ("".equals(cameraId)) {
+            return AjaxResult.error("鏈壘鍒板紩瀵肩浉鏈�");
+        }
+        //鍒ゆ柇绂佸紩鍖�
+        if (isInPolygon(cameraId, new Double[]{well.getLongitude(), well.getLatitude()})) {
+            return AjaxResult.error("浜曚綅缃睘浜庣浉鏈虹姝㈠紩瀵煎尯鍩�");
+        }
+        //鎸変簳鍧愭爣寮�濮嬪紩瀵�
+        if (!guideTargetPosition(cmd)) {
+            return AjaxResult.error("浜曞潗鏍囧紩瀵煎け璐�", "cameraId:" + cameraId);
+        }
+        return AjaxResult.success("浜曞潗鏍囧紩瀵兼垚鍔�", "cameraId:" + cameraId);
+
+    }
+
+    /**
+     * 鑾峰彇鏈�杩戣窛绂荤殑鍏夌數
+     * 1-鐩告満鍦ㄧ嚎
+     * 2-寮�鍚姤璀﹀紩瀵煎姛鑳�
+     * 3-閰嶇疆浜嗘渶澶у彲瑙嗚窛绂�
+     */
+    private String getCameraByNear(double[] targetPosition) {
+        String minDistanceCameraId = "";
+        try {
+            //鑾峰彇鎵�鏈夊ぇ鍏夌數
+            List<Object> Objects = redisCache.getListKey(CacheConstants.CAMERA_LIST_KEY);
+            //缁熻鎵�鏈夊ぇ鍏夌數鍙鑼冨洿鍐呬笌鎶ヨ鐐圭殑璺濈
+            Map<String, Double> distanceMap = new HashMap<>();
+            for (Object obj : Objects) {
+                ArdCameras camera = (ArdCameras) obj;
+
+                if (!GlobalVariable.loginMap.containsKey(camera.getId())) {
+                    log.debug("璇ュ厜鐢垫湭鐧诲綍");
+                    continue;
+                }
+                if (camera.getCamMaxVisibleDistance() == null) {
+                    log.debug("璇ュ厜鐢垫湭閰嶇疆鏈�澶у彲瑙嗚窛绂�");
+                    continue;
+                }
+                if (camera.getCamAlarmGuideEnable().equals(0)) {
+                    log.debug("璇ュ厜鐢垫湭寮�鍚姤璀﹀紩瀵�");
+                    continue;
+                }
+
+                double[] camPosition = new double[]{camera.getLongitude(), camera.getLatitude()};
+                double distance = GisUtil.getDistance(targetPosition, camPosition);
+                if (distance != 0.0 && distance <= camera.getCamMaxVisibleDistance()) {
+                    distanceMap.put(camera.getId(), distance);
+                    if (StringUtils.isNull(camera.getCamAlarmGuideEnable())) {
+                        camera.setCamAlarmGuideEnable(0);
+                    }
+                }
+            }
+            if (distanceMap.size() > 0) {
+                log.debug("灏濊瘯鏌ユ壘鏈�杩戝厜鐢�");
+                //鑾峰彇璺濈瀛楀吀涓渶杩戠殑涓�涓浉鏈篒D
+                minDistanceCameraId = ArdTool.getKeyByMinValue(distanceMap);
+                log.debug("鏌ユ壘鍒版渶杩戝厜鐢�:" + minDistanceCameraId);
+            }
+        } catch (Exception ex) {
+            log.error("鑾峰彇闄勮繎寮�鍚姤璀﹀紩瀵煎姛鑳藉厜鐢靛紓甯�:" + ex.getMessage());
+        }
+        return minDistanceCameraId;
+    }
+
+    //鍒ゆ柇鐩告満鍜屽紩瀵间綅缃槸鍚﹀湪绂佹寮曞鍖哄煙
+    public boolean isInPolygon(String cameraId, Double[] targetPosition) {
+        boolean result = false;
+        //鎷︽埅鎵嬪姩寮曞
+        ArdCameraNoGuideZone ardCameraNoGuideZone = new ArdCameraNoGuideZone();
+        ardCameraNoGuideZone.setCameraId(cameraId);
+        ardCameraNoGuideZone.setEnabled("1");
+        //鑾峰彇褰撳墠鐩告満鐨勭寮曞彲瑙嗗煙鍒楄〃
+        List<ArdCameraNoGuideZone> ardCameraNoGuideZones = ardCameraNoGuideZoneService.selectArdCameraNoGuideZoneList(ardCameraNoGuideZone);
+        if (ardCameraNoGuideZones.size() > 0) {
+            //鑾峰彇鍒板綋鍓嶇浉鏈虹殑鍧愭爣闆嗗悎
+            for (ArdCameraNoGuideZone zone : ardCameraNoGuideZones) {
+                String[] parts = zone.getPoi().split(",");
+                List<Point> pointList = new ArrayList<>();
+                for (int i = 0; i < parts.length; i += 3) {
+                    Point point = new Point();
+                    point.setLongitude(Double.valueOf(parts[i]));
+                    point.setLatitude(Double.valueOf(parts[i + 1]));
+                    pointList.add(point);
+                }
+                double lon = targetPosition[0];
+                double lat = targetPosition[1];
+                Point targetPoint = new Point(lon, lat);
+                //鍒ゆ柇寮曞鐩爣鏄惁鍦ㄥ潗鏍囬泦鍚堢粍鎴愮殑澶氳竟褰㈠唴
+                boolean inPolygon = GisUtil.isInPolygon(targetPoint, pointList);
+                if (inPolygon) {
+                    result = inPolygon;
+                }
+            }
         }
         return result;
     }
@@ -523,7 +705,6 @@
         }
         return true;
     }
-
 
     //褰曞儚
     @SdkOperate
@@ -615,6 +796,5 @@
         }
         return map;
     }
-
 
 }
diff --git a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java
index 8f45372..1c4cb8b 100644
--- a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java
@@ -457,26 +457,8 @@
                     cmd.setTargetPosition(targetPositon);
                     cmd.setOperator("sys_patrol_inspect");
                     cmd.setExpired(step.getRecordingTime() * 60);
-                    Map<String, Double> ptzMap = new HashMap<>();
-                    switch (channel) {
-                        case 1:
-                            ptzMap.put("p", well.getGuideP1());
-                            ptzMap.put("t", well.getGuideT1());
-                            ptzMap.put("z", well.getGuideZ1());
-                            break;
-                        case 2:
-                            ptzMap.put("p", well.getGuideP2());
-                            ptzMap.put("t", well.getGuideT2());
-                            ptzMap.put("z", well.getGuideZ2());
-                            break;
-                    }
-                    cmd.setPtzMap(ptzMap);
-                    boolean setTargetPosition;
-                    if (cmd.getPtzMap().get("p") != null) {
-                        setTargetPosition = cameraSdkService.setPtz(cmd);
-                    } else {
-                        setTargetPosition = cameraSdkService.guideTargetPosition(cmd);
-                    }
+
+                    boolean setTargetPosition = cameraSdkService.guideTargetPosition(cmd);
                     if (setTargetPosition) {
                         /*鎺у埗鐩告満宸℃鎴愬姛锛屽紑濮嬪綍鍍�*/
                         cameraSdkService.recordStart(cmd);
@@ -533,26 +515,7 @@
                     cmd.setTargetPosition(targetPositon);
                     cmd.setOperator("sys_patrol_inspect");
                     cmd.setExpired(step.getRecordingTime() * 60);
-                    Map<String, Double> ptzMap = new HashMap<>();
-                    switch (channel) {
-                        case 1:
-                            ptzMap.put("p", well.getGuideP1());
-                            ptzMap.put("t", well.getGuideT1());
-                            ptzMap.put("z", well.getGuideZ1());
-                            break;
-                        case 2:
-                            ptzMap.put("p", well.getGuideP2());
-                            ptzMap.put("t", well.getGuideT2());
-                            ptzMap.put("z", well.getGuideZ2());
-                            break;
-                    }
-                    cmd.setPtzMap(ptzMap);
-                    boolean setTargetPosition;
-                    if (cmd.getPtzMap().get("p") != null) {
-                        setTargetPosition = cameraSdkService.setPtz(cmd);
-                    } else {
-                        setTargetPosition = cameraSdkService.guideTargetPosition(cmd);
-                    }
+                    boolean setTargetPosition = cameraSdkService.guideTargetPosition(cmd);
                     if (!setTargetPosition) {
                         /*鎺у埗澶辫触,褰撳墠姝ラ鍚姩鏃堕棿缃畁ull*/
                         ardVideoInspectTask.setCurrentStepStartTime("");
@@ -590,7 +553,7 @@
                 cmd.setChanNo(channel);
                 cmd.setOperator("sys_patrol_inspect");
                 cmd.setRecordBucketName("record");
-                cmd.setRecordObjectName("inspect_" + IdUtils.fastSimpleUUID());
+                cmd.setRecordObjectName("inspectGuide/" + DateUtils.getDateYYYYMMDD()+"/"+ IdUtils.fastSimpleUUID());
                 String url = cameraSdkService.recordStopToMinio(cmd);
                 /*鎻掑叆宸℃璁板綍*/
                 ArdVideoInspectRecord ardVideoInspectRecord = new ArdVideoInspectRecord();
diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java
index de60871..14f4de6 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java
@@ -3,6 +3,7 @@
 import com.ruoyi.alarm.global.domain.GuidePriorityQueue;
 import com.ruoyi.alarm.global.domain.GuideTask;
 import com.ruoyi.alarm.global.service.impl.QueueHandler;
+import com.ruoyi.common.annotation.SdkOperate;
 import com.ruoyi.common.utils.file.FileUtils;
 import com.ruoyi.common.utils.file.MimeTypeUtils;
 import com.ruoyi.common.utils.spring.SpringUtils;
@@ -315,6 +316,7 @@
      * 2023/10/17 8:28:13
      */
     @Override
+    @SdkOperate
     public boolean pTZControl(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         boolean enable = cmd.isEnable();
@@ -440,6 +442,7 @@
      * @淇敼浜哄拰鍏跺畠淇℃伅 娉ㄦ剰淇话瑙掑害璐熷�奸渶瑕佸姞涓�360寰楀埌鐨勬鍊艰繘琛岃缃�
      */
     @Override
+    @SdkOperate
     public boolean setPtz(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         Integer chanNo = cmd.getChanNo();
@@ -474,6 +477,7 @@
      * @淇敼浜哄拰鍏跺畠淇℃伅 娉ㄦ剰淇话瑙掑害璐熷�奸渶瑕佸姞涓�360寰楀埌鐨勬鍊艰繘琛岃缃�
      */
     @Override
+    @SdkOperate
     public boolean setZeroPtz(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         Integer chanNo = cmd.getChanNo();
diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
index ff42951..82a6c1d 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
@@ -3,6 +3,7 @@
 import com.ruoyi.alarm.global.domain.GuidePriorityQueue;
 import com.ruoyi.alarm.global.domain.GuideTask;
 import com.ruoyi.alarm.global.service.impl.QueueHandler;
+import com.ruoyi.common.annotation.SdkOperate;
 import com.ruoyi.common.utils.file.FileUtils;
 import com.ruoyi.common.utils.file.MimeTypeUtils;
 import com.ruoyi.common.utils.spring.SpringUtils;
@@ -374,6 +375,7 @@
      * @淇敼浜哄拰鍏跺畠淇℃伅
      */
     @Override
+    @SdkOperate
     public boolean pTZControl(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         boolean enable = cmd.isEnable();
@@ -989,6 +991,7 @@
      * @淇敼浜哄拰鍏跺畠淇℃伅 娉ㄦ剰淇话瑙掑害璐熷�奸渶瑕佸姞涓�360寰楀埌鐨勬鍊艰繘琛岃缃�
      */
     @Override
+    @SdkOperate
     public boolean setPtz1(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         Integer channelNum = cmd.getChanNo();
@@ -1029,6 +1032,7 @@
      * @淇敼浜哄拰鍏跺畠淇℃伅 娉ㄦ剰淇话瑙掑害璐熷�煎悜涓嬭礋鍊�
      */
     @Override
+    @SdkOperate
     public boolean setPtz(CameraCmd cmd) {
         try {
             String cameraId = cmd.getCameraId();
@@ -1079,9 +1083,10 @@
     }
 
     @Override
+    @SdkOperate
     public boolean guideTargetPosition(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChanNo();
+        Integer chanNo = cmd.getChanNo();
         if (!GlobalVariable.loginMap.containsKey(cameraId)) {
             return false;
         }
@@ -1101,7 +1106,7 @@
             m_ptzPosCurrent.wZoomPos = (short) (Integer.parseInt(z, 16));
             Pointer point = m_ptzPosCurrent.getPointer();
             m_ptzPosCurrent.write();
-            boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_PTZPOS, channelNum, point, m_ptzPosCurrent.size());
+            boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_PTZPOS, chanNo, point, m_ptzPosCurrent.size());
             if (!bool) {
                 int code = hCNetSDK.NET_DVR_GetLastError();
                 log.error("璁剧疆ptz澶辫触,璇风◢鍚庨噸璇�" + code);
@@ -1153,6 +1158,7 @@
      * @淇敼浜哄拰鍏跺畠淇℃伅 娉ㄦ剰淇话瑙掑害璐熷�奸渶瑕佸姞涓�360寰楀埌鐨勬鍊艰繘琛岃缃�
      */
     @Override
+    @SdkOperate
     public boolean setZeroPtz(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         Integer channelNum = cmd.getChanNo();
diff --git a/ard-work/src/main/java/com/ruoyi/utils/tools/ArdTool.java b/ard-work/src/main/java/com/ruoyi/utils/tools/ArdTool.java
index 6c3522b..674b0de 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/tools/ArdTool.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/tools/ArdTool.java
@@ -46,7 +46,7 @@
      * @return
      */
     public static String getKeyByMinValue(Map<String, Double> map) {
-        if (map == null) return null;
+        if (map == null||map.size()==0) return null;
         List<Map.Entry<String, Double>> list = new ArrayList(map.entrySet());
         Collections.sort(list, (o1, o2) -> (o1.getValue().intValue() - o2.getValue().intValue()));
         String min = list.get(0).getKey();
diff --git a/ard-work/src/main/resources/mapper/alarmpoints/ArdAlarmpointsWellMapper.xml b/ard-work/src/main/resources/mapper/alarmpoints/ArdAlarmpointsWellMapper.xml
index e6247af..783d11b 100644
--- a/ard-work/src/main/resources/mapper/alarmpoints/ArdAlarmpointsWellMapper.xml
+++ b/ard-work/src/main/resources/mapper/alarmpoints/ArdAlarmpointsWellMapper.xml
@@ -28,13 +28,12 @@
         <result property="createTime" column="create_time"/>
         <result property="updateBy" column="update_by"/>
         <result property="updateTime" column="update_time"/>
-        <result property="guideP1" column="guide_p1"/>
-        <result property="guideT1" column="guide_t1"/>
-        <result property="guideZ1" column="guide_z1"/>
-        <result property="guideP2" column="guide_p2"/>
-        <result property="guideT2" column="guide_t2"/>
-        <result property="guideZ2" column="guide_z2"/>
+        <!-- 瀛愭煡璇紝鍏宠仈 ard_well_guide_camera 琛� -->
+        <collection property="ardWellGuideCameraList" ofType="java.util.List" select="getArdWellGuideCameraListByWellId" column="id"/>
     </resultMap>
+    <select id="getArdWellGuideCameraListByWellId" resultType="ArdWellGuideCamera">
+        SELECT * FROM ard_well_guide_camera WHERE well_id = #{id}
+    </select>
 
     <resultMap type="ArdAlarmpointsWell" id="wellResult">
         <result property="id" column="id"/>
@@ -65,13 +64,7 @@
                c.create_by,
                c.create_time,
                c.update_by,
-               c.update_time,
-               c.guide_p1,
-               c.guide_t1,
-               c.guide_z1,
-               c.guide_p2,
-               c.guide_t2,
-               c.guide_z2
+               c.update_time
         from ard_alarmpoints_well 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
@@ -104,7 +97,7 @@
 
     <select id="selectArdAlarmpointsWellById" parameterType="String" resultMap="ArdAlarmpointsWellResult">
         <include refid="selectArdAlarmpointsWellVo"/>
-        where id = #{id}
+        where c.id = #{id}
     </select>
     <select id="selectArdAlarmpointsWellByWellId" parameterType="String" resultMap="ArdAlarmpointsWellResult">
         <include refid="selectArdAlarmpointsWellVo"/>
@@ -257,24 +250,35 @@
         </foreach>
     </delete>
     <select id="checkWellIdExists" resultType="ArdAlarmpointsWell">
-        SELECT * FROM ard_alarmpoints_well WHERE well_id = #{wellId} limit 1
+        SELECT *
+        FROM ard_alarmpoints_well
+        WHERE well_id = #{wellId} limit 1
     </select>
 
     <select id="wellByPlanId" parameterType="String" resultMap="wellResult">
-        select ard_app_patrolpoint.alarmpoints_id as id,ard_alarmpoints_well.well_id, ard_app_patrolpoint."type",ard_alarmpoints_well.longitude,ard_alarmpoints_well.latitude from ard_alarmpoints_well LEFT JOIN ard_app_patrolpoint on ard_app_patrolpoint.alarmpoints_id = ard_alarmpoints_well.id where ard_alarmpoints_well.id in (select alarmpoints_id from ard_app_patrolpoint where patrolplan_id = #{id})
-        GROUP BY ard_app_patrolpoint.alarmpoints_id,ard_alarmpoints_well.well_id,ard_app_patrolpoint."type",ard_alarmpoints_well.longitude,ard_alarmpoints_well.latitude
+        select ard_app_patrolpoint.alarmpoints_id as id,
+               ard_alarmpoints_well.well_id,
+               ard_app_patrolpoint."type",
+               ard_alarmpoints_well.longitude,
+               ard_alarmpoints_well.latitude
+        from ard_alarmpoints_well
+                 LEFT JOIN ard_app_patrolpoint on ard_app_patrolpoint.alarmpoints_id = ard_alarmpoints_well.id
+        where ard_alarmpoints_well.id in (select alarmpoints_id from ard_app_patrolpoint where patrolplan_id = #{id})
+        GROUP BY ard_app_patrolpoint.alarmpoints_id, ard_alarmpoints_well.well_id, ard_app_patrolpoint."type",
+                 ard_alarmpoints_well.longitude, ard_alarmpoints_well.latitude
     </select>
 
-    <select id="wellListDept" parameterType="List" resultType="com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWellDeptVo">
+    <select id="wellListDept" parameterType="List"
+            resultType="com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWellDeptVo">
         Select well.id,well.well_id,well.well_number,well.oil_production,well.well_block,well.production_date,
         well.displacement_mode,well.surrounding_environment,well.well_type,well.installed_load,well.metering_station,
         well.transfer_station,well.dehydration_station,well.run_status,well.longitude,well.latitude,well.altitude,well.dept_id,
         dept.parent_id,dept.ancestors,dept.dept_name
         from ard_alarmpoints_well well
         left join sys_dept dept on well.dept_id = dept.dept_id
-        where well.dept_id  in
+        where well.dept_id in
         <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
             #{item}
         </foreach>
     </select>
-</mapper>
\ No newline at end of file
+</mapper>
diff --git a/ard-work/src/main/resources/mapper/alarmpoints/ArdWellGuideCameraMapper.xml b/ard-work/src/main/resources/mapper/alarmpoints/ArdWellGuideCameraMapper.xml
new file mode 100644
index 0000000..8ae9539
--- /dev/null
+++ b/ard-work/src/main/resources/mapper/alarmpoints/ArdWellGuideCameraMapper.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.alarmpoints.well.mapper.ArdWellGuideCameraMapper">
+
+    <resultMap type="ArdWellGuideCamera" id="ArdWellGuideCameraResult">
+        <result property="id"    column="id"    />
+        <result property="cameraId"    column="camera_id"    />
+        <result property="p1"    column="p1"    />
+        <result property="t1"    column="t1"    />
+        <result property="z1"    column="z1"    />
+        <result property="p2"    column="p2"    />
+        <result property="t2"    column="t2"    />
+        <result property="z2"    column="z2"    />
+        <result property="wellId"    column="well_id"    />
+    </resultMap>
+
+    <sql id="selectArdWellGuideCameraVo">
+        select id, camera_id, p1, t1, z1, p2, t2, z2, well_id from ard_well_guide_camera
+    </sql>
+
+    <select id="selectArdWellGuideCameraList" parameterType="ArdWellGuideCamera" resultMap="ArdWellGuideCameraResult">
+        <include refid="selectArdWellGuideCameraVo"/>
+        <where>
+            <if test="cameraId != null  and cameraId != ''"> and camera_id = #{cameraId}</if>
+            <if test="p1 != null "> and p1 = #{p1}</if>
+            <if test="t1 != null "> and t1 = #{t1}</if>
+            <if test="z1 != null "> and z1 = #{z1}</if>
+            <if test="p2 != null "> and p2 = #{p2}</if>
+            <if test="t2 != null "> and t2 = #{t2}</if>
+            <if test="z2 != null "> and z2 = #{z2}</if>
+            <if test="wellId != null  and wellId != ''"> and well_id = #{wellId}</if>
+        </where>
+    </select>
+
+    <select id="selectArdWellGuideCameraById" parameterType="String" resultMap="ArdWellGuideCameraResult">
+        <include refid="selectArdWellGuideCameraVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertArdWellGuideCamera" parameterType="ArdWellGuideCamera">
+        insert into ard_well_guide_camera
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="cameraId != null">camera_id,</if>
+            <if test="p1 != null">p1,</if>
+            <if test="t1 != null">t1,</if>
+            <if test="z1 != null">z1,</if>
+            <if test="p2 != null">p2,</if>
+            <if test="t2 != null">t2,</if>
+            <if test="z2 != null">z2,</if>
+            <if test="wellId != null">well_id,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="cameraId != null">#{cameraId},</if>
+            <if test="p1 != null">#{p1},</if>
+            <if test="t1 != null">#{t1},</if>
+            <if test="z1 != null">#{z1},</if>
+            <if test="p2 != null">#{p2},</if>
+            <if test="t2 != null">#{t2},</if>
+            <if test="z2 != null">#{z2},</if>
+            <if test="wellId != null">#{wellId},</if>
+        </trim>
+    </insert>
+
+    <update id="updateArdWellGuideCamera" parameterType="ArdWellGuideCamera">
+        update ard_well_guide_camera
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="cameraId != null">camera_id = #{cameraId},</if>
+            <if test="p1 != null">p1 = #{p1},</if>
+            <if test="t1 != null">t1 = #{t1},</if>
+            <if test="z1 != null">z1 = #{z1},</if>
+            <if test="p2 != null">p2 = #{p2},</if>
+            <if test="t2 != null">t2 = #{t2},</if>
+            <if test="z2 != null">z2 = #{z2},</if>
+            <if test="wellId != null">well_id = #{wellId},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteArdWellGuideCameraById" parameterType="String">
+        delete from ard_well_guide_camera where id = #{id}
+    </delete>
+
+    <delete id="deleteArdWellGuideCameraByIds" parameterType="String">
+        delete from ard_well_guide_camera where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>
diff --git a/bin/run.bat b/bin/run.bat
index 08a1c92..179a180 100644
--- a/bin/run.bat
+++ b/bin/run.bat
@@ -8,7 +8,7 @@
 
 set JAVA_OPTS=-Xms256m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
 
-java -Dloader.path="jarLib/" -jar %JAVA_OPTS% ruoyi-admin.jar
+java -jar %JAVA_OPTS% ruoyi-admin.jar
 
 cd bin
 pause
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/i18n/messages.properties b/ruoyi-admin/src/main/resources/i18n/messages.properties
index 8dbfd62..8856594 100644
--- a/ruoyi-admin/src/main/resources/i18n/messages.properties
+++ b/ruoyi-admin/src/main/resources/i18n/messages.properties
@@ -201,8 +201,7 @@
 dic.data.cameras.priority.sys.radar.move=sys_radar_move
 dic.data.cameras.priority.sys.radar.fire=sys_radar_fire
 dic.data.cameras.priority.sys.radar.force=sys_radar_force
-dic.data.cameras.priority.sys.manual.inspection=sys_manual_inspection
-dic.data.cameras.priority.sys.auto.inspection=sys_auto_inspection
+dic.data.cameras.priority.sys.patrol.inspection=sys_patrol_inspect
 
 dic.data.inspect.mode.auto=\u81EA\u52A8
 dic.data.inspect.mode.manual=\u624B\u52A8
@@ -267,4 +266,4 @@
 config.dayNightTime=\u5149\u7535\u65E5\u591C\u5207\u6362\u65F6\u95F4
 config.rongyun=\u878D\u4E91IP
 config.RongCloudAppKey=\u878D\u4E91APP\u952E
-config.syCarPT=\u4E09\u4E00\u5E73\u53F0ip
\ No newline at end of file
+config.syCarPT=\u4E09\u4E00\u5E73\u53F0ip
diff --git a/ruoyi-admin/src/main/resources/i18n/messages_en_US.properties b/ruoyi-admin/src/main/resources/i18n/messages_en_US.properties
index b9eff6b..02d6013 100644
--- a/ruoyi-admin/src/main/resources/i18n/messages_en_US.properties
+++ b/ruoyi-admin/src/main/resources/i18n/messages_en_US.properties
@@ -15,7 +15,7 @@
 
 user.username.not.valid=*Composed of 2 to 20 Chinese characters, letters, numbers, or underscores, and must start with a non numeric character
 user.password.not.valid=*5-50 characters
- 
+
 user.email.not.valid=Email format error
 user.mobile.phone.number.not.valid=Mobile number format error
 user.login.success=Login successful
@@ -210,8 +210,7 @@
 dic.data.cameras.priority.sys.radar.move=sys_radar_move
 dic.data.cameras.priority.sys.radar.fire=sys_radar_fire
 dic.data.cameras.priority.sys.radar.force=sys_radar_force
-dic.data.cameras.priority.sys.manual.inspection=sys_manual_inspection
-dic.data.cameras.priority.sys.auto.inspection=sys_auto_inspection
+dic.data.cameras.priority.sys.patrol.inspection=sys_patrol_inspect
 
 dic.data.inspect.mode.auto=auto
 dic.data.inspect.mode.manual=manual
diff --git a/ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties b/ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties
index 68cfc37..7003256 100644
--- a/ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties
+++ b/ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties
@@ -15,7 +15,7 @@
 
 user.username.not.valid=* 2\u523020\u4E2A\u6C49\u5B57\u3001\u5B57\u6BCD\u3001\u6570\u5B57\u6216\u4E0B\u5212\u7EBF\u7EC4\u6210\uFF0C\u4E14\u5FC5\u987B\u4EE5\u975E\u6570\u5B57\u5F00\u5934
 user.password.not.valid=* 5-50\u4E2A\u5B57\u7B26
- 
+
 user.email.not.valid=\u90AE\u7BB1\u683C\u5F0F\u9519\u8BEF
 user.mobile.phone.number.not.valid=\u624B\u673A\u53F7\u683C\u5F0F\u9519\u8BEF
 user.login.success=\u767B\u5F55\u6210\u529F
@@ -209,8 +209,7 @@
 dic.data.cameras.priority.sys.radar.move=sys_radar_move
 dic.data.cameras.priority.sys.radar.fire=sys_radar_fire
 dic.data.cameras.priority.sys.radar.force=sys_radar_force
-dic.data.cameras.priority.sys.manual.inspection=sys_manual_inspection
-dic.data.cameras.priority.sys.auto.inspection=sys_auto_inspection
+dic.data.cameras.priority.sys.patrol.inspection=sys_patrol_inspect
 
 dic.data.inspect.mode.auto=\u81EA\u52A8
 dic.data.inspect.mode.manual=\u624B\u52A8
@@ -275,4 +274,4 @@
 config.dayNightTime=\u5149\u7535\u65E5\u591C\u5207\u6362\u65F6\u95F4
 config.rongyun=\u878D\u4E91IP
 config.RongCloudAppKey=\u878D\u4E91APP\u952E
-config.syCarPT=\u4E09\u4E00\u5E73\u53F0ip
\ No newline at end of file
+config.syCarPT=\u4E09\u4E00\u5E73\u53F0ip
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
index d777ac4..71aab40 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
@@ -27,7 +27,7 @@
     public static String YYYY_MM_DD = "yyyy-MM-dd";
 
     public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
-
+    public static String YYYYMMDD = "yyyyMMdd";
     public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
     public static String YYYY_MM_DD_HH_MM_SS_MS = "yyyy-MM-dd HH:mm:ss.SSS";
     public static String HH_MM_SS = "HH:mm:ss";
@@ -61,6 +61,10 @@
     public static final String dateTimeNow() {
         return dateTimeNow(YYYYMMDDHHMMSS);
     }
+
+    public static final String getDateYYYYMMDD() {
+        return dateTimeNow(YYYYMMDD);
+    }
     public static final String dateTimeNowMS()
     {
         return dateTimeNow(YYYY_MM_DD_HH_MM_SS_MS);

--
Gitblit v1.9.3