From 4163c93761115c7524ef74a557a1f5e01eafb429 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期四, 29 八月 2024 20:30:39 +0800
Subject: [PATCH] 宇视SDK初始化

---
 ycl-server/src/main/java/com/ycl/task/OsdTask.java |   33 +++++++++++++++++++++++++++++----
 1 files changed, 29 insertions(+), 4 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..4b0ce3c 100644
--- a/ycl-server/src/main/java/com/ycl/task/OsdTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/OsdTask.java
@@ -60,7 +60,7 @@
             24,
             5000,
             TimeUnit.SECONDS,
-            new ArrayBlockingQueue<>(10),
+            new ArrayBlockingQueue<>(1000),
             new ThreadPoolExecutor.CallerRunsPolicy()
     );
 
@@ -71,6 +71,7 @@
      * 鍚屾鍝佺墝鍒癿ysql
      */
     public void getOSD() {
+        log.info("寮�濮嬭幏鍙朞SD");
         //鎵归噺淇敼娴峰悍鍝佺墝闆嗗悎
         List<String> hkList = new ArrayList<>();
         //鎵归噺淇敼澶у崕鍝佺墝闆嗗悎
@@ -85,16 +86,24 @@
         List<String> serialNumbers = oneMachineFileResults.stream().map(result -> result.getSerialNumber().getValue()).collect(Collectors.toList());
 
         List<TMonitor> monitors = monitorMapper.selectByNumbers(serialNumbers);
+        monitors = monitors.stream().filter(monitor -> monitor.getId()<7000).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)) return;
+                    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)) return;
+                    if (checkSuccess(osdResultList, monitor, osd)) {
+                        log.info("澶у崕璋冪敤鎴愬姛"+osd);
+                        return;
+                    }
                 } else if (DeviceType.YS.getType().equals(monitor.getDeviceType())) {
                     //TODO锛氬畤瑙哸pi
                 }
@@ -108,6 +117,18 @@
             });
         }
         executorService.shutdown();
+        try {
+            // 绛夊緟鎵�鏈変换鍔″畬鎴愶紝鏈�澶氱瓑寰�10绉掞紙鍙互鏍规嵁闇�瑕佽皟鏁达級
+            if (!executorService.awaitTermination(10, TimeUnit.SECONDS)) {
+                // 濡傛灉瓒呮椂锛屽皾璇曞仠姝㈠綋鍓嶆鍦ㄦ墽琛岀殑浠诲姟
+                executorService.shutdownNow();
+            }
+        } catch (InterruptedException e) {
+            // 褰撳墠绾跨▼鍦ㄧ瓑寰呰繃绋嬩腑琚腑鏂�
+            executorService.shutdownNow();
+            // 澶勭悊涓柇锛屼緥濡傞噸鏂版姏鍑哄紓甯告垨璁板綍鏃ュ織
+            Thread.currentThread().interrupt(); // 淇濇寔涓柇鐘舵��
+        }
         //缁撴潫api鎵ц锛屽紑濮嬫牎楠�
         List<OsdCheckResult> checkResults = new ArrayList<>();
         Map<String, TMonitor> monitorMap = monitors.stream().collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity()));
@@ -118,8 +139,10 @@
             checkCorrect(osdResult, monitor, osdCheckResult);
             checkResults.add(osdCheckResult);
         }
+        log.info("缁撴灉鏁版嵁澶у皬:{}",checkResults.size());
         //缁撴灉瀛樺叆mongo
-        if(CollectionUtils.isEmpty(checkResults)){
+        if(!CollectionUtils.isEmpty(checkResults)){
+            log.info("瀛樺叆mongo");
             //濡傛灉浠婂ぉ瀛樺湪涔嬪墠鐨勬暟鎹厛鍒犻櫎
             Query pyQuery = new Query(Criteria
                     .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
@@ -131,9 +154,11 @@
         }
         //淇敼鏁版嵁搴撳搧鐗�
         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:瀹囪

--
Gitblit v1.8.0