From d268f82d25c25ebdc7a1ea30614f6cda6d3a9ae3 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期四, 10 十月 2024 16:31:41 +0800
Subject: [PATCH] win库+大屏考核指标查询bug

---
 ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java |  520 +++++++++++++++++++--------------------------------------
 1 files changed, 175 insertions(+), 345 deletions(-)

diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java
index f7b2e36..763e007 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java
@@ -10,7 +10,9 @@
 import com.ycl.platform.domain.entity.*;
 import com.ycl.platform.domain.query.DataCenterQuery;
 import com.ycl.platform.domain.result.HK.*;
+import com.ycl.platform.domain.result.SYS.TMonitorResult;
 import com.ycl.platform.domain.result.UY.*;
+import com.ycl.platform.domain.vo.PointDetailVO;
 import com.ycl.platform.mapper.ImageResourceSecurityDetailMapper;
 import com.ycl.platform.mapper.YwPointMapper;
 import com.ycl.platform.service.*;
@@ -65,19 +67,24 @@
      */
     @Override
     public Result videoPointOnlineRate(DataCenterQuery params) {
-        // 鐢熸垚鏌ヨ
-        List<String> likeFileds = Arrays.asList("arealayerName", "ipAddr", "deviceName", "deviceId");
-        Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
-        // 鍏堟煡鎬绘暟鍐嶅垎椤�
-        long total = mongoTemplate.count(query, VideoOnlineResult.class);
+        List<String> likeFileds = Arrays.asList("name", "no","ip");
+        Query query = MongoUtil.getQuery(params,TIME_FIELD, likeFileds, null);
+        //鍒嗛〉鏁伴噺
+        long total = mongoTemplate.count(query, TMonitorResult.class);
         MongoUtil.setPage(query, params, TIME_FIELD);
-        List<VideoOnlineResult> resultList = mongoTemplate.find(query, VideoOnlineResult.class);
+        List<TMonitorResult> resultList = mongoTemplate.find(query, TMonitorResult.class);
+        resultList.forEach(item->{
+            if(null != item.getOnline() && item.getOnline()){
+                item.setOnlineStr("鍦ㄧ嚎");
+            }else {
+                item.setOnlineStr("绂荤嚎");
+            }
+        });
+        params.setDeptTag(-1);
+        params.setDeviceType(1);
+        // 缁熻璁惧鏁伴噺
+        Integer distinctCount = pointMapper.distinctCount(params);
 
-        // 缁熻鏁伴噺
-        MongoDatabase database = mongoTemplate.getDb();
-        MongoCollection<Document> collection = database.getCollection("uy_online");
-        long distinctCount = collection.distinct("deviceId", String.class).into(new ArrayList<>()).size();
         Date now = new Date();
         List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
                 .select(CheckIndexVideo::getSiteOnline)
@@ -103,40 +110,24 @@
      */
     @Override
     public Result deptVideoPointOnlineRate(DataCenterQuery params) {
-
-        List<String> likeFileds = Arrays.asList("arealayerName", "ipAddr", "deviceName", "deviceId");
-        // 鐢熸垚鏌ヨ
-        Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, 1);
-
-        // 鍏堟煡鎬绘暟鍐嶅垎椤�
-        long total = mongoTemplate.count(query, VideoOnlineResult.class);
+        List<String> likeFileds = Arrays.asList("name", "no","ip");
+        Query query = MongoUtil.getQuery(params,TIME_FIELD, likeFileds, null);
+        //鍒嗛〉鏁伴噺
+        long total = mongoTemplate.count(query, TMonitorResult.class);
         MongoUtil.setPage(query, params, TIME_FIELD);
-        List<VideoOnlineResult> resultList = mongoTemplate.find(query, VideoOnlineResult.class);
+        List<TMonitorResult> resultList = mongoTemplate.find(query, TMonitorResult.class);
+        resultList.forEach(item->{
+            if(null != item.getOnline() && item.getOnline()){
+                item.setOnlineStr("鍦ㄧ嚎");
+            }else {
+                item.setOnlineStr("绂荤嚎");
+            }
+        });
+        // 缁熻璁惧鏁伴噺
+        params.setDeptTag(1);
+        params.setDeviceType(1);
+        Integer distinctCount = pointMapper.distinctCount(params);
 
-        // 缁熻鏁伴噺
-        MongoDatabase database = mongoTemplate.getDb();
-        MongoCollection<Document> collection = database.getCollection("uy_online");
-        List<Document> dList = new ArrayList<>(2);
-        dList.add(new Document("deptTag", new Document("$eq", Boolean.TRUE)));
-        if (params.getDataType().equals(1)) {
-            dList.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
-        Document filter = new Document("$and", dList);
-        // 鏋勫缓鑱氬悎绠¢亾
-        List<Document> pipeline = Arrays.asList(
-                // 鍙閮ㄧ骇鐨�
-                new Document("$match", filter),
-                // $group 鍘婚噸
-                new Document("$group", new Document("_id", "$deviceId")),
-                new Document("$count", "uniqueDeviceIds")
-        );
-        // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
-        AggregateIterable<Document> result = collection.aggregate(pipeline);
-        Integer uniqueDeviceIdCount = 0;
-        for (Document doc : result) {
-            uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds");
-            break; // 涓嶉渶瑕佺户缁亶鍘嗭紝鍥犱负 $count 鍙細浜х敓涓�涓粨鏋�
-        }
         Date now = new Date();
         List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
                 .select(CheckIndexVideo::getMinistrySiteOnline)
@@ -150,8 +141,8 @@
             onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
         }
         HashMap<String, Object> map = new HashMap<>();
-        map.put("count", Arrays.asList(uniqueDeviceIdCount + "", this.remove0(onlineRate)));
-        map.put("list", resultList);
+        map.put("count", Arrays.asList(distinctCount + "", this.remove0(onlineRate)));
+        map.put("list",resultList);
         return Result.ok().data(map).total(total);
     }
 
