From 3b0516a2959e25576e4f3fda697a3b025d06c8c9 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期二, 24 六月 2025 14:09:07 +0800
Subject: [PATCH] 每日录像可用指标添加日志,修改大屏为查看当前月平均

---
 ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java |  156 ++++++++++++++++++++++++++++++++-------------------
 1 files changed, 98 insertions(+), 58 deletions(-)

diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java
index 4ff8e9e..2495202 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java
@@ -1,15 +1,26 @@
 package com.ycl.platform.service.impl;
 
+import com.ycl.platform.controller.YwThresholdController;
 import com.ycl.platform.domain.entity.WorkOrder;
+import com.ycl.platform.domain.entity.YwThreshold;
+import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult;
 import com.ycl.platform.domain.result.UY.*;
+import com.ycl.platform.mapper.WorkOrderMapper;
+import com.ycl.platform.service.IYwThresholdService;
 import com.ycl.platform.service.UYErrorTypeCheckService;
 import com.ycl.platform.service.WorkOrderService;
+import com.ycl.utils.DateUtils;
 import com.ycl.utils.uuid.IdUtils;
 import constant.ApiConstants;
+import constant.YwThreadConstants;
+import enumeration.CompareType;
 import enumeration.ErrorType;
+import enumeration.general.BusinessTypeEnum;
 import enumeration.general.WorkOrderStatusEnum;
 import lombok.Data;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
@@ -17,6 +28,7 @@
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -25,9 +37,12 @@
  */
 @Service
 @RequiredArgsConstructor
