From c8b6f74ecc29022a7f52a2ee35aa25eef3312f39 Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期三, 25 十月 2023 17:09:15 +0800 Subject: [PATCH] 海康动态链接库集成 --- src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java | 265 ++++++++++++++++++++++++++-------------------------- 1 files changed, 132 insertions(+), 133 deletions(-) diff --git a/src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java b/src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java index af9336f..36b5523 100644 --- a/src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java +++ b/src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java @@ -1,133 +1,132 @@ -package com.ard.alarm.camera.service.impl; - -import java.util.*; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; - -import com.ard.alarm.camera.domain.ArdCameras; -import com.ard.alarm.camera.mapper.ArdCamerasMapper; -import com.ard.alarm.camera.service.IArdCamerasService; -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; -import org.springframework.core.annotation.Order; -import org.springframework.stereotype.Service; - -import javax.annotation.PostConstruct; -import javax.annotation.Resource; - -/** - * 鐩告満璁惧Service涓氬姟灞傚鐞� - * - * @author 鍒樿嫃涔� - * @date 2023-02-11 - */ -@Service -@Slf4j(topic = "camera") -@Order(4) -public class ArdCamerasServiceImpl implements IArdCamerasService, ApplicationRunner { - 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 = selectArdCamerasList(new ArdCameras()); - HikClientUtil.loginAllCamera(ardCameraList); - syncCameraListTask(); - } - - /** - * 鍚屾鐩告満鍒楄〃浠诲姟 - * 瀹炴椂鑾峰彇鍦ㄧ嚎鐨勫皬鍏夌數 - * 鍒樿嫃涔� - * 2023/8/11 9:09:27 - */ - private void syncCameraListTask() { - scheduler.scheduleAtFixedRate(() -> { - try { - //region 瀹氭椂鍚屾灏忓厜鐢� - List<ArdCameras> newArdCameraList = selectArdCamerasList(new ArdCameras()); - //闇�瑕佹洿鏂扮殑鏁版嵁 - List<ArdCameras> updateList = sameListWithDifferent(ardCameraList, newArdCameraList); - if (updateList.size() > 0) { - HikClientUtil.logoutAllCamera(updateList); - HikClientUtil.loginAllCamera(updateList); - ardCameraList.clear(); - ardCameraList.addAll(newArdCameraList); - } - //闇�瑕佸垹闄ょ殑鏁版嵁 - List<ArdCameras> delList = diffList(ardCameraList, newArdCameraList); - if (delList.size() > 0) { - HikClientUtil.logoutAllCamera(delList); - for (ArdCameras ardCameras : delList) { - ardCameraList.remove(ardCameras); - } - } - //闇�瑕佹柊澧炵殑鏁版嵁 - List<ArdCameras> inserList = diffList(newArdCameraList, ardCameraList); - if (inserList.size() > 0) { - HikClientUtil.loginAllCamera(inserList); - for (ArdCameras ardCameras : inserList) { - ardCameraList.add(ardCameras); - } - } - //endregion - } catch (Exception e) { - log.error("鍚屾鐩告満浠诲姟鎵ц鍑洪敊" + e.getMessage()); - } - }, 10, 10, TimeUnit.SECONDS); - } - - /** - * 鏌ヨ鐩告満璁惧鍒楄〃 - * - * @param ardCamera 鐩告満璁惧 - * @return 鐩告満璁惧 - */ - @Override - public List<ArdCameras> selectArdCamerasList(ArdCameras ardCamera) { - ardCamera.setGdType("0"); - Wrapper<ArdCameras> queryWrapper=new QueryWrapper<>(ardCamera); - return ardCamerasMapper.selectList(queryWrapper); - } - - - // 姹備袱涓璞ist鐨勫樊闆� - private List<ArdCameras> diffList(List<ArdCameras> oldArrayList, List<ArdCameras> newArrayList) { - List<ArdCameras> resultList = oldArrayList.stream() - .filter(item -> !newArrayList.stream().map(e -> e.getId()).collect(Collectors.toList()).contains(item.getId())) - .collect(Collectors.toList()); - return resultList; - } - - //姹備袱涓璞ist鐨勪氦闆嗗瓧娈典笉鍚孖d鐩稿悓 - private List<ArdCameras> sameListWithDifferent(List<ArdCameras> oldList, List<ArdCameras> newList) { - List<ArdCameras> differentFieldsList = newList.stream() - .filter(newItem -> { - ArdCameras oldItem = oldList.stream() - .filter(item -> item.getId().equals(newItem.getId())) - .findFirst() - .orElse(null); - - return oldItem == null || !Objects.equals(oldItem.getUpdateTime(), newItem.getUpdateTime()); - - }) - .collect(Collectors.toList()); - - return differentFieldsList; - } -} +package com.ard.alarm.camera.service.impl; + +import java.util.*; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +import com.ard.alarm.camera.domain.ArdCameras; +import com.ard.alarm.camera.mapper.ArdCamerasMapper; +import com.ard.alarm.camera.service.IArdCamerasService; +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; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Service; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; + +/** + * 鐩告満璁惧Service涓氬姟灞傚鐞� + * + * @author 鍒樿嫃涔� + * @date 2023-02-11 + */ +@Service +@Slf4j(topic = "camera") +@Order(4) +public class ArdCamerasServiceImpl implements IArdCamerasService, ApplicationRunner { + 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) { + //鑾峰彇灏忓厜鐢靛皾璇曠櫥褰� + ardCameraList = selectArdCamerasList(new ArdCameras()); + HikClientUtil.loginAllCamera(ardCameraList); + syncCameraListTask(); + } + + /** + * 鍚屾鐩告満鍒楄〃浠诲姟 + * 瀹炴椂鑾峰彇鍦ㄧ嚎鐨勫皬鍏夌數 + * 鍒樿嫃涔� + * 2023/8/11 9:09:27 + */ + private void syncCameraListTask() { + scheduler.scheduleAtFixedRate(() -> { + try { + //region 瀹氭椂鍚屾灏忓厜鐢� + List<ArdCameras> newArdCameraList = selectArdCamerasList(new ArdCameras()); + //闇�瑕佹洿鏂扮殑鏁版嵁 + List<ArdCameras> updateList = sameListWithDifferent(ardCameraList, newArdCameraList); + if (updateList.size() > 0) { + HikClientUtil.logoutAllCamera(updateList); + HikClientUtil.loginAllCamera(updateList); + ardCameraList.clear(); + ardCameraList.addAll(newArdCameraList); + } + //闇�瑕佸垹闄ょ殑鏁版嵁 + List<ArdCameras> delList = diffList(ardCameraList, newArdCameraList); + if (delList.size() > 0) { + HikClientUtil.logoutAllCamera(delList); + for (ArdCameras ardCameras : delList) { + ardCameraList.remove(ardCameras); + } + } + //闇�瑕佹柊澧炵殑鏁版嵁 + List<ArdCameras> inserList = diffList(newArdCameraList, ardCameraList); + if (inserList.size() > 0) { + HikClientUtil.loginAllCamera(inserList); + for (ArdCameras ardCameras : inserList) { + ardCameraList.add(ardCameras); + } + } + //endregion + } catch (Exception e) { + log.error("鍚屾鐩告満浠诲姟鎵ц鍑洪敊" + e.getMessage()); + } + }, 10, 10, TimeUnit.SECONDS); + } + + /** + * 鏌ヨ鐩告満璁惧鍒楄〃 + * + * @param ardCamera 鐩告満璁惧 + * @return 鐩告満璁惧 + */ + @Override + public List<ArdCameras> selectArdCamerasList(ArdCameras ardCamera) { + ardCamera.setGdType("0"); + ardCamera.setFactory("1"); + Wrapper<ArdCameras> queryWrapper=new QueryWrapper<>(ardCamera); + return ardCamerasMapper.selectList(queryWrapper); + } + + + // 姹備袱涓璞ist鐨勫樊闆� + private List<ArdCameras> diffList(List<ArdCameras> oldArrayList, List<ArdCameras> newArrayList) { + List<ArdCameras> resultList = oldArrayList.stream() + .filter(item -> !newArrayList.stream().map(e -> e.getId()).collect(Collectors.toList()).contains(item.getId())) + .collect(Collectors.toList()); + return resultList; + } + + //姹備袱涓璞ist鐨勪氦闆嗗瓧娈典笉鍚孖d鐩稿悓 + private List<ArdCameras> sameListWithDifferent(List<ArdCameras> oldList, List<ArdCameras> newList) { + List<ArdCameras> differentFieldsList = newList.stream() + .filter(newItem -> { + ArdCameras oldItem = oldList.stream() + .filter(item -> item.getId().equals(newItem.getId())) + .findFirst() + .orElse(null); + + return oldItem == null || !Objects.equals(oldItem.getUpdateTime(), newItem.getUpdateTime()); + + }) + .collect(Collectors.toList()); + + return differentFieldsList; + } +} -- Gitblit v1.9.3