@@ -163,38 +154,23 @@
      */
     @Override
     public Result videoImportantPointOnlineRate(DataCenterQuery params) {
-        List<String> likeFileds = Arrays.asList("arealayerName", "ipAddr", "deviceName", "deviceId");
-        Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, 3);
-
-        long total = mongoTemplate.count(query, VideoOnlineResult.class);
+        List<String> likeFileds = Arrays.asList("name", "no","ip");
+        Query query = MongoUtil.getQuery(params,TIME_FIELD, likeFileds, null);
+        //鍒嗛〉鏁伴噺
+        long total = mongoTemplate.count(query, TMonitorResult.class);
         MongoUtil.setPage(query, params, TIME_FIELD);
-        List<VideoOnlineResult> resultList = mongoTemplate.find(query, VideoOnlineResult.class);
-
-        // 缁熻鏁伴噺
-        MongoDatabase database = mongoTemplate.getDb();
-        MongoCollection<Document> collection = database.getCollection("uy_online");
-
-        List<Document> dList = new ArrayList<>(2);
-        dList.add(new Document("importantTag", new Document("$eq", Boolean.TRUE)));
-        if (params.getDataType().equals(1)) {
-            dList.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
-        Document filter = new Document("$and", dList);
-        // 鏋勫缓鑱氬悎绠¢亾
-        List<Document> pipeline = Arrays.asList(
-                new Document("$match", filter),
-                // $group 鍘婚噸
-                new Document("$group", new Document("_id", "$deviceId")),
-                new Document("$count", "uniqueDeviceIds")
-        );
-        // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
-        AggregateIterable<Document> result = collection.aggregate(pipeline);
-        Integer uniqueDeviceIdCount = 0;
-        for (Document doc : result) {
-            uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds");
-            break; // 涓嶉渶瑕佺户缁亶鍘嗭紝鍥犱负 $count 鍙細浜х敓涓�涓粨鏋�
-        }
-
+        List<TMonitorResult> resultList = mongoTemplate.find(query, TMonitorResult.class);
+        params.setDeptTag(3);
+        params.setDeviceType(1);
+        // 缁熻璁惧鏁伴噺
+        Integer distinctCount = pointMapper.distinctCount(params);
+        resultList.forEach(item->{
+            if(null != item.getOnline() && item.getOnline()){
+                item.setOnlineStr("鍦ㄧ嚎");
+            }else {
+                item.setOnlineStr("绂荤嚎");
+            }
+        });
         Date now = new Date();
         List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
                 .select(CheckIndexVideo::getKeySiteOnline)
@@ -208,7 +184,7 @@
             onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
         }
         HashMap<String, Object> map = new HashMap<>();
-        map.put("count", Arrays.asList(uniqueDeviceIdCount + "", this.remove0(onlineRate)));
+        map.put("count", Arrays.asList(distinctCount + "", this.remove0(onlineRate)));
         map.put("list", resultList);
         return Result.ok().data(map).total(total);
     }
