From 7d5ea3631d163343b652bd6bd40b94b34c4194eb Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期二, 10 九月 2024 17:32:05 +0800
Subject: [PATCH] 点位在线率调整

---
 ycl-pojo/src/main/java/com/ycl/platform/domain/result/SYS/TMonitorResult.java  |   16 ++
 ycl-server/src/main/java/com/ycl/calculate/CarOnlineCalculation.java           |  105 +++++++++++++
 ycl-server/src/main/java/com/ycl/calculate/CarConsistentCalculation.java       |   18 --
 ycl-server/src/main/java/com/ycl/calculate/CarDeviceSampleCalculation.java     |    8 -
 ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java           |    9 +
 ycl-server/src/main/java/com/ycl/calculate/MonitorRegistrationCalculation.java |    1 
 ycl-server/src/main/java/com/ycl/task/CarTask.java                             |   24 ++
 ycl-server/src/main/java/com/ycl/calculate/FaceDeviceSampleCalculation.java    |    2 
 ycl-server/src/main/java/com/ycl/calculate/CarClockAccuracyCalculation.java    |   14 -
 ycl-server/src/main/java/com/ycl/calculate/IndexCalculationUtils.java          |    6 
 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/TMonitorVO.java              |    1 
 ycl-server/src/main/java/com/ycl/calculate/FaceOnlineCalculation.java          |   99 ++++++++++++
 ycl-server/src/main/java/com/ycl/factory/IndexCalculationFactory.java          |   12 +
 ycl-server/src/main/java/com/ycl/calculate/CarSnapshopDataCalculation.java     |   18 -
 ycl-server/src/main/java/com/ycl/task/FaceTask.java                            |   30 +++
 ycl-common/src/main/java/constant/CalculationStrategyConstants.java            |   16 +
 ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java    |   14 -
 ycl-server/src/main/java/com/ycl/task/OsdTask.java                             |    1 
 ycl-server/src/main/java/com/ycl/task/VideoTask.java                           |   25 +-
 ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml                   |   11 +
 ycl-server/src/main/java/com/ycl/calculate/VideoOnlineCalculation.java         |    9 
 21 files changed, 331 insertions(+), 108 deletions(-)