+@Slf4j
 public class UYErrorTypeCheckServiceImpl implements UYErrorTypeCheckService {
 
     private final WorkOrderService workOrderService;
+    private final IYwThresholdService ywThresholdService;
+    private final WorkOrderMapper workOrderMapper;
 
     /**
      * 鍥惧儚妫�娴嬬敓鎴愬伐鍗�
@@ -37,40 +52,40 @@
     @Override
     public void imageDetectionCheck(List<ImageDetectionResult> dataList) {
         List<WorkOrder> workOrderList = dataList.stream().filter(item -> -1 == item.getSignal()
-                || -1 == item.getImage()
-        )
-        .map(item -> {
-            WorkOrder workOrder = new WorkOrder();
-            // 淇″彿缂哄け
-            if (-1 == item.getSigna1() ) {
-                this.genWorkOrder(workOrder, ErrorType.SIGNAL_LOSS, item.getDeviceId());
-            }
-            // 鐢婚潰鍋忚壊
-            if (-1 == item.getColor()) {
-                this.genWorkOrder(workOrder, ErrorType.SCREEN_COLOR_DEVIATION, item.getDeviceId());
-            }
-            // 闆姳骞叉壈
-            if (-1 == item.getSnow()) {
-                this.genWorkOrder(workOrder, ErrorType.SNOW_STORM, item.getDeviceId());
-            }
-            // 鏉$汗骞叉壈
-            if (-1 == item.getStripe()) {
-                this.genWorkOrder(workOrder, ErrorType.STRIPE_INTERFERENCE, item.getDeviceId());
-            }
-            // 鐢婚潰閬尅
-            if (-1 == item.getShade()) {
-                this.genWorkOrder(workOrder, ErrorType.SCREEN_OCCLUSION, item.getDeviceId());
-            }
-            // 娓呮櫚搴﹀紓甯�
-            if (-1 == item.getBlur()) {
-                this.genWorkOrder(workOrder, ErrorType.ABNORMAL_CLARITY, item.getDeviceId());
-            }
+                        || -1 == item.getImage()
+                )
+                .map(item -> {
+                    WorkOrder workOrder = new WorkOrder();
+                    // 淇″彿缂哄け
+                    if (-1 == item.getSigna1()) {
+                        this.genWorkOrder(workOrder, ErrorType.ABNORMAL_PIC, item.getDeviceId());
+                    }
+                    // 鐢婚潰鍋忚壊
+                    if (-1 == item.getColor()) {
+                        this.genWorkOrder(workOrder, ErrorType.ABNORMAL_PIC, item.getDeviceId());
+                    }
+                    // 闆姳骞叉壈
+                    if (-1 == item.getSnow()) {
+                        this.genWorkOrder(workOrder, ErrorType.ABNORMAL_PIC, item.getDeviceId());
+                    }
+                    // 鏉$汗骞叉壈
+                    if (-1 == item.getStripe()) {
+                        this.genWorkOrder(workOrder, ErrorType.ABNORMAL_PIC, item.getDeviceId());
+                    }
+                    // 鐢婚潰閬尅
+                    if (-1 == item.getShade()) {
+                        this.genWorkOrder(workOrder, ErrorType.ABNORMAL_PIC, item.getDeviceId());
+                    }
+                    // 娓呮櫚搴﹀紓甯�
+                    if (-1 == item.getBlur()) {
+                        this.genWorkOrder(workOrder, ErrorType.ABNORMAL_PIC, item.getDeviceId());
+                    }
 //            // 浜害寮傚父
 //            if (-1 == item.getLight()) {
 //                this.genWorkOrder(workOrder, ErrorType.ABNORMAL_BRIGHTNESS, item.getDeviceId());
 //            }
-            return workOrder;
-        }).collect(Collectors.toList());
+                    return workOrder;
+                }).collect(Collectors.toList());
         workOrderService.innerAddWorkOrder(workOrderList);
     }
 
@@ -83,18 +98,22 @@
     public void monitorQualifyCheck(List<MonitorQualifyResult> dataList) {
         List<WorkOrder> workOrderList = dataList.stream().map(item -> {
             WorkOrder workOrder = new WorkOrder();
-            if (item.getSerialNumber().getError()
-                    || item.getCivilCode().getError()
-                    || item.getIntegrated_device().getError()
-                    || item.getIp().getError()
-                    || item.getJkdwlx().getError()
-                    || item.getLatitude().getError()
-                    || item.getLongitude().getError()
-                    || item.getMacdz().getError()
-                    || item.getSbzt().getError()
-                    || item.getName().getError()
-                    || item.getSxjcjqy().getError()
-                    || item.getSxjgnlx().getError()) {
+            //TODO:寰呬紭浜戜慨澶嶏紝閬垮厤宸ュ崟
+            MonitorQualifyResult.QualifyResult qualifyResult = new MonitorQualifyResult.QualifyResult();
+            qualifyResult.setError(false);
+            item.setIntegrated_device(qualifyResult);
+            if (item.getSerialNumber() == null || item.getSerialNumber().getError() ||
+                    item.getCivilCode() == null || item.getCivilCode().getError() ||
+                    item.getIntegrated_device() == null || item.getIntegrated_device().getError() ||
+                    item.getIp() == null || item.getIp().getError() ||
+                    item.getJkdwlx() == null || item.getJkdwlx().getError() ||
+                    item.getLatitude() == null || item.getLatitude().getError() ||
+                    item.getLongitude() == null || item.getLongitude().getError() ||
+                    item.getMacdz() == null || item.getMacdz().getError() ||
+                    item.getSbzt() == null || item.getSbzt().getError() ||
+                    item.getName() == null || item.getName().getError() ||
+                    item.getSxjcjqy() == null || item.getSxjcjqy().getError() ||
+                    item.getSxjgnlx() == null || item.getSxjgnlx().getError()) {
                 this.genWorkOrder(workOrder, ErrorType.POINT_INFO_ERROR, item.getSerialNumber().getValue());
             }
             return workOrder;
@@ -104,16 +123,31 @@
 
     @Override
     public void videoOnlineCheck(List<VideoOnlineResult> dataList) {
-        List<WorkOrder> workOrderList = dataList.stream().map(item -> {
-            WorkOrder workOrder = new WorkOrder();
-            if (ApiConstants.UY_OnlineSite_Offline.equals(item.getStatus()) ) {
-                this.genWorkOrder(workOrder, ErrorType.DEVICE_OFFLINE, item.getDeviceId());
-            }
-//            else if (0 == item.getStatus()) {
-//                this.genWorkOrder(workOrder, ErrorType.UNKNOWN, item.getDeviceId());
-//            }
-            return workOrder;
-        }).collect(Collectors.toList());
+        //鏌ヨ鏁版嵁搴撳凡瀛樺湪鐨勭绾垮伐鍗曡幏鍙杋p闆嗗悎锛屽墧闄�
+        List<String> ips = workOrderMapper.getOfflineWorkOrder();
+        List<WorkOrder> workOrderList = dataList.stream()
+                .filter(item -> CollectionUtils.isEmpty(ips) || !ips.contains(item.getIpAddr()))
+                .map(item -> {
+                    WorkOrder workOrder = new WorkOrder();
+                    if (ApiConstants.UY_OnlineSite_Offline.equals(item.getStatus())) {
+                        this.genWorkOrder(workOrder, ErrorType.DEVICE_OFFLINE, item.getDeviceId());
+                    }
+                    return workOrder;
+                }).collect(Collectors.toList());
+        workOrderService.innerAddWorkOrder(workOrderList);
+    }
+
+    @Override
+    public void hkOnlineCheck(List<SnapshotDataMonitorResult> dataList) {
+        //鏌ヨ鏁版嵁搴撳凡瀛樺湪鐨勭绾垮伐鍗曡幏鍙杋p闆嗗悎锛屽墧闄�
+        List<String> ips = workOrderMapper.getOfflineWorkOrder();
+        List<WorkOrder> workOrderList = dataList.stream()
+                .filter(item -> CollectionUtils.isEmpty(ips) || !ips.contains(item.getIp()))
+                .map(item -> {
+                    WorkOrder workOrder = new WorkOrder();
+                    this.genWorkOrder(workOrder, ErrorType.DEVICE_OFFLINE, item.getExternalIndexCode());
+                    return workOrder;
+                }).collect(Collectors.toList());
         workOrderService.innerAddWorkOrder(workOrderList);
     }
 
@@ -134,13 +168,9 @@
 
     @Override
     public void osdCheck(List<OsdCheckResult> dataList) {
-        Date now = new Date();
+        Map<String, YwThreshold> ywThresholdMap = ywThresholdService.getYwThresholdMap(BusinessTypeEnum.VIDEO.name());
         List<WorkOrder> workOrderList = dataList.stream().map(item -> {
             WorkOrder workOrder = new WorkOrder();
-            // osd鏃堕棿
-            if (!ApiConstants.OSD_Correct.equals(item.getOsdTimeCorrect())) {
-                this.genWorkOrder(workOrder, ErrorType.CLOCK_SKEW, item.getDeviceNo());
-            }
             // osd淇℃伅
             if (!ApiConstants.OSD_Correct.equals(item.getOsdProvinceCorrect())
                     || (!ApiConstants.OSD_Correct.equals(item.getOsdCityCorrect()))
@@ -149,8 +179,18 @@
             ) {
                 this.genWorkOrder(workOrder, ErrorType.OSD_ERROR, item.getDeviceNo());
             }
+            // osd鏃堕棿  鏃堕棿闇�瑕佽蛋闃堝�兼鏌� 杩欓噷闇�瑕佹妸鏃堕棿鏀惧湪鍚庨潰锛氬鏋滄椂闂村浜庡緟涓嬪彂鐨勯槇鍊奸偅涔堝伐鍗曠姸鎬佷細鏀逛负寰呬笅鍙戠殑宸ュ崟
+//            if (!ApiConstants.OSD_Correct.equals(item.getOsdTimeCorrect())) {
+//                this.genWorkOrder(workOrder, ErrorType.CLOCK_SKEW, item.getDeviceNo());
+//            }
+            long checkTime = item.getCheckTime().getTime();
+            long osdTime = item.getSetTime().getTime();
+            Long timeDiff = Math.abs((checkTime - osdTime) / 1000);
+            ywThresholdService.check(YwThreadConstants.Video_DiffTime, timeDiff, item.getDeviceNo(), ywThresholdMap, workOrder, CompareType.MORE_THAN_EQ, ErrorType.CLOCK_SKEW.getValue());
             return workOrder;
         }).collect(Collectors.toList());
+
+        log.error("osdCheck鑾峰緱鎻掑叆宸ュ崟:{}",workOrderList);
         workOrderService.innerAddWorkOrder(workOrderList);
     }
 
@@ -158,7 +198,7 @@
      * 宸ュ崟淇℃伅
      *
      * @param workOrder
-     * @param errorType 鏁呴殰绫诲瀷
+     * @param errorType    鏁呴殰绫诲瀷
      * @param serialNumber 鍥芥爣鐮�
      */
     private void genWorkOrder(WorkOrder workOrder, ErrorType errorType, String serialNumber) {

--
Gitblit v1.8.0