From defe580b123e1b7c892b88619c05774157dc09b5 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Mon, 03 Nov 2025 15:39:32 +0800
Subject: [PATCH] 增加校验机场是否已关联相机
---
ard-device/src/main/java/com/ard/device/camera/service/IArdCameraService.java | 7 +++++++
ard-device/src/main/resources/mapper/ArdCameraMapper.xml | 3 +++
ard-device/src/main/java/com/ard/device/camera/mapper/ArdCameraMapper.java | 2 +-
ard-admin/src/main/java/com/ard/web/controller/device/ArdCameraController.java | 9 +++++++++
ard-device/src/main/java/com/ard/device/camera/service/impl/ArdCameraServiceImpl.java | 17 +++++++++++++++++
5 files changed, 37 insertions(+), 1 deletions(-)
diff --git a/ard-admin/src/main/java/com/ard/web/controller/device/ArdCameraController.java b/ard-admin/src/main/java/com/ard/web/controller/device/ArdCameraController.java
index c24b65e..cbbfddf 100644
--- a/ard-admin/src/main/java/com/ard/web/controller/device/ArdCameraController.java
+++ b/ard-admin/src/main/java/com/ard/web/controller/device/ArdCameraController.java
@@ -14,6 +14,7 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.jdbc.Null;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -83,6 +84,10 @@
if (DeviceConstants.NOT_UNIQUE.equals(ardCameraService.checkCameraIpAndPortUnique(camera))) {
return error("新增相机'" + camera.getIp() + ":" + camera.getPort() + "'失败,相机已存在");
}
+ ArdCamera existingCamera = ardCameraService.checkAirportHasCamera(camera);
+ if (existingCamera != null) {
+ return error("该机场已被相机【" + existingCamera.getName() + "】(" + existingCamera.getIp() + ") 关联");
+ }
return success(ardCameraService.insertArdCamera(camera));
}
@@ -97,6 +102,10 @@
if (DeviceConstants.NOT_UNIQUE.equals(ardCameraService.checkCameraIpAndPortUnique(camera))) {
return error("修改相机'" + camera.getIp() + ":" + camera.getPort() + "'失败,相机已存在");
}
+ ArdCamera existingCamera = ardCameraService.checkAirportHasCamera(camera);
+ if (existingCamera != null) {
+ return error("该机场已被相机【" + existingCamera.getName() + "】(" + existingCamera.getIp() + ") 关联");
+ }
return success(ardCameraService.updateArdCamera(camera));
}
diff --git a/ard-device/src/main/java/com/ard/device/camera/mapper/ArdCameraMapper.java b/ard-device/src/main/java/com/ard/device/camera/mapper/ArdCameraMapper.java
index 047bd8f..095dd31 100644
--- a/ard-device/src/main/java/com/ard/device/camera/mapper/ArdCameraMapper.java
+++ b/ard-device/src/main/java/com/ard/device/camera/mapper/ArdCameraMapper.java
@@ -84,6 +84,6 @@
*/
public int resetCameraLoginId(ArdCamera camera);
-
+ ArdCamera checkAirportHasCamera(ArdCamera camera);
}
diff --git a/ard-device/src/main/java/com/ard/device/camera/service/IArdCameraService.java b/ard-device/src/main/java/com/ard/device/camera/service/IArdCameraService.java
index e54247f..9d30421 100644
--- a/ard-device/src/main/java/com/ard/device/camera/service/IArdCameraService.java
+++ b/ard-device/src/main/java/com/ard/device/camera/service/IArdCameraService.java
@@ -102,6 +102,13 @@
public String checkCameraIpAndPortUnique(ArdCamera camera);
/**
+ * 校验机场是否已关联相机
+ *
+ * @param camera 相机
+ * @return 结果
+ */
+ public ArdCamera checkAirportHasCamera(ArdCamera camera);
+ /**
* 同步通道
*
* @param oldArrayList 旧通道列表(库中)
diff --git a/ard-device/src/main/java/com/ard/device/camera/service/impl/ArdCameraServiceImpl.java b/ard-device/src/main/java/com/ard/device/camera/service/impl/ArdCameraServiceImpl.java
index 39de4b9..b8f40d8 100644
--- a/ard-device/src/main/java/com/ard/device/camera/service/impl/ArdCameraServiceImpl.java
+++ b/ard-device/src/main/java/com/ard/device/camera/service/impl/ArdCameraServiceImpl.java
@@ -29,6 +29,7 @@
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
+
import javax.annotation.Resource;
import javax.validation.Validator;
import java.util.*;
@@ -295,6 +296,20 @@
return DeviceConstants.UNIQUE;
}
+ /**
+ * 校验机场是否已关联相机
+ *
+ * @param camera 相机
+ * @return 结果
+ */
+ @Override
+ public ArdCamera checkAirportHasCamera(ArdCamera camera) {
+ ArdCamera info = ardCameraMapper.checkAirportHasCamera(camera);
+ if (StringUtils.isNotNull(info)&& !info.getId().equals(camera.getId())) {
+ return info;
+ }
+ return null;
+ }
/**
* 同步通道
@@ -357,6 +372,7 @@
// SDK 登录成功后写入 Redis
redisService.setCacheObject(getCacheKey(camera.getId()), camera);
}
+
/**
* 同步设备通道与本地通道库信息
*
@@ -385,6 +401,7 @@
log.error("定时执行同步通道任务异常:{}", ex.getMessage());
}
}
+
/**
* 定时执行登录失败相机重新登录
*
diff --git a/ard-device/src/main/resources/mapper/ArdCameraMapper.xml b/ard-device/src/main/resources/mapper/ArdCameraMapper.xml
index 01354f1..bd3fb07 100644
--- a/ard-device/src/main/resources/mapper/ArdCameraMapper.xml
+++ b/ard-device/src/main/resources/mapper/ArdCameraMapper.xml
@@ -234,6 +234,9 @@
where ip = #{ip}
and port = #{port} limit 1
</select>
+ <select id="checkAirportHasCamera" resultMap="ArdCameraResult">
+ select * from ard_camera where dock_id = #{dockId} limit 1
+ </select>
<update id="resetCameraLoginId" parameterType="ArdCamera">
update ard_camera set login_id = -1 where id = #{id}
</update>
--
Gitblit v1.9.3