From 746a85a842adc99322b364d1c564a624dce62429 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期三, 30 十月 2024 23:01:49 +0800
Subject: [PATCH] 工单阈值bug、工单分页故障查询bug、工单未进入下发表bug

---
 ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java |  551 +++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 372 insertions(+), 179 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 c3a37f7..0c7bf7f 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
@@ -13,7 +13,9 @@
 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.DataCenter.MonitorQualifyResultVO;
 import com.ycl.platform.domain.vo.PointDetailVO;
+import com.ycl.platform.domain.vo.home.HomeFaceVO;
 import com.ycl.platform.mapper.ImageResourceSecurityDetailMapper;
 import com.ycl.platform.mapper.YwPointMapper;
 import com.ycl.platform.service.*;
@@ -21,8 +23,10 @@
 import com.ycl.system.page.PageUtil;
 import com.ycl.utils.DateUtils;
 import com.ycl.utils.MongoUtil;
+import com.ycl.utils.bean.BeanUtils;
 import constant.ApiConstants;
 import constant.CheckConstants;
+import enumeration.general.AreaDeptEnum;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.collections.CollectionUtils;
 import org.bson.Document;
@@ -38,6 +42,7 @@
 import java.math.RoundingMode;
 import java.text.DecimalFormat;
 import java.util.*;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 /**
@@ -453,34 +458,40 @@
     @Override
     public Result videoOneMachineDocumentRegister(DataCenterQuery params) {
         List<String> likeFileds = Arrays.asList("ip.showValue", "name.showValue", "serialNumber.showValue");
-        Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+        List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, TIME_FIELD, likeFileds, null);
+        Query query = new Query();
+        Criteria and = new Criteria();
+        if(params.getOption()!=null){
+            if(params.getOption() ==1){
+                andCriteria.add(Criteria.where("newDevice").is(Boolean.TRUE));
+            }else if(params.getOption() ==-1){
+                andCriteria.add(Criteria.where("newDevice").is(Boolean.FALSE));
+            }
+        }
+        and.andOperator(andCriteria);
+        query = Query.query(and);
         long total = mongoTemplate.count(query, MonitorQualifyResult.class);
         MongoUtil.setPage(query, params, TIME_FIELD);
         List<MonitorQualifyResult> resultList = mongoTemplate.find(query, MonitorQualifyResult.class);
-
+        List<MonitorQualifyResultVO> resultVOS = new ArrayList<>();
+        for (MonitorQualifyResult result : resultList) {
+            MonitorQualifyResultVO vo = MonitorQualifyResult.getVO(result);
+            resultVOS.add(vo);
+        }
         // 缁熻鏁伴噺
         MongoDatabase database = mongoTemplate.getDb();
         MongoCollection<Document> collection = database.getCollection("uy_monitor_qualify");
-
+        //鎬绘暟
         List<Document> dList1 = new ArrayList<>(2);
-        dList1.add(new Document("ip.error", new Document("$eq", Boolean.TRUE)));
         setTag(params, dList1);
+        Document totalFilter = new Document("$and",dList1);
+        //鏂拌澶囨暟
         List<Document> dList2 = new ArrayList<>(2);
-        dList2.add(new Document("macdz.error", 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)));
-        setTag(params, dList3);
-        List<Document> dList4 = new ArrayList<>(2);
-        dList4.add(new Document("longitude.error", 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);
-        Document longitudeErrFilter = new Document("$and", dList4);
+        dList2.add(new Document("newDevice",Boolean.TRUE));
+        Document newFilter = new Document("$and",dList2);
 
-        List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, latitudeErrFilter, longitudeErrFilter);
+        List<Document> lists = Arrays.asList(totalFilter, newFilter);
         List<String> rList = lists.stream().map(filter -> {
             // 鏋勫缓鑱氬悎绠¢亾
             List<Document> pipeline = Arrays.asList(
@@ -499,11 +510,11 @@
             return uniqueDeviceIdCount + "";
         }).collect(Collectors.toList());
 
-        Date now = new Date();
         List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
                 .select(CheckIndexVideo::getMonitorRegistration)
                 .eq(params.getDataType().equals(1), CheckIndexVideo::getExamineTag, CheckConstants.Examine_Tag_Province)
-                .between(CheckIndexVideo::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
+                .eq(params.getDataType().equals(2), CheckIndexVideo::getExamineTag, CheckConstants.Examine_Tag_Dept)
+                .between(CheckIndexVideo::getCreateTime, DateUtils.getDayStart(params.getStartTime()), DateUtils.getDayEnd(params.getEndTime()))
                 .list();
         BigDecimal onlineRate = BigDecimal.ZERO;
         if (CollectionUtils.isNotEmpty(videoList)) {
@@ -514,7 +525,7 @@
         rList.add(this.remove0(onlineRate));
         HashMap<String, Object> map = new HashMap<>();
         map.put("count", rList);
-        map.put("list", resultList);
+        map.put("list", resultVOS);
         return Result.ok().data(map).total(total);
     }
 
@@ -527,34 +538,99 @@
     @Override
     public Result videoOneMachineDocumentQualified(DataCenterQuery params) {
         List<String> likeFileds = Arrays.asList("ip.showValue", "name.showValue", "serialNumber.showValue");
-        Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+        List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, TIME_FIELD, likeFileds, null);
+        Query query = new Query();
+        Criteria and = new Criteria();
+        and.andOperator(andCriteria);
+        query = Query.query(and);
+        if(params.getOption()!=null){
+            if(params.getOption() ==1){
+                andCriteria.add(Criteria.where("serialNumber.error").is(Boolean.FALSE));
+                andCriteria.add(Criteria.where("name.error").is(Boolean.FALSE));
+                andCriteria.add(Criteria.where("civilCode.error").is(Boolean.FALSE));
+                andCriteria.add(Criteria.where("integrated_device.error").is(Boolean.FALSE));
+                andCriteria.add(Criteria.where("jkdwlx.error").is(Boolean.FALSE));
+                andCriteria.add(Criteria.where("latitude.error").is(Boolean.FALSE));
+                andCriteria.add(Criteria.where("longitude.error").is(Boolean.FALSE));
+                andCriteria.add(Criteria.where("macdz.error").is(Boolean.FALSE));
+                andCriteria.add(Criteria.where("name.error").is(Boolean.FALSE));
+                andCriteria.add(Criteria.where("sbzt.error").is(Boolean.FALSE));
+                andCriteria.add(Criteria.where("sxjcjqy.error").is(Boolean.FALSE));
+                andCriteria.add(Criteria.where("sxjgnlx.error").is(Boolean.FALSE));
+                Criteria and2 = new Criteria();
+                and2.andOperator(andCriteria);
+                query = Query.query(and2);
+            }else if(params.getOption() ==-1){
+                Criteria c1 = Criteria.where("serialNumber.error").is(Boolean.TRUE);
+                Criteria c2 = Criteria.where("name.error").is(Boolean.TRUE);
+                Criteria c3 = Criteria.where("civilCode.error").is(Boolean.TRUE);
+                Criteria c4 = Criteria.where("integrated_device.error").is(Boolean.TRUE);
+                Criteria c5 = Criteria.where("jkdwlx.error").is(Boolean.TRUE);
+                Criteria c6 = Criteria.where("latitude.error").is(Boolean.TRUE);
+                Criteria c7 = Criteria.where("longitude.error").is(Boolean.TRUE);
+                Criteria c8 = Criteria.where("macdz.error").is(Boolean.TRUE);
+                Criteria c9 = Criteria.where("name.error").is(Boolean.TRUE);
+                Criteria c10 = Criteria.where("sbzt.error").is(Boolean.TRUE);
+                Criteria c11 = Criteria.where("sxjcjqy.error").is(Boolean.TRUE);
+                Criteria c12 = Criteria.where("sxjgnlx.error").is(Boolean.TRUE);
+                Criteria orOperator = new Criteria().orOperator(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12);
+                orOperator.andOperator(andCriteria);
+                query = Query.query(orOperator);
+            }
+        }
 
         long total = mongoTemplate.count(query, MonitorQualifyResult.class);
         MongoUtil.setPage(query, params, TIME_FIELD);
         List<MonitorQualifyResult> resultList = mongoTemplate.find(query, MonitorQualifyResult.class);
-
+        List<MonitorQualifyResultVO> resultVOS = new ArrayList<>();
+        for (MonitorQualifyResult result : resultList) {
+            MonitorQualifyResultVO vo = MonitorQualifyResult.getVO(result);
+            resultVOS.add(vo);
+        }
         // 缁熻鏁伴噺
         MongoDatabase database = mongoTemplate.getDb();
         MongoCollection<Document> collection = database.getCollection("uy_monitor_qualify");
-
+        //鎬绘暟
         List<Document> dList1 = new ArrayList<>(2);
-        dList1.add(new Document("ip.error", new Document("$eq", Boolean.TRUE)));
         setTag(params, dList1);
+        Document totalFilter = new Document("$and",dList1);
+        //鍚堟牸鏁�
         List<Document> dList2 = new ArrayList<>(2);
-        dList2.add(new Document("macdz.error", 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)));
-        setTag(params, dList3);
-        List<Document> dList4 = new ArrayList<>(2);
-        dList4.add(new Document("longitude.error", 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);
-        Document longitudeErrFilter = new Document("$and", dList4);
+        dList2.add(new Document("serialNumber.error",Boolean.FALSE));
+        dList2.add(new Document("name.error",Boolean.FALSE));
+        dList2.add(new Document("civilCode.error",Boolean.FALSE));
+        dList2.add(new Document("integrated_device.error",Boolean.FALSE));
+        dList2.add(new Document("jkdwlx.error",Boolean.FALSE));
+        dList2.add(new Document("latitude.error",Boolean.FALSE));
+        dList2.add(new Document("longitude.error",Boolean.FALSE));
+        dList2.add(new Document("macdz.error",Boolean.FALSE));
+        dList2.add(new Document("name.error",Boolean.FALSE));
+        dList2.add(new Document("sbzt.error",Boolean.FALSE));
+        dList2.add(new Document("sxjcjqy.error",Boolean.FALSE));
+        dList2.add(new Document("sxjgnlx.error",Boolean.FALSE));
+        setTag(params,dList2);
+        Document qualifyFilter = new Document("$and",dList2);
+        //涓嶅悎鏍兼暟
+        List<Document> dList3  = new ArrayList<>(2);
+        setTag(params,dList3);
+        List<Document> errorConditions = new ArrayList<>();
+        errorConditions.add(new Document("serialNumber.error", new Document("$eq", Boolean.TRUE)));
+        errorConditions.add(new Document("name.error", new Document("$eq", Boolean.TRUE)));
+        errorConditions.add(new Document("civilCode.error", new Document("$eq", Boolean.TRUE)));
+        errorConditions.add(new Document("integrated_device.error", new Document("$eq", Boolean.TRUE)));
+        errorConditions.add(new Document("jkdwlx.error", new Document("$eq", Boolean.TRUE)));
+        errorConditions.add(new Document("latitude.error", new Document("$eq", Boolean.TRUE)));
+        errorConditions.add(new Document("longitude.error", new Document("$eq", Boolean.TRUE)));
+        errorConditions.add(new Document("macdz.error", new Document("$eq", Boolean.TRUE)));
+        errorConditions.add(new Document("name.error", new Document("$eq", Boolean.TRUE)));
+        errorConditions.add(new Document("sbzt.error", new Document("$eq", Boolean.TRUE)));
+        errorConditions.add(new Document("sxjcjqy.error", new Document("$eq", Boolean.TRUE)));
+        errorConditions.add(new Document("sxjgnlx.error", new Document("$eq", Boolean.TRUE)));
+        Document errorFilter = new Document("$or", errorConditions);
+        dList3.add(errorFilter);
+        Document unQualifyFilter = new Document("$and", dList3);
 
-        List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, latitudeErrFilter, longitudeErrFilter);
+        List<Document> lists = Arrays.asList(totalFilter, qualifyFilter, unQualifyFilter);
         List<String> rList = lists.stream().map(filter -> {
             // 鏋勫缓鑱氬悎绠¢亾
             List<Document> pipeline = Arrays.asList(
@@ -573,11 +649,11 @@
             return uniqueDeviceIdCount + "";
         }).collect(Collectors.toList());
 
-        Date now = new Date();
         List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
                 .select(CheckIndexVideo::getMonitorQualification)
                 .eq(params.getDataType().equals(1), CheckIndexVideo::getExamineTag, CheckConstants.Examine_Tag_Province)
-                .between(CheckIndexVideo::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
+                .eq(params.getDataType().equals(2), CheckIndexVideo::getExamineTag, CheckConstants.Examine_Tag_Dept)
+                .between(CheckIndexVideo::getCreateTime, DateUtils.getDayStart(params.getStartTime()), DateUtils.getDayEnd(params.getEndTime()))
                 .list();
         BigDecimal onlineRate = BigDecimal.ZERO;
         if (CollectionUtils.isNotEmpty(videoList)) {
@@ -588,47 +664,50 @@
         rList.add(this.remove0(onlineRate));
         HashMap<String, Object> map = new HashMap<>();
         map.put("count", rList);
-        map.put("list", resultList);
+        map.put("list", resultVOS);
         return Result.ok().data(map).total(total);
     }
 
     /**
      * 瑙嗛锛氭。妗堣�冩牳姣�
-     *
+     * 妗f鐣欏瓨鎬婚噺锛歮ongo瀛樼殑鎵�鏈夊幓閲嶅悗鐨勬。妗�
+     * 褰撴棩妗f锛氬綋鏃ョ殑妗f
+     * 妗f鑰冩牳姣� = 褰撴棩妗f/妗f鐣欏瓨鎬婚噺
      * @param params
-     * @return
+     * @return1
      */
     @Override
     public Result videoAssessmentFileRatio(DataCenterQuery params) {
         List<String> likeFileds = Arrays.asList("ip.showValue", "name.showValue", "serialNumber.showValue");
-        Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+        List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, TIME_FIELD, likeFileds, null);
+        Query query = new Query();
+        Criteria and = new Criteria();
+        and.andOperator(andCriteria);
+        query = Query.query(and);
         long total = mongoTemplate.count(query, MonitorQualifyResult.class);
         MongoUtil.setPage(query, params, TIME_FIELD);
         List<MonitorQualifyResult> resultList = mongoTemplate.find(query, MonitorQualifyResult.class);