@@ -221,38 +197,24 @@
      */
     @Override
     public Result videoImportantPointImageOnlineRate(DataCenterQuery params) {
-        List<String> likeFileds = Arrays.asList("arealayerName", "ipAddr", "deviceName", "deviceId");
-        Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, 4);
-
-        long total = mongoTemplate.count(query, VideoOnlineResult.class);
+        List<String> likeFileds = Arrays.asList("name", "no","ip");
+        Query query = MongoUtil.getQuery(params,TIME_FIELD, likeFileds, null);
+        //鍒嗛〉鏁伴噺
+        long total = mongoTemplate.count(query, TMonitorResult.class);
         MongoUtil.setPage(query, params, TIME_FIELD);
-        List<VideoOnlineResult> resultList = mongoTemplate.find(query, VideoOnlineResult.class);
+        List<TMonitorResult> resultList = mongoTemplate.find(query, TMonitorResult.class);
 
-        // 缁熻鏁伴噺
-        MongoDatabase database = mongoTemplate.getDb();
-        MongoCollection<Document> collection = database.getCollection("uy_online");
-
-        List<Document> dList = new ArrayList<>(2);
-        dList.add(new Document("importantCommandImageTag", new Document("$eq", Boolean.TRUE)));
-        if (params.getDataType().equals(1)) {
-            dList.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
-        Document filter = new Document("$and", dList);
-        // 鏋勫缓鑱氬悎绠¢亾
-        List<Document> pipeline = Arrays.asList(
-                new Document("$match", filter),
-                // $group 鍘婚噸
-                new Document("$group", new Document("_id", "$deviceId")),
-                new Document("$count", "uniqueDeviceIds")
-        );
-        // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
-        AggregateIterable<Document> result = collection.aggregate(pipeline);
-        Integer uniqueDeviceIdCount = 0;
-        for (Document doc : result) {
-            uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds");
-            break; // 涓嶉渶瑕佺户缁亶鍘嗭紝鍥犱负 $count 鍙細浜х敓涓�涓粨鏋�
-        }
-
+        params.setDeptTag(4);
+        params.setDeviceType(1);
+        // 缁熻璁惧鏁伴噺
+        Integer distinctCount = pointMapper.distinctCount(params);
+        resultList.forEach(item->{
+            if(null != item.getOnline() && item.getOnline()){
+                item.setOnlineStr("鍦ㄧ嚎");
+            }else {
+                item.setOnlineStr("绂荤嚎");
+            }
+        });
         Date now = new Date();
         List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
                 .select(CheckIndexVideo::getKeyCommandImageOnline)
@@ -266,7 +228,7 @@
             onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
         }
         HashMap<String, Object> map = new HashMap<>();
-        map.put("count", Arrays.asList(uniqueDeviceIdCount + "", this.remove0(onlineRate)));
+        map.put("count", Arrays.asList(distinctCount + "", this.remove0(onlineRate)));
         map.put("list", resultList);
         return Result.ok().data(map).total(total);
     }
@@ -292,24 +254,16 @@
 
         List<Document> dList1 = new ArrayList<>(2);
         dList1.add(new Document("ip.error", new Document("$eq", Boolean.TRUE)));
-        if (params.getDataType().equals(1)) {
-            dList1.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList1);
         List<Document> dList2 = new ArrayList<>(2);
         dList2.add(new Document("macdz.error", new Document("$eq", Boolean.TRUE)));
-        if (params.getDataType().equals(1)) {
-            dList2.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList2);
         List<Document> dList3 = new ArrayList<>(2);
         dList3.add(new Document("latitude.error", new Document("$eq", Boolean.TRUE)));
-        if (params.getDataType().equals(1)) {
-            dList3.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList3);
         List<Document> dList4 = new ArrayList<>(2);
         dList4.add(new Document("longitude.error", new Document("$eq", Boolean.TRUE)));
-        if (params.getDataType().equals(1)) {
-            dList4.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList4);
         Document ipErrFilter = new Document("$and", dList1);
         Document macdzErrFilter = new Document("$and", dList2);
         Document latitudeErrFilter = new Document("$and", dList3);
@@ -374,24 +328,16 @@
 
         List<Document> dList1 = new ArrayList<>(2);
         dList1.add(new Document("ip.error", new Document("$eq", Boolean.TRUE)));
-        if (params.getDataType().equals(1)) {
-            dList1.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList1);
         List<Document> dList2 = new ArrayList<>(2);
         dList2.add(new Document("macdz.error", new Document("$eq", Boolean.TRUE)));
