From 745663af3e1398aae07c1dfbd026acfc11305e1f Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期六, 03 八月 2024 13:31:07 +0800
Subject: [PATCH] 优云点位在线率

---
 ycl-server/src/main/java/com/ycl/platform/service/impl/CheckIndexVideoServiceImpl.java |   19 +-
 ycl-server/src/main/java/com/ycl/platform/service/ICheckIndexVideoService.java         |   18 +-
 ycl-server/src/main/java/com/ycl/api/PythonController.java                             |   20 ++
 ycl-server/src/main/java/com/ycl/platform/mapper/CheckIndexVideoMapper.java            |   20 +-
 ycl-pojo/src/main/java/com/ycl/platform/domain/param/UY/OsdMonitorParam.java           |   38 +++++
 ycl-server/src/main/java/com/ycl/feign/UYClient.java                                   |    6 
 ycl-common/src/main/java/constant/ApiConstants.java                                    |    5 
 ycl-server/src/main/java/com/ycl/factory/IndexCalculationFactory.java                  |    4 
 ycl-server/src/main/java/com/ycl/calculate/CarSnapshopDataCalculation.java             |    8 
 ycl-common/src/main/java/constant/CalculationStrategyConstants.java                    |    5 
 ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java            |    8 
 ycl-server/src/main/java/com/ycl/task/VideoTask.java                                   |   24 +++
 ycl-server/src/main/java/com/ycl/task/UYTask.java                                      |   35 +++++
 ycl-server/src/main/resources/mapper/zgyw/CheckIndexVideoMapper.xml                    |   16 +
 ycl-server/src/main/java/com/ycl/calculate/IndexCalculationServe.java                  |    3 
 ycl-server/src/main/java/com/ycl/calculate/VideoOnlineCalculation.java                 |  136 +++++++++++++++++++
 16 files changed, 322 insertions(+), 43 deletions(-)

diff --git a/ycl-common/src/main/java/constant/ApiConstants.java b/ycl-common/src/main/java/constant/ApiConstants.java
index 105d11d..aefac02 100644
--- a/ycl-common/src/main/java/constant/ApiConstants.java
+++ b/ycl-common/src/main/java/constant/ApiConstants.java
@@ -42,5 +42,8 @@
     //鍥介檯缂栫爜鐩戞祴缁撴灉 11-13浣嶄笉鍚堟爣鍑�
     public final static Integer HK_Info_GbCodeType_11NotStandard = 4;
 
-
+    //浼樹簯鍦ㄧ嚎鐘舵�� 1鍦ㄧ嚎 0鏈煡 -1绂荤嚎
+    public final static Integer UY_OnlineSite_Online = 1;
+    public final static Integer UY_OnlineSite_Unknown = 0;
+    public final static Integer UY_OnlineSite_Offline = -1;
 }
diff --git a/ycl-common/src/main/java/constant/CalculationStrategyConstants.java b/ycl-common/src/main/java/constant/CalculationStrategyConstants.java
index efcc0cb..280fad8 100644
--- a/ycl-common/src/main/java/constant/CalculationStrategyConstants.java
+++ b/ycl-common/src/main/java/constant/CalculationStrategyConstants.java
@@ -51,4 +51,9 @@
      */
     public static final String Face_ClockAccuracy = "faceClockAccuracy";
 