diff --git a/ycl-common/src/main/java/constant/CalculationStrategyConstants.java b/ycl-common/src/main/java/constant/CalculationStrategyConstants.java
index 4497d08..58ed241 100644
--- a/ycl-common/src/main/java/constant/CalculationStrategyConstants.java
+++ b/ycl-common/src/main/java/constant/CalculationStrategyConstants.java
@@ -5,9 +5,13 @@
  */
 public class CalculationStrategyConstants {
     /**
-     * 杞﹁締鐐逛綅鍦ㄧ嚎鐜囧拰瑙嗗浘搴撳鎺ョǔ瀹氭��
+     *  杞﹁締鐐逛綅鍦ㄧ嚎鐜�
      */
-    public static final String Car_SiteOnline_ViewStability = "carSiteOnlineViewStability";
+    public static final String Car_SiteOnline = "carSiteOnline";
+    /**
+     * 杞﹁締鐐硅鍥惧簱瀵规帴绋冲畾鎬�
+     */
+    public static final String Car_ViewStability = "carViewStability";
     /**
      * 杞﹁締鎶撴媿鏁版嵁鍑嗙‘鎬с�乽rl銆佸ぇ鍥惧彲鐢ㄦ��
      */
@@ -39,9 +43,13 @@
      */
     public static final String Face_SnapshotDelay = "faceSnapshotDelay";
     /**
-     * 浜鸿劯鐐逛綅鍦ㄧ嚎鐜囧拰瑙嗗浘搴撳鎺ョǔ瀹氭��
+     * 浜鸿劯鐐逛綅鍦ㄧ嚎鐜�
      */
-    public static final String Face_SiteOnline_ViewStability = "faceSiteOnlineViewStability";
+    public static final String Face_SiteOnline = "faceSiteOnline";
+    /**
+     * 浜鸿劯瑙嗗浘搴撳鎺ョǔ瀹氭��
+     */
+    public static final String Face_ViewStability = "faceViewStability";
     /**
      * 杞﹁締鎶撴媿鏁版嵁鍑嗙‘鎬с�乽rl銆佸ぇ鍥惧彲鐢ㄦ��
      */
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/result/SYS/TMonitorResult.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/result/SYS/TMonitorResult.java
new file mode 100644
index 0000000..073a849
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/result/SYS/TMonitorResult.java
@@ -0,0 +1,16 @@
+package com.ycl.platform.domain.result.SYS;
+
+
+import com.ycl.platform.domain.result.BaseResult;
+import lombok.Data;
+
+/**
+ * 鐐逛綅鍦ㄧ嚎鐜�
+ */
+@Data
+public class TMonitorResult extends BaseResult {
+    /** 閮ㄩ棬id */
+    private Integer deptId;
+    /** 鍦ㄧ嚎 */
+    private Boolean online;
+}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/TMonitorVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/TMonitorVO.java
index 215c6fd..aae75a5 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/TMonitorVO.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/TMonitorVO.java
@@ -226,6 +226,7 @@
     private String error;
     private String unitName;
     private LocalDate mongoCreateTime;
+
     /**
      * 褰撴棩鎺ユ敹鍒扮殑褰撴棩鎶撴媿閲�
      */
diff --git a/ycl-server/src/main/java/com/ycl/calculate/CarClockAccuracyCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/CarClockAccuracyCalculation.java
index b7489eb..e21d95f 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/CarClockAccuracyCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/CarClockAccuracyCalculation.java
@@ -1,34 +1,20 @@
 package com.ycl.calculate;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.ycl.platform.domain.entity.CheckIndexCar;
-import com.ycl.platform.domain.entity.TMonitor;
-import com.ycl.platform.domain.result.HK.DataIntegrityMonitoringResult;
-import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult;
 import com.ycl.platform.domain.result.HK.VehicleDeviceInspectionResult;
-import com.ycl.platform.domain.vo.TMonitorVO;
 import com.ycl.platform.mapper.CheckIndexCarMapper;
 import com.ycl.platform.mapper.TMonitorMapper;
 import com.ycl.platform.service.ICheckIndexCarService;
-import com.ycl.platform.service.ITMonitorService;
-import com.ycl.system.mapper.SysConfigMapper;
-import constant.ApiConstants;
-import constant.CheckSnapCountConstants;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
-import org.springframework.util.CollectionUtils;
 import utils.DateUtils;
 
 import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.function.Function;
-import java.util.stream.Collectors;
 
 /**
  * 璁$畻杞﹁締鏃堕挓鍑嗙‘鎬�
diff --git a/ycl-server/src/main/java/com/ycl/calculate/CarConsistentCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/CarConsistentCalculation.java
index 3fea7ec..fefa01e 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/CarConsistentCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/CarConsistentCalculation.java
@@ -1,33 +1,19 @@
 package com.ycl.calculate;
 
-import com.alibaba.fastjson2.JSONArray;
 import com.ycl.platform.domain.entity.CheckIndexCar;
-import com.ycl.platform.domain.entity.TMonitor;
-import com.ycl.platform.domain.result.HK.DataIntegrityMonitoringResult;
-import com.ycl.platform.domain.result.HK.VehicleDeviceInspectionResult;
 import com.ycl.platform.domain.result.UY.MonitorQualifyResult;
-import com.ycl.platform.domain.vo.TMonitorVO;
 import com.ycl.platform.mapper.CheckIndexCarMapper;
-import com.ycl.platform.mapper.TMonitorMapper;
 import com.ycl.platform.service.ICheckIndexCarService;
-import constant.ApiConstants;
-import constant.CheckConstants;
-import constant.RedisConstant;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Component;
-import org.springframework.util.CollectionUtils;
 import utils.DateUtils;
-import utils.StringUtils;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.function.Function;
-import java.util.stream.Collectors;
 
 /**
  * 璁$畻杞﹁締鐩綍涓�鑷寸巼
@@ -40,11 +26,7 @@
     @Autowired
     private CheckIndexCarMapper checkIndexCarMapper;
     @Autowired
-    private TMonitorMapper monitorMapper;
-    @Autowired
     private ICheckIndexCarService checkIndexCarService;
-    @Autowired
-    private RedisTemplate redisTemplate;
 
     //鍖哄煙杞﹁締鐩綍涓�鑷寸巼鐨勫唴閮ㄧ被
     protected static class AreaStats {
diff --git a/ycl-server/src/main/java/com/ycl/calculate/CarDeviceSampleCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/CarDeviceSampleCalculation.java
index 32c1e2f..b30ce02 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/CarDeviceSampleCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/CarDeviceSampleCalculation.java
@@ -2,15 +2,11 @@
 
 import com.ycl.platform.domain.entity.CheckIndexCar;
 import com.ycl.platform.domain.result.HK.VehicleDeviceSamplingResult;
-import com.ycl.platform.domain.vo.TMonitorVO;
 import com.ycl.platform.mapper.CheckIndexCarMapper;
-import com.ycl.platform.mapper.TMonitorMapper;
 import com.ycl.platform.service.ICheckIndexCarService;
-import constant.ApiConstants;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
-import org.springframework.util.CollectionUtils;
 import utils.DateUtils;
 
 import java.math.BigDecimal;
@@ -19,8 +15,6 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.function.Function;
-import java.util.stream.Collectors;
 
 /**
  * 璁$畻杞﹁締鎶撴媿鏁版嵁鍑嗙‘鎬с�乽rl鍙敤鎬с�佸ぇ鍥惧彲鐢ㄦ��
@@ -33,8 +27,6 @@
 public class CarDeviceSampleCalculation extends IndexCalculationServe<VehicleDeviceSamplingResult, CarDeviceSampleCalculation.AreaStats> implements CalculationStrategy<VehicleDeviceSamplingResult> {
     @Autowired
     private CheckIndexCarMapper checkIndexCarMapper;
-    @Autowired
-    private TMonitorMapper monitorMapper;
     @Autowired
     private ICheckIndexCarService checkIndexCarService;
 
diff --git a/ycl-server/src/main/java/com/ycl/calculate/CarOnlineCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/CarOnlineCalculation.java
new file mode 100644
index 0000000..f4911ca
--- /dev/null
+++ b/ycl-server/src/main/java/com/ycl/calculate/CarOnlineCalculation.java
@@ -0,0 +1,105 @@
+package com.ycl.calculate;
+
+import com.ycl.platform.domain.entity.CheckIndexCar;
+import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult;
+import com.ycl.platform.domain.result.SYS.TMonitorResult;
+import com.ycl.platform.domain.vo.TMonitorVO;
+import com.ycl.platform.mapper.CheckIndexCarMapper;
+import com.ycl.platform.service.ICheckIndexCarService;
+import com.ycl.system.entity.SysDictData;
+import com.ycl.system.mapper.SysDictDataMapper;
+import com.ycl.utils.DateUtils;
+import constant.ApiConstants;
+import constant.CheckConstants;
+import constant.CheckThreadConstants;
+import constant.RedisConstant;
+import enumeration.general.AreaDeptEnum;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Component;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.time.LocalDate;
+import java.time.temporal.TemporalAdjusters;
+import java.util.*;
+
+/**
+ * 璁$畻杞﹁締鐐逛綅鍦ㄧ嚎鐜�
+ * 鑾峰彇鍒嗙渷鍘呫�佸尯鍩熺殑map<k,v> k涓篸eptId鎴栬�匬rovince_deptId
+ * 寰幆map璁$畻鐐逛綅鍦ㄧ嚎鐜�
+ * 鏇存柊鎴栨柊澧�
+ */
+@Component
+@Slf4j
+public class CarOnlineCalculation extends IndexCalculationServe<TMonitorResult, CarOnlineCalculation.AreaStats> implements CalculationStrategy<TMonitorResult> {
+    @Autowired
+    private CheckIndexCarMapper checkIndexCarMapper;
+    @Autowired
+    private ICheckIndexCarService checkIndexCarService;
+
+    //鍖哄煙杞﹁締鐐逛綅鍦ㄧ嚎鎸囨爣鐨勫唴閮ㄧ被
+    protected static class AreaStats {
+        int totalSites = 0;
+        int onlineSites = 0;
+    }
+
+    @Override
+    public void calculate(List<TMonitorResult> list) {
+        //鑾峰彇鍒嗗尯鍩熺殑鎸囨爣鏁伴噺
+        Map<String, CarOnlineCalculation.AreaStats> areaStatsMap = getAreaStatsMap(list);
+        if (areaStatsMap == null) return;
+
+        // 鏌ヨ鏄惁index琛ㄥ凡缁忓瓨鍦ㄤ粖鏃ユ暟鎹�
+        List<CheckIndexCar> checkIndexCarList = checkIndexCarMapper.selectToday(DateUtils.getDate());
+        List<CheckIndexCar> checkIndexCars = new ArrayList<>();
+        areaStatsMap.forEach((key, stats) -> {
+                if (stats.totalSites > 0) {
+                CheckIndexCar checkIndexCar = createOrUpdateCheckIndexCar(key, stats, checkIndexCarList);
+                if (checkIndexCar != null) {
+                    checkIndexCars.add(checkIndexCar);
+                }
+            }
+        });
+
+        checkIndexCarService.saveOrUpdateBatch(checkIndexCars);
+    }
+
+    /**
+     * 绱鎬荤偣浣嶆暟銆佺绾挎暟銆佹�绘姄鎷嶉噺
+     */
+    @Override
+    public void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, TMonitorResult result) {
+        //杩斿洖瀵硅薄鐨勫紩鐢紝濡傛灉涓嶅瓨鍦ㄤ細鏀惧叆鏂扮殑key,value
+        AreaStats stats = areaStatsMap.computeIfAbsent(key, k -> new AreaStats());
+        stats.totalSites++;
+
+        if (result.getOnline()!=null && result.getOnline()) {
+            stats.onlineSites++;
+        }
+    }
+
+    /**
+     * 杞﹁締鐐逛綅鍦ㄧ嚎鐜�
+     */
+    private CheckIndexCar createOrUpdateCheckIndexCar(String key, AreaStats stats, List<CheckIndexCar> checkIndexCarList) {
+        CheckIndexCar checkIndexCar = getCheckIndex(key, checkIndexCarList, CheckIndexCar.class);
+        if (checkIndexCar == null) {
+            return null;
+        }
+
+        //璋冪敤鐐逛綅鍦ㄧ嚎璁$畻鏂规硶
+        if (stats.totalSites >= CheckThreadConstants.Check_Car_SiteOnline) {
+            Map<String, Object> siteOnlineParam = new HashMap<>();
+            siteOnlineParam.put("totalSites", stats.totalSites);
+            siteOnlineParam.put("onlineSites", stats.onlineSites);
+            BigDecimal siteOnline = siteOnline(siteOnlineParam);
+            checkIndexCar.setSiteOnline(siteOnline.min(BigDecimal.ONE));
+        } else {
+            checkIndexCar.setSiteOnline(BigDecimal.ZERO);
+        }
+
+        return checkIndexCar;
+    }
+}
diff --git a/ycl-server/src/main/java/com/ycl/calculate/CarSnapshopDataCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/CarSnapshopDataCalculation.java
index 97e4f78..46361a1 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/CarSnapshopDataCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/CarSnapshopDataCalculation.java
@@ -24,7 +24,7 @@
 import java.util.*;
 
 /**
- * 璁$畻杞﹁締鐐逛綅鍦ㄧ嚎鐜囥�佽鍥惧簱瀵规帴绋冲畾鎬�
+ * 璁$畻杞﹁締瑙嗗浘搴撳鎺ョǔ瀹氭��
  * 鎶撴媿鏁版嵁閲忕洃娴嬬粨鏋滄帴鍙f暟鎹�
  * 鑾峰彇鍒嗙渷鍘呫�佸尯鍩熺殑map<k,v> k涓篸eptId鎴栬�匬rovince_deptId
  * 寰幆map璁$畻鐐逛綅鍦ㄧ嚎鐜�
@@ -41,10 +41,9 @@
     private RedisTemplate redisTemplate;
     @Autowired
     private SysDictDataMapper dictDataMapper;
-    //鍖哄煙杞﹁締鐐逛綅鍦ㄧ嚎鎸囨爣鐨勫唴閮ㄧ被
+    //鍖哄煙杞﹁締瑙嗗浘搴撳鎺ョǔ瀹氭�х殑鍐呴儴绫�
     protected static class AreaStats {
         int totalSites = 0;
-        int onlineSites = 0;
         int totalDataSum = 0;
     }
 
@@ -90,14 +89,13 @@
         stats.totalSites++;
 
         if (ApiConstants.HK_SnapCount_ResultType_Null != result.getResultType()) {
-            stats.onlineSites++;
             stats.totalDataSum += result.getDataCount();
         }
 
     }
 
     /**
-     * 杞﹁締鐐逛綅鍦ㄧ嚎鐜囧拰瑙嗗浘搴撳鎺ョǔ瀹氭��
+     * 杞﹁締瑙嗗浘搴撳鎺ョǔ瀹氭��
      */
     private CheckIndexCar createOrUpdateCheckIndexCar(String key, AreaStats stats, List<CheckIndexCar> checkIndexCarList,List<SysDictData> carSnap) {
         CheckIndexCar checkIndexCar = getCheckIndex(key, checkIndexCarList, CheckIndexCar.class);
@@ -105,16 +103,6 @@
             return null;
         }
 