-
+        List<MonitorQualifyResultVO> resultVOS = new ArrayList<>();
+        for (MonitorQualifyResult result : resultList) {
+            MonitorQualifyResultVO vo = MonitorQualifyResult.getVO(result);
+            resultVOS.add(vo);
+        }
         // 缁熻鏁伴噺
         MongoDatabase database = mongoTemplate.getDb();
         MongoCollection<Document> collection = database.getCollection("uy_monitor_qualify");
-
+        //鎬绘暟
         List<Document> dList1 = new ArrayList<>(2);
-        dList1.add(new Document("ip.error", new Document("$eq", Boolean.TRUE)));
-        setTag(params, dList1);
+        DataCenterQuery totalParams = new DataCenterQuery();
+        BeanUtils.copyProperties(params,totalParams);
+        totalParams.setStartTime(null);
+        setTag(totalParams, dList1);
+        Document totalFilter = new Document("$and",dList1);
+        //褰撴棩妗f鏁�
         List<Document> dList2 = new ArrayList<>(2);
-        dList2.add(new Document("macdz.error", 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)));
-        setTag(params, dList3);
-        List<Document> dList4 = new ArrayList<>(2);
-        dList4.add(new Document("longitude.error", 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);
-        Document longitudeErrFilter = new Document("$and", dList4);
+        Document newFilter = new Document("$and",dList2);
 
-        List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, latitudeErrFilter, longitudeErrFilter);
+        List<Document> lists = Arrays.asList(totalFilter, newFilter);
         List<String> rList = lists.stream().map(filter -> {
             // 鏋勫缓鑱氬悎绠¢亾
             List<Document> pipeline = Arrays.asList(
@@ -647,10 +726,22 @@
             return uniqueDeviceIdCount + "";
         }).collect(Collectors.toList());
 
-        rList.add("0%");
+        List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
+                .select(CheckIndexVideo::getArchivesRate)
+                .eq(params.getDataType().equals(1), CheckIndexVideo::getExamineTag, CheckConstants.Examine_Tag_Province)
+                .eq(params.getDataType().equals(2), CheckIndexVideo::getExamineTag, CheckConstants.Examine_Tag_Dept)
+                .between(CheckIndexVideo::getCreateTime, DateUtils.getDayStart(params.getStartTime()), DateUtils.getDayEnd(params.getEndTime()))
+                .list();
+        BigDecimal onlineRate = BigDecimal.ZERO;
+        if (CollectionUtils.isNotEmpty(videoList)) {
+            BigDecimal sum = videoList.stream().map(CheckIndexVideo::getArchivesRate).reduce(BigDecimal.ZERO, BigDecimal::add);
+            BigDecimal count = BigDecimal.valueOf(videoList.size());
+            onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+        }
+        rList.add(this.remove0(onlineRate));
         HashMap<String, Object> map = new HashMap<>();
         map.put("count", rList);
-        map.put("list", resultList);
+        map.put("list", resultVOS);
         return Result.ok().data(map).total(total);
     }
 
