From 27e913d6d28a9cfa0785d15453a4de10fd36ce6d Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期一, 10 二月 2025 11:17:59 +0800
Subject: [PATCH] 首页录像统计加上间歇

---
 ycl-server/src/main/java/com/ycl/task/HKTask.java |   88 ++++++++++++++++++++++++++------------------
 1 files changed, 52 insertions(+), 36 deletions(-)

diff --git a/ycl-server/src/main/java/com/ycl/task/HKTask.java b/ycl-server/src/main/java/com/ycl/task/HKTask.java
index 759cf0e..c6cad22 100644
--- a/ycl-server/src/main/java/com/ycl/task/HKTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/HKTask.java
@@ -173,7 +173,6 @@
         faceParam.setDataType(ApiConstants.HK_DataType_FACE);
         List<SnapshotDataMonitorResult> faceList = HkApiUtil.sendAPI(host, appKey, appSecret, "/api/dqd/service/rs/v1/data/snapCountDetail/query", faceParam, SnapshotDataMonitorResult.class);
         if (!CollectionUtils.isEmpty(faceList)) {
-            log.info("缁撴灉鏁版嵁澶у皬锛歿}", faceList.size());
             //濡傛灉浠婂ぉ瀛樺湪涔嬪墠鐨勬暟鎹厛鍒犻櫎
             Query query = new Query(Criteria
                     .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))
@@ -189,38 +188,56 @@
             faceList.forEach(item -> item.setDataType(ApiConstants.HK_DataType_FACE));
             mongoTemplate.insertAll(faceList);
         }
-        //淇敼online鐘舵�佷互鍙婄敓鎴愬伐鍗�
+        //淇敼online鐘舵��
         List<SnapshotDataMonitorResult> totalResult = new ArrayList<>();
         totalResult.addAll(carList);
         totalResult.addAll(faceList);
         if (!CollectionUtils.isEmpty(totalResult)) {
-            List<String> numbers = totalResult.stream().map(SnapshotDataMonitorResult::getExternalIndexCode).collect(Collectors.toList());
-            Map<String, TMonitor> map = monitorMapper.selectList(new QueryWrapper<TMonitor>().in("serial_number", numbers))
-                    .stream().collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity()));
-            Date now = new Date();
-            //杩囨护
-            totalResult = totalResult.stream().filter(item -> map.get(item.getExternalIndexCode()) != null).collect(Collectors.toList());
-            totalResult.forEach(item -> {
-                TMonitor monitor = map.get(item.getExternalIndexCode());
-                item.setIp(monitor.getIp());
-            });
-            List<UpdateOnlineVO> willUpdateList = totalResult.stream().map(item -> {
-                UpdateOnlineVO vo = new UpdateOnlineVO();
-                vo.setOnline(item.getDataCount() > 0 ? 1 : -1);
-                vo.setIp(map.get(item.getExternalIndexCode()).getIp());
-                vo.setUpdateTime(now);
-                return vo;
-            }).collect(Collectors.toList());
-            monitorMapper.updateOnlineFromUyOrHk(willUpdateList);
-            //绂荤嚎鐢熸垚宸ュ崟,涓�涓猧p鍙敓鎴愪竴涓伐鍗�
-            List<SnapshotDataMonitorResult> workOrders = new ArrayList<>(totalResult.stream()
-                    .filter(item -> ApiConstants.UY_OnlineSite_Offline.equals(item.getDataCount() > 0 ? 1 : -1))
-                    .collect(Collectors.toMap(
-                            SnapshotDataMonitorResult::getIp,
-                            Function.identity(),
-                            (existing, replacement) -> existing // 濡傛灉閬囧埌鐩稿悓鐨� IP锛屼繚鐣欑涓�涓紙existing锛�
-                    )).values());
-            uyErrorTypeCheckService.hkOnlineCheck(workOrders);
+            //鍏堟嬁浼樹簯鐨勫湪绾匡紝杩囨护鎺変紭浜戝凡鏈夌殑鍥芥爣鐮�
+            Query query = new Query();
+            query.addCriteria(Criteria
+                    .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
+            List<VideoOnlineResult> results = mongoTemplate.find(query, VideoOnlineResult.class);
+            if (!CollectionUtils.isEmpty(results)) {
+                Date now = new Date();
+                List<String> uyNoList = results.stream().map(VideoOnlineResult::getNo).collect(Collectors.toList());
+                List<String> numbers = totalResult.stream().filter(result->!uyNoList.contains(result.getExternalIndexCode()))
+                        .map(SnapshotDataMonitorResult::getExternalIndexCode).collect(Collectors.toList());
+                //鎺掗櫎鎺変紭浜戜笖涓嶅寘鍚棰戣澶囩殑鍥芥爣
+                Map<String, TMonitor> map = monitorMapper.selectList(new QueryWrapper<TMonitor>()
+                                .in("serial_number", numbers))
+                        .stream().filter(monitor -> monitor.getCameraFunType()!=null && !monitor.getCameraFunType().contains("1"))
+                        .collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity()));
+                List<UpdateOnlineVO> willUpdateList = new ArrayList<>();
+                totalResult.forEach(item -> {
+                    TMonitor monitor = map.get(item.getExternalIndexCode());
+                    if(monitor!=null) {
+                        UpdateOnlineVO vo = new UpdateOnlineVO();
+                        vo.setOnline(item.getDataCount() > 0 ? 1 : -1);
+                        vo.setSerialNumber(monitor.getSerialNumber());
+                        vo.setUpdateTime(now);
+                        willUpdateList.add(vo);
+                    }
+                });
+                if(!CollectionUtils.isEmpty(willUpdateList)) monitorMapper.updateOnlineFromHk(willUpdateList);
+//            List<UpdateOnlineVO> willUpdateList = totalResult.stream().map(item -> {
+//                UpdateOnlineVO vo = new UpdateOnlineVO();
+//                vo.setOnline(item.getDataCount() > 0 ? 1 : -1);
+//                vo.setIp(map.get(item.getExternalIndexCode()).getIp());
+//                vo.setUpdateTime(now);
+//                return vo;
+//            }).collect(Collectors.toList());
+//            monitorMapper.updateOnlineFromUyOrHk(willUpdateList);
+//            //绂荤嚎鐢熸垚宸ュ崟,涓�涓猧p鍙敓鎴愪竴涓伐鍗�
+//            List<SnapshotDataMonitorResult> workOrders = new ArrayList<>(totalResult.stream()
+//                    .filter(item -> ApiConstants.UY_OnlineSite_Offline.equals(item.getDataCount() > 0 ? 1 : -1))
+//                    .collect(Collectors.toMap(
+//                            SnapshotDataMonitorResult::getIp,
+//                            Function.identity(),
+//                            (existing, replacement) -> existing // 濡傛灉閬囧埌鐩稿悓鐨� IP锛屼繚鐣欑涓�涓紙existing锛�
+//                    )).values());
+//            uyErrorTypeCheckService.hkOnlineCheck(workOrders);
+            }
         }
         log.info("缁撴潫鎶撴媿鏁版嵁閲忔娴嬬粨鏋滄暟鎹悓姝�");
     }
