From b3764b100a9e8783e2c061473ada3f5316d84f55 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期四, 15 八月 2024 17:25:08 +0800
Subject: [PATCH] 车辆、人脸目录一致率

---
 ycl-server/src/main/java/com/ycl/factory/IndexCalculationFactory.java          |    6 
 ycl-server/src/main/java/com/ycl/task/FaceTask.java                            |   15 ++
 document/海康api.docx                                                            |    0 
 ycl-common/src/main/java/constant/CalculationStrategyConstants.java            |   10 +
 ycl-server/src/main/java/com/ycl/calculate/CarConsistentCalculation.java       |  132 ++++++++++++++++++++++
 ycl-server/src/main/java/com/ycl/platform/mapper/PlatformOnlineMapper.java     |    2 
 ycl-server/src/main/java/com/ycl/calculate/FaceConsistentCalculation.java      |  131 +++++++++++++++++++++
 ycl-server/src/main/java/com/ycl/calculate/MonitorRegistrationCalculation.java |   10 +
 ycl-server/src/main/java/com/ycl/task/CarTask.java                             |   17 ++
 ycl-server/src/main/java/com/ycl/task/VideoTask.java                           |    2 
 ycl-server/src/main/resources/mapper/zgyw/PlatformOnlineMapper.xml             |    2 
 ycl-server/src/main/java/com/ycl/calculate/IndexCalculationServe.java          |   12 ++
 12 files changed, 322 insertions(+), 17 deletions(-)

diff --git "a/document/\346\265\267\345\272\267api.docx" "b/document/\346\265\267\345\272\267api.docx"
index c7f8091..90d6642 100644
--- "a/document/\346\265\267\345\272\267api.docx"
+++ "b/document/\346\265\267\345\272\267api.docx"
Binary files differ
diff --git a/ycl-common/src/main/java/constant/CalculationStrategyConstants.java b/ycl-common/src/main/java/constant/CalculationStrategyConstants.java
index 0a43e29..86f1149 100644
--- a/ycl-common/src/main/java/constant/CalculationStrategyConstants.java
+++ b/ycl-common/src/main/java/constant/CalculationStrategyConstants.java
@@ -28,7 +28,10 @@
      * 杞﹁締鏃堕挓鍑嗙‘鎬�
      */
     public static final String Car_ClockAccuracy = "carClockAccuracy";
-
+    /**
+     * 杞﹁締鐩綍涓�鑷寸巼
+     */
+    public static final String Car_DirectConsistent = "carDirectConsistent";
 
     /**
      * 浜鸿劯鏁版嵁涓婁紶鍙婃椂鎬�
@@ -50,7 +53,10 @@
      * 浜鸿劯鏃堕挓鍑嗙‘鎬�
      */
     public static final String Face_ClockAccuracy = "faceClockAccuracy";
