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-common/src/main/java/constant/ApiConstants.java                                |    3 
 ycl-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java |   21 +-
 ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml                      |   13 +
 ycl-pojo/src/main/java/com/ycl/platform/domain/entity/YwThreshold.java             |    8 
 ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java   |   11 +
 ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java  |  311 ++++++++++++++++++++++++++++----------------
 6 files changed, 233 insertions(+), 134 deletions(-)

diff --git a/ycl-common/src/main/java/constant/ApiConstants.java b/ycl-common/src/main/java/constant/ApiConstants.java
index 272bef7..38baf1d 100644
--- a/ycl-common/src/main/java/constant/ApiConstants.java
+++ b/ycl-common/src/main/java/constant/ApiConstants.java
@@ -22,9 +22,8 @@
     public final static Integer HK_SnapCount_ResultType_Null = 2;
     //鎶撴媿鏁版嵁閲忕洃娴嬬粨鏋� 鏁版嵁绐侀檷
     public final static Integer HK_SnapCount_ResultType_Descent = 3;
-
     //璇锋眰鍙傛暟dataType 鏁版嵁閲忓皯
-    public final static Integer HK_DataType_ResultType_Low = 4;
+    public final static Integer HK_SnapCount_ResultType_Low = 4;
 
     //缁忕含搴︽娴嬬粨鏋� 姝e父
     public final static Integer HK_Info_LayType_Normal = 1;
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/YwThreshold.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/YwThreshold.java
index e91c0d9..7f4542f 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/YwThreshold.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/YwThreshold.java
@@ -49,13 +49,13 @@
     @TableField("name")
     private String name;
 
-    /** 宸ュ崟闃堝�� */
-    @Excel(name = "宸ュ崟闃堝��")
+    /** 鐩存帴涓嬪彂闃堝�� */
+    @Excel(name = "鐩存帴涓嬪彂闃堝��")
     @TableField("value")
     private String value;
 
-    /** 涓嬪彂闃堝�� */
-    @Excel(name = "涓嬪彂闃堝��")
+    /** 寰呬笅鍙戦槇鍊� */
+    @Excel(name = "寰呬笅鍙戦槇鍊�")
     @TableField("value_auto")
     private String valueAuto;
 
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 fb05624..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
@@ -15,6 +15,7 @@
 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.*;