@@ -581,24 +598,23 @@
         car.setViewConnectStability(new BigDecimal(score.getDownCarDataUploadScoreString() == null ? "1" : score.getDownCarDataUploadScoreString()));
         car.setSiteOnline(new BigDecimal(score.getDownCrossQualityCarScoreString() == null ? "1" : score.getDownCrossQualityCarScoreString()));
         car.setDeviceDirectoryConsistent(new BigDecimal(score.getDownCrossNumPushCarScoreString() == null ? "1" : score.getDownCrossNumPushCarScoreString()));
-        //TODO:寰呭畬鍠�
+        //TODO:娌℃壘鍒拌�冩牳椤�
         car.setVehicleInformationCollectionAccuracy(new BigDecimal("1"));
-        //TODO:寰呭畬鍠� 閲嶇偣鎬庝箞鍔犺繘鍘�
         car.setVehicleCaptureIntegrity(new BigDecimal(score.getDownCrossAllCarDataIntegrityScoreString() == null ? "1" : score.getDownCrossAllCarDataIntegrityScoreString()));
-        //TODO:寰呭畬鍠� 涓や釜椤瑰悎鎴愪竴涓�
+        //娴峰悍鏄涓�1鐨勶紝浣嗘槸鎺ュ彛鎺ㄧ殑鍘熷鏁版嵁
         car.setVehicleCaptureAccuracy(new BigDecimal("1"));
         car.setVehicleTimingAccuracy(new BigDecimal(score.getDownCrossCarInvertScoreString() == null ? "1" : score.getDownCrossCarInvertScoreString()));
         car.setVehicleUploadTimeliness(new BigDecimal(score.getDownCrossAllCarDelayScoreString() == null ? "1" : score.getDownCrossAllCarDelayScoreString()));
-        //TODO:寰呭畬鍠�
+        //TODO:娌℃壘鍒拌�冩牳椤�
         car.setVehicleUrlAvailability(new BigDecimal("1"));
         car.setVehiclePictureAvailability(new BigDecimal(score.getDownCrossPictureQualityCarScoreString() == null ? "1" : score.getDownCrossPictureQualityCarScoreString()));
 
         face.setViewConnectStability(new BigDecimal(score.getDownFaceDataUploadScoreString() == null ? "1" : score.getDownFaceDataUploadScoreString()));
         face.setSiteOnline(new BigDecimal(score.getDownFaceDataUploadScoreString() == null ? "1" : score.getDownFaceDataUploadScoreString()));
-        face.setDeviceDirectoryConsistent(new BigDecimal(score.getDownCrossNumPushCarScoreString() == null ? "1" : score.getDownCrossNumPushCarScoreString()));
-        //TODO:寰呭畬鍠�
+        face.setDeviceDirectoryConsistent(new BigDecimal(score.getDownCrossNumPushFaceScoreString() == null ? "1" : score.getDownCrossNumPushFaceScoreString()));
+        //TODO:娌℃壘鍒拌�冩牳椤�
         face.setFaceInformationCollectionAccuracy(new BigDecimal("1"));
-        //TODO:寰呭畬鍠�
+        //TODO:娌℃壘鍒拌�冩牳椤�
         face.setFacePictureQualification(new BigDecimal("1"));
         face.setFaceTimingAccuracy(new BigDecimal(score.getDownCrossFaceInvertScoreString() == null ? "1" : score.getDownCrossFaceInvertScoreString()));
         face.setFaceUploadTimeliness(new BigDecimal(score.getDownCrossAllFaceDelayScoreString() == null ? "1" : score.getDownCrossAllFaceDelayScoreString()));

--
Gitblit v1.8.0