From ae9ede70c133e257baead8e36bc65063d5b5c3c9 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期日, 01 九月 2024 17:56:15 +0800
Subject: [PATCH] 系统优化+bug修复

---
 ycl-server/src/main/java/com/ycl/task/OsdTask.java |  164 +++++++++++++++++++++++++++++++++---------------------
 1 files changed, 100 insertions(+), 64 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 511633b..f2c565a 100644
--- a/ycl-server/src/main/java/com/ycl/task/OsdTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/OsdTask.java
@@ -1,10 +1,7 @@
 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.platform.domain.entity.TMonitor;
@@ -49,20 +46,16 @@
     public String DHUserName;
     @Value("${DH.password}")
     public String DHPassword;
+    @Value("${YS.userName}")
+    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<>(10),
-            new ThreadPoolExecutor.CallerRunsPolicy()
-    );
 
     /**
      * 閫氳繃鏌ongoDB姣忔棩涓�鏈轰竴妗f暟鎹幏鍙栬澶噄p
@@ -71,6 +64,8 @@
      * 鍚屾鍝佺墝鍒癿ysql
      */
     public void getOSD() {
+        log.info("寮�濮嬭幏鍙朞SD");
+//        YSApi.getOsd("51.95.66.42",YSUserName,YSPassword);
         //鎵归噺淇敼娴峰悍鍝佺墝闆嗗悎
         List<String> hkList = new ArrayList<>();
         //鎵归噺淇敼澶у崕鍝佺墝闆嗗悎
@@ -83,60 +78,92 @@
         List<MonitorQualifyResult> oneMachineFileResults = mongoTemplate.find(query, MonitorQualifyResult.class);
         //闇�瑕佽�冩牳鐨勬暟鎹�
         List<String> serialNumbers = oneMachineFileResults.stream().map(result -> result.getSerialNumber().getValue()).collect(Collectors.toList());
-
-        List<TMonitor> monitors = monitorMapper.selectByNumbers(serialNumbers);
-        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)) return;
-                } else if (DeviceType.DH.getType().equals(monitor.getDeviceType())) {
-                    //澶у崕鍝佺墝
-                    OSDResult osd = DHApi.getOsd(monitor.getIp(), DHUserName, DHPassword);
-                    if (checkSuccess(osdResultList, monitor, 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);
+        if(!CollectionUtils.isEmpty(serialNumbers)) {
+            ExecutorService executorService = new ThreadPoolExecutor(8,
+                    24,
+                    5000,
+                    TimeUnit.SECONDS,
+                    new ArrayBlockingQueue<>(1000),
+                    new ThreadPoolExecutor.CallerRunsPolicy()
+            );
+            List<TMonitor> monitors = monitorMapper.selectByNumbers(serialNumbers);
+            monitors = monitors.stream().filter(monitor -> !StringUtils.isEmpty(monitor.getIp()) && !"127.0.0.1".equals(monitor.getIp())).collect(Collectors.toList());
+//            log.info("澶勭悊鏁版嵁澶у皬{}", monitors.size());
+            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);
+                        }
+                    }
+                });
+            }
+            //涓嶅啀鎺ユ敹鏂颁换鍔�
+            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);
+                log.info("鏍¢獙缁撴灉锛歿}",osdCheckResult);
+                checkResults.add(osdCheckResult);
+            }
+            log.info("缁撴灉鏁版嵁澶у皬:{}", checkResults.size());
+            //缁撴灉瀛樺叆mongo
+            if (!CollectionUtils.isEmpty(checkResults)) {
+                log.info("瀛樺叆mongo");
+                //濡傛灉浠婂ぉ瀛樺湪涔嬪墠鐨勬暟鎹厛鍒犻櫎
+                Query pyQuery = new Query(Criteria
+                        .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
+                DeleteResult result = mongoTemplate.remove(pyQuery, OsdCheckResult.class);
+                //瀛樻斁鍦╩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:瀹囪
         }
-        executorService.shutdown();
-        //缁撴潫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);
-        }
-        //缁撴灉瀛樺叆mongo
-        if(CollectionUtils.isEmpty(checkResults)){
-            //濡傛灉浠婂ぉ瀛樺湪涔嬪墠鐨勬暟鎹厛鍒犻櫎
-            Query pyQuery = new Query(Criteria
-                    .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
-            DeleteResult result = mongoTemplate.remove(pyQuery, OsdCheckResult.class);
-            //瀛樻斁鍦╩ongo涓�
-            mongoTemplate.insertAll(checkResults);
-            // 宸ュ崟鐢熸垚
-            uyErrorTypeCheckService.osdCheck(checkResults);
-        }
-        //淇敼鏁版嵁搴撳搧鐗�
-        if(!CollectionUtils.isEmpty(hkList)){
-            monitorMapper.batchUpdateDeviceType(hkList,DeviceType.HK.getType());
-        }
-        if(!CollectionUtils.isEmpty(dhList)){
-            monitorMapper.batchUpdateDeviceType(dhList,DeviceType.DH.getType());
-        }
-        //TODO:瀹囪
         log.info("缁撴潫鑾峰彇OSD");
     }
 
@@ -168,10 +195,17 @@
             }
         }
         //妫�鏌ラ�氶亾鍚嶆槸鍚︽纭�
+        //TODO:鏍¢獙瑙勫垯锛岃繖閲屾殏鏃朵笉姣旇緝鍏ㄦ櫙鍜岀粏鑺備袱瀛椼��
         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())) {
+                //OSD4鍜�5閮藉彲鑳戒负鍚嶅瓧銆佹瘮杈冨叾涓竴鏉℃纭嵆鍙紝姝g‘浜嗘敼涓烘纭悕瀛�
                 osdCheckResult.setOsdNameCorrect(ApiConstants.OSD_Correct);
-            } else {
+                osdCheckResult.setOsdName(osdResult.getName());
+            }else if (monitor.getName().equals(osdResult.getName2()) || monitor.getName().replace("鍏ㄦ櫙","缁嗚妭").equals(osdResult.getName2()) || monitor.getName().replace("缁嗚妭","鍏ㄦ櫙").equals(osdResult.getName2())) {
+                //OSD4鍜�5閮藉彲鑳戒负鍚嶅瓧銆佹瘮杈冨叾涓竴鏉℃纭嵆鍙紝姝g‘浜嗘敼涓烘纭悕瀛�
+                osdCheckResult.setOsdName(osdResult.getName2());
+                osdCheckResult.setOsdNameCorrect(ApiConstants.OSD_Correct);
+            }else {
                 osdCheckResult.setOsdNameCorrect(ApiConstants.OSD_Error);
             }
         }
@@ -219,6 +253,7 @@
         OSDResult hkosd = HKApi.getOsdByIP(monitor.getIp(), HKUserName, HKPassword);
         if (hkosd != null) {
             hkosd.setSerialNumber(monitor.getSerialNumber());
+            log.info("娴峰悍璋冪敤鎴愬姛"+hkosd);
             synchronized (hkList) {
                 hkList.add(monitor.getSerialNumber());
             }
@@ -228,6 +263,7 @@
         OSDResult dhosd = DHApi.getOsd(monitor.getIp(), DHUserName, DHPassword);
         if (dhosd != null) {
             dhosd.setSerialNumber(monitor.getSerialNumber());
+            log.info("澶у崕璋冪敤鎴愬姛"+dhosd);
             synchronized (dhList) {
                 dhList.add(monitor.getSerialNumber());
             }

--
Gitblit v1.8.0