-        //璋冪敤鐐逛綅鍦ㄧ嚎璁$畻鏂规硶
-        if (stats.totalSites >= CheckThreadConstants.Check_Car_SiteOnline) {
-            Map<String, Object> siteOnlineParam = new HashMap<>();
-            siteOnlineParam.put("totalSites", stats.totalSites);
-            siteOnlineParam.put("onlineSites", stats.onlineSites);
-            BigDecimal siteOnline = siteOnline(siteOnlineParam);
-            checkIndexCar.setSiteOnline(siteOnline.min(BigDecimal.ONE));
-        } else {
-            checkIndexCar.setSiteOnline(BigDecimal.ZERO);
-        }
         //瑙嗗浘搴撳鎺ョǔ瀹氭��
         //Redis璁板綍璇ュ尯鍘垮綋鏈堟棤鏁版嵁涓婁紶娆℃暟
         Integer noDateCount = (Integer) redisTemplate.opsForHash().get(RedisConstant.Check_Car_ViewConnect, key);
diff --git a/ycl-server/src/main/java/com/ycl/calculate/FaceDeviceSampleCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/FaceDeviceSampleCalculation.java
index 3019c8c..a2ebda9 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/FaceDeviceSampleCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/FaceDeviceSampleCalculation.java
@@ -33,8 +33,6 @@
     @Autowired
     private CheckIndexFaceMapper checkIndexFaceMapper;
     @Autowired