-
+    /**
+     * 浜鸿劯鐩綍涓�鑷寸巼
+     */
+    public static final String Face_DirectConsistent = "faceDirectConsistent";
 
     /**
      * 涓�鏈轰竴妗f敞鍐岀巼銆佹。妗堣�冩牳姣�
diff --git a/ycl-server/src/main/java/com/ycl/calculate/CarConsistentCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/CarConsistentCalculation.java
new file mode 100644
index 0000000..3b216a4
--- /dev/null
+++ b/ycl-server/src/main/java/com/ycl/calculate/CarConsistentCalculation.java
@@ -0,0 +1,132 @@
+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.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 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;
+
+/**
+ * 璁$畻杞﹁締鐩綍涓�鑷寸巼
+ * 鑾峰彇鍒嗙渷鍘呫�佸尯鍩熺殑map<k,v> k涓篸eptId鎴栬�匬rovince_deptId
+ * 鏇存柊鎴栨柊澧�
+ */
+@Component
+public class CarConsistentCalculation extends IndexCalculationServe implements CalculationStrategy<TMonitorVO> {
+    @Autowired
+    private CheckIndexCarMapper checkIndexCarMapper;
+    @Autowired
+    private TMonitorMapper monitorMapper;
+    @Autowired
+    private ICheckIndexCarService checkIndexCarService;
+    @Autowired
+    private RedisTemplate redisTemplate;
+
+    //鍖哄煙杞﹁締淇℃伅閲囬泦鍑嗙‘鐜囩殑鍐呴儴绫�
+    private static class AreaStats {
+        int totalSites = 0;
+        int newSites = 0;
+    }
+
+    @Override
+    public void calculate(List<TMonitorVO> list) {
+        if (CollectionUtils.isEmpty(list)) {
+            return;
+        }
+        //杩斿洖浠ュ浗鏍囩爜涓簁ey鐨勮澶噈ap
+        Map<String, TMonitorVO> monitorMap = new HashMap<>();
+        if(!CollectionUtils.isEmpty(list)){
+            monitorMap = list.stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity()));
+        }
+        //鑾峰彇鐪佸巺鍥芥爣鐮侀泦鍚�
+        List<String> provinceIds = getProvince();
+        //鏈敞鍐岃溅杈嗚澶�
+        Map<String,TMonitor> newMonitorMap = new HashMap<>();
+        //Mongo涓�鏈轰竴妗e悓姝ysql鏃舵斁鍏edis 绛涢�夊嚭杞﹁締妗f
+        String json = (String) redisTemplate.opsForValue().get(RedisConstant.New_Monitor_Set);
+        if (!StringUtils.isEmpty(json)) {
+            List<TMonitor> newMonitors = JSONArray.parseArray(json, TMonitor.class);
+            if(!CollectionUtils.isEmpty(newMonitors)){
+                newMonitorMap = newMonitors.stream().filter(tMonitor -> tMonitor.getCameraFunType().contains(CheckConstants.Rule_Category_Car+"")).collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity()));
+            }
+        }
+        Map<String, AreaStats> areaStatsMap = new HashMap<>();
+        for (TMonitorVO result : list) {
+            TMonitorVO monitor = monitorMap.get(result.getSerialNumber());
+            if (monitor == null) continue;
+            String deptId = monitor.getDeptId().toString();
+            updateAreaStats(areaStatsMap, deptId, result,newMonitorMap);
+
+            // 澶勭悊鐪佸巺鏁版嵁
+            if (!CollectionUtils.isEmpty(provinceIds) && provinceIds.contains(monitor.getSerialNumber())) {
+                String provinceKey = ApiConstants.Province + deptId;
+                updateAreaStats(areaStatsMap, provinceKey, result,newMonitorMap);
+            }
+        }
+
+        // 鏌ヨ鏄惁index琛ㄥ凡缁忓瓨鍦ㄤ粖鏃ユ暟鎹�
+        List<CheckIndexCar> checkIndexCarList = checkIndexCarMapper.selectToday(DateUtils.getDate());
+        List<CheckIndexCar> checkIndexCars = new ArrayList<>();
+        areaStatsMap.forEach((deptId, stats) -> {
+            if (stats.totalSites > 0) {
+                CheckIndexCar checkIndexCar = createOrUpdateCheckIndexCar(deptId, stats, checkIndexCarList);
+                if (checkIndexCar != null) {
+                    checkIndexCars.add(checkIndexCar);
+                }
+            }
+        });
+
+        checkIndexCarService.saveOrUpdateBatch(checkIndexCars);
+    }
+
+    /**
+     * 绱杞﹁締鐩綍涓�鑷寸巼
+     */
+    private void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, TMonitorVO result,Map<String,TMonitor> newMonitorMap) {
+        //杩斿洖瀵硅薄鐨勫紩鐢紝濡傛灉涓嶅瓨鍦ㄤ細鏀惧叆鏂扮殑key,value
+        AreaStats stats = areaStatsMap.computeIfAbsent(key, k -> new AreaStats());
+        stats.totalSites++;
+        if(newMonitorMap.containsKey(result.getSerialNumber())){
+            stats.newSites++;
+        }
+    }
+
+    /**
+     * 杞﹁締淇℃伅閲囬泦姝g‘鐜�
+     */
+    private CheckIndexCar createOrUpdateCheckIndexCar(String key, AreaStats stats, List<CheckIndexCar> checkIndexCarList) {
+        CheckIndexCar checkIndexCar = getCheckIndex(key, checkIndexCarList, CheckIndexCar.class);
+        if (checkIndexCar == null) {
+            return null;
+        }
+        //璋冪敤鐩綍涓�鑷寸巼璁$畻鏂规硶
+        Map<String, Object> param = new HashMap<>();
+        param.put("totalSites", stats.totalSites);
+        param.put("newSites", stats.newSites);
+        BigDecimal directoryConstant = directoryConstant(param);
+        checkIndexCar.setDeviceDirectoryConsistent(directoryConstant);
+        return checkIndexCar;
+    }
+
+
+}
diff --git a/ycl-server/src/main/java/com/ycl/calculate/FaceConsistentCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/FaceConsistentCalculation.java
new file mode 100644
index 0000000..a483526
--- /dev/null
+++ b/ycl-server/src/main/java/com/ycl/calculate/FaceConsistentCalculation.java
@@ -0,0 +1,131 @@
+package com.ycl.calculate;
+
+import com.alibaba.fastjson2.JSONArray;
+import com.ycl.platform.domain.entity.CheckIndexFace;
+import com.ycl.platform.domain.entity.TMonitor;
+import com.ycl.platform.domain.vo.TMonitorVO;
+import com.ycl.platform.mapper.CheckIndexFaceMapper;
+import com.ycl.platform.mapper.TMonitorMapper;
+import com.ycl.platform.service.ICheckIndexFaceService;
+import constant.ApiConstants;
+import constant.CheckConstants;
+import constant.RedisConstant;
+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;
+
+/**
+ * 璁$畻杞﹁締鐩綍涓�鑷寸巼
+ * 鑾峰彇鍒嗙渷鍘呫�佸尯鍩熺殑map<k,v> k涓篸eptId鎴栬�匬rovince_deptId
+ * 鏇存柊鎴栨柊澧�
+ */
+@Component
+public class FaceConsistentCalculation extends IndexCalculationServe implements CalculationStrategy<TMonitorVO> {
+    @Autowired
+    private CheckIndexFaceMapper checkIndexFaceMapper;
+    @Autowired
+    private TMonitorMapper monitorMapper;
+    @Autowired
+    private ICheckIndexFaceService checkIndexFaceService;
+    @Autowired
+    private RedisTemplate redisTemplate;
+
+    //鍖哄煙杞﹁締淇℃伅閲囬泦鍑嗙‘鐜囩殑鍐呴儴绫�
+    private static class AreaStats {
+        int totalSites = 0;
+        int newSites = 0;
+    }
+
+    @Override
+    public void calculate(List<TMonitorVO> list) {
+        if (CollectionUtils.isEmpty(list)) {
+            return;
+        }
+        //杩斿洖浠ュ浗鏍囩爜涓簁ey鐨勮澶噈ap
+        Map<String, TMonitorVO> monitorMap = new HashMap<>();
+        if(!CollectionUtils.isEmpty(list)){
+            monitorMap = list.stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity()));
+        }
+        //鑾峰彇鐪佸巺鍥芥爣鐮侀泦鍚�
+        List<String> provinceIds = getProvince();
+        //鏈敞鍐岃溅杈嗚澶�
+        Map<String,TMonitor> newMonitorMap = new HashMap<>();
+        //Mongo涓�鏈轰竴妗e悓姝ysql鏃舵斁鍏edis 绛涢�夊嚭杞﹁締妗f
+        String json = (String) redisTemplate.opsForValue().get(RedisConstant.New_Monitor_Set);
+        if (!StringUtils.isEmpty(json)) {
+            List<TMonitor> newMonitors = JSONArray.parseArray(json, TMonitor.class);
+            if(!CollectionUtils.isEmpty(newMonitors)){
+                newMonitorMap = newMonitors.stream().filter(tMonitor -> tMonitor.getCameraFunType().contains(CheckConstants.Rule_Category_Face+"")).collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity()));
+            }
+        }
+        Map<String, AreaStats> areaStatsMap = new HashMap<>();
+        for (TMonitorVO result : list) {
+            TMonitorVO monitor = monitorMap.get(result.getSerialNumber());
+            if (monitor == null) continue;
+            String deptId = monitor.getDeptId().toString();
+            updateAreaStats(areaStatsMap, deptId, result,newMonitorMap);
+
+            // 澶勭悊鐪佸巺鏁版嵁
+            if (!CollectionUtils.isEmpty(provinceIds) && provinceIds.contains(monitor.getSerialNumber())) {
+                String provinceKey = ApiConstants.Province + deptId;
+                updateAreaStats(areaStatsMap, provinceKey, result,newMonitorMap);
+            }
+        }
+
+        // 鏌ヨ鏄惁index琛ㄥ凡缁忓瓨鍦ㄤ粖鏃ユ暟鎹�
+        List<CheckIndexFace> checkIndexFaceList = checkIndexFaceMapper.selectToday(DateUtils.getDate());
+        List<CheckIndexFace> checkIndexFaces = new ArrayList<>();
+        areaStatsMap.forEach((deptId, stats) -> {
+            if (stats.totalSites > 0) {
+                CheckIndexFace checkIndexFace = createOrUpdateCheckIndexFace(deptId, stats, checkIndexFaceList);
+                if (checkIndexFace != null) {
+                    checkIndexFaces.add(checkIndexFace);
+                }
+            }
+        });
+
+        checkIndexFaceService.saveOrUpdateBatch(checkIndexFaces);
+    }
+
+    /**
+     * 绱浜鸿劯鐩綍涓�鑷寸巼
+     */
+    private void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, TMonitorVO result,Map<String,TMonitor> newMonitorMap) {
+        //杩斿洖瀵硅薄鐨勫紩鐢紝濡傛灉涓嶅瓨鍦ㄤ細鏀惧叆鏂扮殑key,value
+        AreaStats stats = areaStatsMap.computeIfAbsent(key, k -> new AreaStats());
+        stats.totalSites++;
+        if(newMonitorMap.containsKey(result.getSerialNumber())){
+            stats.newSites++;
+        }
+    }
+
+    /**
+     * 浜鸿劯淇℃伅閲囬泦姝g‘鐜�
+     */
+    private CheckIndexFace createOrUpdateCheckIndexFace(String key, AreaStats stats, List<CheckIndexFace> checkIndexFaceList) {
+        CheckIndexFace checkIndexFace = getCheckIndex(key, checkIndexFaceList, CheckIndexFace.class);
+        if (checkIndexFace == null) {
+            return null;
+        }
+        //璋冪敤鐩綍涓�鑷寸巼璁$畻鏂规硶
+        Map<String, Object> param = new HashMap<>();
+        param.put("totalSites", stats.totalSites);
+        param.put("newSites", stats.newSites);
+        BigDecimal directoryConstant = directoryConstant(param);
+        checkIndexFace.setDeviceDirectoryConsistent(directoryConstant);
+        return checkIndexFace;
+    }
+
+
+}
diff --git a/ycl-server/src/main/java/com/ycl/calculate/IndexCalculationServe.java b/ycl-server/src/main/java/com/ycl/calculate/IndexCalculationServe.java
index d2600fa..a13d14e 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/IndexCalculationServe.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/IndexCalculationServe.java
@@ -67,6 +67,18 @@
         return onlineSites.divide(totalSites, 4, RoundingMode.HALF_UP);
     }
 