@@ -671,7 +762,12 @@
         long total = mongoTemplate.count(query, RecordMetaDSumResult.class);
         MongoUtil.setPage(query, params, "createTime");
         List<RecordMetaDSumResult> resultList = mongoTemplate.find(query, RecordMetaDSumResult.class);
-
+        //缈昏瘧琛屾斂鍖哄煙
+        resultList.forEach(item->{
+            String areaCode = item.getArealayername().substring(0, 6);
+            AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromCode(areaCode);
+            if(areaDeptEnum!=null) item.setArealayername(areaDeptEnum.getName());
+        });
         // 缁熻鏁伴噺
         MongoDatabase database = mongoTemplate.getDb();
         MongoCollection<Document> collection = database.getCollection("uy_record_meta_d_sum");
@@ -741,7 +837,12 @@
         long total = mongoTemplate.count(query, RecordMetaDSumResult.class);
         MongoUtil.setPage(query, params, "createTime");
         List<RecordMetaDSumResult> resultList = mongoTemplate.find(query, RecordMetaDSumResult.class);
-
+        //缈昏瘧琛屾斂鍖哄煙
+        resultList.forEach(item->{
+            String areaCode = item.getArealayername().substring(0, 6);
+            AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromCode(areaCode);
+            if(areaDeptEnum!=null) item.setArealayername(areaDeptEnum.getName());
+        });
         // 缁熻鏁伴噺
         MongoDatabase database = mongoTemplate.getDb();
         MongoCollection<Document> collection = database.getCollection("uy_record_meta_d_sum");