@@ -41,6 +42,7 @@
 import java.math.RoundingMode;
 import java.text.DecimalFormat;
 import java.util.*;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 /**
@@ -609,10 +611,8 @@
         setTag(params,dList2);
         Document qualifyFilter = new Document("$and",dList2);
         //涓嶅悎鏍兼暟
-        Document mongoCreateTimeRange = new Document()
-                .append("$gte", params.getStartTime())
-                .append("$lt", params.getEndTime());
-        Document mongoCreateTime = new Document("mongoCreateTime", mongoCreateTimeRange);
+        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)));
@@ -627,7 +627,8 @@
         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);
-        Document unQualifyFilter = new Document("$and", Arrays.asList(mongoCreateTime, errorFilter));
+        dList3.add(errorFilter);
+        Document unQualifyFilter = new Document("$and", dList3);
 
         List<Document> lists = Arrays.asList(totalFilter, qualifyFilter, unQualifyFilter);
         List<String> rList = lists.stream().map(filter -> {
@@ -1065,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)));
@@ -1077,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)));
@@ -1087,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 -> {
@@ -1200,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)));
@@ -1212,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)));
@@ -1222,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 -> {
@@ -1273,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(
@@ -1320,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));
@@ -1445,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(
@@ -1490,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)) {
@@ -1505,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);
     }
 
@@ -1518,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);
@@ -1529,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(
@@ -1564,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)) {
@@ -1837,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(
@@ -1880,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)) {
@@ -2003,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(
@@ -2049,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)) {
@@ -2064,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);
     }
 
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
index 9bbd8f9..ae1a348 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -114,11 +114,11 @@
         // 鏌ヨ鍑虹櫧鍚嶅崟鍒楄〃
         List<String> serialNumbers = workOrderWhiteMapper.selectList().stream().map(WorkOrderWhite::getSerialNumber).collect(Collectors.toList());
         // 閬嶅巻宸ュ崟鍒楄〃锛屽垽鏂槸鍚﹀湪鐧藉悕鍗曚腑
-        workOrderList.stream().filter(item -> !serialNumbers.contains(item.getSerialNumber()))
+        workOrderList = workOrderList.stream().filter(item -> !serialNumbers.contains(item.getSerialNumber()))
                         .collect(Collectors.toList());
-        workOrderList.stream().filter(item -> {
+        workOrderList = workOrderList.stream().filter(item -> {
             return StringUtils.hasText(item.getSerialNumber()) && Objects.nonNull(item.getStatus()) && !CollectionUtils.isEmpty(item.getErrorTypeList());
-        });
+        }).collect(Collectors.toList());
         if (CollectionUtils.isEmpty(workOrderList)) {
             return Boolean.TRUE;
         }
@@ -170,7 +170,10 @@
                             willAddErrorType.add(workOrderErrorType);
                         }
                     }
-                    databaseWorkOrder.setStatus(WorkOrderStatusEnum.DISTRIBUTED);
+                    //閬垮厤浠d笅鍙戠殑宸ュ崟鐩存帴鍙樻垚涓嬪彂
+                    if(!databaseWorkOrder.getStatus().equals(WorkOrderStatusEnum.WAIT_DISTRIBUTE)) {
+                        databaseWorkOrder.setStatus(WorkOrderStatusEnum.DISTRIBUTED);
+                    }
                     databaseWorkOrder.setUpdateTime(now);
                     willUpdateStatusWorkOrderList.add(databaseWorkOrder);
                     updateNum++;
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java
index bbffadb..2aafe2f 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java
@@ -176,9 +176,9 @@
     @Override
     public void faceCheck(List<FaceDeviceInspectionResult> list) {
         Map<String, YwThreshold> thresholdMap = getYwThresholdMap(BusinessTypeEnum.FACE.name());
-        //鍑嗗涓嬪彂宸ュ崟闆嗗悎
+        //鍑嗗寰呬笅鍙戝伐鍗曢泦鍚�
         List<WorkOrder> distributeList = new ArrayList<>();
-        //鍑嗗鑷姩鐢熸垚宸ュ崟闆嗗悎
+        //鍑嗗鐩存帴涓嬪彂宸ュ崟闆嗗悎
         List<WorkOrder> workOrderList = new ArrayList<>();
         //澶勭悊鎺ュ彛鏁版嵁
         for (FaceDeviceInspectionResult result : list) {
@@ -284,6 +284,7 @@
         /** 娣诲姞宸ュ崟 */
         workOrderService.innerAddWorkOrder(workOrderList);
         workOrderService.innerAddWorkOrder(distributeList);
