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)); } 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); } 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 旧通道列表(库中) 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()); } } /** * 定时执行登录失败相机重新登录 * 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>