-        if (params.getDataType().equals(1)) {
-            dList2.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList2);
         List<Document> dList3 = new ArrayList<>(2);
         dList3.add(new Document("latitude.error", new Document("$eq", Boolean.TRUE)));
-        if (params.getDataType().equals(1)) {
-            dList3.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList3);
         List<Document> dList4 = new ArrayList<>(2);
         dList4.add(new Document("longitude.error", new Document("$eq", Boolean.TRUE)));
-        if (params.getDataType().equals(1)) {
-            dList4.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList4);
         Document ipErrFilter = new Document("$and", dList1);
         Document macdzErrFilter = new Document("$and", dList2);
         Document latitudeErrFilter = new Document("$and", dList3);
@@ -443,7 +389,6 @@
      */
     @Override
     public Result videoAssessmentFileRatio(DataCenterQuery params) {
-        // TODO 鏂板涓�寮犺〃璁板綍姣忔鐨勬。妗堣�冩牳
         List<String> likeFileds = Arrays.asList("ip.showValue", "name.showValue", "serialNumber.showValue");
         Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
 
@@ -457,24 +402,16 @@
 
         List<Document> dList1 = new ArrayList<>(2);
         dList1.add(new Document("ip.error", new Document("$eq", Boolean.TRUE)));
-        if (params.getDataType().equals(1)) {
-            dList1.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList1);
         List<Document> dList2 = new ArrayList<>(2);
         dList2.add(new Document("macdz.error", new Document("$eq", Boolean.TRUE)));
-        if (params.getDataType().equals(1)) {
-            dList2.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList2);
         List<Document> dList3 = new ArrayList<>(2);
         dList3.add(new Document("latitude.error", new Document("$eq", Boolean.TRUE)));
-        if (params.getDataType().equals(1)) {
-            dList3.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList3);
         List<Document> dList4 = new ArrayList<>(2);
         dList4.add(new Document("longitude.error", new Document("$eq", Boolean.TRUE)));
-        if (params.getDataType().equals(1)) {
-            dList4.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList4);
         Document ipErrFilter = new Document("$and", dList1);
         Document macdzErrFilter = new Document("$and", dList2);
         Document latitudeErrFilter = new Document("$and", dList3);
@@ -528,9 +465,7 @@
         List<String> resultCount = status.stream().map(item -> {
             List<Document> dList = new ArrayList<>(2);
             dList.add(new Document("recordStatus", new Document("$eq", item)));
-            if (params.getDataType().equals(1)) {
-                dList.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-            }
+            setTag(params, dList);
             Document filter = new Document("$and", dList);
             // 鏋勫缓鑱氬悎绠¢亾
             List<Document> pipeline = Arrays.asList(
@@ -591,9 +526,7 @@
             List<Document> dList = new ArrayList<>(4);
             dList.add(new Document("deptTag", new Document("$eq", Boolean.TRUE)));
             dList.add(new Document("recordStatus",  new Document("$eq", item)));
-            if (params.getDataType().equals(1)) {
-                dList.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-            }
+            setTag(params,dList);
             Document filter = new Document("$and", dList);
             // 鏋勫缓鑱氬悎绠¢亾
             List<Document> pipeline = Arrays.asList(
@@ -654,9 +587,7 @@
             List<Document> dList = new ArrayList<>(4);
             dList.add(new Document("importantTag", new Document("$eq", Boolean.TRUE)));
             dList.add(new Document("recordStatus", new Document("$eq", item)));
-            if (params.getDataType().equals(1)) {
-                dList.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-            }
+            setTag(params,dList);
             Document filter = new Document("$and", dList);
             // 鏋勫缓鑱氬悎绠¢亾
             List<Document> pipeline = Arrays.asList(
@@ -672,7 +603,7 @@
                 uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds");
                 break; // 涓嶉渶瑕佺户缁亶鍘嗭紝鍥犱负 $count 鍙細浜х敓涓�涓粨鏋�
             }
-            return uniqueDeviceIdCount + "%";
+            return uniqueDeviceIdCount + "";
         }).collect(Collectors.toList());
 
         Date now = new Date();
@@ -741,27 +672,19 @@
         List<Document> dList1 = new ArrayList<>(2);
         dList1.add(new Document("importantTag", Boolean.TRUE));
         dList1.add(new Document("osdNameCorrect", new Document("$eq", 1)));
-        if (params.getDataType().equals(1)) {
-            dList1.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList1);
         List<Document> dList2 = new ArrayList<>(2);
         dList2.add(new Document("importantTag", Boolean.TRUE));
         dList2.add(new Document("osdNameCorrect", new Document("$eq", -1)));
-        if (params.getDataType().equals(1)) {
-            dList2.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList2);
         List<Document> dList3 = new ArrayList<>(2);
         dList3.add(new Document("importantTag", Boolean.TRUE));
         dList3.add(new Document("osdTimeCorrect", new Document("$eq", 1)));
-        if (params.getDataType().equals(1)) {
-            dList3.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList3);
         List<Document> dList4 = new ArrayList<>(2);
         dList4.add(new Document("importantTag", Boolean.TRUE));
         dList4.add(new Document("osdTimeCorrect", new Document("$eq", -1)));
-        if (params.getDataType().equals(1)) {
-            dList4.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList4);
         Document osdNameFilter = new Document("$and", dList1);
         Document osdNameErrFilter = new Document("$and", dList2);
         Document osdTimeFilter = new Document("$and", dList3);
@@ -853,15 +776,11 @@
         List<Document> dList1 = new ArrayList<>(2);
         dList1.add(new Document("importantTag", Boolean.TRUE));
         dList1.add(new Document("osdTimeCorrect", new Document("$eq", 1)));
-        if (params.getDataType().equals(1)) {
-            dList1.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList1);
         List<Document> dList2 = new ArrayList<>(2);
         dList2.add(new Document("importantTag", Boolean.TRUE));
         dList2.add(new Document("osdTimeCorrect", new Document("$eq", -1)));
-        if (params.getDataType().equals(1)) {
-            dList2.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList2);
         Document osdTimeFilter = new Document("$and", dList1);
         Document osdTimeErrFilter = new Document("$and", dList2);
         List<Document> lists = Arrays.asList(osdTimeFilter, osdTimeErrFilter);
@@ -925,27 +844,19 @@
         List<Document> dList1 = new ArrayList<>(2);
         dList1.add(new Document("importantTag", Boolean.TRUE));
         dList1.add(new Document("resultType", new Document("$eq", 1)));
-        if (params.getDataType().equals(1)) {
-            dList1.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList1);
         List<Document> dList2 = new ArrayList<>(2);
         dList2.add(new Document("importantTag", Boolean.TRUE));
         dList2.add(new Document("resultType", new Document("$eq", 2)));
-        if (params.getDataType().equals(1)) {
-            dList2.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList2);
         List<Document> dList3 = new ArrayList<>(2);
         dList3.add(new Document("importantTag", Boolean.TRUE));
         dList3.add(new Document("resultType", new Document("$eq", 3)));
-        if (params.getDataType().equals(1)) {
-            dList3.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList3);
         List<Document> dList4 = new ArrayList<>(2);
         dList4.add(new Document("importantTag", Boolean.TRUE));
         dList4.add(new Document("resultType", new Document("$eq", 4)));
-        if (params.getDataType().equals(1)) {
-            dList4.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList4);
         Document normalFilter = new Document("$and", dList1);
         Document noDataFilter = new Document("$and", dList2);
         Document trFilter = new Document("$and", dList3);
@@ -996,18 +907,24 @@
      */
     @Override
     public Result vehiclePointOnlineRate(DataCenterQuery params) {
-        List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
-        Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
-        long total = mongoTemplate.count(query, SnapshotDataMonitorResult.class);
+        List<String> likeFileds = Arrays.asList("name", "no","ip");
+        Query query = MongoUtil.getQuery(params,TIME_FIELD, likeFileds, null);
+        //鍒嗛〉鏁伴噺
+        long total = mongoTemplate.count(query, TMonitorResult.class);
         MongoUtil.setPage(query, params, TIME_FIELD);
-        List<SnapshotDataMonitorResult> resultList = mongoTemplate.find(query, SnapshotDataMonitorResult.class);
+        List<TMonitorResult> resultList = mongoTemplate.find(query, TMonitorResult.class);
 
-        // 缁熻鏁伴噺
-        MongoDatabase database = mongoTemplate.getDb();
-        MongoCollection<Document> collection = database.getCollection("hk_snapshot_data_monitor");
-        long distinctCount = collection.distinct("externalIndexCode", String.class).into(new ArrayList<>()).size();
-
+        params.setDeptTag(-1);
+        params.setDeviceType(2);
+        // 缁熻璁惧鏁伴噺
+        Integer distinctCount = pointMapper.distinctCount(params);
+        resultList.forEach(item->{
+            if(null != item.getOnline() && item.getOnline()){
+                item.setOnlineStr("鍦ㄧ嚎");
+            }else {
+                item.setOnlineStr("绂荤嚎");
+            }
+        });
         Date now = new Date();
         List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
                 .select(CheckIndexCar::getSiteOnline)
@@ -1047,24 +964,16 @@
 
         List<Document> dList1 = new ArrayList<>(2);
         dList1.add(new Document("ip.error", new Document("$eq", Boolean.TRUE)));
-        if (params.getDataType().equals(1)) {
-            dList1.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList1);
         List<Document> dList2 = new ArrayList<>(2);
         dList2.add(new Document("macdz.error", new Document("$eq", Boolean.TRUE)));
-        if (params.getDataType().equals(1)) {
-            dList2.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList2);
         List<Document> dList3 = new ArrayList<>(2);
         dList3.add(new Document("latitude.error", new Document("$eq", Boolean.TRUE)));
-        if (params.getDataType().equals(1)) {
-            dList3.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList3);
         List<Document> dList4 = new ArrayList<>(2);
         dList4.add(new Document("longitude.error", new Document("$eq", Boolean.TRUE)));
-        if (params.getDataType().equals(1)) {
-            dList4.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList4);
         Document ipErrFilter = new Document("$and", dList1);
         Document macdzErrFilter = new Document("$and", dList2);
         Document latitudeErrFilter = new Document("$and", dList3);
@@ -1128,24 +1037,16 @@
 
         List<Document> dList1 = new ArrayList<>(2);
         dList1.add(new Document("lalType", new Document("$eq", 1)));
-        if (params.getDataType().equals(1)) {
-            dList1.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList1);
         List<Document> dList2 = new ArrayList<>(2);
         dList2.add(new Document("lalType", new Document("$eq", 2)));
-        if (params.getDataType().equals(1)) {
-            dList2.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList2);
         List<Document> dList3 = new ArrayList<>(2);
         dList3.add(new Document("lalType", new Document("$eq", 3)));
-        if (params.getDataType().equals(1)) {
-            dList3.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList3);
         List<Document> dList4 = new ArrayList<>(2);
         dList4.add(new Document("lalType", new Document("$eq", 4)));
-        if (params.getDataType().equals(1)) {
-            dList4.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList4);
         Document ipErrFilter = new Document("$and", dList1);
         Document macdzErrFilter = new Document("$and", dList2);
         Document latitudeErrFilter = new Document("$and", dList3);
@@ -1282,19 +1183,13 @@
 
         List<Document> dList1 = new ArrayList<>(2);
         dList1.add(new Document("snapResult", new Document("$eq", 1)));
-        if (params.getDataType().equals(1)) {
-            dList1.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList1);
         List<Document> dList2 = new ArrayList<>(2);
         dList2.add(new Document("snapResult", new Document("$eq", 2)));
-        if (params.getDataType().equals(1)) {
-            dList2.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList2);
         List<Document> dList3 = new ArrayList<>(2);
         dList3.add(new Document("snapResult", new Document("$eq", 4)));
-        if (params.getDataType().equals(1)) {
-            dList3.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList3);
         Document ipErrFilter = new Document("$and", dList1);
         Document macdzErrFilter = new Document("$and", dList2);
         Document longitudeErrFilter = new Document("$and", dList3);
@@ -1460,24 +1355,16 @@
 
         List<Document> dList1 = new ArrayList<>(2);
         dList1.add(new Document("resultType", new Document("$eq", 1)));
-        if (params.getDataType().equals(1)) {
-            dList1.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList1);
         List<Document> dList2 = new ArrayList<>(2);
         dList2.add(new Document("resultType", new Document("$eq", 2)));
-        if (params.getDataType().equals(1)) {
-            dList2.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList2);
         List<Document> dList3 = new ArrayList<>(2);
         dList3.add(new Document("resultType", new Document("$eq", 3)));
-        if (params.getDataType().equals(1)) {
-            dList3.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList3);
         List<Document> dList4 = new ArrayList<>(2);
         dList4.add(new Document("resultType", new Document("$eq", 4)));
-        if (params.getDataType().equals(1)) {
-            dList4.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList4);
         Document normalFilter = new Document("$and", dList1);
         Document noDataFilter = new Document("$and", dList2);
         Document trFilter = new Document("$and", dList3);
@@ -1528,59 +1415,23 @@
      */
     @Override
     public Result facePointOnlineRate(DataCenterQuery params) {
-        List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
-        Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
-        long total = mongoTemplate.count(query, SnapshotDataMonitorResult.class);
+        List<String> likeFileds = Arrays.asList("name", "no","ip");
+        Query query = MongoUtil.getQuery(params,TIME_FIELD, likeFileds, null);
+        //鍒嗛〉鏁伴噺
+        long total = mongoTemplate.count(query, TMonitorResult.class);
         MongoUtil.setPage(query, params, TIME_FIELD);
-        List<SnapshotDataMonitorResult> resultList = mongoTemplate.find(query, SnapshotDataMonitorResult.class);
-
-        // 缁熻鏁伴噺
-        MongoDatabase database = mongoTemplate.getDb();
-        MongoCollection<Document> collection = database.getCollection("hk_snapshot_data_monitor");
-
-        List<Document> dList1 = new ArrayList<>(2);
-        dList1.add(new Document("resultType", new Document("$eq", 1)));
-        if (params.getDataType().equals(1)) {
-            dList1.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
-        List<Document> dList2 = new ArrayList<>(2);
-        dList2.add(new Document("resultType", new Document("$eq", 2)));
-        if (params.getDataType().equals(1)) {
-            dList2.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
-        List<Document> dList3 = new ArrayList<>(2);
-        dList3.add(new Document("resultType", new Document("$eq", 3)));
-        if (params.getDataType().equals(1)) {
-            dList3.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
-        List<Document> dList4 = new ArrayList<>(2);
-        dList4.add(new Document("resultType", new Document("$eq", 4)));
-        if (params.getDataType().equals(1)) {
-            dList4.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
-        Document normalFilter = new Document("$and", dList1);
-        Document noDataFilter = new Document("$and", dList2);
-        Document trFilter = new Document("$and", dList3);
-        Document littleFilter = new Document("$and", dList4);
-        List<Document> lists = Arrays.asList(normalFilter, noDataFilter, trFilter, littleFilter);
-        List<String> rList = lists.stream().map(filter -> {
-            // 鏋勫缓鑱氬悎绠¢亾
-            List<Document> pipeline = Arrays.asList(
-                    new Document("$match", filter),
-                    // $group 鍘婚噸
-                    new Document("$group", new Document("_id", "$externalIndexCode")),
-                    new Document("$count", "uniqueDeviceIds")
-            );
-            // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
-            AggregateIterable<Document> result = collection.aggregate(pipeline);
-            Integer uniqueDeviceIdCount = 0;
-            for (Document doc : result) {
-                uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds");
-                break; // 涓嶉渶瑕佺户缁亶鍘嗭紝鍥犱负 $count 鍙細浜х敓涓�涓粨鏋�
+        List<TMonitorResult> resultList = mongoTemplate.find(query, TMonitorResult.class);
+        resultList.forEach(item->{
+            if(null != item.getOnline() && item.getOnline()){
+                item.setOnlineStr("鍦ㄧ嚎");
+            }else {
+                item.setOnlineStr("绂荤嚎");
             }
-            return uniqueDeviceIdCount + "";
-        }).collect(Collectors.toList());
+        });
+        params.setDeptTag(-1);
+        params.setDeviceType(3);
+        // 缁熻璁惧鏁伴噺
+        Integer distinctCount = pointMapper.distinctCount(params);
 
         Date now = new Date();
         List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
@@ -1594,6 +1445,8 @@
             BigDecimal count = BigDecimal.valueOf(videoList.size());
             onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
         }
+        List<String> rList = new ArrayList<>(2);
+        rList.add(distinctCount + "");
         rList.add(this.remove0(onlineRate));
         HashMap<String, Object> map = new HashMap<>();
         map.put("count", rList);
@@ -1622,24 +1475,16 @@
 
         List<Document> dList1 = new ArrayList<>(2);
         dList1.add(new Document("ip.error", new Document("$eq", Boolean.TRUE)));
-        if (params.getDataType().equals(1)) {
-            dList1.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList1);
         List<Document> dList2 = new ArrayList<>(2);
         dList2.add(new Document("macdz.error", new Document("$eq", Boolean.TRUE)));
-        if (params.getDataType().equals(1)) {
-            dList2.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList2);
         List<Document> dList3 = new ArrayList<>(2);
         dList3.add(new Document("latitude.error", new Document("$eq", Boolean.TRUE)));
-        if (params.getDataType().equals(1)) {
-            dList3.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList3);
         List<Document> dList4 = new ArrayList<>(2);
         dList4.add(new Document("longitude.error", new Document("$eq", Boolean.TRUE)));
-        if (params.getDataType().equals(1)) {
-            dList4.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList4);
         Document ipErrFilter = new Document("$and", dList1);
         Document macdzErrFilter = new Document("$and", dList2);
         Document latitudeErrFilter = new Document("$and", dList3);
@@ -1703,24 +1548,16 @@
 
         List<Document> dList1 = new ArrayList<>(2);
         dList1.add(new Document("lalType", new Document("$eq", 1)));
-        if (params.getDataType().equals(1)) {
-            dList1.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList1);
         List<Document> dList2 = new ArrayList<>(2);
         dList2.add(new Document("lalType", new Document("$eq", 2)));
-        if (params.getDataType().equals(1)) {
-            dList2.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList2);
         List<Document> dList3 = new ArrayList<>(2);
         dList3.add(new Document("lalType", new Document("$eq", 3)));
-        if (params.getDataType().equals(1)) {
-            dList3.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList3);
         List<Document> dList4 = new ArrayList<>(2);
         dList4.add(new Document("lalType", new Document("$eq", 4)));
-        if (params.getDataType().equals(1)) {
-            dList4.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList4);
         Document ipErrFilter = new Document("$and", dList1);
         Document macdzErrFilter = new Document("$and", dList2);
         Document latitudeErrFilter = new Document("$and", dList3);
@@ -1784,24 +1621,16 @@
 
         List<Document> dList1 = new ArrayList<>(2);
         dList1.add(new Document("lalType", new Document("$eq", 1)));
-        if (params.getDataType().equals(1)) {
-            dList1.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList1);
         List<Document> dList2 = new ArrayList<>(2);
         dList2.add(new Document("lalType", new Document("$eq", 2)));
-        if (params.getDataType().equals(1)) {
-            dList2.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList2);
         List<Document> dList3 = new ArrayList<>(2);
         dList3.add(new Document("lalType", new Document("$eq", 3)));
-        if (params.getDataType().equals(1)) {
-            dList3.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList3);
         List<Document> dList4 = new ArrayList<>(2);
         dList4.add(new Document("lalType", new Document("$eq", 4)));
-        if (params.getDataType().equals(1)) {
-            dList4.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList4);
         Document ipErrFilter = new Document("$and", dList1);
         Document macdzErrFilter = new Document("$and", dList2);
         Document latitudeErrFilter = new Document("$and", dList3);
@@ -1866,19 +1695,13 @@
 
         List<Document> dList1 = new ArrayList<>(2);
         dList1.add(new Document("snapResult", new Document("$eq", 1)));
-        if (params.getDataType().equals(1)) {
-            dList1.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList1);
         List<Document> dList2 = new ArrayList<>(2);
         dList2.add(new Document("snapResult", new Document("$eq", 2)));
-        if (params.getDataType().equals(1)) {
-            dList2.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList2);
         List<Document> dList3 = new ArrayList<>(2);
         dList3.add(new Document("snapResult", new Document("$eq", 4)));
-        if (params.getDataType().equals(1)) {
-            dList3.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList3);
         Document ipErrFilter = new Document("$and", dList1);
         Document macdzErrFilter = new Document("$and", dList2);
         Document longitudeErrFilter = new Document("$and", dList3);
@@ -1942,19 +1765,13 @@
 
         List<Document> dList1 = new ArrayList<>(2);
         dList1.add(new Document("snapResult", new Document("$eq", 1)));
-        if (params.getDataType().equals(1)) {
-            dList1.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList1);
         List<Document> dList2 = new ArrayList<>(2);
         dList2.add(new Document("snapResult", new Document("$eq", 2)));
-        if (params.getDataType().equals(1)) {
-            dList2.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList2);
         List<Document> dList3 = new ArrayList<>(2);
         dList3.add(new Document("snapResult", new Document("$eq", 4)));
-        if (params.getDataType().equals(1)) {
-            dList3.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
-        }
+        setTag(params,dList3);
         Document ipErrFilter = new Document("$and", dList1);
         Document macdzErrFilter = new Document("$and", dList2);
         Document longitudeErrFilter = new Document("$and", dList3);
@@ -2059,4 +1876,17 @@
         DF.setDecimalSeparatorAlwaysShown(false);
         return DF.format(rate) + "%";
     }
+
+    /**
+     * 璁剧疆鏍囩鎼滅储鏉′欢
+     * @param params
+     * @param dList
+     */
+    private void setTag(DataCenterQuery params, List<Document> dList) {
+        if (params.getDataType().equals(1)) {
+            dList.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
+        } else if (params.getDataType().equals(2)) {
+            dList.add(new Document("deptTag", new Document("$eq", Boolean.TRUE)));
+        }
+    }
 }

--
Gitblit v1.8.0