zhaowenyu
2025-11-03 9bb52797002ee048968a43c37a33e58334aeb551
Merge remote-tracking branch 'origin/dev' into dev
5 files modified
38 ■■■■■ changed files
ard-admin/src/main/java/com/ard/web/controller/device/ArdCameraController.java 9 ●●●●● patch | view | raw | blame | history
ard-device/src/main/java/com/ard/device/camera/mapper/ArdCameraMapper.java 2 ●●●●● patch | view | raw | blame | history
ard-device/src/main/java/com/ard/device/camera/service/IArdCameraService.java 7 ●●●●● patch | view | raw | blame | history
ard-device/src/main/java/com/ard/device/camera/service/impl/ArdCameraServiceImpl.java 17 ●●●●● patch | view | raw | blame | history
ard-device/src/main/resources/mapper/ArdCameraMapper.xml 3 ●●●●● patch | view | raw | blame | history
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>