From 5dccf0dc687dfef1c91936af3cea06fe0609b918 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期三, 11 十二月 2024 17:31:11 +0800
Subject: [PATCH] osd时间bug、离线工单bug等

---
 ycl-server/src/main/java/com/ycl/calculate/CarDataIntegrityCalculation.java             |    2 
 ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/MonitorQualifyResult.java      |   50 ++++++++--------
 ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml                           |   10 +-
 ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java |    2 
 ycl-server/src/main/java/com/ycl/task/WorkOrderImgTask.java                             |   46 ++++++++-------
 ycl-server/src/main/java/com/ycl/task/OsdTask.java                                      |    2 
 ycl-server/src/main/java/com/ycl/task/VideoTask.java                                    |    2 
 ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java       |    2 
 ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml                            |   14 ++--
 ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java         |    5 -
 10 files changed, 68 insertions(+), 67 deletions(-)

diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/MonitorQualifyResult.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/MonitorQualifyResult.java
index 3c48e69..b22f45d 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/MonitorQualifyResult.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/MonitorQualifyResult.java
@@ -108,31 +108,31 @@
 
     public static MonitorQualifyResultVO getVO(MonitorQualifyResult result) {
         MonitorQualifyResultVO vo = new MonitorQualifyResultVO();
-        vo.setCivilCode(result.getCivilCode().getShowValue());
-        vo.setCivilCodeError(result.getCivilCode().getError());
-        vo.setIp(result.getIp().getShowValue());
-        vo.setIpError(result.getIp().getError());
-        vo.setIntegratedDevice(result.getIntegrated_device().getShowValue());
-        vo.setIntegratedDeviceError(result.getIntegrated_device().getError());
-        vo.setJkdwlx(result.getJkdwlx().getShowValue());
-        vo.setJkdwlxError(result.getJkdwlx().getError());
-        vo.setLatitude(result.getLatitude().getShowValue());
-        vo.setLatitudeError(result.getLatitude().getError());
-        vo.setLongitude(result.getLongitude().getShowValue());
-        vo.setLongitudeError(result.getLongitude().getError());
-        vo.setMacdz(result.getMacdz().getShowValue());
-        vo.setMacdzError(result.getMacdz().getError());
-        vo.setName(result.getName().getShowValue());
-        vo.setNameError(result.getName().getError());
-        vo.setSbzt(result.getSbzt().getShowValue());
-        vo.setSbztError(result.getSbzt().getError());
-        vo.setSerialNumber(result.getSerialNumber().getShowValue());
-        vo.setSerialNumberError(result.getSerialNumber().getError());
-        vo.setSxjcjqy(result.getSxjcjqy().getShowValue());
-        vo.setSxjcjqyError(result.getSxjcjqy().getError());
-        vo.setSxjgnlx(result.getSxjgnlx().getShowValue());
-        vo.setSxjgnlxError(result.getSxjgnlx().getError());
-        if (result.getNewDevice()) {
+        vo.setCivilCode(result.getCivilCode()!=null?result.getCivilCode().getShowValue():"");
+        vo.setCivilCodeError(result.getCivilCode()!=null?result.getCivilCode().getError():Boolean.FALSE);
+        vo.setIp(result.getIp()!=null?result.getIp().getShowValue():"");
+        vo.setIpError(result.getIp()!=null?result.getIp().getError():Boolean.FALSE);
+        vo.setIntegratedDevice(result.getIntegrated_device()!=null?result.getIntegrated_device().getShowValue():"");
+        vo.setIntegratedDeviceError(result.getIntegrated_device()!=null?result.getIntegrated_device().getError():Boolean.FALSE);
+        vo.setJkdwlx(result.getJkdwlx()!=null?result.getJkdwlx().getShowValue():"");
+        vo.setJkdwlxError(result.getJkdwlx()!=null?result.getJkdwlx().getError():Boolean.FALSE);
+        vo.setLatitude(result.getLatitude()!=null?result.getLatitude().getShowValue():"");
+        vo.setLatitudeError(result.getLatitude()!=null?result.getLatitude().getError():Boolean.FALSE);
+        vo.setLongitude(result.getLongitude()!=null?result.getLongitude().getShowValue():"");
+        vo.setLongitudeError(result.getLongitude()!=null?result.getLongitude().getError():Boolean.FALSE);
+        vo.setMacdz(result.getMacdz()!=null?result.getMacdz().getShowValue():"");
+        vo.setMacdzError(result.getMacdz()!=null?result.getMacdz().getError():Boolean.FALSE);
+        vo.setName(result.getName()!=null?result.getName().getShowValue():"");
+        vo.setNameError(result.getName()!=null?result.getName().getError():Boolean.FALSE);
+        vo.setSbzt(result.getSbzt()!=null?result.getSbzt().getShowValue():"");
+        vo.setSbztError(result.getSbzt()!=null?result.getSbzt().getError():Boolean.FALSE);
+        vo.setSerialNumber(result.getSerialNumber()!=null?result.getSerialNumber().getShowValue():"");
+        vo.setSerialNumberError(result.getSerialNumber()!=null?result.getSerialNumber().getError():Boolean.FALSE);
+        vo.setSxjcjqy(result.getSxjcjqy()!=null?result.getSxjcjqy().getShowValue():"");
+        vo.setSxjcjqyError(result.getSxjcjqy()!=null?result.getSxjcjqy().getError():Boolean.FALSE);
+        vo.setSxjgnlx(result.getSxjgnlx()!=null?result.getSxjgnlx().getShowValue():"");
+        vo.setSxjgnlxError(result.getSxjgnlx()!=null?result.getSxjgnlx().getError():Boolean.FALSE);
+        if (result.getNewDevice()!=null && result.getNewDevice()) {
             vo.setNewDevice("鏄�");
         } else {
             vo.setNewDevice("鍚�");
diff --git a/ycl-server/src/main/java/com/ycl/calculate/CarDataIntegrityCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/CarDataIntegrityCalculation.java
index 3935371..ad8ecef 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/CarDataIntegrityCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/CarDataIntegrityCalculation.java
@@ -81,7 +81,7 @@
         //閲嶇偣鐐逛綅涓哄叚椤瑰睘鎬у畬鏁�
         if (result.getImportantTag() != null && result.getImportantTag()) {
             stats.importantTotalSites++;
-            if (result.getNoIntegrityPercent() <= 0.1) {
+            if (result.getNoIntegrityPercent()!=null && result.getNoIntegrityPercent() <= 0.1) {
                 stats.importantIntegritySites++;
             }
         }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java
index 5db992f..1a7ea32 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java
@@ -553,7 +553,7 @@
         }
         //濉厖鍚勪釜鍖哄幙鏁版嵁
         for (CheckScore checkScore : dashboard) {
-            Map<String, Object> map = new HashMap<>();
+            Map<String, Object> map = resultMap.get(checkScore.getDeptName());
             if (CheckConstants.Rule_Category_Video.equals(checkScore.getExamineCategory())) {
                 map.put("video", checkScore.getScore().setScale(1, RoundingMode.HALF_UP));
             } else if (CheckConstants.Rule_Category_Car.equals(checkScore.getExamineCategory())) {
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java
index 39f5366..755d7c4 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java
@@ -780,7 +780,7 @@
         MongoDatabase database = mongoTemplate.getDb();
         MongoCollection<Document> collection = database.getCollection("uy_record_meta_d_sum");
         Integer examineTag = monitorQuery.getExamineTag();
-        Document matchConditions = new Document("mongoCreateTime", new Document("$gte", startDate).append("$lte", endDate));
+        Document matchConditions = new Document("statTime", new Document("$gte", startDate).append("$lte", endDate));
         // 鏍规嵁examineTag鐨勫�煎姩鎬佹坊鍔犻澶栫殑鏉′欢
         if (examineTag != null && examineTag.equals(1)) {
             matchConditions.append("provinceTag", true);
@@ -790,7 +790,7 @@
         // 鏋勫缓鑱氬悎绠¢亾
         List<Document> pipeline = Arrays.asList(
                 new Document("$match", matchConditions),
-                new Document("$group", new Document("_id", "$mongoCreateTime")
+                new Document("$group", new Document("_id", "$statTime")
                         .append("normalCount", new Document("$sum",
                                 new Document("$cond", Arrays.asList(
                                         new Document("$eq", Arrays.asList("$recordStatus", 1)),
@@ -976,7 +976,6 @@
             results.add(homecarVO);
         }
 
-        //TODO锛氬湪绾夸慨鏀癸紝闇�瑕佹妸妫�娴嬫捣搴蜂紭浜戞娴嬬殑缁撴灉瀛樺叆mongo锛宮ongo鏌ョ偣浣嶅湪绾�
         MongoCollection<Document> onlineCollection = database.getCollection("t_monitor_online");
         // 鏋勫缓鍩烘湰鐨�$match鏉′欢
         List<Document> onlineMatch = new ArrayList<>();
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 11481c5..2236f58 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
@@ -183,7 +183,7 @@
 //            }
             long checkTime = item.getCheckTime().getTime();
             long osdTime = item.getSetTime().getTime();
-            Long timeDiff = (checkTime - osdTime) / 1000;
+            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());
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 d1fbf3d..2ee25fa 100644
--- a/ycl-server/src/main/java/com/ycl/task/OsdTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/OsdTask.java
@@ -160,7 +160,7 @@
         if (osdResult.getCheckTime() != null && osdResult.getOsdTime() != null) {
             long checkTime = osdResult.getCheckTime().getTime();
             long osdTime = osdResult.getOsdTime().getTime();
-            long timeDiff = (checkTime - osdTime) / 1000;
+            long timeDiff = Math.abs((checkTime - osdTime) / 1000);
             if (timeDiff <= 60) {
                 osdCheckResult.setOsdTimeCorrect(ApiConstants.OSD_Correct);
             } else {
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 a2596a9..dc3b8b8 100644
--- a/ycl-server/src/main/java/com/ycl/task/VideoTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/VideoTask.java
@@ -168,7 +168,7 @@
             imageResourceSecurities.add(imageResourceSecurity);
             //鑾峰彇鏈�杩戜竴娆℃暟鎹墜鍔ㄦ墦鍒�
             ImageResourceSecurity latest = imageResourceSecurityMapper.getLatest(checkIndexVideo.getDeptId(),new Date());
-            imageResourceSecurity.setBoundaryIntegrity(latest.getBoundaryIntegrity());
+            imageResourceSecurity.setBoundaryIntegrity(latest ==null?BigDecimal.ONE:latest.getBoundaryIntegrity());
             // 鏇存柊鎸囨爣鏁版嵁
             checkIndexVideo.setImageResourceSecurity(
                     imageResourceSecurity.getPlatformOnline()
diff --git a/ycl-server/src/main/java/com/ycl/task/WorkOrderImgTask.java b/ycl-server/src/main/java/com/ycl/task/WorkOrderImgTask.java
index 71b2aee..28ec3f1 100644
--- a/ycl-server/src/main/java/com/ycl/task/WorkOrderImgTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/WorkOrderImgTask.java
@@ -48,13 +48,13 @@
     private final DeviceInfoMapper deviceInfoMapper;
     private final WorkOrderCheckImgMapper workOrderCheckImgMapper;
 
-//    private static final ExecutorService executorService = new ThreadPoolExecutor(8,
-//            10,
-//            5000,
-//            TimeUnit.SECONDS,
-//            new ArrayBlockingQueue<>(1024),
-//            new ThreadPoolExecutor.CallerRunsPolicy()
-//    );
+    private static final ExecutorService executorService = new ThreadPoolExecutor(16,
+            128,
+            5000,
+            TimeUnit.SECONDS,
+            new ArrayBlockingQueue<>(1000),
+            new ThreadPoolExecutor.CallerRunsPolicy()
+    );
 
     public void run() throws FFmpegFrameGrabber.Exception {
         // 鏌ュ嚭鏈�杩戜竴鍛ㄧ殑鏁呴殰鐨勮澶�
@@ -76,22 +76,24 @@
             return;
         }
         for (DeviceInfoVO deviceInfo : deviceList) {
-            // 鍥芥爣璁惧鐨勭紪鐮佸氨鏄彇瑙嗛娴佺殑璁惧缂栫爜锛屽浗鏍囪澶囧氨涓�涓�傚浗鏍囪澶囩殑姣忎竴涓�氶亾浠h〃涓�涓憚鍍忓ご锛屼篃灏辨槸璁惧id鏄彇娴佺殑閫氶亾id
-            String frameImg = null;
-            try {
-                frameImg = workOrderService.getFrameImgByDevice(gbDevices.get(0).getDeviceId(), deviceInfo.getDeviceId(), deviceInfo.getWorkOrderNo());
-            } catch (Exception e) {
-                e.printStackTrace();
-                continue;
-            }
-            if (StringUtils.hasText(frameImg)) {
-                WorkOrderCheckImg img = new WorkOrderCheckImg();
-                img.setWorkOrderNo(deviceInfo.getWorkOrderNo());
-                img.setImgUrl(frameImg);
-                img.setCreateTime(new Date());
-                workOrderCheckImgMapper.insert(img);
-            }
+            executorService.submit(() -> {
+                // 鍥芥爣璁惧鐨勭紪鐮佸氨鏄彇瑙嗛娴佺殑璁惧缂栫爜锛屽浗鏍囪澶囧氨涓�涓�傚浗鏍囪澶囩殑姣忎竴涓�氶亾浠h〃涓�涓憚鍍忓ご锛屼篃灏辨槸璁惧id鏄彇娴佺殑閫氶亾id
+                String frameImg = null;
+                try {
+                    frameImg = workOrderService.getFrameImgByDevice(gbDevices.get(0).getDeviceId(), deviceInfo.getDeviceId(), deviceInfo.getWorkOrderNo());
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+                if (StringUtils.hasText(frameImg)) {
+                    WorkOrderCheckImg img = new WorkOrderCheckImg();
+                    img.setWorkOrderNo(deviceInfo.getWorkOrderNo());
+                    img.setImgUrl(frameImg);
+                    img.setCreateTime(new Date());
+                    workOrderCheckImgMapper.insert(img);
+                }
+            });
         }
+        log.info("宸ュ崟妫�娴嬪浘鐗囩粨鏉�");
     }
 
 }
diff --git a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
index 37b54c3..57197dc 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
@@ -111,7 +111,7 @@
         left join (
         WITH cte AS (
         SELECT *,row_number() OVER(PARTITION BY serial_number ORDER BY create_time DESC) rn FROM t_work_order
-        WHERE deleted = 0 AND status = 'AUDITING_SUCCESS'
+        WHERE deleted = 0 AND status != 'AUDITING_SUCCESS'
         ) SELECT * FROM cte WHERE rn=1
         ) w on m.serial_number = w.serial_number and w.deleted = 0
         left join t_yw_unit u on p.unit_id = u.id and u.deleted = 0
@@ -141,9 +141,9 @@
                 #{cameraCaptureArea}
             </if>
             <if test="time !=null and time !=''">and TIMESTAMPDIFF(DAY, p.recovery_time, NOW()) <![CDATA[<=]]> #{time}</if>
-            <if test="onState != null and onState = 1">and (p.online = #{onState} and p.ping_online = #{onState})</if>
-            <if test="onState != null and onState = -1">and (p.online = #{onState} or p.ping_online = #{onState})</if>
-            <if test="onState != null and onState = 0">and (p.online = #{onState} and p.ping_online = #{onState})</if>
+            <if test="onState != null and onState == 1">and (p.online = #{onState} and p.ping_online = #{onState})</if>
+            <if test="onState != null and onState == -1">and (p.online = #{onState} or p.ping_online = #{onState})</if>
+            <if test="onState != null and onState == 0">and (p.online = #{onState} and p.ping_online = #{onState})</if>
             <if test="civilCode != null  and civilCode != ''">and civil_code = #{civilCode}</if>
             <if test="integratedDevice != null ">and integrated_device = #{integratedDevice}</if>
             <if test="cameraBrand != null ">and camera_brand = #{cameraBrand}</if>
@@ -197,9 +197,9 @@
             <if test="cameraFunType != null  and cameraFunType != ''">and camera_fun_type like concat('%',
                 #{cameraFunType}, '%')
             </if>
-            <if test="onState != null and onState = 1">and (p.online = #{onState} and p.ping_online = #{onState})</if>
-            <if test="onState != null and onState = -1">and (p.online = #{onState} or p.ping_online = #{onState})</if>
-            <if test="onState != null and onState = 0">and (p.online = #{onState} and p.ping_online = #{onState})</if>
+            <if test="onState != null and onState == 1">and (p.online = #{onState} and p.ping_online = #{onState})</if>
+            <if test="onState != null and onState == -1">and (p.online = #{onState} or p.ping_online = #{onState})</if>
+            <if test="onState != null and onState == 0">and (p.online = #{onState} and p.ping_online = #{onState})</if>
             <if test="civilCode != null  and civilCode != ''">and civil_code = #{civilCode}</if>
         </where>
     </select>
diff --git a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
index 3a71794..783bf1f 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -211,10 +211,10 @@
     </select>
     <select id="getOfflineWorkOrder" resultType="java.lang.String">
         select tm.ip
-        FROM
-            t_work_order wo
-        INNER JOIN t_monitor tm ON wo.serial_number = tm.serial_number
-        where (EXISTS (
+        FROM t_work_order wo
+                 INNER JOIN t_monitor tm ON wo.serial_number = tm.serial_number
+        where wo.status != 'AUDITING_SUCCESS' and wo.deleted = 0
+          AND (EXISTS(
                 SELECT 1
                 FROM t_work_order_error_type twoet
                 WHERE twoet.work_order_no = wo.work_order_no
@@ -331,7 +331,7 @@
         FROM
              t_work_order wo
         WHERE
-            wo.status = 'YW_HANDLE'
+            (wo.status = 'YW_HANDLE' or wo.status ='DISTRIBUTED' )
             AND wo.deleted = 0
     </select>
 

--
Gitblit v1.8.0