From 918b26794c7d3b3faa2c57e6a6cb0c11ea4e73e8 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期四, 05 十二月 2024 16:34:56 +0800
Subject: [PATCH] 省厅标签拆分2

---
 ycl-server/src/main/java/com/ycl/task/UYTask.java |  100 ++++++++++++++++++++++++++-----------------------
 1 files changed, 53 insertions(+), 47 deletions(-)

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 7527055..138418e 100644
--- a/ycl-server/src/main/java/com/ycl/task/UYTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -3,6 +3,7 @@
 import com.alibaba.fastjson2.JSONObject;
 import com.mongodb.client.result.DeleteResult;
 import com.ycl.feign.UYClient;
+import com.ycl.platform.domain.entity.TMonitor;
 import com.ycl.platform.domain.entity.WorkOrder;
 import com.ycl.platform.domain.param.UY.ImageDetectionParam;
 import com.ycl.platform.domain.param.UY.MonitorQualifyParam;
@@ -24,11 +25,14 @@
 import com.ycl.utils.CheckPointUtil;
 import com.ycl.utils.DateUtils;
 import constant.ApiConstants;
+import constant.CheckConstants;
 import constant.RedisConstant;
 import enumeration.ErrorType;
 import enumeration.general.WorkOrderStatusEnum;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.mongodb.core.MongoTemplate;
 import org.springframework.data.mongodb.core.query.Criteria;
@@ -101,7 +105,7 @@
                                 item.setNo(item.getDeviceId());
                             }
                         });
-                        pointService.setDeviceTagByGB(records);
+                        pointService.setDeviceTagByGB(records, CheckConstants.Rule_Category_Video);
                         //瀛樻斁鍦╩ongo涓�
                         mongoTemplate.insertAll(records);
                         // 宸ュ崟鐢熸垚
@@ -150,7 +154,7 @@
                                 item.setNo(item.getSerialNumber().getShowValue());
                             }
                         });
-                        pointService.setDeviceTagByGB(records);
+                        pointService.setDeviceTagByGB(records,CheckConstants.Rule_Category_Or);
                         pointService.setNew(records);
                         //瀛樻斁鍦╩ongo涓�
                         mongoTemplate.insertAll(records);
@@ -174,6 +178,8 @@
 
     /**
      * 鐐逛綅鍦ㄧ嚎PING妫�娴�
+     * 浠诲姟浼氬厛鎵ц涓�娆′紭浜戝悓姝ワ紝鐒跺悗鎵цping妫�娴�
+     * online瀛楁鏉ヨ嚜浜庝紭浜戯紝pingOnline涓轰富鍔╬ing妫�娴嬬殑銆傚瓨鍏ongo缁欐暟鎹腑蹇冩煡闃�
      */
     public void pointOnline() throws ExecutionException, InterruptedException {
         log.info("寮�濮嬫娴嬬偣浣嶅湪绾�");
@@ -187,6 +193,7 @@
             log.error("璇烽厤缃绾挎鏁帮紝姝ゆ璁剧疆涓洪粯璁ゅ��2");
         }
         // 鍏堟煡鍑鸿澶嘔P闆嗗悎,鍓旈櫎鎺夊湪绾挎儏鍐垫槸鏈煡鐨�,骞朵笖鍙娴嬫鍦ㄨ�冩牳鐨勮澶囬伩鍏嶅浣欏伐鍗�
+        //TODO锛氶渶瑕佹妸娴峰悍鍜屼紭浜戠殑浠诲姟鐨勬椂闂磋皟鍒皃ing涔嬪墠
         List<TMonitorResult> monitorList = monitorMapper.getDistinctIP();
         //琛ュ厖閿欒鏃堕棿鐐�
         Query onlineQuery = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
@@ -213,36 +220,6 @@
                                 ex.printStackTrace();
                             }
                             return null;
-//                            int checkTimes = 1;
-//                            int offLineTimes = 1;
-//                            Map<String, Object> map = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstant.ONLINE_KEY, monitor.getNo());
-//                            if (!CollectionUtils.isEmpty(map)) {
-//                                checkTimes = (Integer) map.get("checkTimes") + 1;
-//                                offLineTimes = (Integer) map.get("offLineTimes");
-//                            }else {
-//                                map = new HashMap<>();
-//                            }
-//                            monitor.setPingOnline(Boolean.FALSE);
-//                            monitor.setCheckCount(checkTimes);
-//                            monitor.setOffLineCount(offLineTimes);
-//                            List<Date> offLineTime = monitor.getOffLineTime();
-//                            if(CollectionUtils.isEmpty(offLineTime)) offLineTime = new ArrayList<>();
-//                            offLineTime.add(new Date());
-//                            monitor.setOffLineTime(offLineTime);
-//                            if (monitor.getOffLineCount() >= time) {
-//                                WorkOrder workOrder = new WorkOrder();
-//                                workOrder.setSerialNumber(monitor.getNo());
-//                                List<String> errList = new ArrayList<>();
-//                                errList.add(ErrorType.DEVICE_OFFLINE.getValue());
-//                                workOrder.setErrorTypeList(errList);
-//                                workOrder.setStatus(WorkOrderStatusEnum.DISTRIBUTED);
-//                                monitor.setWorkOrder(workOrder);
-//                            }
-//                            map.put("checkTimes", checkTimes);
-//                            map.put("offLineTimes", offLineTimes);
-//                            redisTemplate.opsForHash().put(RedisConstant.ONLINE_KEY, monitor.getNo(), map);
-//                            return monitor; // 杩斿洖澶辫触鐨勭粨鏋�
-
                         }))
                 .collect(Collectors.toList());
 