-    private TMonitorMapper monitorMapper;
-    @Autowired
     private ICheckIndexFaceService checkIndexFaceService;
 
     //鍖哄煙杞﹁締鎶芥鎸囨爣
diff --git a/ycl-server/src/main/java/com/ycl/calculate/FaceOnlineCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/FaceOnlineCalculation.java
new file mode 100644
index 0000000..6f91a9a
--- /dev/null
+++ b/ycl-server/src/main/java/com/ycl/calculate/FaceOnlineCalculation.java
@@ -0,0 +1,99 @@
+package com.ycl.calculate;
+
+import com.ycl.platform.domain.entity.CheckIndexCar;
+import com.ycl.platform.domain.entity.CheckIndexFace;
+import com.ycl.platform.domain.result.SYS.TMonitorResult;
+import com.ycl.platform.mapper.CheckIndexCarMapper;
+import com.ycl.platform.mapper.CheckIndexFaceMapper;
+import com.ycl.platform.service.ICheckIndexCarService;
+import com.ycl.platform.service.ICheckIndexFaceService;
+import com.ycl.utils.DateUtils;
+import constant.CheckThreadConstants;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 璁$畻杞﹁締鐐逛綅鍦ㄧ嚎鐜�
+ * 鑾峰彇鍒嗙渷鍘呫�佸尯鍩熺殑map<k,v> k涓篸eptId鎴栬�匬rovince_deptId
+ * 寰幆map璁$畻鐐逛綅鍦ㄧ嚎鐜�
+ * 鏇存柊鎴栨柊澧�
+ */
+@Component
+@Slf4j
+public class FaceOnlineCalculation extends IndexCalculationServe<TMonitorResult, FaceOnlineCalculation.AreaStats> implements CalculationStrategy<TMonitorResult> {
+    @Autowired
+    private CheckIndexFaceMapper checkIndexFaceMapper;
+    @Autowired
+    private ICheckIndexFaceService checkIndexFaceService;
+
+    //鍖哄煙杞﹁締鐐逛綅鍦ㄧ嚎鎸囨爣鐨勫唴閮ㄧ被
+    protected static class AreaStats {
+        int totalSites = 0;
+        int onlineSites = 0;
+    }
+
+    @Override
+    public void calculate(List<TMonitorResult> list) {
+        //鑾峰彇鍒嗗尯鍩熺殑鎸囨爣鏁伴噺
+        Map<String, FaceOnlineCalculation.AreaStats> areaStatsMap = getAreaStatsMap(list);
+        if (areaStatsMap == null) return;
+
+        // 鏌ヨ鏄惁index琛ㄥ凡缁忓瓨鍦ㄤ粖鏃ユ暟鎹�
+        List<CheckIndexFace> checkIndexFaceList = checkIndexFaceMapper.selectToday(DateUtils.getDate());
+        List<CheckIndexFace> checkIndexFaces = new ArrayList<>();
+        areaStatsMap.forEach((key, stats) -> {
+                if (stats.totalSites > 0) {
+                CheckIndexFace checkIndexFace = createOrUpdateCheckIndexCar(key, stats, checkIndexFaceList);
+                if (checkIndexFace != null) {
+                    checkIndexFaces.add(checkIndexFace);
+                }
+            }
+        });
+
+        checkIndexFaceService.saveOrUpdateBatch(checkIndexFaces);
+    }
+
+    /**
+     * 绱鎬荤偣浣嶆暟銆佺绾挎暟銆佹�绘姄鎷嶉噺
+     */
+    @Override
+    public void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, TMonitorResult result) {
+        //杩斿洖瀵硅薄鐨勫紩鐢紝濡傛灉涓嶅瓨鍦ㄤ細鏀惧叆鏂扮殑key,value
+        AreaStats stats = areaStatsMap.computeIfAbsent(key, k -> new AreaStats());
+        stats.totalSites++;
+
+        if (result.getOnline()!=null && result.getOnline()) {
+            stats.onlineSites++;
+        }
+    }
+
+    /**
+     * 杞﹁締鐐逛綅鍦ㄧ嚎鐜�
+     */
+    private CheckIndexFace createOrUpdateCheckIndexCar(String key, AreaStats stats, List<CheckIndexFace> checkIndexFaceList) {
+        CheckIndexFace checkIndexFace = getCheckIndex(key, checkIndexFaceList, CheckIndexFace.class);
+        if (checkIndexFace == null) {
+            return null;
+        }
+
+        //璋冪敤鐐逛綅鍦ㄧ嚎璁$畻鏂规硶
+        if (stats.totalSites >= CheckThreadConstants.Check_Face_SiteOnline) {
+            Map<String, Object> siteOnlineParam = new HashMap<>();
+            siteOnlineParam.put("totalSites", stats.totalSites);
+            siteOnlineParam.put("onlineSites", stats.onlineSites);
+            BigDecimal siteOnline = siteOnline(siteOnlineParam);
+            checkIndexFace.setSiteOnline(siteOnline.min(BigDecimal.ONE));
+        } else {
+            checkIndexFace.setSiteOnline(BigDecimal.ZERO);
+        }
+
+        return checkIndexFace;
+    }
+}
diff --git a/ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java
index 2640919..c115e68 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java
@@ -55,7 +55,6 @@
     //鍖哄煙浜鸿劯鐐逛綅鍦ㄧ嚎鎸囨爣鐨勫唴閮ㄧ被
     protected static class AreaStats {
         int totalSites = 0;
-        int onlineSites = 0;
         int totalDataSum = 0;
     }
 