@@ -811,7 +912,12 @@
         long total = mongoTemplate.count(query, RecordMetaDSumResult.class);
         MongoUtil.setPage(query, params, "createTime");
         List<RecordMetaDSumResult> resultList = mongoTemplate.find(query, RecordMetaDSumResult.class);
-
+        //缈昏瘧琛屾斂鍖哄煙
+        resultList.forEach(item->{
+            String areaCode = item.getArealayername().substring(0, 6);
+            AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromCode(areaCode);
+            if(areaDeptEnum!=null) item.setArealayername(areaDeptEnum.getName());
+        });
         // 缁熻鏁伴噺
         MongoDatabase database = mongoTemplate.getDb();
         MongoCollection<Document> collection = database.getCollection("uy_record_meta_d_sum");
@@ -900,6 +1006,9 @@
         List<String> likeFileds = Arrays.asList("deviceNo", "osdName");
         List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, "checkTime", likeFileds, 3);
         Query query = new Query();
+        Criteria and = new Criteria();
+        and.andOperator(andCriteria);
+        query = Query.query(and);
         //涓嬫媺妗嗘爣娉ㄦ纭煡璇㈡潯浠�
         if (params.getOption() != null) {
             if(params.getOption()==1) {
@@ -908,9 +1017,9 @@
                 andCriteria.add(Criteria.where("osdProvinceCorrect").is(1));
                 andCriteria.add(Criteria.where("osdCityCorrect").is(1));
                 andCriteria.add(Criteria.where("osdPartCorrect").is(1));
-                Criteria and = new Criteria();
-                and.andOperator(andCriteria);
-                query = Query.query(and);
+                Criteria and2 = new Criteria();
+                and2.andOperator(andCriteria);
+                query = Query.query(and2);
             }else if(params.getOption()==-1){
                 // 浣跨敤$or鏉′欢杩炴帴澶氫釜瀛楁妫�鏌ワ紝姣忎釜瀛楁妫�鏌ユ槸鍚︾瓑浜�-1
                 Criteria c1 = Criteria.where("osdNameCorrect").is(-1);
@@ -957,11 +1066,10 @@
         setTag(params, dList1);
         Document osdCorrectFilter = new Document("$and", dList1);
         //寮傚父鏁�
+        List<Document> dList2 = new ArrayList<>(2);
+        setTag(params,dList2);
         Document importantTagCondition = new Document("importantTag", Boolean.TRUE);
-        Document mongoCreateTimeRange = new Document()
-                .append("$gte", params.getStartTime())
-                .append("$lt", params.getEndTime());
-        Document mongoCreateTime = new Document("mongoCreateTime", mongoCreateTimeRange);
+        dList2.add(importantTagCondition);
         List<Document> errorConditions = new ArrayList<>();
         errorConditions.add(new Document("osdNameCorrect", new Document("$eq", -1)));
         errorConditions.add(new Document("osdTimeCorrect", new Document("$eq", -1)));
@@ -969,8 +1077,12 @@
         errorConditions.add(new Document("osdCityCorrect", new Document("$eq", -1)));
         errorConditions.add(new Document("osdPartCorrect", new Document("$eq", -1)));
         Document errorFilter = new Document("$or", errorConditions);
-        Document osdErrorFilter = new Document("$and", Arrays.asList(importantTagCondition,mongoCreateTime, errorFilter));
+        dList2.add(errorFilter);
+        Document osdErrorFilter = new Document("$and", dList2);
         //TODO锛氭湭鐭ユ暟  鏂板0鐨勭姸鎬�
+        List<Document> dList3 = new ArrayList<>(2);
+        setTag(params,dList3);
+        dList3.add(importantTagCondition);
         List<Document> unknownConditions = new ArrayList<>();
         unknownConditions.add(new Document("osdNameCorrect", new Document("$eq", 0)));
         unknownConditions.add(new Document("osdTimeCorrect", new Document("$eq", 0)));
@@ -979,7 +1091,8 @@
         unknownConditions.add(new Document("osdPartCorrect", new Document("$eq", 0)));
         // 浣跨敤$or閫昏緫缁勫悎鍓╀綑鐨勬潯浠�
         Document unknownFilter = new Document("$or", unknownConditions);
-        Document osdUnknownFilter = new Document("$and", Arrays.asList(importantTagCondition, mongoCreateTime,unknownFilter));
+        dList3.add(unknownFilter);
+        Document osdUnknownFilter = new Document("$and", dList3);
 
         List<Document> lists = Arrays.asList(osdFilter, osdCorrectFilter, osdErrorFilter,osdUnknownFilter);
         List<String> rList = lists.stream().map(filter -> {
@@ -1092,11 +1205,10 @@
         setTag(params, dList1);
         Document osdCorrectFilter = new Document("$and", dList1);
         //寮傚父鏁�
+        List<Document> dList2 = new ArrayList<>(2);
+        setTag(params,dList2);
         Document importantTagCondition = new Document("importantTag", Boolean.TRUE);
-        Document mongoCreateTimeRange = new Document()
-                .append("$gte", params.getStartTime())
-                .append("$lt", params.getEndTime());
-        Document mongoCreateTime = new Document("mongoCreateTime", mongoCreateTimeRange);
+        dList2.add(importantTagCondition);
         List<Document> errorConditions = new ArrayList<>();
         errorConditions.add(new Document("osdNameCorrect", new Document("$eq", -1)));
         errorConditions.add(new Document("osdTimeCorrect", new Document("$eq", -1)));
@@ -1104,8 +1216,12 @@
         errorConditions.add(new Document("osdCityCorrect", new Document("$eq", -1)));
         errorConditions.add(new Document("osdPartCorrect", new Document("$eq", -1)));
         Document errorFilter = new Document("$or", errorConditions);
-        Document osdErrorFilter = new Document("$and", Arrays.asList(importantTagCondition,mongoCreateTime, errorFilter));
+        dList2.add(errorFilter);
+        Document osdErrorFilter = new Document("$and", dList2);
         //TODO锛氭湭鐭ユ暟  鏂板0鐨勭姸鎬�
+        List<Document> dList3 = new ArrayList<>(2);
+        setTag(params,dList3);
+        dList3.add(importantTagCondition);
         List<Document> unknownConditions = new ArrayList<>();
         unknownConditions.add(new Document("osdNameCorrect", new Document("$eq", 0)));
         unknownConditions.add(new Document("osdTimeCorrect", new Document("$eq", 0)));
@@ -1114,7 +1230,8 @@
         unknownConditions.add(new Document("osdPartCorrect", new Document("$eq", 0)));
         // 浣跨敤$or閫昏緫缁勫悎鍓╀綑鐨勬潯浠�
         Document unknownFilter = new Document("$or", unknownConditions);
-        Document osdUnknownFilter = new Document("$and", Arrays.asList(importantTagCondition, mongoCreateTime,unknownFilter));
+        dList3.add(unknownFilter);
+        Document osdUnknownFilter = new Document("$and", dList3);
 
         List<Document> lists = Arrays.asList(osdFilter, osdCorrectFilter, osdErrorFilter,osdUnknownFilter);
         List<String> rList = lists.stream().map(filter -> {
@@ -1165,36 +1282,39 @@
     public Result vehicleViewDockStable(DataCenterQuery params) {
         List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
         Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+        //鍔燚ataType涓鸿溅杈�
+        query.addCriteria(Criteria.where("dataType").is(ApiConstants.HK_DataType_CAR));
+        if(params.getOption()!=null){
+            if(ApiConstants.HK_SnapCount_ResultType_Normal.equals(params.getOption())) {
+                query.addCriteria(Criteria.where("resultType").is(ApiConstants.HK_SnapCount_ResultType_Normal));
+            }else if(ApiConstants.HK_SnapCount_ResultType_Null.equals(params.getOption())){
+                query.addCriteria(Criteria.where("resultType").is(ApiConstants.HK_SnapCount_ResultType_Null));
+            }else if(ApiConstants.HK_SnapCount_ResultType_Descent.equals(params.getOption())){
+                query.addCriteria(Criteria.where("resultType").is(ApiConstants.HK_SnapCount_ResultType_Descent));
+            }else if(ApiConstants.HK_SnapCount_ResultType_Low.equals(params.getOption())){
+                query.addCriteria(Criteria.where("resultType").is(ApiConstants.HK_SnapCount_ResultType_Low));
+            }
+        }
         long total = mongoTemplate.count(query, SnapshotDataMonitorResult.class);
         MongoUtil.setPage(query, params, TIME_FIELD);
         List<SnapshotDataMonitorResult> resultList = mongoTemplate.find(query, SnapshotDataMonitorResult.class);
-
+        resultList.forEach(item ->item.setResultTypeText(item.getResultTypeText()));
         // 缁熻鏁伴噺
         MongoDatabase database = mongoTemplate.getDb();
         MongoCollection<Document> collection = database.getCollection("hk_snapshot_data_monitor");
 
-        List<Document> dList1 = new ArrayList<>(2);
-        dList1.add(new Document("importantTag", Boolean.TRUE));
-        dList1.add(new Document("resultType", new Document("$eq", 1)));
-        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)));
+        dList2.add(new Document("resultType", new Document("$eq", 1)));
+        dList2.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_CAR)));
         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)));
