‘liusuyi’
2023-09-25 e71d3d823093bafe0283a57aa640928709d09434
src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java
@@ -12,6 +12,8 @@
import com.ard.alarm.external.domain.ArdEquipExternal;
import com.ard.alarm.external.mapper.ArdEquipExternalMapper;
import com.ard.utils.hiksdk.service.impl.HikClientUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
@@ -34,30 +36,31 @@
    private final static ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
    public static List<ArdCameras> ardCameraList = new ArrayList<>();
    @Resource
    private ArdCamerasMapper ardCamerasMapper;
    //初始化执行
    @Override
    public void run(ApplicationArguments args) {
        //加载sdk库
        HikClientUtil.loadHCNetSDKLib();
        //获取全部海康光电尝试登录
        ardCameraList = ardCamerasMapper.selectArdCamerasList(new ArdCameras());
        //获取小光电尝试登录
        ardCameraList = selectArdCamerasList(new ArdCameras());
        HikClientUtil.loginAllCamera(ardCameraList);
        syncTask();
        syncCameraListTask();
    }
    /**
     * 同步任务
     * 同步相机列表任务
     * 实时获取在线的小光电
     * 刘苏义
     * 2023/8/11 9:09:27
     */
    private void syncTask() {
    private void syncCameraListTask() {
        scheduler.scheduleAtFixedRate(() -> {
            try {
                //region 定时同步相机
                List<ArdCameras> newArdCameraList = ardCamerasMapper.selectArdCamerasList(new ArdCameras());
                //region 定时同步小光电
                List<ArdCameras> newArdCameraList = selectArdCamerasList(new ArdCameras());
                //需要更新的数据
                List<ArdCameras> updateList = sameListWithDifferent(ardCameraList, newArdCameraList);
                if (updateList.size() > 0) {
@@ -90,25 +93,16 @@
    }
    /**
     * 查询相机设备
     *
     * @param id 相机设备主键
     * @return 相机设备
     */
    @Override
    public ArdCameras selectArdCamerasById(String id) {
        return ardCamerasMapper.selectArdCamerasById(id);
    }
    /**
     * 查询相机设备列表
     *
     * @param ardCameras 相机设备
     * @param ardCamera 相机设备
     * @return 相机设备
     */
    @Override
    public List<ArdCameras> selectArdCamerasList(ArdCameras ardCameras) {
        return ardCamerasMapper.selectArdCamerasList(ardCameras);
    public List<ArdCameras> selectArdCamerasList(ArdCameras ardCamera) {
        ardCamera.setGdType("0");
        Wrapper<ArdCameras> queryWrapper=new QueryWrapper<>(ardCamera);
        return ardCamerasMapper.selectList(queryWrapper);
    }
@@ -129,12 +123,7 @@
                            .findFirst()
                            .orElse(null);
                    return oldItem == null ||
                            !Objects.equals(oldItem.getUpdateTime(), newItem.getUpdateTime()) ||
                            !Objects.equals(oldItem.getIp(), newItem.getIp()) ||
                            !Objects.equals(oldItem.getPort(), newItem.getPort()) ||
                            !Objects.equals(oldItem.getUsername(), newItem.getUsername()) ||
                            !Objects.equals(oldItem.getPassword(), newItem.getPassword());
                    return oldItem == null || !Objects.equals(oldItem.getUpdateTime(), newItem.getUpdateTime());
                })
                .collect(Collectors.toList());