@@ -98,27 +97,16 @@
         AreaStats stats = areaStatsMap.computeIfAbsent(key, k -> new AreaStats());
         stats.totalSites++;
         if (ApiConstants.HK_SnapCount_ResultType_Null != result.getResultType()) {
-            stats.onlineSites++;
             stats.totalDataSum += result.getDataCount();
         }
     }
 
 
-    //杞﹁締鐐逛綅鍦ㄧ嚎鐜囧拰瑙嗗浘搴撳鎺ョǔ瀹氭��
+    //浜鸿劯瑙嗗浘搴撳鎺ョǔ瀹氭��
     private CheckIndexFace createOrUpdateCheckIndexFace(String key, AreaStats stats, List<CheckIndexFace> checkIndexFaceList,List<SysDictData> faceSnap) {
         CheckIndexFace checkIndexFace = getCheckIndex(key, checkIndexFaceList, CheckIndexFace.class);
         if (checkIndexFace == null) {
             return null;
-        }
-        //璋冪敤鐐逛綅鍦ㄧ嚎璁$畻鏂规硶
-        if (stats.totalSites >= CheckThreadConstants.Check_Face_SiteOnline) {
-            Map<String, Object> siteOnlineParam = new HashMap<>();
-            siteOnlineParam.put("totalSites", stats.totalSites);
-            siteOnlineParam.put("onlineSites", stats.onlineSites);
-            BigDecimal siteOnline = siteOnline(siteOnlineParam);
-            checkIndexFace.setSiteOnline(siteOnline);
-        } else {
-            checkIndexFace.setSiteOnline(BigDecimal.ZERO);
         }
         //瑙嗗浘搴撳鎺ョǔ瀹氭��
         //Redis璁板綍璇ュ尯鍘垮綋鏈堟棤鏁版嵁涓婁紶娆℃暟
diff --git a/ycl-server/src/main/java/com/ycl/calculate/IndexCalculationUtils.java b/ycl-server/src/main/java/com/ycl/calculate/IndexCalculationUtils.java
index 17b93fe..8869870 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/IndexCalculationUtils.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/IndexCalculationUtils.java
@@ -16,11 +16,11 @@
 @Slf4j
 public class IndexCalculationUtils {
     //妫�鏌ユ槸鍚﹀瓨鍦ㄥ綋鏃ユ暟鎹�
-    public <I extends CheckIndex> I getCheckIndex(String key, List<I> checkIndexList, Class<I> clazz) {
-        I checkIndex;
+    public <T extends CheckIndex> T getCheckIndex(String key, List<T> checkIndexList, Class<T> clazz) {
+        T checkIndex;
 
         // 妫�鏌ユ槸鍚﹀凡瀛樺湪浠婃棩鏁版嵁
-        Optional<I> existingIndex = checkIndexList.stream()
+        Optional<T> existingIndex = checkIndexList.stream()
                 .filter(index -> key.startsWith(ApiConstants.Province) ?
                         CheckConstants.Examine_Tag_Province.equals(index.getExamineTag()) && key.split("_")[1].equals(index.getDeptId().toString())
                         : CheckConstants.Examine_Tag_County.equals(index.getExamineTag()) && key.equals(index.getDeptId().toString()))
diff --git a/ycl-server/src/main/java/com/ycl/calculate/MonitorRegistrationCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/MonitorRegistrationCalculation.java
index cf0a2d3..bbcbb18 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/MonitorRegistrationCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/MonitorRegistrationCalculation.java
@@ -43,7 +43,6 @@
         //鍏ㄥ勾鐣欏瓨鏁�
         int allFiles = 0;
     }
-    //TODO:鏀逛负MonitorQualifyResult
     @Override
     public void calculate(List<MonitorQualifyResult> list) {
         //鑾峰彇鍒嗗尯鍩熺殑鎸囨爣鏁伴噺
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 78edba5..1b97d31 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/VideoOnlineCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/VideoOnlineCalculation.java
@@ -1,6 +1,7 @@
 package com.ycl.calculate;
 
 import com.ycl.platform.domain.entity.CheckIndexVideo;
+import com.ycl.platform.domain.result.SYS.TMonitorResult;
 import com.ycl.platform.domain.result.UY.VideoOnlineResult;
 import com.ycl.platform.mapper.CheckIndexVideoMapper;
 import com.ycl.platform.mapper.TMonitorMapper;
@@ -27,7 +28,7 @@
  */
 @Component
 @Slf4j
-public class VideoOnlineCalculation extends IndexCalculationServe<VideoOnlineResult, VideoOnlineCalculation.AreaStats> implements CalculationStrategy<VideoOnlineResult> {
+public class VideoOnlineCalculation extends IndexCalculationServe<TMonitorResult, VideoOnlineCalculation.AreaStats> implements CalculationStrategy<TMonitorResult> {
     @Autowired
     private CheckIndexVideoMapper checkIndexVideoMapper;
     @Autowired
@@ -48,7 +49,7 @@
     }
 
     @Override
-    public void calculate(List<VideoOnlineResult> list) {
+    public void calculate(List<TMonitorResult> list) {
         //鑾峰彇鍒嗗尯鍩熺殑鎸囨爣鏁伴噺
         Map<String, VideoOnlineCalculation.AreaStats> areaStatsMap = getAreaStatsMap(list);
         if (areaStatsMap == null) return;
@@ -72,7 +73,7 @@
      * 绱鎬荤偣浣嶆暟銆佸湪绾跨偣浣嶆暟銆侀噸鐐圭偣浣嶆暟銆侀噸鐐圭偣浣嶅湪绾挎暟銆佹寚鎸ュ浘鍍忔暟銆佹寚鎸ュ浘鍍忓湪绾挎暟
      */
     @Override
-    public void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, VideoOnlineResult result) {
+    public void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, TMonitorResult result) {
         //杩斿洖瀵硅薄鐨勫紩鐢紝濡傛灉涓嶅瓨鍦ㄤ細鏀惧叆鏂扮殑key,value
         AreaStats stats = areaStatsMap.computeIfAbsent(key, k -> new AreaStats());
         stats.totalSites++;
@@ -87,7 +88,7 @@
         if(result.getDeptTag()!=null && result.getDeptTag()){
             stats.deptSites++;
         }
-        if (ApiConstants.UY_OnlineSite_Online.equals(result.getStatus())){
+        if (result.getOnline()!=null && result.getOnline()){
             stats.onlineSites++;
             if(result.getImportantTag()!=null && result.getImportantTag()){
                 stats.importantOnlineSites++;
diff --git a/ycl-server/src/main/java/com/ycl/factory/IndexCalculationFactory.java b/ycl-server/src/main/java/com/ycl/factory/IndexCalculationFactory.java
index 07375b4..283b32b 100644
--- a/ycl-server/src/main/java/com/ycl/factory/IndexCalculationFactory.java
+++ b/ycl-server/src/main/java/com/ycl/factory/IndexCalculationFactory.java
@@ -16,8 +16,10 @@
     private static final Map<String, Class<? extends CalculationStrategy>> calculatorClasses = new HashMap<>();
 
     static {
-        //杞﹁締鐐逛綅鍦ㄧ嚎銆佽鍥惧簱瀵规帴绋冲畾鎬�
-        calculatorClasses.put(CalculationStrategyConstants.Car_SiteOnline_ViewStability, CarSnapshopDataCalculation.class);
+        //杞﹁締鐐逛綅鍦ㄧ嚎
+        calculatorClasses.put(CalculationStrategyConstants.Car_SiteOnline, CarOnlineCalculation.class);
+        //杞﹁締瑙嗗浘搴撳鎺ョǔ瀹氭��
+        calculatorClasses.put(CalculationStrategyConstants.Car_ViewStability, CarSnapshopDataCalculation.class);
         //杞﹁締淇℃伅鍑嗙‘鐜�
         calculatorClasses.put(CalculationStrategyConstants.Car_InfoAccuracy, CarInFoAccuracyCalculation.class);
         //杞﹁締鎶撴媿鏁版嵁涓婁紶寤惰繜
@@ -31,8 +33,10 @@
         //杞﹁締鐩綍涓�鑷�
         calculatorClasses.put(CalculationStrategyConstants.Car_DirectConsistent, CarConsistentCalculation.class);
 
-        //浜鸿劯鐐逛綅鍦ㄧ嚎銆佽鍥惧簱瀵规帴绋冲畾
-        calculatorClasses.put(CalculationStrategyConstants.Face_SiteOnline_ViewStability, FaceSnapshotDataCalculation.class);
+        //浜鸿劯鐐逛綅鍦ㄧ嚎
+        calculatorClasses.put(CalculationStrategyConstants.Face_SiteOnline, FaceOnlineCalculation.class);
+        //浜鸿劯瑙嗗浘搴撳鎺ョǔ瀹�
+        calculatorClasses.put(CalculationStrategyConstants.Face_ViewStability, FaceSnapshotDataCalculation.class);
         //浜鸿劯淇℃伅鍑嗙‘鐜�
         calculatorClasses.put(CalculationStrategyConstants.Face_InfoAccuracy, FaceInFoAccuracyCalculation.class);
         //浜鸿劯鎶撴媿鏁版嵁寤惰繜
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java
index c870cd6..266054a 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java
@@ -6,6 +6,7 @@
 import com.ycl.platform.domain.query.DashboardQuery;
 import com.ycl.platform.domain.query.DataCenterQuery;
 import com.ycl.platform.domain.query.HomeQuery;
+import com.ycl.platform.domain.result.SYS.TMonitorResult;
 import com.ycl.platform.domain.vo.TMonitorVO;
 import com.ycl.platform.domain.vo.UpdateOnlineVO;
 import com.ycl.platform.domain.vo.screen.MonitorRateVO;
@@ -162,4 +163,12 @@
      * @param online
      */
     void updateOnline(@Param("online") UpdateOnlineVO online);
+
+    /**
+     * 鐐逛綅鍦ㄧ嚎鐜�
+     *
+     * @param tMonitor 璁惧璧勪骇
+     * @return 璁惧璧勪骇闆嗗悎
+     */
+    public List<TMonitorResult> selectMonitorResult(Short cameraFunType);
 }
diff --git a/ycl-server/src/main/java/com/ycl/task/CarTask.java b/ycl-server/src/main/java/com/ycl/task/CarTask.java
index af47c9a..dff3938 100644
--- a/ycl-server/src/main/java/com/ycl/task/CarTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/CarTask.java
@@ -1,12 +1,16 @@
 package com.ycl.task;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.ycl.calculate.CalculationStrategy;
 import com.ycl.factory.IndexCalculationFactory;
+import com.ycl.platform.domain.entity.YwPoint;
 import com.ycl.platform.domain.result.HK.*;
+import com.ycl.platform.domain.result.SYS.TMonitorResult;
 import com.ycl.platform.domain.result.UY.MonitorQualifyResult;
 import com.ycl.platform.domain.vo.TMonitorVO;
 import com.ycl.platform.mapper.TMonitorMapper;
+import com.ycl.platform.mapper.YwPointMapper;
 import com.ycl.utils.DateUtils;
 import com.ycl.utils.StringUtils;
 import constant.ApiConstants;
@@ -35,8 +39,20 @@
     private MongoTemplate mongoTemplate;
     @Autowired
     private TMonitorMapper monitorMapper;
+    @Autowired
+    private YwPointMapper pointMapper;
+    //TODO锛氬姞浠诲姟
     public void siteOnlineTask() {
-        log.info("寮�濮嬭绠楄溅杈嗙偣浣嶅湪绾跨巼鍜岃鍥惧簱瀵规帴绋冲畾鎬�");
+        log.info("寮�濮嬭绠楃偣浣嶅湪绾跨巼");
+        List<TMonitorResult> tMonitorResults = monitorMapper.selectMonitorResult(CheckConstants.Rule_Category_Car);
+        CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Car_SiteOnline);
+        calculator.calculate(tMonitorResults);
+        log.info("缁撴潫璁$畻瑙嗗浘搴撳鎺ョǔ瀹氭��");
+    }
+
+    //TODO锛氭敼浠诲姟鍚�
+    public void viewConnectTask() {
+        log.info("寮�濮嬭绠楄鍥惧簱瀵规帴绋冲畾鎬�");
         Date yesterday = DateUtils.addDays(new Date(), -1);
         //璁$畻鐐逛綅鍦ㄧ嚎鐜囧拰瑙嗗浘搴撳鎺ョǔ瀹氭��
         Query query = new Query();
@@ -44,9 +60,9 @@
                 .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday))
                 .and("dataType").is(ApiConstants.HK_DataType_CAR));
         List<SnapshotDataMonitorResult> results = mongoTemplate.find(query, SnapshotDataMonitorResult.class);
-        CalculationStrategy<SnapshotDataMonitorResult> calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Car_SiteOnline_ViewStability);
+        CalculationStrategy<SnapshotDataMonitorResult> calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Car_ViewStability);
         calculator.calculate(results);
-        log.info("缁撴潫璁$畻鐐逛綅鍦ㄧ嚎鐜囧拰瑙嗗浘搴撳鎺ョǔ瀹氭��");
+        log.info("缁撴潫璁$畻瑙嗗浘搴撳鎺ョǔ瀹氭��");
     }
 
     public void deviceSampleTask() {
@@ -122,7 +138,7 @@
         Query query = new Query();
         query.addCriteria(Criteria
                 .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday)));
-        // .*琛ㄧず浠绘剰鏁伴噺瀛楃 1/2/3 瑙嗛/杞﹁締/浜鸿劯
+        // 1/2/3 瑙嗛/杞﹁締/浜鸿劯
         Pattern pattern = Pattern.compile(".*2.*");
         query.addCriteria(Criteria.where("sxjgnlx.value").regex(pattern));
         List<MonitorQualifyResult> results = mongoTemplate.find(query, MonitorQualifyResult.class);
diff --git a/ycl-server/src/main/java/com/ycl/task/FaceTask.java b/ycl-server/src/main/java/com/ycl/task/FaceTask.java
index d51deb6..0aad46f 100644
--- a/ycl-server/src/main/java/com/ycl/task/FaceTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/FaceTask.java
@@ -4,6 +4,8 @@
 import com.ycl.calculate.CalculationStrategy;
 import com.ycl.factory.IndexCalculationFactory;
 import com.ycl.platform.domain.result.HK.*;
+import com.ycl.platform.domain.result.SYS.TMonitorResult;
+import com.ycl.platform.domain.result.UY.MonitorQualifyResult;
 import com.ycl.platform.domain.vo.TMonitorVO;
 import com.ycl.platform.mapper.TMonitorMapper;
 import com.ycl.utils.DateUtils;
@@ -20,6 +22,7 @@
 
 import java.util.Date;
 import java.util.List;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 /**
@@ -34,16 +37,25 @@
     @Autowired
     private TMonitorMapper monitorMapper;
 
+    //TODO锛氬姞浠诲姟
     public void siteOnlineTask() {
-        log.info("寮�濮嬭绠椾汉鑴哥偣浣嶅湪绾跨巼鍜岃鍥惧簱瀵规帴绋冲畾鎬�");
+        log.info("寮�濮嬭绠楃偣浣嶅湪绾跨巼");
+        List<TMonitorResult> tMonitorResults = monitorMapper.selectMonitorResult(CheckConstants.Rule_Category_Face);
+        CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Face_SiteOnline);
+        calculator.calculate(tMonitorResults);
+        log.info("缁撴潫璁$畻瑙嗗浘搴撳鎺ョǔ瀹氭��");
+    }
+    //TODO锛氭敼鍚嶅瓧
+    public void viewConnectTask() {
+        log.info("寮�濮嬭绠楄鍥惧簱瀵规帴绋冲畾鎬�");
         Date yesterday = DateUtils.addDays(new Date(), -1);
-        //鐐逛綅鍦ㄧ嚎鐜囧拰瑙嗗浘搴撳鎺ョǔ瀹氭��
+        //瑙嗗浘搴撳鎺ョǔ瀹氭��
         Query query = new Query();
         query.addCriteria(Criteria
                 .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday))
                 .and("dataType").is(ApiConstants.HK_DataType_FACE));
         List<SnapshotDataMonitorResult> results = mongoTemplate.find(query, SnapshotDataMonitorResult.class);
-        CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Face_SiteOnline_ViewStability);
+        CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Face_ViewStability);
         calculator.calculate(results);
         log.info("缁撴潫璁$畻浜鸿劯鐐逛綅鍦ㄧ嚎鐜囧拰瑙嗗浘搴撳鎺ョǔ瀹氭��");
     }
@@ -108,10 +120,16 @@
     public void directConsistentTask() {
         log.info("寮�濮嬭绠椾汉鑴哥洰褰曚竴鑷寸巼");
         //浜鸿劯鐩綍涓�鑷寸巼
-        List<TMonitorVO> tMonitorVOS = monitorMapper.selectMonitorVOList();
-        List<TMonitorVO> list = tMonitorVOS.stream().filter(tMonitorVO ->!StringUtils.isEmpty(tMonitorVO.getCameraFunType()) && tMonitorVO.getCameraFunType().contains(CheckConstants.Rule_Category_Face + "")).collect(Collectors.toList());
+        Date yesterday = DateUtils.addDays(new Date(), -1);
+        Query query = new Query();
+        query.addCriteria(Criteria
+                .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday)));
+        // 1/2/3 瑙嗛/杞﹁締/浜鸿劯
+        Pattern pattern = Pattern.compile(".*3.*");
+        query.addCriteria(Criteria.where("sxjgnlx.value").regex(pattern));
+        List<MonitorQualifyResult> results = mongoTemplate.find(query, MonitorQualifyResult.class);
         CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Face_DirectConsistent);
-        calculator.calculate(list);
+        calculator.calculate(results);
         log.info("缁撴潫璁$畻浜鸿劯鐩綍涓�鑷寸巼");
     }
 }
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 57ba630..0c493a9 100644
--- a/ycl-server/src/main/java/com/ycl/task/OsdTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/OsdTask.java
@@ -64,6 +64,7 @@
      * 姣斿mongoDB涓�鏈轰竴妗d俊鎭紝鏁寸悊鎴恟esult瀛樺叆mongo
      * 鍚屾鍝佺墝鍒癿ysql
      */
+    //TODO锛氬ぇ鍗庡姩鎬佸簱linux鎹綅缃�
     public void getOSD() {
         log.info("寮�濮嬭幏鍙朞SD");
         List<OSDResult> osdResultList = new ArrayList<>();
diff --git a/ycl-server/src/main/java/com/ycl/task/VideoTask.java b/ycl-server/src/main/java/com/ycl/task/VideoTask.java
index 3a277bd..e227f74 100644
--- a/ycl-server/src/main/java/com/ycl/task/VideoTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/VideoTask.java
@@ -6,6 +6,7 @@
 import com.ycl.platform.domain.entity.CheckIndexVideo;
 import com.ycl.platform.domain.entity.ImageResourceSecurity;
 import com.ycl.platform.domain.entity.ImageResourceSecurityDetail;
+import com.ycl.platform.domain.result.SYS.TMonitorResult;
 import com.ycl.platform.domain.result.UY.*;
 import com.ycl.platform.domain.vo.PlatformOnlineVO;
 import com.ycl.platform.domain.vo.TMonitorVO;
@@ -13,7 +14,9 @@
 import com.ycl.platform.service.IImageResourceSecurityService;
 import com.ycl.utils.DateUtils;
 import com.ycl.utils.DictUtils;
+import constant.ApiConstants;
 import constant.CalculationStrategyConstants;
+import constant.CheckConstants;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -51,18 +54,12 @@
     private final ImageResourceSecurityMapper imageResourceSecurityMapper;
 
     private static final BigDecimal NUM = new BigDecimal("0.15");
-
+    //TODO锛氬姞浠诲姟
     public void siteOnlineTask() {
         log.info("寮�濮嬭绠楃偣浣嶅湪绾跨巼");
-        Date yesterday = DateUtils.addDays(new Date(), -1);
-        //璁$畻鐐逛綅鍦ㄧ嚎鐜囧拰閲嶇偣鐐逛綅鍦ㄧ嚎鐜囧拰鎸囨尌鍥惧儚鍦ㄧ嚎鐜�
-        Query query = new Query();
-        query.addCriteria(Criteria
-                .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday)));
-
-        List<VideoOnlineResult> results = mongoTemplate.find(query, VideoOnlineResult.class);
+        List<TMonitorResult> tMonitorResults = monitorMapper.selectMonitorResult(CheckConstants.Rule_Category_Video);
         CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Video_SiteOnline);
-        calculator.calculate(results);
+        calculator.calculate(tMonitorResults);
         log.info("缁撴潫璁$畻鐐逛綅鍦ㄧ嚎鐜�");
     }
 
@@ -83,9 +80,13 @@
     public void oneMonitorFileTask() {
         log.info("寮�濮嬭绠椾竴鏈轰竴妗f敞鍐岀巼銆佹。妗堣�冩牳姣�");
         //璁$畻涓�鏈轰竴妗f敞鍐岀巼銆佹。妗堣�冩牳姣�
-        List<TMonitorVO> tMonitorVOS = monitorMapper.selectMonitorVOList();
+        Date yesterday = DateUtils.addDays(new Date(), -1);
+        Query query = new Query();
+        query.addCriteria(Criteria
+                .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday)));
+        List<MonitorQualifyResult> results = mongoTemplate.find(query, MonitorQualifyResult.class);
         CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Video_MonitorRegis_ArchiveRate);
