From 9b55891e6dd57bc244e6c5654434b32e05c83496 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期三, 25 九月 2024 15:10:25 +0800
Subject: [PATCH] 异常监控排除已经审核过的工单作为状态
---
ycl-server/src/main/java/com/ycl/task/OsdTask.java | 172 +++++++++++++++-----------------------------------------
1 files changed, 47 insertions(+), 125 deletions(-)
diff --git a/ycl-server/src/main/java/com/ycl/task/OsdTask.java b/ycl-server/src/main/java/com/ycl/task/OsdTask.java
index 75443d2..a847840 100644
--- a/ycl-server/src/main/java/com/ycl/task/OsdTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/OsdTask.java
@@ -1,20 +1,19 @@
package com.ycl.task;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.mongodb.client.result.DeleteResult;
-import com.ycl.api.DH.module.LoginModule;
import com.ycl.api.DH.utils.DHApi;
import com.ycl.api.HK.HKApi;
import com.ycl.api.YS.YSApi;
-import com.ycl.api.YS.YSInit;
import com.ycl.platform.domain.entity.TMonitor;
import com.ycl.platform.domain.result.OSDResult;
import com.ycl.platform.domain.result.UY.MonitorQualifyResult;
import com.ycl.platform.domain.result.UY.OsdCheckResult;
+import com.ycl.platform.domain.vo.OnlineThreadVO;
import com.ycl.platform.mapper.TMonitorMapper;
import com.ycl.platform.service.UYErrorTypeCheckService;
+import com.ycl.platform.service.YwPointService;
+import com.ycl.thread.OSDCheckThread;
import com.ycl.utils.DateUtils;
import com.ycl.utils.StringUtils;
import constant.ApiConstants;
@@ -33,16 +32,21 @@
import java.util.Date;
import java.util.List;
import java.util.Map;
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
+import java.util.concurrent.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@Slf4j
@Component("OsdTask")
public class OsdTask {
+ @Autowired
+ private MongoTemplate mongoTemplate;
+ @Autowired
+ private TMonitorMapper monitorMapper;
+ @Autowired
+ private UYErrorTypeCheckService uyErrorTypeCheckService;
+ @Autowired
+ private YwPointService pointService;
@Value("${HK.userName}")
public String HKUserName;
@Value("${HK.password}")
@@ -55,97 +59,55 @@
public String YSUserName;
@Value("${YS.password}")
public String YSPassword;
- @Autowired
- private MongoTemplate mongoTemplate;
- @Autowired
- private TMonitorMapper monitorMapper;
- @Autowired
- private UYErrorTypeCheckService uyErrorTypeCheckService;
-
- private static final ExecutorService executorService = new ThreadPoolExecutor(8,
- 24,
- 5000,
- TimeUnit.SECONDS,
- new ArrayBlockingQueue<>(1000),
- new ThreadPoolExecutor.CallerRunsPolicy()
- );
-
/**
* 閫氳繃鏌ongoDB姣忔棩涓�鏈轰竴妗f暟鎹幏鍙栬澶噄p
* 閫氳繃璁惧ip銆佸搧鐗岃皟鐢ㄤ笉鍚宎pi鑾峰彇osd淇℃伅
* 姣斿mongoDB涓�鏈轰竴妗d俊鎭紝鏁寸悊鎴恟esult瀛樺叆mongo
* 鍚屾鍝佺墝鍒癿ysql
*/
- public void getOSD() {
+ //TODO锛氬ぇ鍗庡姩鎬佸簱linux鎹綅缃�
+ public void getOSD() throws ExecutionException, InterruptedException {
log.info("寮�濮嬭幏鍙朞SD");
-// YSApi.getOsd("51.95.66.42",YSUserName,YSPassword);
-
- DHApi.getOsd("51.95.67.189",DHUserName,DHPassword);
- //鎵归噺淇敼娴峰悍鍝佺墝闆嗗悎
- List<String> hkList = new ArrayList<>();
- //鎵归噺淇敼澶у崕鍝佺墝闆嗗悎
- List<String> dhList = new ArrayList<>();
- //鎵归噺淇敼瀹囪鍝佺墝闆嗗悎
- List<String> ysList = new ArrayList<>();
- List<OSDResult> osdResultList = new ArrayList<>();
//鏌ヤ竴鏈轰竴妗onitor
Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
List<MonitorQualifyResult> oneMachineFileResults = mongoTemplate.find(query, MonitorQualifyResult.class);
//闇�瑕佽�冩牳鐨勬暟鎹�
List<String> serialNumbers = oneMachineFileResults.stream().map(result -> result.getSerialNumber().getValue()).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(serialNumbers)) {
+ ExecutorService executorService = new ThreadPoolExecutor(16,
+ 128,
+ 5000,
+ TimeUnit.SECONDS,
+ new ArrayBlockingQueue<>(1000),
+ new ThreadPoolExecutor.CallerRunsPolicy()
+ );
List<TMonitor> monitors = monitorMapper.selectByNumbers(serialNumbers);
+ //杩囨护ip
monitors = monitors.stream().filter(monitor -> !StringUtils.isEmpty(monitor.getIp()) && !"127.0.0.1".equals(monitor.getIp())).collect(Collectors.toList());
-// monitors = monitors.stream().filter(monitor -> monitor.getId() < 7000).collect(Collectors.toList());
- log.info("澶勭悊鏁版嵁澶у皬{}", monitors.size());
+ List<Future<OSDResult>> futureList = new ArrayList<>(48);
+ List<OSDResult> osdResultList = new ArrayList<>();
for (TMonitor monitor : monitors) {
- executorService.submit(() -> {
- if (DeviceType.HK.getType().equals(monitor.getDeviceType())) {
- //娴峰悍鍝佺墝
- OSDResult osd = HKApi.getOsdByIP(monitor.getIp(), HKUserName, HKPassword);
- if (checkSuccess(osdResultList, monitor, osd)) {
- log.info("娴峰悍璋冪敤鎴愬姛" + osd);
- return;
- }
- } else if (DeviceType.DH.getType().equals(monitor.getDeviceType())) {
- //澶у崕鍝佺墝
- OSDResult osd = DHApi.getOsd(monitor.getIp(), DHUserName, DHPassword);
- if (checkSuccess(osdResultList, monitor, osd)) {
- log.info("澶у崕璋冪敤鎴愬姛" + osd);
- return;
- }
- } else if (DeviceType.YS.getType().equals(monitor.getDeviceType())) {
- //TODO锛氬畤瑙哸pi
- }
- //鏈煡鍝佺墝鎴栬�卆pi璋冪敤澶辫触锛屾尐涓墽琛屾墍鏈塧pi
- OSDResult osd = tryAllApi(monitor, hkList, dhList, ysList);
- if (osd != null) {
- synchronized (osdResultList) {
- osdResultList.add(osd);
- }
- }
- });
+ OSDCheckThread thread = new OSDCheckThread(monitor,HKUserName,HKPassword,DHUserName,DHPassword,YSUserName,YSPassword);
+ Future<OSDResult> future = executorService.submit(thread);
+ futureList.add(future);
+ }
+ for (Future<OSDResult> future : futureList) {
+ osdResultList.add(future.get());
}
executorService.shutdown();
- try {
- // 绛夊緟鎵�鏈変换鍔″畬鎴愶紝鏈�澶氱瓑寰�10绉掞紙鍙互鏍规嵁闇�瑕佽皟鏁达級
- if (!executorService.awaitTermination(10, TimeUnit.SECONDS)) {
- // 濡傛灉瓒呮椂锛屽皾璇曞仠姝㈠綋鍓嶆鍦ㄦ墽琛岀殑浠诲姟
- executorService.shutdownNow();
- }
- } catch (InterruptedException e) {
- // 褰撳墠绾跨▼鍦ㄧ瓑寰呰繃绋嬩腑琚腑鏂�
- executorService.shutdownNow();
- }
+
//缁撴潫api鎵ц锛屽紑濮嬫牎楠�
List<OsdCheckResult> checkResults = new ArrayList<>();
Map<String, TMonitor> monitorMap = monitors.stream().collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity()));
for (OSDResult osdResult : osdResultList) {
- TMonitor monitor = monitorMap.get(osdResult.getSerialNumber());
- //灏佽OsdCheckResult
- OsdCheckResult osdCheckResult = getOsdCheckResult(osdResult, monitor);
- checkCorrect(osdResult, monitor, osdCheckResult);
- checkResults.add(osdCheckResult);
+ if(osdResult!=null) {
+ TMonitor monitor = monitorMap.get(osdResult.getSerialNumber());
+ //灏佽OsdCheckResult
+ OsdCheckResult osdCheckResult = getOsdCheckResult(osdResult, monitor);
+ checkCorrect(osdResult, monitor, osdCheckResult);
+ log.info("鏍¢獙缁撴灉锛歿}", osdCheckResult);
+ checkResults.add(osdCheckResult);
+ }
}
log.info("缁撴灉鏁版嵁澶у皬:{}", checkResults.size());
//缁撴灉瀛樺叆mongo
@@ -155,21 +117,12 @@
Query pyQuery = new Query(Criteria
.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
DeleteResult result = mongoTemplate.remove(pyQuery, OsdCheckResult.class);
+ pointService.setDeviceTagByGB(checkResults);
//瀛樻斁鍦╩ongo涓�
mongoTemplate.insertAll(checkResults);
// 宸ュ崟鐢熸垚
uyErrorTypeCheckService.osdCheck(checkResults);
}
- //淇敼鏁版嵁搴撳搧鐗�
- if (!CollectionUtils.isEmpty(hkList)) {
- log.info("淇敼鍝佺墝");
- monitorMapper.batchUpdateDeviceType(hkList, DeviceType.HK.getType());
- }
- if (!CollectionUtils.isEmpty(dhList)) {
- log.info("淇敼鍝佺墝");
- monitorMapper.batchUpdateDeviceType(dhList, DeviceType.DH.getType());
- }
- //TODO:瀹囪
}
log.info("缁撴潫鑾峰彇OSD");
}
@@ -177,6 +130,7 @@
private OsdCheckResult getOsdCheckResult(OSDResult osdResult, TMonitor monitor) {
OsdCheckResult osdCheckResult = new OsdCheckResult();
osdCheckResult.setDeviceNo(osdResult.getSerialNumber());
+ osdCheckResult.setNo(osdResult.getSerialNumber());
osdCheckResult.setIp(monitor.getIp());
osdCheckResult.setDeviceType(monitor.getCameraFunType());
osdCheckResult.setCheckTime(osdResult.getCheckTime());
@@ -186,6 +140,7 @@
osdCheckResult.setOsdPart(osdResult.getOSD3());
osdCheckResult.setOsdLB(osdResult.getOSD4());
osdCheckResult.setOsdName(osdResult.getName());
+ osdCheckResult.setDeviceBrand(osdResult.getDeviceBrand());
return osdCheckResult;
}
@@ -195,16 +150,18 @@
long checkTime = osdResult.getCheckTime().getTime();
long osdTime = osdResult.getOsdTime().getTime();
long timeDiff = (checkTime - osdTime) / 1000;
- if (timeDiff <=60) {
+ if (timeDiff <= 60) {
osdCheckResult.setOsdTimeCorrect(ApiConstants.OSD_Correct);
} else {
osdCheckResult.setOsdTimeCorrect(ApiConstants.OSD_Error);
}
}
//妫�鏌ラ�氶亾鍚嶆槸鍚︽纭�
+ //鏍¢獙瑙勫垯锛岃繖閲屾殏鏃朵笉姣旇緝鍏ㄦ櫙鍜岀粏鑺備袱瀛椼��
if (!StringUtils.isEmpty(osdResult.getName()) && !StringUtils.isEmpty(monitor.getName())) {
- if (monitor.getName().equals(osdResult.getName())) {
+ if (monitor.getName().equals(osdResult.getName()) || monitor.getName().replace("鍏ㄦ櫙", "缁嗚妭").equals(osdResult.getName()) || monitor.getName().replace("缁嗚妭", "鍏ㄦ櫙").equals(osdResult.getName())) {
osdCheckResult.setOsdNameCorrect(ApiConstants.OSD_Correct);
+ osdCheckResult.setOsdName(osdResult.getName());
} else {
osdCheckResult.setOsdNameCorrect(ApiConstants.OSD_Error);
}
@@ -228,7 +185,7 @@
//妫�鏌ュ尯鍘挎槸鍚︽纭�
if (!StringUtils.isEmpty(osdResult.getOSD3())) {
AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromCode(monitor.getSerialNumber().substring(0, 6));
- if (areaDeptEnum != null && osdResult.getOSD3().equals(areaDeptEnum.getName())) {
+ if (areaDeptEnum != null && osdResult.getOSD3().equals(areaDeptEnum.getOsdName())) {
osdCheckResult.setOsdPartCorrect(ApiConstants.OSD_Correct);
} else {
osdCheckResult.setOsdPartCorrect(ApiConstants.OSD_Error);
@@ -236,40 +193,5 @@
}
}
- private boolean checkSuccess(List<OSDResult> osdResultList, TMonitor monitor, OSDResult osd) {
- if (osd != null) {
- osd.setSerialNumber(monitor.getSerialNumber());
- synchronized (osdResultList) {
- osdResultList.add(osd);
- }
- return true;
- } else {
- return false;
- }
- }
- private OSDResult tryAllApi(TMonitor monitor, List<String> hkList, List<String> dhList, List<String> ysList) {
- //灏濊瘯娴峰悍鐨刟pi
- OSDResult hkosd = HKApi.getOsdByIP(monitor.getIp(), HKUserName, HKPassword);
- if (hkosd != null) {
- hkosd.setSerialNumber(monitor.getSerialNumber());
- log.info("娴峰悍璋冪敤鎴愬姛"+hkosd);
- synchronized (hkList) {
- hkList.add(monitor.getSerialNumber());
- }
- return hkosd;
- }
- //灏濊瘯澶у崕鐨刟pi
- OSDResult dhosd = DHApi.getOsd(monitor.getIp(), DHUserName, DHPassword);
- if (dhosd != null) {
- dhosd.setSerialNumber(monitor.getSerialNumber());
- log.info("澶у崕璋冪敤鎴愬姛"+dhosd);
- synchronized (dhList) {
- dhList.add(monitor.getSerialNumber());
- }
- return dhosd;
- }
- //TODO锛氬畤瑙哸pi
- return null;
- }
}
--
Gitblit v1.8.0