+
+    /**
+     * 瑙嗛鐐逛綅鍦ㄧ嚎鐜�
+     */
+    public static final String Video_SiteOnline = "videoSiteOnline";
 }
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/param/UY/OsdMonitorParam.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/param/UY/OsdMonitorParam.java
new file mode 100644
index 0000000..d869df5
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/param/UY/OsdMonitorParam.java
@@ -0,0 +1,38 @@
+package com.ycl.platform.domain.param.UY;
+
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+public class OsdMonitorParam {
+    /**
+     * 鍒嗛〉椤电爜
+     */
+    private Integer pageNum;
+    /**
+     * 鍒嗛〉澶у皬
+     */
+    private Integer pageSize;
+    /**
+     * tenantId蹇呴』
+     */
+    private Integer tenantId;
+    /**
+     * 鍖哄煙缂栫爜
+     */
+    private Integer arealayerno;
+    /**
+     * 鍏抽敭瀛�
+     */
+    private Integer keyword;
+    /**
+     * 瀛楀箷淇℃伅鏍煎紡鏄惁鏈夋晥锛�1:鏈夋晥, -1:鏈煡, 0:鏃犳晥
+     */
+    private Integer osdFormat;
+    /**
+     * 鍥剧墖涓婄殑瀛楀箷鏃堕棿鍜屾憚鍍忔満鎷夌爜娴佹椂闂村樊鏄惁澶т簬鏈�澶у��, 1:澶т簬, -1:鏈煡, 0 灏忎簬
+     */
+    private Integer osdTime;
+}
diff --git a/ycl-server/src/main/java/com/ycl/api/PythonController.java b/ycl-server/src/main/java/com/ycl/api/PythonController.java
new file mode 100644
index 0000000..97c9500
--- /dev/null
+++ b/ycl-server/src/main/java/com/ycl/api/PythonController.java
@@ -0,0 +1,20 @@
+package com.ycl.api;
+
+import com.ycl.platform.domain.param.UY.OsdMonitorParam;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 鎺ユ敹python鎺ュ彛鎺ㄩ�佺殑鏃堕挓鍑嗙‘
+ */
+@RestController
+@RequestMapping("/api")
+public class PythonController {
+    @PostMapping("/videoClock")
+    public void videoClock(@RequestBody OsdMonitorParam param) {
+        //瀛樺偍python鎺ㄩ�佽棰戞椂閽熶俊鎭�
+
+    }
+}
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 c3276a8..e701f1a 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/CarSnapshopDataCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/CarSnapshopDataCalculation.java
@@ -44,7 +44,7 @@
     //鍖哄煙杞﹁締鐐逛綅鍦ㄧ嚎鎸囨爣鐨勫唴閮ㄧ被
     private static class AreaStats {
         int totalSites = 0;
-        int offlineSites = 0;
+        int onlineSites = 0;
         int totalDataSum = 0;
     }
 
@@ -102,8 +102,8 @@
         //杩斿洖瀵硅薄鐨勫紩鐢紝濡傛灉涓嶅瓨鍦ㄤ細鏀惧叆鏂扮殑key,value
         AreaStats stats = areaStatsMap.computeIfAbsent(key, k -> new AreaStats());
         stats.totalSites++;