+    //鐩綍涓�鑷寸巼锛屾瘡瓒呰繃鐧惧垎涔�1鎵�10%
+    public BigDecimal directoryConstant(Map<String, Object> param) {
+        BigDecimal totalSites = new BigDecimal((Integer) param.get("totalSites"));
+        BigDecimal newSites = new BigDecimal((Integer) param.get("newSites"));
+        // 璁$畻newSites鍗爐otalSites鐨勭櫨鍒嗘瘮鍊嶆暟
+        BigDecimal percentage = newSites.divide(totalSites, 2, RoundingMode.DOWN).multiply(BigDecimal.valueOf(100));
+        BigDecimal result = BigDecimal.ONE;
+        if(BigDecimal.ONE.compareTo(percentage) <= 0 ){
+            result = result.subtract(percentage.multiply(new BigDecimal("0.1")));
+        }
+        return result.max(BigDecimal.ZERO);
+    }
     //瑙嗗浘搴撳鎺ョǔ瀹氭��
     public BigDecimal viewConnectStability(Map<String, Object> param) {
         BigDecimal totalDataSum = new BigDecimal((Integer) param.get("totalDataSum"));
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 a6f4dcb..d654649 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/MonitorRegistrationCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/MonitorRegistrationCalculation.java
@@ -33,8 +33,6 @@
     @Autowired
     private CheckIndexVideoMapper checkIndexVideoMapper;
     @Autowired
-    private TMonitorMapper monitorMapper;
-    @Autowired
     private ICheckIndexVideoService checkIndexVideoService;
     @Autowired
     private RedisTemplate redisTemplate;
@@ -61,6 +59,8 @@
         if(!CollectionUtils.isEmpty(list)){
             monitorMap = list.stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity()));
         }