+        dList3.add(new Document("resultType", new Document("$eq", 2)));
+        dList3.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_CAR)));
         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)));
-        setTag(params, dList4);
-        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<Document> lists = Arrays.asList(noDataFilter, trFilter);
         List<String> rList = lists.stream().map(filter -> {
             // 鏋勫缓鑱氬悎绠¢亾
             List<Document> pipeline = Arrays.asList(
@@ -1212,17 +1332,32 @@
             }
             return uniqueDeviceIdCount + "";
         }).collect(Collectors.toList());
-
-        Date now = new Date();
-        List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
+        // 鏋勫缓鍩烘湰鐨�$match鏉′欢
+        List<Document> matchConditions = new ArrayList<>();
+        setTag(params, matchConditions);
+        matchConditions.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_CAR)));
+        List<Document> pipeline = Arrays.asList(
+                new Document("$match", new Document("$and", matchConditions)),
+                new Document("$group", new Document("_id", "$mongoCreateTime")
+                        .append("dataCount", new Document("$sum", "$dataCount"))
+                ));
+        // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
+        AggregateIterable<Document> result = collection.aggregate(pipeline);
+        int dataCount = 0;
+        for (Document doc : result) {
+            dataCount = doc.getInteger("dataCount");
+        }
+        rList.add(0,dataCount+"");
+        List<CheckIndexCar> carList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
                 .select(CheckIndexCar::getViewConnectStability)
                 .eq(params.getDataType().equals(1), CheckIndexCar::getExamineTag, CheckConstants.Examine_Tag_Province)