-        if (ApiConstants.HK_SnapCount_ResultType_Null == result.getResultType()) {
-            stats.offlineSites++;
+        if (ApiConstants.HK_SnapCount_ResultType_Null != result.getResultType()) {
+            stats.onlineSites++;
         } else {
             stats.totalDataSum += result.getDataCount();
         }
@@ -131,7 +131,7 @@
         //璋冪敤鐐逛綅鍦ㄧ嚎璁$畻鏂规硶
         Map<String, Object> siteOnlineParam = new HashMap<>();
         siteOnlineParam.put("totalSites", stats.totalSites);
-        siteOnlineParam.put("offlineSites", stats.offlineSites);
+        siteOnlineParam.put("onlineSites", stats.onlineSites);
         BigDecimal siteOnline = siteOnline(siteOnlineParam);
         checkIndexCar.setSiteOnline(siteOnline);
         //瑙嗗浘搴撳鎺ョǔ瀹氭��
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 ced2623..cc07f33 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java
@@ -45,7 +45,7 @@
     //鍖哄煙浜鸿劯鐐逛綅鍦ㄧ嚎鎸囨爣鐨勫唴閮ㄧ被
     private static class AreaStats {
         int totalSites = 0;
-        int offlineSites = 0;
+        int onlineSites = 0;
         int totalDataSum = 0;
     }
 
@@ -101,8 +101,8 @@
         //杩斿洖瀵硅薄鐨勫紩鐢紝濡傛灉涓嶅瓨鍦ㄤ細鏀惧叆鏂扮殑key,value
         AreaStats stats = areaStatsMap.computeIfAbsent(key, k -> new AreaStats());
         stats.totalSites++;
-        if (ApiConstants.HK_SnapCount_ResultType_Null == result.getResultType()) {
-            stats.offlineSites++;
+        if (ApiConstants.HK_SnapCount_ResultType_Null != result.getResultType()) {
+            stats.onlineSites++;
         } else {
             stats.totalDataSum += result.getDataCount();
         }
@@ -126,7 +126,7 @@
         //璋冪敤鐐逛綅鍦ㄧ嚎璁$畻鏂规硶
         Map<String, Object> siteOnlineParam = new HashMap<>();
         siteOnlineParam.put("totalSites", stats.totalSites);
-        siteOnlineParam.put("offlineSites", stats.offlineSites);
+        siteOnlineParam.put("onlineSites", stats.onlineSites);
         BigDecimal siteOnline = siteOnline(siteOnlineParam);
         checkIndexFace.setSiteOnline(siteOnline);
         //瑙嗗浘搴撳鎺ョǔ瀹氭��
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 aa33b57..9ab85d9 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/IndexCalculationServe.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/IndexCalculationServe.java
@@ -29,8 +29,7 @@
     //鐐逛綅鍦ㄧ嚎鐜�
     public BigDecimal siteOnline(Map<String, Object> param) {
         BigDecimal totalSites = new BigDecimal((Integer) param.get("totalSites"));
-        BigDecimal offlineSites = new BigDecimal((Integer) param.get("offlineSites"));
-        BigDecimal onlineSites = totalSites.subtract(offlineSites);
+        BigDecimal onlineSites = new BigDecimal((Integer) param.get("onlineSites"));
         return onlineSites.divide(totalSites, 4, RoundingMode.HALF_UP);
     }
 
diff --git a/ycl-server/src/main/java/com/ycl/calculate/VideoOnlineCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/VideoOnlineCalculation.java
new file mode 100644
index 0000000..fef8088
--- /dev/null
+++ b/ycl-server/src/main/java/com/ycl/calculate/VideoOnlineCalculation.java
@@ -0,0 +1,136 @@
+package com.ycl.calculate;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.ycl.platform.domain.entity.CheckIndexVideo;
+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.mapper.CheckIndexVideoMapper;
+import com.ycl.platform.service.ICheckIndexFaceService;
+import com.ycl.platform.service.ICheckIndexVideoService;
+import com.ycl.platform.service.ITMonitorService;
+import constant.ApiConstants;
+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.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
+ * 寰幆map璁$畻鏁版嵁涓婁紶鍙婃椂鎬�
+ * 鏇存柊鎴栨柊澧�
+ */
+@Component
+//TODO锛氶噸鐐规寚鎸ュ浘鍍忓湪绾跨巼
+public class VideoOnlineCalculation extends IndexCalculationServe implements CalculationStrategy<QueryVqdResult> {
+    @Autowired
+    private CheckIndexVideoMapper checkIndexVideoMapper;
+    @Autowired
+    private ITMonitorService monitorService;
+    @Autowired
+    private ICheckIndexVideoService checkIndexVideoService;
+
+    //鍖哄煙瑙嗛鍦ㄧ嚎鐜囩殑鍐呴儴绫�
+    private static class AreaStats {
+        int totalSites = 0;
+        int onlineSites = 0;
+        int importantSites = 0;
+        int importantOnlineSites = 0;
+    }
+
+    @Override
+    public void calculate(List<QueryVqdResult> list) {
+        if (CollectionUtils.isEmpty(list)) {
+            return;
+        }
+
+        //鑾峰緱鍥芥爣鐮佷负key鐨勮澶噈ap
+        Map<String, TMonitor> monitorMap = monitorService.list(new QueryWrapper<TMonitor>()
+                        .in("serial_number", list.stream().map(QueryVqdResult::getDeviceId).collect(Collectors.toList())))
+                .stream().collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity()));
+        //鑾峰彇鐪佸巺鍥芥爣鐮侀泦鍚�
+        List<String> provinceIds = getProvince();
+        //閲嶇偣鐐逛綅闆嗗悎
+        List<String> important = getImportant();
+
+        Map<String, AreaStats> areaStatsMap = new HashMap<>();
+        for (QueryVqdResult result : list) {
+            TMonitor monitor = monitorMap.get(result.getDeviceId());
+            if (monitor == null) continue;
+
+            String deptId = monitor.getDeptId().toString();
+            updateAreaStats(areaStatsMap, deptId, result, important);
+
+            // 澶勭悊鐪佸巺鏁版嵁
+            if (!CollectionUtils.isEmpty(provinceIds) && provinceIds.contains(monitor.getSerialNumber())) {
+                String provinceKey = "Province_" + deptId;
+                updateAreaStats(areaStatsMap, provinceKey, result, important);
+            }
+        }
+
+        // 鏌ヨ鏄惁index琛ㄥ凡缁忓瓨鍦ㄤ粖鏃ユ暟鎹�
+        List<CheckIndexVideo> checkIndexVideoList = checkIndexVideoMapper.selectToday(DateUtils.getDate());
+        List<CheckIndexVideo> checkIndexVideos = new ArrayList<>();
+        areaStatsMap.forEach((deptId, stats) -> {
+            if (stats.totalSites > 0) {
+                CheckIndexVideo CheckIndexVideo = createOrUpdateCheckIndexFace(deptId, stats, checkIndexVideoList);
+                if (CheckIndexVideo != null) {
+                    checkIndexVideos.add(CheckIndexVideo);
+                }
+            }
+        });
+
+        checkIndexVideoService.saveOrUpdateBatch(checkIndexVideos);
+    }
+
+    /**
+     * 绱鎬荤偣浣嶆暟銆佸湪绾跨偣浣嶆暟銆侀噸鐐圭偣浣嶆暟銆侀噸鐐圭偣浣嶅湪绾挎暟
+     */
+    private void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, QueryVqdResult result, List<String> important) {
+        //杩斿洖瀵硅薄鐨勫紩鐢紝濡傛灉涓嶅瓨鍦ㄤ細鏀惧叆鏂扮殑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())){
+            stats.onlineSites++;
+            if(important.contains(result.getDeviceId())){
+                stats.importantOnlineSites++;
+            }
+        }
+    }
+
+    /**
+     * 瑙嗛鐐逛綅鍦ㄧ嚎鐜�
+     */
+    private CheckIndexVideo createOrUpdateCheckIndexFace(String key, AreaStats stats, List<CheckIndexVideo> checkIndexVideoList) {
+        CheckIndexVideo CheckIndexVideo = getCheckIndex(key, checkIndexVideoList, CheckIndexVideo.class);
+        if (CheckIndexVideo == null) {
+            return null;
+        }
+        //璋冪敤鐐逛綅鍦ㄧ嚎鐜囪绠楁柟娉�
+        Map<String, Object> param = new HashMap<>();
+        param.put("totalSites", stats.totalSites);
+        param.put("onlineSites", stats.onlineSites);
+        BigDecimal siteOnline = siteOnline(param);
+        CheckIndexVideo.setSiteOnline(siteOnline);
+        //璋冪敤鐐逛綅鍦ㄧ嚎鐜囪绠楁柟娉� 璁$畻閲嶇偣鐐逛綅鍦ㄧ嚎鐜�
+        Map<String, Object> importantParam = new HashMap<>();
+        param.put("totalSites", stats.importantSites);
+        param.put("onlineSites", stats.importantOnlineSites);
+        BigDecimal importantSiteOnline = siteOnline(importantParam);
+        CheckIndexVideo.setKeySiteOnline(importantSiteOnline);
+        return CheckIndexVideo;
+    }
+}
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 04ea8ea..b34a303 100644
--- a/ycl-server/src/main/java/com/ycl/factory/IndexCalculationFactory.java
+++ b/ycl-server/src/main/java/com/ycl/factory/IndexCalculationFactory.java
@@ -35,6 +35,10 @@
         //浜鸿劯鏃堕挓鍑嗙‘鎬�
         calculators.put(CalculationStrategyConstants.Face_ClockAccuracy, new FaceClockAccuracyCalculation());
         //TODO锛氫汉鑴哥洰褰曚竴鑷�
+
+        //瑙嗛鐐逛綅鍦ㄧ嚎鐜�
+        calculators.put(CalculationStrategyConstants.Video_SiteOnline, new VideoOnlineCalculation());
+
     }
 
     public static CalculationStrategy getCalculator(String indexName) {
diff --git a/ycl-server/src/main/java/com/ycl/feign/UYClient.java b/ycl-server/src/main/java/com/ycl/feign/UYClient.java
index 7a5ccad..e350dcc 100644
--- a/ycl-server/src/main/java/com/ycl/feign/UYClient.java
+++ b/ycl-server/src/main/java/com/ycl/feign/UYClient.java
@@ -45,8 +45,12 @@
     @PostMapping("/report/recordMetaDSum/list")
     JSONObject recordMetaDSumList(@RequestBody RecordMetaDSumParam recordMetaDSumParam);
 
+    /**
+     * osd鏍囨敞淇℃伅
+     * @return
+     */
     @GetMapping("/api/v1/app/osdMonitor/list")
-    JSONObject osdMonitorList();
+    JSONObject osdMonitorList(@SpringQueryMap OsdMonitorParam param);
 
     /**
      * 鍥惧儚妫�娴嬭瘖鏂粨鏋�
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/CheckIndexVideoMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/CheckIndexVideoMapper.java
index ae674d8..e43905a 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/CheckIndexVideoMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/CheckIndexVideoMapper.java
@@ -1,20 +1,22 @@
 package com.ycl.platform.mapper;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ycl.platform.domain.entity.CheckIndexFace;
 import com.ycl.platform.domain.entity.CheckIndexVideo;
 
 import java.util.List;
 
 /**
  * 瑙嗛鎸囨爣姒傜巼鏁版嵁Mapper鎺ュ彛
- * 
+ *
  * @author ruoyi
  * @date 2024-04-29
  */
-public interface CheckIndexVideoMapper 
+public interface CheckIndexVideoMapper extends BaseMapper<CheckIndexVideo>
 {
     /**
      * 鏌ヨ瑙嗛鎸囨爣姒傜巼鏁版嵁
-     * 
+     *
      * @param id 瑙嗛鎸囨爣姒傜巼鏁版嵁涓婚敭
      * @return 瑙嗛鎸囨爣姒傜巼鏁版嵁
      */
@@ -22,7 +24,7 @@
 
     /**
      * 鏌ヨ瑙嗛鎸囨爣姒傜巼鏁版嵁鍒楄〃
-     * 
+     *
      * @param checkIndexVideo 瑙嗛鎸囨爣姒傜巼鏁版嵁
      * @return 瑙嗛鎸囨爣姒傜巼鏁版嵁闆嗗悎
      */
@@ -30,7 +32,7 @@
 
     /**
      * 鏂板瑙嗛鎸囨爣姒傜巼鏁版嵁
-     * 
+     *
      * @param checkIndexVideo 瑙嗛鎸囨爣姒傜巼鏁版嵁
      * @return 缁撴灉
      */
@@ -38,7 +40,7 @@
 
     /**
      * 淇敼瑙嗛鎸囨爣姒傜巼鏁版嵁
-     * 
+     *
      * @param checkIndexVideo 瑙嗛鎸囨爣姒傜巼鏁版嵁
      * @return 缁撴灉
      */
@@ -46,7 +48,7 @@
 
     /**
      * 鍒犻櫎瑙嗛鎸囨爣姒傜巼鏁版嵁
-     * 
+     *
      * @param id 瑙嗛鎸囨爣姒傜巼鏁版嵁涓婚敭
      * @return 缁撴灉
      */
@@ -54,9 +56,11 @@
 
     /**
      * 鎵归噺鍒犻櫎瑙嗛鎸囨爣姒傜巼鏁版嵁
-     * 
+     *
      * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
      * @return 缁撴灉
      */
     public int deleteCheckIndexVideoByIds(Long[] ids);
+
+    List<CheckIndexVideo> selectToday(String date);
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/ICheckIndexVideoService.java b/ycl-server/src/main/java/com/ycl/platform/service/ICheckIndexVideoService.java
index 2f7e32c..832f9c6 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/ICheckIndexVideoService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/ICheckIndexVideoService.java
@@ -1,20 +1,20 @@
 package com.ycl.platform.service;
 
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.ycl.platform.domain.entity.CheckIndexVideo;
 
 import java.util.List;
 
 /**
  * 瑙嗛鎸囨爣姒傜巼鏁版嵁Service鎺ュ彛
- * 
+ *
  * @author ruoyi
  * @date 2024-04-29
  */
-public interface ICheckIndexVideoService 
-{
+public interface ICheckIndexVideoService extends IService<CheckIndexVideo> {
     /**
      * 鏌ヨ瑙嗛鎸囨爣姒傜巼鏁版嵁
-     * 
+     *
      * @param id 瑙嗛鎸囨爣姒傜巼鏁版嵁涓婚敭
      * @return 瑙嗛鎸囨爣姒傜巼鏁版嵁
      */
@@ -22,7 +22,7 @@
 
     /**
      * 鏌ヨ瑙嗛鎸囨爣姒傜巼鏁版嵁鍒楄〃
-     * 
+     *
      * @param checkIndexVideo 瑙嗛鎸囨爣姒傜巼鏁版嵁
      * @return 瑙嗛鎸囨爣姒傜巼鏁版嵁闆嗗悎
      */
@@ -30,7 +30,7 @@
 
     /**
      * 鏂板瑙嗛鎸囨爣姒傜巼鏁版嵁
-     * 
+     *
      * @param checkIndexVideo 瑙嗛鎸囨爣姒傜巼鏁版嵁
      * @return 缁撴灉
      */
@@ -38,7 +38,7 @@
 
     /**
      * 淇敼瑙嗛鎸囨爣姒傜巼鏁版嵁
-     * 
+     *
      * @param checkIndexVideo 瑙嗛鎸囨爣姒傜巼鏁版嵁
      * @return 缁撴灉
      */
@@ -46,7 +46,7 @@
 
     /**
      * 鎵归噺鍒犻櫎瑙嗛鎸囨爣姒傜巼鏁版嵁
-     * 
+     *
      * @param ids 闇�瑕佸垹闄ょ殑瑙嗛鎸囨爣姒傜巼鏁版嵁涓婚敭闆嗗悎
      * @return 缁撴灉
      */
@@ -54,7 +54,7 @@
 
     /**
      * 鍒犻櫎瑙嗛鎸囨爣姒傜巼鏁版嵁淇℃伅
-     * 
+     *
      * @param id 瑙嗛鎸囨爣姒傜巼鏁版嵁涓婚敭
      * @return 缁撴灉
      */
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckIndexVideoServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckIndexVideoServiceImpl.java
index c0b1492..d1b013c 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckIndexVideoServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckIndexVideoServiceImpl.java
@@ -1,6 +1,9 @@
 package com.ycl.platform.service.impl;
 
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ycl.platform.domain.entity.CheckIndexFace;
 import com.ycl.platform.domain.entity.CheckIndexVideo;
+import com.ycl.platform.mapper.CheckIndexFaceMapper;
 import com.ycl.platform.mapper.CheckIndexVideoMapper;
 import com.ycl.platform.service.ICheckIndexVideoService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -11,19 +14,19 @@
 
 /**
  * 瑙嗛鎸囨爣姒傜巼鏁版嵁Service涓氬姟灞傚鐞�
- * 
+ *
  * @author ruoyi
  * @date 2024-04-29
  */
 @Service
-public class CheckIndexVideoServiceImpl implements ICheckIndexVideoService 
+public class CheckIndexVideoServiceImpl extends ServiceImpl<CheckIndexVideoMapper, CheckIndexVideo> implements ICheckIndexVideoService
 {
     @Autowired
     private CheckIndexVideoMapper checkIndexVideoMapper;
 
     /**
      * 鏌ヨ瑙嗛鎸囨爣姒傜巼鏁版嵁
-     * 
+     *
      * @param id 瑙嗛鎸囨爣姒傜巼鏁版嵁涓婚敭
      * @return 瑙嗛鎸囨爣姒傜巼鏁版嵁
      */
@@ -35,7 +38,7 @@
 
     /**
      * 鏌ヨ瑙嗛鎸囨爣姒傜巼鏁版嵁鍒楄〃
-     * 
+     *
      * @param checkIndexVideo 瑙嗛鎸囨爣姒傜巼鏁版嵁
      * @return 瑙嗛鎸囨爣姒傜巼鏁版嵁
      */
@@ -47,7 +50,7 @@
 
     /**
      * 鏂板瑙嗛鎸囨爣姒傜巼鏁版嵁
-     * 
+     *
      * @param checkIndexVideo 瑙嗛鎸囨爣姒傜巼鏁版嵁
      * @return 缁撴灉
      */
@@ -60,7 +63,7 @@
 
     /**
      * 淇敼瑙嗛鎸囨爣姒傜巼鏁版嵁
-     * 
+     *
      * @param checkIndexVideo 瑙嗛鎸囨爣姒傜巼鏁版嵁
      * @return 缁撴灉
      */
@@ -72,7 +75,7 @@
 
     /**
      * 鎵归噺鍒犻櫎瑙嗛鎸囨爣姒傜巼鏁版嵁
-     * 
+     *
      * @param ids 闇�瑕佸垹闄ょ殑瑙嗛鎸囨爣姒傜巼鏁版嵁涓婚敭
      * @return 缁撴灉
      */
@@ -84,7 +87,7 @@
 
     /**
      * 鍒犻櫎瑙嗛鎸囨爣姒傜巼鏁版嵁淇℃伅
-     * 
+     *
      * @param id 瑙嗛鎸囨爣姒傜巼鏁版嵁涓婚敭
      * @return 缁撴灉
      */
diff --git a/ycl-server/src/main/java/com/ycl/task/UYTask.java b/ycl-server/src/main/java/com/ycl/task/UYTask.java
index 4a359d9..7fa70ba 100644
--- a/ycl-server/src/main/java/com/ycl/task/UYTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -4,9 +4,11 @@
 import com.mongodb.client.result.DeleteResult;
 import com.ycl.feign.UYClient;
 import com.ycl.platform.domain.param.UY.OneMachineFileParam;
+import com.ycl.platform.domain.param.UY.OsdMonitorParam;
 import com.ycl.platform.domain.param.UY.QueryVqdParam;
 import com.ycl.platform.domain.param.UY.RecordMetaDSumParam;
 import com.ycl.platform.domain.result.UY.OneMachineFileResult;
+import com.ycl.platform.domain.result.UY.OsdMonitorResult;
 import com.ycl.platform.domain.result.UY.QueryVqdResult;
 import com.ycl.platform.domain.result.UY.RecordMetaDSumResult;
 import com.ycl.platform.service.ITMonitorService;
@@ -141,4 +143,37 @@
         }
         log.info("缁撴潫鎵ц褰曞儚鍙敤鏁版嵁鍚屾");
     }
+
+    //瑙嗛鏍囨敞
+    public void OsdMonitorTask() {
+        //瑙嗛鏍囨敞
+        log.info("寮�濮嬫墽琛岃棰戞爣娉ㄦ暟鎹悓姝�");
+        OsdMonitorParam param = new OsdMonitorParam();
+        JSONObject jsonObject = uyClient.osdMonitorList(param);
+        if (jsonObject != null) {
+            if (jsonObject.getBoolean("success")) {
+                JSONObject data = jsonObject.getJSONObject("data");
+                if (data != null) {
+                    List<OsdMonitorResult> records = data.getList("records", OsdMonitorResult.class);
+                    if (!CollectionUtils.isEmpty(records)) {
+                        //濡傛灉浠婂ぉ瀛樺湪涔嬪墠鐨勬暟鎹厛鍒犻櫎
+                        Query query = new Query(Criteria
+                                .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
+                        DeleteResult result = mongoTemplate.remove(query, OsdMonitorResult.class);
+                        //瀛樻斁鍦╩ongo涓�
+                        mongoTemplate.insert(records);
+                    } else {
+                        log.error("瑙嗛鏍囨敞鏁版嵁涓虹┖{}", data);
+                    }
+                } else {
+                    log.error("瑙嗛鏍囨敞鏁版嵁涓虹┖{}", jsonObject);
+                }
+            } else {
+                log.error("瑙嗛鏍囨敞鏁版嵁涓虹┖{}", jsonObject);
+            }
+        } else {
+            log.error("瑙嗛鏍囨敞鏁版嵁涓虹┖");
+        }
+        log.info("缁撴潫鎵ц瑙嗛鏍囨敞鏁版嵁鍚屾");
+    }
 }
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 0746c25..f910de4 100644
--- a/ycl-server/src/main/java/com/ycl/task/VideoTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/VideoTask.java
@@ -1,10 +1,22 @@
 package com.ycl.task;
 
 
+import com.ycl.calculate.CalculationStrategy;
+import com.ycl.factory.IndexCalculationFactory;
+import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult;
+import com.ycl.platform.domain.result.UY.QueryVqdResult;
+import com.ycl.utils.DateUtils;
+import constant.ApiConstants;
+import constant.CalculationStrategyConstants;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.List;
 
 /**
  * 瑙嗛璁$畻鑰冩牳鎸囨爣浠诲姟
@@ -15,4 +27,16 @@
 public class VideoTask {
     @Autowired
     private MongoTemplate mongoTemplate;
+
+    public void siteOnlineTask(){
+        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<QueryVqdResult> results = mongoTemplate.find(query, QueryVqdResult.class);
+        CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Video_SiteOnline);
+        calculator.calculate(results);
+    }
 }
diff --git a/ycl-server/src/main/resources/mapper/zgyw/CheckIndexVideoMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/CheckIndexVideoMapper.xml
index a1c6e1e..35bd244 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/CheckIndexVideoMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/CheckIndexVideoMapper.xml
@@ -3,7 +3,7 @@
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ycl.platform.mapper.CheckIndexVideoMapper">
-    
+
     <resultMap type="com.ycl.platform.domain.entity.CheckIndexVideo" id="CheckIndexVideoResult">
         <result property="id"    column="id"    />
         <result property="deptId"    column="dept_id"    />
@@ -38,7 +38,7 @@
     <select id="selectCheckIndexVideoList" parameterType="CheckIndexVideo" resultMap="CheckIndexVideoResult">
         select tciv.*,sd.dept_name
         from t_check_index_video tciv left join sys_dept sd on tciv.dept_id = sd.dept_id
-        <where>  
+        <where>
             <if test="deptId != null "> and tciv.dept_id = #{deptId}</if>
             <if test="examineTag != null "> and examine_tag = #{examineTag}</if>
             <if test="date != null "> and  date_format(tciv.create_time,'%Y-%m') = #{date}</if>
@@ -71,12 +71,12 @@
             </if>
         </where>
     </select>
-    
+
     <select id="selectCheckIndexVideoById"  resultMap="CheckIndexVideoResult">
         <include refid="selectCheckIndexVideoVo"/>
         where id = #{id}
     </select>
-        
+
     <insert id="insertCheckIndexVideo" useGeneratedKeys="true" keyProperty="id">
         insert into t_check_index_video
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -166,9 +166,13 @@
     </delete>
 
     <delete id="deleteCheckIndexVideoByIds" >
-        delete from t_check_index_video where id in 
+        delete from t_check_index_video where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>
     </delete>
-</mapper>
\ No newline at end of file
+
+    <select id="selectToday">
+        select * from t_check_index_video where DATE(create_time) = #{today}
+    </select>
+</mapper>

--
Gitblit v1.8.0