+        //鑾峰彇鐪佸巺鍥芥爣鐮侀泦鍚�
+        List<String> provinceIds = getProvince();
         //鏈敞鍐岃澶�
         Map<String,TMonitor> newMonitorMap = new HashMap<>();
         //Mongo涓�鏈轰竴妗e悓姝ysql鏃舵斁鍏edis
@@ -81,7 +81,11 @@
 
             String deptId = monitor.getDeptId().toString();
             updateAreaStats(areaStatsMap, deptId, result,newMonitorMap,todayMonitor);
-
+            // 澶勭悊鐪佸巺鏁版嵁
+            if (!CollectionUtils.isEmpty(provinceIds) && provinceIds.contains(monitor.getSerialNumber())) {
+                String provinceKey = ApiConstants.Province + deptId;
+                updateAreaStats(areaStatsMap, provinceKey, result,newMonitorMap,todayMonitor);
+            }
         }
 
         // 鏌ヨ鏄惁index琛ㄥ凡缁忓瓨鍦ㄤ粖鏃ユ暟鎹�
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 b8f2e79..7c5c7ea 100644
--- a/ycl-server/src/main/java/com/ycl/factory/IndexCalculationFactory.java
+++ b/ycl-server/src/main/java/com/ycl/factory/IndexCalculationFactory.java
@@ -23,7 +23,8 @@
         calculators.put(CalculationStrategyConstants.Car_DataAccuracy_Url_PicUsability, new CarDeviceSampleCalculation());
         //杞﹁締鏃堕挓鍑嗙‘鎬�
         calculators.put(CalculationStrategyConstants.Car_ClockAccuracy, new CarClockAccuracyCalculation());