-                .between(CheckIndexCar::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
+                .eq(params.getDataType().equals(2), CheckIndexCar::getExamineTag, CheckConstants.Examine_Tag_Dept)
+                .between(CheckIndexCar::getCreateTime, DateUtils.getDayStart(params.getStartTime()), DateUtils.getDayEnd(params.getEndTime()))
                 .list();
         BigDecimal onlineRate = BigDecimal.ZERO;
-        if (CollectionUtils.isNotEmpty(videoList)) {
-            BigDecimal sum = videoList.stream().map(CheckIndexCar::getViewConnectStability).reduce(BigDecimal.ZERO, BigDecimal::add);
-            BigDecimal count = BigDecimal.valueOf(videoList.size());
+        if (CollectionUtils.isNotEmpty(carList)) {
+            BigDecimal sum = carList.stream().map(CheckIndexCar::getViewConnectStability).reduce(BigDecimal.ZERO, BigDecimal::add);
+            BigDecimal count = BigDecimal.valueOf(carList.size());
             onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
         }
         rList.add(this.remove0(onlineRate));
@@ -1337,33 +1472,45 @@
     @Override
     public Result vehicleNetDeviceDirectoryConsistency(DataCenterQuery params) {
         List<String> likeFileds = Arrays.asList("ip.showValue", "name.showValue", "serialNumber.showValue");
-        Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+        List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, TIME_FIELD, likeFileds, null);
+        // 1/2/3 瑙嗛/杞﹁締/浜鸿劯
+        Pattern pattern = Pattern.compile(".*2.*");
+        andCriteria.add(Criteria.where("sxjgnlx.value").regex(pattern));
+        Query query = new Query();
+        Criteria and = new Criteria();
+        if(params.getOption()!=null){
+            if(params.getOption() ==1){
+                andCriteria.add(Criteria.where("newDevice").is(Boolean.TRUE));
+            }else if(params.getOption() ==-1){
+                andCriteria.add(Criteria.where("newDevice").is(Boolean.FALSE));
+            }
+        }
+        and.andOperator(andCriteria);
+        query = Query.query(and);
         long total = mongoTemplate.count(query, MonitorQualifyResult.class);
         MongoUtil.setPage(query, params, TIME_FIELD);
         List<MonitorQualifyResult> resultList = mongoTemplate.find(query, MonitorQualifyResult.class);
-
-        // 缁熻鏁伴噺
+        List<MonitorQualifyResultVO> resultVOS = new ArrayList<>();
+        for (MonitorQualifyResult result : resultList) {
+            MonitorQualifyResultVO vo = MonitorQualifyResult.getVO(result);
+            resultVOS.add(vo);
+        }
+        //缁熻鏁伴噺
         MongoDatabase database = mongoTemplate.getDb();
         MongoCollection<Document> collection = database.getCollection("uy_monitor_qualify");
-
+        //鎬绘暟
         List<Document> dList1 = new ArrayList<>(2);
-        dList1.add(new Document("ip.error", new Document("$eq", Boolean.TRUE)));
         setTag(params, dList1);
+        dList1.add(new Document("sxjgnlx.value", new Document("$regex", ".*2.*")));
+        Document totalFilter = new Document("$and",dList1);
+        //鏂拌澶囨暟
         List<Document> dList2 = new ArrayList<>(2);
-        dList2.add(new Document("macdz.error", 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)));
-        setTag(params, dList3);
-        List<Document> dList4 = new ArrayList<>(2);
-        dList4.add(new Document("longitude.error", 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);
-        Document longitudeErrFilter = new Document("$and", dList4);
-        List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, latitudeErrFilter, longitudeErrFilter);
+        dList2.add(new Document("sxjgnlx.value", new Document("$regex", ".*2.*")));
+        dList2.add(new Document("newDevice",Boolean.TRUE));
+        Document newFilter = new Document("$and",dList2);
+
+        List<Document> lists = Arrays.asList(totalFilter, newFilter);
         List<String> rList = lists.stream().map(filter -> {
             // 鏋勫缓鑱氬悎绠¢亾
             List<Document> pipeline = Arrays.asList(
@@ -1382,11 +1529,11 @@
             return uniqueDeviceIdCount + "";
         }).collect(Collectors.toList());
 
-        Date now = new Date();
         List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
                 .select(CheckIndexCar::getDeviceDirectoryConsistent)
                 .eq(params.getDataType().equals(1), CheckIndexCar::getExamineTag, CheckConstants.Examine_Tag_Province)
-                .between(CheckIndexCar::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
+                .eq(params.getDataType().equals(2), CheckIndexCar::getExamineTag, CheckConstants.Examine_Tag_Dept)
+                .between(CheckIndexCar::getCreateTime, DateUtils.getDayStart(params.getStartTime()), DateUtils.getDayEnd(params.getEndTime()))
                 .list();
         BigDecimal onlineRate = BigDecimal.ZERO;
         if (CollectionUtils.isNotEmpty(videoList)) {
@@ -1397,7 +1544,7 @@
         rList.add(this.remove0(onlineRate));
         HashMap<String, Object> map = new HashMap<>();
         map.put("count", rList);
-        map.put("list", resultList);
+        map.put("list", resultVOS);
         return Result.ok().data(map).total(total);
     }
 
@@ -1410,7 +1557,19 @@
     @Override
     public Result vehicleCollectionConsistency(DataCenterQuery params) {
         List<String> likeFileds = Arrays.asList("externalIndexCode", "crossName");
-        Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+        List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, TIME_FIELD, likeFileds, null);
+        Query query = new Query();
+        Criteria and = new Criteria();
+        and.andOperator(andCriteria);
+        query = Query.query(and);
+        if(params.getOption()!=null){
+            if(params.getOption() ==1){
+                query.addCriteria(Criteria.where("lalType").is(ApiConstants.HK_Info_LayType_Normal));
+                query.addCriteria(Criteria.where("gbCodeType").is(ApiConstants.HK_Info_GbCodeType_Normal));
+            }else if(params.getOption() !=-1){
+
+            }
+        }
 
         long total = mongoTemplate.count(query, CrossDetailResult.class);
         MongoUtil.setPage(query, params, TIME_FIELD);
@@ -1421,23 +1580,23 @@
         MongoCollection<Document> collection = database.getCollection("hk_cross_detail");
 
         List<Document> dList1 = new ArrayList<>(2);
-        dList1.add(new Document("lalType", new Document("$eq", 1)));
         setTag(params, dList1);
         List<Document> dList2 = new ArrayList<>(2);
-        dList2.add(new Document("lalType", new Document("$eq", 2)));
+        dList2.add(new Document("lalType", new Document("$eq", 1)));
+        dList2.add(new Document("gbCodeType", new Document("$eq", 1)));
         setTag(params, dList2);
         List<Document> dList3 = new ArrayList<>(2);
-        dList3.add(new Document("lalType", new Document("$eq", 3)));
         setTag(params, dList3);
-        List<Document> dList4 = new ArrayList<>(2);
-        dList4.add(new Document("lalType", new Document("$eq", 4)));
-        setTag(params, dList4);
-        Document ipErrFilter = new Document("$and", dList1);
-        Document macdzErrFilter = new Document("$and", dList2);
-        Document latitudeErrFilter = new Document("$and", dList3);
-        Document longitudeErrFilter = new Document("$and", dList4);
+        List<Document> errorConditions = new ArrayList<>();
+        errorConditions.add(new Document("lalType",new Document("$eq",-1)));
+        errorConditions.add(new Document("gbCodeType",new Document("$eq",-1)));
+        Document errorDoc = new Document("$or",errorConditions);
+        dList3.add(errorDoc);
+        Document totalFilter = new Document("$and", dList1);
+        Document correctFilter = new Document("$and", dList2);
+        Document errorFilter = new Document("$and", dList3);
 
-        List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, latitudeErrFilter, longitudeErrFilter);
+        List<Document> lists = Arrays.asList(totalFilter, correctFilter, errorFilter);
         List<String> rList = lists.stream().map(filter -> {
             // 鏋勫缓鑱氬悎绠¢亾
             List<Document> pipeline = Arrays.asList(
@@ -1456,11 +1615,11 @@
             return uniqueDeviceIdCount + "";
         }).collect(Collectors.toList());
 
-        Date now = new Date();
         List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
                 .select(CheckIndexCar::getVehicleInformationCollectionAccuracy)
                 .eq(params.getDataType().equals(1), CheckIndexCar::getExamineTag, CheckConstants.Examine_Tag_Province)
-                .between(CheckIndexCar::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
+                .eq(params.getDataType().equals(2), CheckIndexCar::getExamineTag, CheckConstants.Examine_Tag_Dept)
+                .between(CheckIndexCar::getCreateTime, DateUtils.getDayStart(params.getStartTime()), DateUtils.getDayEnd(params.getEndTime()))
                 .list();
         BigDecimal onlineRate = BigDecimal.ZERO;
         if (CollectionUtils.isNotEmpty(videoList)) {
@@ -1729,32 +1888,39 @@
     public Result faceViewDockStable(DataCenterQuery params) {
         List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
         Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+        //鍔燚ataType涓鸿溅杈�
+        query.addCriteria(Criteria.where("dataType").is(ApiConstants.HK_DataType_FACE));
+        if(params.getOption()!=null){
+            if(ApiConstants.HK_SnapCount_ResultType_Normal.equals(params.getOption())) {
+                query.addCriteria(Criteria.where("resultType").is(ApiConstants.HK_SnapCount_ResultType_Normal));
+            }else if(ApiConstants.HK_SnapCount_ResultType_Null.equals(params.getOption())){
+                query.addCriteria(Criteria.where("resultType").is(ApiConstants.HK_SnapCount_ResultType_Null));
+            }else if(ApiConstants.HK_SnapCount_ResultType_Descent.equals(params.getOption())){
+                query.addCriteria(Criteria.where("resultType").is(ApiConstants.HK_SnapCount_ResultType_Descent));
+            }else if(ApiConstants.HK_SnapCount_ResultType_Low.equals(params.getOption())){
+                query.addCriteria(Criteria.where("resultType").is(ApiConstants.HK_SnapCount_ResultType_Low));
+            }
+        }
         long total = mongoTemplate.count(query, SnapshotDataMonitorResult.class);
         MongoUtil.setPage(query, params, TIME_FIELD);
         List<SnapshotDataMonitorResult> resultList = mongoTemplate.find(query, SnapshotDataMonitorResult.class);
-
+        resultList.forEach(item ->item.setResultTypeText(item.getResultTypeText()));
         // 缁熻鏁伴噺
         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)));
-        setTag(params, dList1);
         List<Document> dList2 = new ArrayList<>(2);
-        dList2.add(new Document("resultType", new Document("$eq", 2)));
+        dList2.add(new Document("resultType", new Document("$eq", 1)));
+        dList2.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_CAR)));
         setTag(params, dList2);
         List<Document> dList3 = new ArrayList<>(2);
