From cae71f98572da0f6809ce888ef9a2ecacead34b2 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期六, 10 八月 2024 11:11:17 +0800
Subject: [PATCH] 重点指挥图像在线率

---
 ycl-server/src/main/java/com/ycl/calculate/VideoOnlineCalculation.java |   40 +++++++++++++++++++++++++++++-----------
 1 files changed, 29 insertions(+), 11 deletions(-)

diff --git a/ycl-server/src/main/java/com/ycl/calculate/VideoOnlineCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/VideoOnlineCalculation.java
index 6258a85..9a8d1b4 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/VideoOnlineCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/VideoOnlineCalculation.java
@@ -5,6 +5,7 @@
 import com.ycl.platform.domain.entity.TMonitor;
 import com.ycl.platform.domain.result.HK.SnapshotDelayMonitorResult;
 import com.ycl.platform.domain.result.UY.QueryVqdResult;
+import com.ycl.platform.domain.result.UY.VideoOnlineResult;
 import com.ycl.platform.domain.vo.TMonitorVO;
 import com.ycl.platform.mapper.CheckIndexVideoMapper;
 import com.ycl.platform.mapper.TMonitorMapper;
@@ -26,15 +27,14 @@
 import java.util.stream.Collectors;
 
 /**
- * 璁$畻瑙嗛璁惧鐐逛綅鍦ㄧ嚎鐜囥�侀噸鐐圭偣浣嶅湪绾跨巼
+ * 璁$畻瑙嗛璁惧鐐逛綅鍦ㄧ嚎鐜囥�侀噸鐐圭偣浣嶅湪绾跨巼銆侀噸鐐规寚鎸ュ浘鍍忓湪绾跨巼
  * 鍥惧儚鐩戞祴璇婃柇缁撴灉
  * 鑾峰彇鍒嗙渷鍘呫�佸尯鍩熺殑map<k,v> k涓篸eptId鎴栬�匬rovince_deptId
  * 寰幆map璁$畻鏁版嵁涓婁紶鍙婃椂鎬�
  * 鏇存柊鎴栨柊澧�
  */
 @Component
-//TODO锛氶噸鐐规寚鎸ュ浘鍍忓湪绾跨巼
-public class VideoOnlineCalculation extends IndexCalculationServe implements CalculationStrategy<QueryVqdResult> {
+public class VideoOnlineCalculation extends IndexCalculationServe implements CalculationStrategy<VideoOnlineResult> {
     @Autowired
     private CheckIndexVideoMapper checkIndexVideoMapper;
     @Autowired
@@ -48,34 +48,38 @@
         int onlineSites = 0;
         int importantSites = 0;
         int importantOnlineSites = 0;
+        int commandSites = 0;
+        int commandOnlineSites =0;
     }
 
     @Override
-    public void calculate(List<QueryVqdResult> list) {
+    public void calculate(List<VideoOnlineResult> list) {
         if (CollectionUtils.isEmpty(list)) {
             return;
         }
 
         //鑾峰緱鍥芥爣鐮佷负key鐨勮澶噈ap
-        Map<String, TMonitorVO> monitorMap = monitorMapper.selectListByIds(list.stream().map(QueryVqdResult::getDeviceId).collect(Collectors.toList()))
+        Map<String, TMonitorVO> monitorMap = monitorMapper.selectListByIds(list.stream().map(VideoOnlineResult::getDeviceId).collect(Collectors.toList()))
                 .stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity()));
         //鑾峰彇鐪佸巺鍥芥爣鐮侀泦鍚�
         List<String> provinceIds = getProvince();
         //閲嶇偣鐐逛綅闆嗗悎
         List<String> important = getImportant();
+        //閲嶇偣鎸囨尌鍥惧儚闆嗗悎
+        List<String> commandImage = getCommandImage();
 
         Map<String, AreaStats> areaStatsMap = new HashMap<>();
-        for (QueryVqdResult result : list) {
+        for (VideoOnlineResult result : list) {
             TMonitorVO monitor = monitorMap.get(result.getDeviceId());
             if (monitor == null) continue;
 
             String deptId = monitor.getDeptId().toString();
-            updateAreaStats(areaStatsMap, deptId, result, important);
+            updateAreaStats(areaStatsMap, deptId, result, important,commandImage);
 
             // 澶勭悊鐪佸巺鏁版嵁
             if (!CollectionUtils.isEmpty(provinceIds) && provinceIds.contains(monitor.getSerialNumber())) {
                 String provinceKey = ApiConstants.Province  + deptId;
-                updateAreaStats(areaStatsMap, provinceKey, result, important);
+                updateAreaStats(areaStatsMap, provinceKey, result, important,commandImage);
             }
         }
 
@@ -95,19 +99,27 @@
     }
 
     /**
-     * 绱鎬荤偣浣嶆暟銆佸湪绾跨偣浣嶆暟銆侀噸鐐圭偣浣嶆暟銆侀噸鐐圭偣浣嶅湪绾挎暟
+     * 绱鎬荤偣浣嶆暟銆佸湪绾跨偣浣嶆暟銆侀噸鐐圭偣浣嶆暟銆侀噸鐐圭偣浣嶅湪绾挎暟銆佹寚鎸ュ浘鍍忔暟銆佹寚鎸ュ浘鍍忓湪绾挎暟
      */
-    private void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, QueryVqdResult result, List<String> important) {
+    private void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, VideoOnlineResult result, List<String> important, List<String>  commandImage) {
         //杩斿洖瀵硅薄鐨勫紩鐢紝濡傛灉涓嶅瓨鍦ㄤ細鏀惧叆鏂扮殑key,value
         AreaStats stats = areaStatsMap.computeIfAbsent(key, k -> new AreaStats());
         stats.totalSites++;
+        //閲嶇偣鐐逛綅
         if(important.contains(result.getDeviceId())){
             stats.importantSites++;
         }
-        if (ApiConstants.UY_OnlineSite_Online.equals(result.getOnlineStatus())){
+        //鎸囨尌鍥惧儚鐐逛綅
+        if(commandImage.contains(result.getDeviceId())){
+            stats.commandSites++;
+        }
+        if (ApiConstants.UY_OnlineSite_Online.equals(result.getStatus())){
             stats.onlineSites++;
             if(important.contains(result.getDeviceId())){
                 stats.importantOnlineSites++;
+            }
+            if(commandImage.contains(result.getDeviceId())){
+                stats.commandOnlineSites++;
             }
         }
     }
@@ -132,6 +144,12 @@
         param.put("onlineSites", stats.importantOnlineSites);
         BigDecimal importantSiteOnline = siteOnline(importantParam);
         checkIndexVideo.setKeySiteOnline(importantSiteOnline);
+        //璋冪敤鐐逛綅鍦ㄧ嚎鐜囪绠楁柟娉� 璁$畻鎸囨尌鍥惧儚鍦ㄧ嚎鐜�
+        Map<String, Object> commandParam = new HashMap<>();
+        param.put("totalSites", stats.commandSites);
+        param.put("onlineSites", stats.commandOnlineSites);
+        BigDecimal commandSiteOnline = siteOnline(importantParam);
+        checkIndexVideo.setKeyCommandImageOnline(commandSiteOnline);
         return checkIndexVideo;
     }
 }

--
Gitblit v1.8.0