+
     }
 
     /**
@@ -317,23 +318,25 @@
                 v -> {
                     YwThreshold ywThreshold = thresholds.get(key);
                     //杞崲绫诲瀷
-                    T thresholdValue = parseThreshold(ywThreshold.getValueAuto(), value.getClass());
-                    T thresholdAutoValue = parseThreshold(ywThreshold.getValue(), value.getClass());
+                    //寰呭伐鍗曢槇鍊�
+                    T thresholdAutoValue = parseThreshold(ywThreshold.getValueAuto(), value.getClass());
+                    //鐩存帴涓嬪彂宸ュ崟闃堝��
+                    T thresholdValue = parseThreshold(ywThreshold.getValue(), value.getClass());
                     //姣旇緝澶у皬锛屽姞鍏ュ埌瀵瑰簲寰呭鐞嗛泦鍚�
-                    if (compareType.compare(v, thresholdAutoValue)) {
-                        //鑷姩涓嬪彂宸ュ崟
+                    if (compareType.compare(v, thresholdValue)) {
+                        //杩涘叆宸ュ崟鐩存帴涓嬪彂
                         workOrder.setSerialNumber(serialNumber);
-                        workOrder.setStatus(WorkOrderStatusEnum.WAIT_DISTRIBUTE);
+                        workOrder.setStatus(WorkOrderStatusEnum.DISTRIBUTED);
                         if (CollectionUtils.isEmpty(workOrder.getErrorTypeList())) {
                             workOrder.setErrorTypeList(new ArrayList<>());
                             workOrder.getErrorTypeList().add(errorType);
                         } else {
                             workOrder.getErrorTypeList().add(errorType);
                         }
-                    } else if (compareType.compare(v, thresholdValue)) {
+                    } else if (compareType.compare(v, thresholdAutoValue)) {
                         //杩涘叆宸ュ崟浠d笅鍙�
                         workOrder.setSerialNumber(serialNumber);
-                        workOrder.setStatus(WorkOrderStatusEnum.DISTRIBUTED);
+                        workOrder.setStatus(WorkOrderStatusEnum.WAIT_DISTRIBUTE);
                         if (CollectionUtils.isEmpty(workOrder.getErrorTypeList())) {
                             workOrder.setErrorTypeList(new ArrayList<>());
                             workOrder.getErrorTypeList().add(errorType);
diff --git a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
index 80271e0..859b1a5 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -58,14 +58,22 @@
         INNER JOIN t_monitor tm ON wo.serial_number = tm.serial_number
         INNER JOIN t_work_order_error_type et ON wo.work_order_no = et.work_order_no
         INNER JOIN t_yw_unit u ON wo.unit_id = u.id AND u.deleted = 0
-        INNER JOIN sys_dict_data da ON da.dict_value = et.error_name AND da.dict_type = 'error_type' <if test="query.errorTypeList != null and query.errorTypeList.size() > 0">AND da.dict_value in <foreach
-            collection="query.errorTypeList" open="(" separator="," close=")" item="errorType">#{errorType}</foreach> </if>
+        INNER JOIN sys_dict_data da ON da.dict_value = et.error_name AND da.dict_type = 'error_type'
         LEFT JOIN t_work_order_check_img ci ON ci.work_order_no = wo.work_order_no
         LEFT JOIN t_yw_people p ON wo.yw_people_id = p.id AND p.deleted = 0
         WHERE
         wo.deleted = 0 and wo.status != 'WAIT_DISTRIBUTE'
         <if test="query.unitId != null">
             AND wo.unit_id = #{query.unitId}
+        </if>
+        <if test="query.errorTypeList != null and query.errorTypeList.size() > 0">
+            AND (EXISTS (
+            SELECT 1
+            FROM t_work_order_error_type twoet
+            WHERE twoet.work_order_no = wo.work_order_no
+            AND twoet.error_name in
+          <foreach collection="query.errorTypeList" open="(" separator="," close=")" item="errorType">#{errorType}</foreach>
+            ))
         </if>
         <if test="query.keyword != null and query.keyword != ''">
             AND (wo.work_order_no like concat('%', #{query.keyword}, '%') or tm.name like concat('%', #{query.keyword}, '%') or wo.serial_number like concat('%', #{query.keyword}, '%'))
@@ -136,6 +144,7 @@
         wo.id,wo.status, wo.work_order_no,wo.create_time, wo.unit_id, wo.yw_people_id, wo.yw_handle_time, wo.yw_result, wo.yw_check_result, wo.overtime, wo.deduct,
         u.unit_name,
             p.yw_person_name,
+            yp.serial_number,
             yp.province_tag,
             yp.important_tag,
             yp.important_command_image_tag,

--
Gitblit v1.8.0