@@ -262,27 +239,55 @@
                 .map(CompletableFuture::join)
                 .filter(Objects::nonNull)
                 .collect(Collectors.toList());
-        //绛涢�夊嚭ping绂荤嚎鐨勮澶囷紝鏇存敼鏁版嵁搴撲负绂荤嚎锛屽苟涓旀洿鏂扮函杞﹁締鎴栫函浜鸿劯鐨勮澶囩殑鍦ㄧ嚎鐘舵��(杩欓儴鍒嗚澶囦笉浼氭媺娴佹娴�)
+
         Date now = new Date();
-        List<UpdateOnlineVO> onlineUpdateList = dataList.stream().map(item -> {
-            UpdateOnlineVO vo = new UpdateOnlineVO();
-            if(item.getPingOnline()) {
-                vo.setOnline(ApiConstants.UY_OnlineSite_Online);
-            }else if(!item.getPingOnline()){
-                vo.setOnline(ApiConstants.UY_OnlineSite_Offline);
+        List<String> offLineList = new ArrayList<>();
+        List<String> onLineList = new ArrayList<>();
+        //鏌ュ嚭鏁版嵁搴撶函杞﹁締鎴栫函浜鸿劯璁惧
+        List<String> serialNumbers = monitorMapper.selectCarOrFace().stream().map(TMonitor::getSerialNumber).collect(Collectors.toList());
+        dataList.forEach(item->{
+            //鏇存柊绾溅杈嗘垨绾汉鑴哥殑璁惧鐨勫湪绾跨姸鎬�(杩欓儴鍒嗚澶囦笉浼氭媺娴佹娴�)
+            if(item.getPingOnline() && !CollectionUtils.isEmpty(serialNumbers) && serialNumbers.contains(item.getNo())) {
+                onLineList.add(item.getIp());
+            } else if(!item.getPingOnline()) {
+                //绛涢�夊嚭ping绂荤嚎鐨勮澶囷紝鏇存敼鏁版嵁搴撲负绂荤嚎
+                offLineList.add(item.getIp());
             }
-            vo.setIp(item.getIp());
-            vo.setUpdateTime(now);
-            return vo;
-        }).collect(Collectors.toList());
-        monitorMapper.updateOnline(onlineUpdateList);
+        });
+        if(!CollectionUtils.isEmpty(offLineList)) {
+            monitorMapper.batchUpdateOnline(offLineList, now, ApiConstants.UY_OnlineSite_Offline);
+        }
+        if(!CollectionUtils.isEmpty(onLineList)) {
+            monitorMapper.batchUpdateOnline(onLineList, now, ApiConstants.UY_OnlineSite_Online);
+        }
         //瀛樻斁鍒癿ongo
         if (!CollectionUtils.isEmpty(dataList)) {
+            List<TMonitorResult> mongoList = new ArrayList<>();
+            dataList.forEach(item->{
+                String monitorType = item.getMonitorType();
+                //鍚屼竴涓澶囧涓被鍨嬫瘡涓被鍨嬪瓨涓�鏉℃暟鎹紝浠ユ鍦ㄤ繚鐣欐暟鎹殑鎯呭喌涓嬪尯鍒嗙渷鍘呮爣绛�
+                if(StringUtils.isNotEmpty(monitorType)){
+                    String[] monitors = monitorType.split("/");
+                    for (String type : monitors) {
+                        TMonitorResult mongoData = new TMonitorResult();
+                        BeanUtils.copyProperties(item,mongoData);
+                        mongoData.setMonitorType(type);
+                        if("1".equals(type)){
+                            mongoData.setProvinceTag(mongoData.getProvinceTagVideo());
+                        }else if("2".equals(type)){
+                            mongoData.setProvinceTag(mongoData.getProvinceTagCar());
+                        }else if("3".equals(type)){
+                            mongoData.setProvinceTag(mongoData.getProvinceTagFace());
+                        }
+                        mongoList.add(mongoData);
+                    }
+                }
+            });
             //濡傛灉瀛樺湪涔嬪墠鐨勬暟鎹厛鍒犻櫎
             Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
             DeleteResult result = mongoTemplate.remove(query, TMonitorResult.class);
             //瀛樻斁鍦╩ongo涓�
-            mongoTemplate.insertAll(dataList);
+            mongoTemplate.insertAll(mongoList);
         }
         //宸ュ崟锛堝悓涓�IP鍙敓鎴愪竴涓伐鍗曪級
         List<WorkOrder> workOrderList = dataList.stream()
@@ -330,7 +335,8 @@
                                 item.setNo(item.getDeviceId());
                             }
                         });
-                        pointService.setDeviceTagByGB(records);
+                        //璨屼技杩欓噷鍙互蹇界暐鐪佸巺鏍囩鍥犱负椤圭洰灞曠ず鐨勫悗闈ing鐨勬椂鍊欏瓨鐨勬暟鎹�
+                        pointService.setDeviceTagByGB(records,CheckConstants.Rule_Category_Video);
                         //瀛樻斁鍦╩ongo涓�
                         mongoTemplate.insertAll(records);
                         //鏇存柊point琛ㄥ湪绾跨姸鎬�
@@ -397,7 +403,7 @@
                         }
                     });
                     //鎵撴爣绛�
-                    pointService.setDeviceTagByGB(records);
+                    pointService.setDeviceTagByGB(records,CheckConstants.Rule_Category_Video);
                     //瀛樻斁鍦╩ongo涓�
                     mongoTemplate.insertAll(records);
 //                    // 宸ュ崟鐢熸垚

--
Gitblit v1.8.0