-        calculator.calculate(tMonitorVOS);
+        calculator.calculate(results);
         log.info("缁撴潫璁$畻涓�鏈轰竴妗f敞鍐岀巼銆佹。妗堣�冩牳姣�");
     }
 
@@ -127,7 +128,7 @@
     /**
      * 瑙嗛鍥惧儚璧勬簮瀹夊叏锛岄渶瑕佹帓鍦ㄥ钩鍙板湪绾跨巼鍚庨潰銆�
      */
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public void videoSecurity() {
         ArrayList<ImageResourceSecurity> imageResourceSecurities = new ArrayList<>();
         List<CheckIndexVideo> list = checkIndexVideoMapper.selectAndDeptName();
diff --git a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
index 7c7aef2..3ab225e 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
@@ -154,6 +154,17 @@
         left join sys_dept d on p.dept_id = d.dept_id
     </select>
 
+    <select id="selectMonitorResult" resultType="com.ycl.platform.domain.result.SYS.TMonitorResult">
+        select m.id, m.serial_number as no,d.dept_id,p.province_tag,p.important_tag,p.important_command_image_tag,p.dept_tag,p.online
+        from t_monitor m
+        left join t_yw_point p on m.serial_number = p.serial_number
+        left join sys_dept d on p.dept_id = d.dept_id
+        <where>
+            <if test="cameraFunType!=null">
+                m.camera_fun_type like concat('%',#{cameraFunType},'%')
+            </if>
+        </where>
+    </select>
     <select id="selectTMonitorById" parameterType="Long" resultType="com.ycl.platform.domain.vo.TMonitorVO">
         <include refid="selectTMonitorVo"/>
         where id = #{id}

--
Gitblit v1.8.0