From f97d15e16377b03bdc4b134001fbc532d9222fcf Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期四, 16 一月 2025 14:57:01 +0800
Subject: [PATCH] bug

---
 ycl-server/src/main/java/com/ycl/task/ContractTask.java               |    2 
 ycl-server/src/main/java/com/ycl/task/HKTask.java                     |   42 ++++++++++++++------
 ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml         |    4 +-
 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/UpdateOnlineVO.java |    1 
 ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java  |    6 +++
 ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java |    2 
 ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml          |   12 ++++++
 7 files changed, 52 insertions(+), 17 deletions(-)

diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/UpdateOnlineVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/UpdateOnlineVO.java
index 8f6345f..68259c9 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/UpdateOnlineVO.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/UpdateOnlineVO.java
@@ -19,4 +19,5 @@
 
     private Date updateTime;
 
+    private String serialNumber;
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java
index 4137721..9b3c66e 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java
@@ -169,6 +169,12 @@
      */
     void updateOnlineFromUyOrHk(@Param("onlineList") List<UpdateOnlineVO> onlineList);
 
+    /**
+     * 鏍规嵁鍥芥爣淇敼
+     * @param onlineList
+     */
+    void updateOnlineFromHk(@Param("onlineList") List<UpdateOnlineVO> onlineList);
+
 
     /**
      * 鐐逛綅鍦ㄧ嚎鐜�
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java
index 3c1d2c4..9b48848 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java
@@ -77,7 +77,7 @@
      */
     List<DeviceInfoVO> hasErrorWorkOrderList(@Param("start") Date start, @Param("end") Date end);
 
-    List<WorkOrderVO> selectPassOrder(@Param("startTime") LocalDateTime now, @Param("endTime")LocalDateTime thirtyDaysAgo, @Param("status") String status, @Param("errorList") List<String> errorList);
+    List<WorkOrderVO> selectPassOrder(@Param("startTime") LocalDateTime now, @Param("endTime")LocalDateTime thirtyDaysAgo, @Param("status") String status, @Param("errorList") List<String> errorList,@Param("auditStatus") String auditStatus);
 
     int addMany(@Param("workOrderList") List<WorkOrder> workOrderList);
 
diff --git a/ycl-server/src/main/java/com/ycl/task/ContractTask.java b/ycl-server/src/main/java/com/ycl/task/ContractTask.java
index b54211c..1d637c2 100644
--- a/ycl-server/src/main/java/com/ycl/task/ContractTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/ContractTask.java
@@ -200,7 +200,7 @@
         deductErrorType.add(ErrorType.ABNORMAL_PIC.getValue());
         deductErrorType.add(ErrorType.POINT_INFO_ERROR.getValue());
         deductErrorType.add(ErrorType.CLOCK_SKEW.getValue());
-        List<WorkOrderVO> workOrders = workOrderMapper.selectPassOrder(startTime, endTime, WorkOrderStatusEnum.AUDITING_SUCCESS.getValue(),deductErrorType);
+        List<WorkOrderVO> workOrders = workOrderMapper.selectPassOrder(startTime, endTime, WorkOrderStatusEnum.AUDITING_SUCCESS.getValue(),deductErrorType,"瀹℃牳閫氳繃");
         //瀛樺湪鏈変袱绉嶆墸鍒嗙殑鏁呴殰 鍙墸鍑忕涓�涓晠闅�
         Map<String, WorkOrderVO> map = workOrders.stream()
                 .collect(Collectors.toMap(
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 91b9159..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,22 +188,38 @@
             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());
-            });
-            //娴峰悍涓嶅仛鍦ㄧ嚎鐩戞祴
+            //鍏堟嬁浼樹簯鐨勫湪绾匡紝杩囨护鎺変紭浜戝凡鏈夌殑鍥芥爣鐮�
+            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);
@@ -222,6 +237,7 @@
 //                            (existing, replacement) -> existing // 濡傛灉閬囧埌鐩稿悓鐨� IP锛屼繚鐣欑涓�涓紙existing锛�
 //                    )).values());
 //            uyErrorTypeCheckService.hkOnlineCheck(workOrders);
+            }
         }
         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 2c6604a..cd84be6 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
@@ -691,6 +691,18 @@
             AND t_monitor.serial_number = t_yw_point.serial_number )
         </foreach>
     </update>
+
+    <update id="updateOnlineFromHk">
+        <foreach collection="onlineList" item="online" separator=";">
+            UPDATE
+            t_yw_point
+            SET
+            online = #{online.online},
+            update_time = #{online.updateTime}
+            WHERE
+            serial_number = #{online.serialNumber}
+        </foreach>
+    </update>
     <update id="batchUpdateOnline">
             UPDATE
             t_yw_point p
diff --git a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
index b10788e..5a5c238 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -362,13 +362,13 @@
         SELECT wo.id,wo.work_order_no,wo.unit_id,woet.error_name as errorType,woet.create_time as distributeTime
         FROM t_work_order wo
         LEFT JOIN t_work_order_error_type woet ON woet.work_order_no = wo.work_order_no
-        LEFT JOIN t_work_order_auditing_record woar ON woar.work_order_no = wo.work_order_no
+        LEFT JOIN t_work_order_auditing_record woar ON woar.work_order_no = wo.work_order_no and woar.result = #{auditStatus}
         WHERE wo.deleted = 0 AND wo.deduct = 0 AND wo.status = #{status}
         AND woet.error_name in
         <foreach collection="errorList" item="error" separator="," open="(" close=")">
             #{error}
         </foreach>
-        AND woar.create_time between #{startTime} and #{endTime} and woar.result = #{auditStatus}
+        AND woar.create_time between #{startTime} and #{endTime}
     </select>
 
     <update id="updateMany">

--
Gitblit v1.8.0