-        //TODO锛氳溅杈嗙洰褰曚竴鑷�
+        //杞﹁締鐩綍涓�鑷�
+        calculators.put(CalculationStrategyConstants.Car_DirectConsistent, new CarConsistentCalculation());
 
         //浜鸿劯鐐逛綅鍦ㄧ嚎銆佽鍥惧簱瀵规帴绋冲畾
         calculators.put(CalculationStrategyConstants.Face_SiteOnline_ViewStability, new FaceSnapshotDataCalculation());
@@ -35,7 +36,8 @@
         calculators.put(CalculationStrategyConstants.Face_DataAccuracy_PicUsability, new FaceDeviceSampleCalculation());
         //浜鸿劯鏃堕挓鍑嗙‘鎬�
         calculators.put(CalculationStrategyConstants.Face_ClockAccuracy, new FaceClockAccuracyCalculation());
-        //TODO锛氫汉鑴哥洰褰曚竴鑷�
+        //浜鸿劯鐩綍涓�鑷�
+        calculators.put(CalculationStrategyConstants.Face_DirectConsistent, new FaceConsistentCalculation());
 
         //涓�鏈轰竴妗f敞鍐岀巼銆佹。妗堣�冩牳姣�
         calculators.put(CalculationStrategyConstants.Video_MonitorRegis_ArchiveRate,new MonitorRegistrationCalculation())
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/PlatformOnlineMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/PlatformOnlineMapper.java
index 1a2a23c..1436cc5 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/PlatformOnlineMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/PlatformOnlineMapper.java
@@ -34,6 +34,6 @@
     IPage getPage(IPage page, @Param("query") DataCenterQuery query);
 
     //鏄ㄦ棩鏁版嵁
-    List<PlatformOnlineVO> sumYesterday(@Param("startDate")String startDate, @Param("endDate")String endDate);
+    List<PlatformOnlineVO> yesterdayData(@Param("startDate")String startDate, @Param("endDate")String endDate);
 
 }
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 66e5257..fd36a2a 100644
--- a/ycl-server/src/main/java/com/ycl/task/CarTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/CarTask.java
@@ -4,9 +4,12 @@
 import com.ycl.calculate.CalculationStrategy;
 import com.ycl.factory.IndexCalculationFactory;
 import com.ycl.platform.domain.result.HK.*;
+import com.ycl.platform.domain.vo.TMonitorVO;
+import com.ycl.platform.mapper.TMonitorMapper;
 import com.ycl.utils.DateUtils;
 import constant.ApiConstants;
 import constant.CalculationStrategyConstants;
