From b95df429267d2d4932c4b604e9acdfc0617d06d4 Mon Sep 17 00:00:00 2001
From: aijinhui <aijinhui>
Date: 星期五, 06 十月 2023 15:58:03 +0800
Subject: [PATCH] 雷达设备
---
src/main/java/com/ard/alarm/external/service/impl/ArdEquipExternalServiceImpl.java | 170 ++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 157 insertions(+), 13 deletions(-)
diff --git a/src/main/java/com/ard/alarm/external/service/impl/ArdEquipExternalServiceImpl.java b/src/main/java/com/ard/alarm/external/service/impl/ArdEquipExternalServiceImpl.java
index 2753ea4..723ab35 100644
--- a/src/main/java/com/ard/alarm/external/service/impl/ArdEquipExternalServiceImpl.java
+++ b/src/main/java/com/ard/alarm/external/service/impl/ArdEquipExternalServiceImpl.java
@@ -1,53 +1,197 @@
package com.ard.alarm.external.service.impl;
-import java.util.List;
+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.external.domain.ArdEquipExternal;
import com.ard.alarm.external.mapper.ArdEquipExternalMapper;
import com.ard.alarm.external.service.IArdEquipExternalService;
+import com.ard.utils.hiksdk.service.impl.HikClientUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
/**
* externalService涓氬姟灞傚鐞�
- *
+ *
* @author zj
* @date 2023-03-13
*/
@Service
-public class ArdEquipExternalServiceImpl implements IArdEquipExternalService
-{
+@Slf4j(topic = "external")
+@Order(5)
+public class ArdEquipExternalServiceImpl implements IArdEquipExternalService, ApplicationRunner {
+
+ private final static ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
+
+ public static List<ArdEquipExternal> ardAlarmHostList = new ArrayList<>();
+ public static List<ArdEquipExternal> ardAccessHostList = new ArrayList<>();
+
@Autowired
private ArdEquipExternalMapper ardEquipExternalMapper;
+ @Override
+ public void run(ApplicationArguments args){
+ //鑾峰彇鍏ㄩ儴娴峰悍鎶ヨ涓绘満灏濊瘯鐧诲綍
+ ArdEquipExternal alarmHost = new ArdEquipExternal();
+ alarmHost.setFactory("1");
+ alarmHost.setType("1");
+ ardAlarmHostList = selectArdEquipExternalList(alarmHost);
+ HikClientUtil.loginAllAlarmHost(ardAlarmHostList);
+ log.debug("鎶ヨ涓绘満灏濊瘯鐧诲綍");
+ //鑾峰彇鍏ㄩ儴闂ㄧ涓绘満灏濊瘯鐧诲綍
+ ArdEquipExternal accessControlHost = new ArdEquipExternal();
+ accessControlHost.setFactory("1");
+ accessControlHost.setType("6");
+ ardAccessHostList = selectArdEquipExternalList(accessControlHost);
+ HikClientUtil.loginAllAccessControlHost(ardAccessHostList);
+ log.debug("闂ㄧ涓绘満灏濊瘯鐧诲綍");
+ //鍚屾浠诲姟
+ syncTask();
+ }
+
+ /**
+ * 鍚屾浠诲姟
+ * 鍒樿嫃涔�
+ * 2023/8/11 9:09:27
+ */
+ private void syncTask() {
+ scheduler.scheduleAtFixedRate(() -> {
+ try {
+ //region 瀹氭椂鍚屾鎶ヨ涓绘満
+ ArdEquipExternal alarmHost = new ArdEquipExternal();
+ alarmHost.setFactory("1");
+ alarmHost.setType("1");
+ List<ArdEquipExternal> newAlarmHostList = selectArdEquipExternalList(alarmHost);
+ //闇�瑕佹洿鏂扮殑鏁版嵁
+ List<ArdEquipExternal> updateList = sameListWithDifferent(ardAlarmHostList, newAlarmHostList);
+ if (updateList.size() > 0) {
+ HikClientUtil.logoutAllAlarmHost(updateList);
+ HikClientUtil.loginAllAlarmHost(updateList);
+ ardAlarmHostList.clear();
+ ardAlarmHostList.addAll(newAlarmHostList);
+ }
+ //闇�瑕佸垹闄ょ殑鏁版嵁
+ List<ArdEquipExternal> delList = diffList(ardAlarmHostList, newAlarmHostList);
+ if (delList.size() > 0) {
+ HikClientUtil.logoutAllAlarmHost(delList);
+ for (ArdEquipExternal ardEquipExternal : delList) {
+ ardAlarmHostList.remove(ardEquipExternal);
+ }
+ }
+ //闇�瑕佹柊澧炵殑鏁版嵁
+ List<ArdEquipExternal> inserList = diffList(newAlarmHostList, ardAlarmHostList);
+ if (inserList.size() > 0) {
+ HikClientUtil.loginAllAlarmHost(inserList);
+ for (ArdEquipExternal ardEquipExternal : inserList) {
+ ardAlarmHostList.add(ardEquipExternal);
+ }
+ }
+
+ //endregion
+ //region 瀹氭椂鍚屾闂ㄧ涓绘満
+ alarmHost = new ArdEquipExternal();
+ alarmHost.setFactory("1");
+ alarmHost.setType("6");
+ List<ArdEquipExternal> newAccessHostList = selectArdEquipExternalList(alarmHost);
+ //闇�瑕佹洿鏂扮殑鏁版嵁
+ updateList = sameListWithDifferent(ardAccessHostList, newAccessHostList);
+ if (updateList.size() > 0) {
+ HikClientUtil.logoutAllAlarmHost(updateList);
+ HikClientUtil.loginAllAlarmHost(updateList);
+ ardAccessHostList.clear();
+ ardAccessHostList.addAll(newAccessHostList);
+ }
+ //闇�瑕佸垹闄ょ殑鏁版嵁
+ delList = diffList(ardAccessHostList, newAccessHostList);
+ if (delList.size() > 0) {
+ HikClientUtil.logoutAllAccessControlHost(delList);
+ for (ArdEquipExternal ardEquipExternal : delList) {
+ ardAccessHostList.remove(ardEquipExternal);
+ }
+ }
+ //闇�瑕佹柊澧炵殑鏁版嵁
+ inserList = diffList(newAccessHostList, ardAccessHostList);
+ if (inserList.size() > 0) {
+ HikClientUtil.loginAllAccessControlHost(inserList);
+ for (ArdEquipExternal ardEquipExternal : inserList) {
+ ardAccessHostList.add(ardEquipExternal);
+ }
+ }
+ //endregion
+ } catch (Exception e) {
+ log.error("鍚屾澶栬仈浠诲姟鎵ц鍑洪敊" + e.getMessage());
+ }
+ }, 10, 10, TimeUnit.SECONDS);
+ }
+
+
/**
* 鏌ヨexternal
- *
+ *
* @param id external涓婚敭
* @return external
*/
@Override
- public ArdEquipExternal selectArdEquipExternalById(String id)
- {
- return ardEquipExternalMapper.selectArdEquipExternalById(id);
+ public ArdEquipExternal selectArdEquipExternalById(String id) {
+ return ardEquipExternalMapper.selectById(id);
}
@Override
public ArdEquipExternal selectArdEquipExternal(ArdEquipExternal ardEquipExternal) {
- return ardEquipExternalMapper.selectArdEquipExternal(ardEquipExternal);
+ QueryWrapper<ArdEquipExternal> queryWrapper=new QueryWrapper<>(ardEquipExternal);
+ return ardEquipExternalMapper.selectOne(queryWrapper);
}
/**
* 鏌ヨexternal鍒楄〃
- *
+ *
* @param ardEquipExternal external
* @return external
*/
@Override
- public List<ArdEquipExternal> selectArdEquipExternalList(ArdEquipExternal ardEquipExternal)
- {
- return ardEquipExternalMapper.selectArdEquipExternalList(ardEquipExternal);
+ public List<ArdEquipExternal> selectArdEquipExternalList(ArdEquipExternal ardEquipExternal) {
+ QueryWrapper<ArdEquipExternal> queryWrapper=new QueryWrapper<>(ardEquipExternal);
+ return ardEquipExternalMapper.selectList(queryWrapper);
}
+
+ //姹備袱涓璞ist鐨勪氦闆嗗瓧娈典笉鍚孖d鐩稿悓
+ private List<ArdEquipExternal> sameListWithDifferent(List<ArdEquipExternal> oldList, List<ArdEquipExternal> newList) {
+ List<ArdEquipExternal> differentFieldsList = newList.stream()
+ .filter(newItem -> {
+ ArdEquipExternal oldItem = oldList.stream()
+ .filter(item -> item.getId().equals(newItem.getId()))
+ .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());
+ })
+ .collect(Collectors.toList());
+
+ return differentFieldsList;
+ }
+
+
+ // 姹備袱涓璞ist鐨勫樊闆�
+ private List<ArdEquipExternal> diffList(List<ArdEquipExternal> oldArrayList, List<ArdEquipExternal> newArrayList) {
+ List<ArdEquipExternal> resultList = oldArrayList.stream()
+ .filter(item -> !newArrayList.stream().map(e -> e.getId()).collect(Collectors.toList()).contains(item.getId()))
+ .collect(Collectors.toList());
+ return resultList;
+ }
}
--
Gitblit v1.9.3