-        dList3.add(new Document("resultType", new Document("$eq", 3)));
+        dList3.add(new Document("resultType", new Document("$eq", 2)));
+        dList3.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_CAR)));
         setTag(params, dList3);
-        List<Document> dList4 = new ArrayList<>(2);
-        dList4.add(new Document("resultType", new Document("$eq", 4)));
-        setTag(params, dList4);
-        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<Document> lists = Arrays.asList(noDataFilter, trFilter);
         List<String> rList = lists.stream().map(filter -> {
             // 鏋勫缓鑱氬悎绠¢亾
             List<Document> pipeline = Arrays.asList(
@@ -1772,12 +1938,27 @@
             }
             return uniqueDeviceIdCount + "";
         }).collect(Collectors.toList());
-
-        Date now = new Date();
+        // 鏋勫缓鍩烘湰鐨�$match鏉′欢
+        List<Document> matchConditions = new ArrayList<>();
+        setTag(params, matchConditions);
+        matchConditions.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_FACE)));
+        List<Document> pipeline = Arrays.asList(
+                new Document("$match", new Document("$and", matchConditions)),
+                new Document("$group", new Document("_id", "$mongoCreateTime")
+                        .append("dataCount", new Document("$sum", "$dataCount"))
+                ));
+        // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
+        AggregateIterable<Document> result = collection.aggregate(pipeline);
+        int dataCount = 0;
+        for (Document doc : result) {
+            dataCount = doc.getInteger("dataCount");
+        }
+        rList.add(0,dataCount+"");
         List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
                 .select(CheckIndexFace::getViewConnectStability)
                 .eq(params.getDataType().equals(1), CheckIndexFace::getExamineTag, CheckConstants.Examine_Tag_Province)