+import constant.CheckConstants;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.mongodb.core.MongoTemplate;
@@ -16,6 +19,7 @@
 
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 杞﹁締璁$畻鑰冩牳鎸囨爣浠诲姟
@@ -26,7 +30,8 @@
 public class CarTask {
     @Autowired
     private MongoTemplate mongoTemplate;
-
+    @Autowired
+    private TMonitorMapper monitorMapper;
     public void siteOnlineTask() {
         Date yesterday = DateUtils.addDays(new Date(), -1);
         //璁$畻鐐逛綅鍦ㄧ嚎鐜囧拰瑙嗗浘搴撳鎺ョǔ瀹氭��
@@ -95,8 +100,12 @@
         calculator.calculate(results);
     }
 
-    public void test() {
-        Date yesterday = DateUtils.addDays(new Date(), -1);
-        //TODO锛氫竴鏈轰竴妗� 鑱旂綉鍗″彛璁惧鐩綍涓�鑷寸巼
+    public void directConsistentTask() {
+        //杞﹁締鐩綍涓�鑷寸巼
+        List<TMonitorVO> tMonitorVOS = monitorMapper.selectMonitorVOList();
+        List<TMonitorVO> list = tMonitorVOS.stream().filter(tMonitorVO -> tMonitorVO.getCameraFunType().contains(CheckConstants.Rule_Category_Car + "")).collect(Collectors.toList());
+        CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Car_DirectConsistent);
+        calculator.calculate(list);
     }
+
 }
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 125770d..3d7cfc3 100644
--- a/ycl-server/src/main/java/com/ycl/task/FaceTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/FaceTask.java
@@ -4,9 +4,12 @@
 import com.ycl.calculate.CalculationStrategy;
 import com.ycl.factory.IndexCalculationFactory;
 import com.ycl.platform.domain.result.HK.*;
+import com.ycl.platform.domain.vo.TMonitorVO;
+import com.ycl.platform.mapper.TMonitorMapper;
 import com.ycl.utils.DateUtils;
 import constant.ApiConstants;
 import constant.CalculationStrategyConstants;
+import constant.CheckConstants;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.mongodb.core.MongoTemplate;
@@ -16,6 +19,7 @@
 
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 浜鸿劯璁$畻鑰冩牳鎸囨爣浠诲姟
@@ -26,6 +30,8 @@
 public class FaceTask {
     @Autowired
     private MongoTemplate mongoTemplate;
+    @Autowired
+    private TMonitorMapper monitorMapper;
 
     public void siteOnlineTask() {
         Date yesterday = DateUtils.addDays(new Date(), -1);
@@ -80,8 +86,11 @@
         calculator.calculate(results);
     }
 
-    public void test() {
-        Date yesterday = DateUtils.addDays(new Date(), -1);
-        //TODO锛氫竴鏈轰竴妗� 鑱旂綉鍗″彛璁惧鐩綍涓�鑷寸巼
+    public void directConsistentTask() {
+        //浜鸿劯鐩綍涓�鑷寸巼
+        List<TMonitorVO> tMonitorVOS = monitorMapper.selectMonitorVOList();
+        List<TMonitorVO> list = tMonitorVOS.stream().filter(tMonitorVO -> tMonitorVO.getCameraFunType().contains(CheckConstants.Rule_Category_Face + "")).collect(Collectors.toList());
+        CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Face_DirectConsistent);
+        calculator.calculate(list);
     }
 }
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 c89f06c..38e698b 100644
--- a/ycl-server/src/main/java/com/ycl/task/VideoTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/VideoTask.java
@@ -91,7 +91,7 @@
     }
     public void platformOnlineTask() {
         //璁$畻骞冲彴鍦ㄧ嚎鐜�
-        List<PlatformOnlineVO> list = platformOnlineMapper.sumYesterday(DateUtils.getMouthStart(new Date()), DateUtils.getMouthEnd(new Date()));
+        List<PlatformOnlineVO> list = platformOnlineMapper.yesterdayData(DateUtils.getMouthStart(new Date()), DateUtils.getMouthEnd(new Date()));
         CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Video_PlatformOnline);
         calculator.calculate(list);
     }
diff --git a/ycl-server/src/main/resources/mapper/zgyw/PlatformOnlineMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/PlatformOnlineMapper.xml
index d52330e..ef4cec1 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/PlatformOnlineMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/PlatformOnlineMapper.xml
@@ -47,7 +47,7 @@
     </select>
 
 
-    <select id="sumYesterday" resultMap="BaseResultMap">
+    <select id="yesterdayData" resultMap="BaseResultMap">
         select * from t_platform_online
         where create_date between #{startDate} and #{endDate}
     </select>

--
Gitblit v1.8.0