-                .between(CheckIndexFace::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
+                .eq(params.getDataType().equals(2), CheckIndexFace::getExamineTag, CheckConstants.Examine_Tag_Dept)
+                .between(CheckIndexFace::getCreateTime, DateUtils.getDayStart(params.getStartTime()), DateUtils.getDayEnd(params.getEndTime()))
                 .list();
         BigDecimal onlineRate = BigDecimal.ZERO;
         if (CollectionUtils.isNotEmpty(videoList)) {
@@ -1895,34 +2076,46 @@
      */
     @Override
     public Result faceDirectoryConsistency(DataCenterQuery params) {
-        List<String> likeFileds = Arrays.asList("serialNumber.showValue", "ip.showValue", "name.showValue");
-        Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+        List<String> likeFileds = Arrays.asList("ip.showValue", "name.showValue", "serialNumber.showValue");
+        List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, TIME_FIELD, likeFileds, null);
+        // 1/2/3 瑙嗛/杞﹁締/浜鸿劯
+        Pattern pattern = Pattern.compile(".*3.*");
+        andCriteria.add(Criteria.where("sxjgnlx.value").regex(pattern));
+        Query query = new Query();
+        Criteria and = new Criteria();
+        if(params.getOption()!=null){
+            if(params.getOption() ==1){
+                andCriteria.add(Criteria.where("newDevice").is(Boolean.TRUE));
+            }else if(params.getOption() ==-1){
+                andCriteria.add(Criteria.where("newDevice").is(Boolean.FALSE));
+            }
+        }
+        and.andOperator(andCriteria);
+        query = Query.query(and);
         long total = mongoTemplate.count(query, MonitorQualifyResult.class);
         MongoUtil.setPage(query, params, TIME_FIELD);
         List<MonitorQualifyResult> resultList = mongoTemplate.find(query, MonitorQualifyResult.class);
-
+        List<MonitorQualifyResultVO> resultVOS = new ArrayList<>();
+        for (MonitorQualifyResult result : resultList) {
+            MonitorQualifyResultVO vo = MonitorQualifyResult.getVO(result);
+            resultVOS.add(vo);
+        }
         // 缁熻鏁伴噺
         MongoDatabase database = mongoTemplate.getDb();
         MongoCollection<Document> collection = database.getCollection("uy_monitor_qualify");
-
+        //鎬绘暟
         List<Document> dList1 = new ArrayList<>(2);
-        dList1.add(new Document("ip.error", new Document("$eq", Boolean.TRUE)));
         setTag(params, dList1);
+        dList1.add(new Document("sxjgnlx.value", new Document("$regex", ".*3.*")));
+        Document totalFilter = new Document("$and",dList1);
+        //鏂拌澶囨暟
         List<Document> dList2 = new ArrayList<>(2);
-        dList2.add(new Document("macdz.error", 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)));
-        setTag(params, dList3);
-        List<Document> dList4 = new ArrayList<>(2);
-        dList4.add(new Document("longitude.error", 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);
-        Document longitudeErrFilter = new Document("$and", dList4);
-        List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, latitudeErrFilter, longitudeErrFilter);
+        dList2.add(new Document("sxjgnlx.value", new Document("$regex", ".*3.*")));
+        dList2.add(new Document("newDevice",Boolean.TRUE));
+        Document newFilter = new Document("$and",dList2);
+
+        List<Document> lists = Arrays.asList(totalFilter, newFilter);
         List<String> rList = lists.stream().map(filter -> {
             // 鏋勫缓鑱氬悎绠¢亾
             List<Document> pipeline = Arrays.asList(
@@ -1941,11 +2134,11 @@
             return uniqueDeviceIdCount + "";
         }).collect(Collectors.toList());
 
-        Date now = new Date();
         List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
                 .select(CheckIndexFace::getDeviceDirectoryConsistent)
                 .eq(params.getDataType().equals(1), CheckIndexFace::getExamineTag, CheckConstants.Examine_Tag_Province)
-                .between(CheckIndexFace::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
+                .eq(params.getDataType().equals(2), CheckIndexFace::getExamineTag, CheckConstants.Examine_Tag_Dept)
+                .between(CheckIndexFace::getCreateTime, DateUtils.getDayStart(params.getStartTime()), DateUtils.getDayEnd(params.getEndTime()))
                 .list();
         BigDecimal onlineRate = BigDecimal.ZERO;
         if (CollectionUtils.isNotEmpty(videoList)) {
@@ -1956,7 +2149,7 @@
         rList.add(this.remove0(onlineRate));
         HashMap<String, Object> map = new HashMap<>();
         map.put("count", rList);
-        map.put("list", resultList);
+        map.put("list", resultVOS);
         return Result.ok().data(map).total(total);
     }
 
@@ -2324,9 +2517,9 @@
         } else if (params.getDataType().equals(2)) {
             dList.add(new Document("deptTag", new Document("$eq", Boolean.TRUE)));
         }
-        Document mongoCreateTimeRange = new Document()
-                .append("$gte", params.getStartTime())
-                .append("$lt", params.getEndTime());
+        Document mongoCreateTimeRange = new Document();
+        if (params.getStartTime()!=null) mongoCreateTimeRange.append("$gte", params.getStartTime());
+        if (params.getEndTime()!=null) mongoCreateTimeRange .append("$lt", params.getEndTime());
         dList.add(new Document("mongoCreateTime", mongoCreateTimeRange));
     }
 }

--
Gitblit v1.8.0