From c2fb54cf6794f250b1746c3f37e8403b516c1549 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期日, 08 十二月 2024 22:30:26 +0800
Subject: [PATCH] 导入规则
---
ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java | 1669 +++++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 1,286 insertions(+), 383 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 7c0f34a..c676cab 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
@@ -1,5 +1,6 @@
package com.ycl.platform.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.github.pagehelper.Page;
@@ -12,7 +13,11 @@
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.BigPicUsefulVO;
+import com.ycl.platform.domain.vo.DataCenter.MonitorQualifyResultVO;
+import com.ycl.platform.domain.vo.DataCenter.SnapClockVO;
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.*;
@@ -20,12 +25,16 @@
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;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.aggregation.*;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.TextCriteria;
@@ -34,7 +43,9 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
import java.util.*;
+import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
@@ -69,34 +80,91 @@
public Result videoPointOnlineRate(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("name", "no", "ip");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
- System.out.println("鏌ヨ鏉′欢"+query.toString());
+ //鏌ヨ棰戣澶�
+ query.addCriteria(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Video + ".*"));
+ //涓嬫媺妗嗗湪绾挎儏鍐垫煡璇㈡潯浠�
+ if (params.getOption() != null) {
+ query.addCriteria(Criteria.where("online").is(params.getOption()));
+ }
+ Sort sort = Sort.by(
+ Sort.Order.asc("pingOnline"), // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭
+ Sort.Order.desc("offLineCount") // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭
+ );
+ // 閫氳繃pingOnline瀛楁鎺掑簭锛屼负false鐨勬帓鍦ㄥ墠闈�
+ query.with(sort);
//鍒嗛〉鏁伴噺
long total = mongoTemplate.count(query, TMonitorResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
List<TMonitorResult> resultList = mongoTemplate.find(query, TMonitorResult.class);
resultList.forEach(item -> {
- if (null != item.getPingOnline() && item.getPingOnline()) {
+ if (item.getPingOnline() == null) {
+ item.setPingOnlineStr("鏈煡");
+ } else if (item.getPingOnline()) {
item.setPingOnlineStr("鍦ㄧ嚎");
- } else {
+ } else if (!item.getPingOnline()) {
item.setPingOnlineStr("绂荤嚎");
}
- if(1== item.getOnline() ){
+ if (1 == item.getOnline()) {
item.setOnlineStr("鍦ㄧ嚎");
- }else if(-1==item.getOnline()){
+ } else if (-1 == item.getOnline()) {
item.setOnlineStr("绂荤嚎");
- }else {
+ } else {
item.setOnlineStr("鏈煡");
+ }
+ List<String> offLineTime = item.getOffLineTimeStr();
+ if(!CollectionUtils.isEmpty(offLineTime)) {
+ //鍚庣画鍙互鏀规垚閰嶇疆鐨勭绾挎鏁�(鎻愬彇鍓峮娆★紝n涓洪厤缃殑绂荤嚎娆℃暟)
+ if (offLineTime.size() > 1) {
+ offLineTime = offLineTime.subList(0, 2);
+ }
+ item.setOffLineTimeStr(offLineTime);
}
});
params.setDeptTag(-1);
params.setDeviceType(1);
- // 缁熻璁惧鏁伴噺
- Integer distinctCount = pointMapper.distinctCount(params);
+ //鍗$墖缁熻
+ int totalCount = 0;
+ int onlineCount = 0;
+ int offlineCount = 0;
+ int unknownCount = 0;
+ //鏋勫缓鏉′欢
+ List<Criteria> criteriaList = new ArrayList<>();
+ // 娣诲姞鍥哄畾鏉′欢
+ criteriaList.add(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Video + ".*"));
+ criteriaList.add(Criteria.where("mongoCreateTime").gte(params.getStartTime()).lte(params.getEndTime()));
+ // 鏍规嵁dataType鍔ㄦ�佹坊鍔犳潯浠�
+ if (params.getDataType() == 1) {
+ criteriaList.add(Criteria.where("provinceTag").is(Boolean.TRUE));
+ } else if (params.getDataType() == 2) {
+ criteriaList.add(Criteria.where("deptTag").is(Boolean.TRUE));
+ }
+ // 鏋勫缓match鎿嶄綔
+ MatchOperation match = Aggregation.match(
+ new Criteria().andOperator(criteriaList.toArray(new Criteria[0]))
+ );
+ GroupOperation group = Aggregation.group()
+ .sum(ConditionalOperators.when(Criteria.where("online").is(ApiConstants.UY_OnlineSite_Online)).then(1).otherwise(0)).as("onlineCount")
+ .sum(ConditionalOperators.when(Criteria.where("online").is(ApiConstants.UY_OnlineSite_Offline)).then(1).otherwise(0)).as("offlineCount")
+ .sum(ConditionalOperators.when(Criteria.where("online").is(ApiConstants.UY_OnlineSite_Unknown)).then(1).otherwise(0)).as("unknownCount");
+ // 灏嗗尮閰嶉樁娈靛拰鍒嗙粍闃舵缁勫悎璧锋潵
+ Aggregation aggregation = Aggregation.newAggregation(match, group);
+ // 鎵ц鑱氬悎鏌ヨ
+ AggregationResults<Map> results = mongoTemplate.aggregate(aggregation, "t_monitor_online", Map.class); // 鏇挎崲涓轰綘鐨勯泦鍚堝悕绉�
+ for (Map<String, Object> result : results.getMappedResults()) {
+ offlineCount = (Integer) result.getOrDefault("offlineCount", 0L);
+ unknownCount = (Integer) result.getOrDefault("unknownCount", 0L);
+ onlineCount = (Integer) result.getOrDefault("onlineCount", 0L);
+ totalCount = offlineCount + unknownCount + onlineCount;
+ }
+ /** 鏌ヨ褰撳ぉ鍦ㄧ嚎鐜� */
List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
.select(CheckIndexVideo::getSiteOnline)
- .between(CheckIndexVideo::getCreateTime, params.getStartTime(), params.getEndTime())
+ .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, params.getStartTime(), params.getEndTime())
.list();
+
BigDecimal onlineRate = BigDecimal.ZERO;
if (CollectionUtils.isNotEmpty(videoList)) {
BigDecimal sum = videoList.stream().map(CheckIndexVideo::getSiteOnline).reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -104,7 +172,7 @@
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(distinctCount + "", this.remove0(onlineRate)));
+ map.put("count", Arrays.asList(totalCount + "", onlineCount + "", offlineCount + "", unknownCount + "", this.remove0(onlineRate)));
map.put("list", resultList);
return Result.ok().data(map).total(total);
}
@@ -119,14 +187,25 @@
public Result deptVideoPointOnlineRate(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("name", "no", "ip");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ //鏌ヨ棰戣澶�
+ query.addCriteria(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Video + ".*"));
+ query.addCriteria(Criteria.where("deptTag").is(Boolean.TRUE));
+ //涓嬫媺妗嗗湪绾挎儏鍐垫煡璇㈡潯浠�
+ if (params.getOption() != null) {
+ query.addCriteria(Criteria.where("online").is(params.getOption()));
+ }
+ // 閫氳繃pingOnline瀛楁鎺掑簭锛屼负false鐨勬帓鍦ㄥ墠闈�
+ query.with(Sort.by(Sort.Order.asc("pingOnline")));
//鍒嗛〉鏁伴噺
long total = mongoTemplate.count(query, TMonitorResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
List<TMonitorResult> resultList = mongoTemplate.find(query, TMonitorResult.class);
resultList.forEach(item -> {
- if (null != item.getPingOnline() && item.getPingOnline()) {
+ if (item.getPingOnline() == null) {
+ item.setPingOnlineStr("鏈煡");
+ } else if (item.getPingOnline()) {
item.setPingOnlineStr("鍦ㄧ嚎");
- } else {
+ } else if (!item.getPingOnline()) {
item.setPingOnlineStr("绂荤嚎");
}
if (1 == item.getOnline()) {
@@ -138,14 +217,48 @@
}
});
// 缁熻璁惧鏁伴噺
+ //鍗$墖缁熻
+ int totalCount = 0;
+ int onlineCount = 0;
+ int offlineCount = 0;
+ int unknownCount = 0;
+ //鏋勫缓鏉′欢
+ List<Criteria> criteriaList = new ArrayList<>();
+ // 娣诲姞鍥哄畾鏉′欢
+ criteriaList.add(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Video + ".*"));
+ criteriaList.add(Criteria.where("mongoCreateTime").gte(params.getStartTime()).lte(params.getEndTime()));
+ // 鏍规嵁dataType鍔ㄦ�佹坊鍔犳潯浠�
+ if (params.getDataType() == 1) {
+ criteriaList.add(Criteria.where("provinceTag").is(Boolean.TRUE));
+ } else if (params.getDataType() == 2) {
+ criteriaList.add(Criteria.where("deptTag").is(Boolean.TRUE));
+ }
+ // 鏋勫缓match鎿嶄綔
+ MatchOperation match = Aggregation.match(
+ new Criteria().andOperator(criteriaList.toArray(new Criteria[0]))
+ );
+ GroupOperation group = Aggregation.group()
+ .sum(ConditionalOperators.when(Criteria.where("online").is(ApiConstants.UY_OnlineSite_Online)).then(1).otherwise(0)).as("onlineCount")
+ .sum(ConditionalOperators.when(Criteria.where("online").is(ApiConstants.UY_OnlineSite_Offline)).then(1).otherwise(0)).as("offlineCount")
+ .sum(ConditionalOperators.when(Criteria.where("online").is(ApiConstants.UY_OnlineSite_Unknown)).then(1).otherwise(0)).as("unknownCount");
+ // 灏嗗尮閰嶉樁娈靛拰鍒嗙粍闃舵缁勫悎璧锋潵
+ Aggregation aggregation = Aggregation.newAggregation(match, group);
+ // 鎵ц鑱氬悎鏌ヨ
+ AggregationResults<Map> results = mongoTemplate.aggregate(aggregation, "t_monitor_online", Map.class); // 鏇挎崲涓轰綘鐨勯泦鍚堝悕绉�
+ for (Map<String, Object> result : results.getMappedResults()) {
+ offlineCount = (Integer) result.getOrDefault("offlineCount", 0L);
+ unknownCount = (Integer) result.getOrDefault("unknownCount", 0L);
+ onlineCount = (Integer) result.getOrDefault("onlineCount", 0L);
+ totalCount = offlineCount + unknownCount + onlineCount;
+ }
+
params.setDeptTag(1);
params.setDeviceType(1);
- Integer distinctCount = pointMapper.distinctCount(params);
-
List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
.select(CheckIndexVideo::getMinistrySiteOnline)
.eq(params.getDataType().equals(1), CheckIndexVideo::getExamineTag, CheckConstants.Examine_Tag_Province)
- .between(CheckIndexVideo::getCreateTime, params.getStartTime(), params.getEndTime())
+ .eq(params.getDataType().equals(2), CheckIndexVideo::getExamineTag, CheckConstants.Examine_Tag_Dept)
+ .between(CheckIndexVideo::getCreateTime, params.getStartTime(), params.getEndTime())
.list();
BigDecimal onlineRate = BigDecimal.ZERO;
if (CollectionUtils.isNotEmpty(videoList)) {
@@ -154,7 +267,7 @@
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(distinctCount + "", this.remove0(onlineRate)));
+ map.put("count", Arrays.asList(totalCount + "", onlineCount + "", offlineCount + "", unknownCount + "", this.remove0(onlineRate)));
map.put("list", resultList);
return Result.ok().data(map).total(total);
}
@@ -169,18 +282,27 @@
public Result videoImportantPointOnlineRate(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("name", "no", "ip");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ //鏌ヨ棰戣澶�
+ query.addCriteria(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Video + ".*"));
+ query.addCriteria(Criteria.where("importantTag").is(Boolean.TRUE));
+ //涓嬫媺妗嗗湪绾挎儏鍐垫煡璇㈡潯浠�
+ if (params.getOption() != null) {
+ query.addCriteria(Criteria.where("online").is(params.getOption()));
+ }
+ // 閫氳繃pingOnline瀛楁鎺掑簭锛屼负false鐨勬帓鍦ㄥ墠闈�
+ query.with(Sort.by(Sort.Order.asc("pingOnline")));
//鍒嗛〉鏁伴噺
long total = mongoTemplate.count(query, TMonitorResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
List<TMonitorResult> resultList = mongoTemplate.find(query, TMonitorResult.class);
params.setDeptTag(3);
params.setDeviceType(1);
- // 缁熻璁惧鏁伴噺
- Integer distinctCount = pointMapper.distinctCount(params);
resultList.forEach(item -> {
- if (null != item.getPingOnline() && item.getPingOnline()) {
+ if (item.getPingOnline() == null) {
+ item.setPingOnlineStr("鏈煡");
+ } else if (item.getPingOnline()) {
item.setPingOnlineStr("鍦ㄧ嚎");
- } else {
+ } else if (!item.getPingOnline()) {
item.setPingOnlineStr("绂荤嚎");
}
if (1 == item.getOnline()) {
@@ -191,11 +313,47 @@
item.setOnlineStr("鏈煡");
}
});
- Date now = new Date();
+
+ // 缁熻璁惧鏁伴噺
+ //鍗$墖缁熻
+ int totalCount = 0;
+ int onlineCount = 0;
+ int offlineCount = 0;
+ int unknownCount = 0;
+ //鏋勫缓鏉′欢
+ List<Criteria> criteriaList = new ArrayList<>();
+ // 娣诲姞鍥哄畾鏉′欢
+ criteriaList.add(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Video + ".*"));
+ criteriaList.add(Criteria.where("mongoCreateTime").gte(params.getStartTime()).lte(params.getEndTime()));
+ // 鏍规嵁dataType鍔ㄦ�佹坊鍔犳潯浠�
+ if (params.getDataType() == 1) {
+ criteriaList.add(Criteria.where("provinceTag").is(Boolean.TRUE));
+ } else if (params.getDataType() == 2) {
+ criteriaList.add(Criteria.where("deptTag").is(Boolean.TRUE));
+ }
+ // 鏋勫缓match鎿嶄綔
+ MatchOperation match = Aggregation.match(
+ new Criteria().andOperator(criteriaList.toArray(new Criteria[0]))
+ );
+ GroupOperation group = Aggregation.group()
+ .sum(ConditionalOperators.when(Criteria.where("online").is(ApiConstants.UY_OnlineSite_Online)).then(1).otherwise(0)).as("onlineCount")
+ .sum(ConditionalOperators.when(Criteria.where("online").is(ApiConstants.UY_OnlineSite_Offline)).then(1).otherwise(0)).as("offlineCount")
+ .sum(ConditionalOperators.when(Criteria.where("online").is(ApiConstants.UY_OnlineSite_Unknown)).then(1).otherwise(0)).as("unknownCount");
+ // 灏嗗尮閰嶉樁娈靛拰鍒嗙粍闃舵缁勫悎璧锋潵
+ Aggregation aggregation = Aggregation.newAggregation(match, group);
+ // 鎵ц鑱氬悎鏌ヨ
+ AggregationResults<Map> results = mongoTemplate.aggregate(aggregation, "t_monitor_online", Map.class); // 鏇挎崲涓轰綘鐨勯泦鍚堝悕绉�
+ for (Map<String, Object> result : results.getMappedResults()) {
+ offlineCount = (Integer) result.getOrDefault("offlineCount", 0L);
+ unknownCount = (Integer) result.getOrDefault("unknownCount", 0L);
+ onlineCount = (Integer) result.getOrDefault("onlineCount", 0L);
+ totalCount = offlineCount + unknownCount + onlineCount;
+ }
List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
.select(CheckIndexVideo::getKeySiteOnline)
.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, params.getStartTime(), params.getEndTime())
.list();
BigDecimal onlineRate = BigDecimal.ZERO;
if (CollectionUtils.isNotEmpty(videoList)) {
@@ -204,7 +362,7 @@
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(distinctCount + "", this.remove0(onlineRate)));
+ map.put("count", Arrays.asList(totalCount + "", onlineCount + "", offlineCount + "", unknownCount + "", this.remove0(onlineRate)));
map.put("list", resultList);
return Result.ok().data(map).total(total);
}
@@ -219,6 +377,15 @@
public Result videoImportantPointImageOnlineRate(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("name", "no", "ip");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ //鏌ヨ棰戣澶�
+ query.addCriteria(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Video + ".*"));
+ query.addCriteria(Criteria.where("importantCommandImageTag").is(Boolean.TRUE));
+ //涓嬫媺妗嗗湪绾挎儏鍐垫煡璇㈡潯浠�
+ if (params.getOption() != null) {
+ query.addCriteria(Criteria.where("online").is(params.getOption()));
+ }
+ // 閫氳繃pingOnline瀛楁鎺掑簭锛屼负false鐨勬帓鍦ㄥ墠闈�
+ query.with(Sort.by(Sort.Order.asc("pingOnline")));
//鍒嗛〉鏁伴噺
long total = mongoTemplate.count(query, TMonitorResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
@@ -226,12 +393,12 @@
params.setDeptTag(4);
params.setDeviceType(1);
- // 缁熻璁惧鏁伴噺
- Integer distinctCount = pointMapper.distinctCount(params);
resultList.forEach(item -> {
- if (null != item.getPingOnline() && item.getPingOnline()) {
+ if (item.getPingOnline() == null) {
+ item.setPingOnlineStr("鏈煡");
+ } else if (item.getPingOnline()) {
item.setPingOnlineStr("鍦ㄧ嚎");
- } else {
+ } else if (!item.getPingOnline()) {
item.setPingOnlineStr("绂荤嚎");
}
if (1 == item.getOnline()) {
@@ -242,11 +409,48 @@
item.setOnlineStr("鏈煡");
}
});
- Date now = new Date();
+
+ // 缁熻璁惧鏁伴噺
+ //鍗$墖缁熻
+ int totalCount = 0;
+ int onlineCount = 0;
+ int offlineCount = 0;
+ int unknownCount = 0;
+ //鏋勫缓鏉′欢
+ List<Criteria> criteriaList = new ArrayList<>();
+ // 娣诲姞鍥哄畾鏉′欢
+ criteriaList.add(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Video + ".*"));
+ criteriaList.add(Criteria.where("mongoCreateTime").gte(params.getStartTime()).lte(params.getEndTime()));
+ // 鏍规嵁dataType鍔ㄦ�佹坊鍔犳潯浠�
+ if (params.getDataType() == 1) {
+ criteriaList.add(Criteria.where("provinceTag").is(Boolean.TRUE));
+ } else if (params.getDataType() == 2) {
+ criteriaList.add(Criteria.where("deptTag").is(Boolean.TRUE));
+ }
+ // 鏋勫缓match鎿嶄綔
+ MatchOperation match = Aggregation.match(
+ new Criteria().andOperator(criteriaList.toArray(new Criteria[0]))
+ );
+ GroupOperation group = Aggregation.group()
+ .sum(ConditionalOperators.when(Criteria.where("online").is(ApiConstants.UY_OnlineSite_Online)).then(1).otherwise(0)).as("onlineCount")
+ .sum(ConditionalOperators.when(Criteria.where("online").is(ApiConstants.UY_OnlineSite_Offline)).then(1).otherwise(0)).as("offlineCount")
+ .sum(ConditionalOperators.when(Criteria.where("online").is(ApiConstants.UY_OnlineSite_Unknown)).then(1).otherwise(0)).as("unknownCount");
+ // 灏嗗尮閰嶉樁娈靛拰鍒嗙粍闃舵缁勫悎璧锋潵
+ Aggregation aggregation = Aggregation.newAggregation(match, group);
+ // 鎵ц鑱氬悎鏌ヨ
+ AggregationResults<Map> results = mongoTemplate.aggregate(aggregation, "t_monitor_online", Map.class); // 鏇挎崲涓轰綘鐨勯泦鍚堝悕绉�
+ for (Map<String, Object> result : results.getMappedResults()) {
+ offlineCount = (Integer) result.getOrDefault("offlineCount", 0L);
+ unknownCount = (Integer) result.getOrDefault("unknownCount", 0L);
+ onlineCount = (Integer) result.getOrDefault("onlineCount", 0L);
+ totalCount = offlineCount + unknownCount + onlineCount;
+ }
+
List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
.select(CheckIndexVideo::getKeyCommandImageOnline)
.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, params.getStartTime(), params.getEndTime())
.list();
BigDecimal onlineRate = BigDecimal.ZERO;
if (CollectionUtils.isNotEmpty(videoList)) {
@@ -255,7 +459,7 @@
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(distinctCount + "", this.remove0(onlineRate)));
+ map.put("count", Arrays.asList(totalCount + "", onlineCount + "", offlineCount + "", unknownCount + "", this.remove0(onlineRate)));
map.put("list", resultList);
return Result.ok().data(map).total(total);
}
@@ -269,34 +473,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(
@@ -315,11 +525,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)) {
@@ -330,7 +540,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);
}
@@ -343,34 +553,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(
@@ -389,11 +664,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)) {
@@ -404,47 +679,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(
@@ -463,10 +741,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);
}
@@ -480,11 +770,19 @@
public Result videoAvailabilityRate(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("deviceId", "deviceName");
Query query = MongoUtil.getQuery(params, "createTime", likeFileds, null);
-
+ //涓嬫媺妗嗗綍鍍忔儏鍐垫煡璇㈡潯浠�
+ if (params.getOption() != null) {
+ query.addCriteria(Criteria.where("recordStatus").is(params.getOption()));
+ }
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");
@@ -510,12 +808,11 @@
}
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
-
- Date now = new Date();
List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
.select(CheckIndexVideo::getVideoAvailable)
.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)) {
@@ -523,7 +820,15 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
+ //鍔犱竴涓�绘暟
+ int totalCount = 0;
+ for (String s : resultCount) {
+ totalCount += Integer.parseInt(s);
+ }
+ resultCount.add(0, totalCount + "");
+
resultCount.add(this.remove0(onlineRate));
+
HashMap<String, Object> map = new HashMap<>();
map.put("count", resultCount);
map.put("list", resultList);
@@ -540,11 +845,19 @@
public Result deptVideoAvailabilityRate(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("deviceId", "deviceName");
Query query = MongoUtil.getQuery(params, "createTime", likeFileds, 1);
-
+ //涓嬫媺妗嗗綍鍍忔儏鍐垫煡璇㈡潯浠�
+ if (params.getOption() != null) {
+ query.addCriteria(Criteria.where("recordStatus").is(params.getOption()));
+ }
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");
@@ -572,11 +885,11 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- Date now = new Date();
List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
.select(CheckIndexVideo::getMinistryVideoAvailable)
.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)) {
@@ -584,6 +897,12 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
+ //鍔犱竴涓�绘暟
+ int totalCount = 0;
+ for (String s : resultCount) {
+ totalCount += Integer.parseInt(s);
+ }
+ resultCount.add(0, totalCount + "");
resultCount.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
map.put("count", resultCount);
@@ -601,11 +920,19 @@
public Result videoImportantPointAvailabilityRate(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("deviceId", "deviceName");
Query query = MongoUtil.getQuery(params, "createTime", likeFileds, 3);
-
+ //涓嬫媺妗嗗綍鍍忔儏鍐垫煡璇㈡潯浠�
+ if (params.getOption() != null) {
+ query.addCriteria(Criteria.where("recordStatus").is(params.getOption()));
+ }
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");
@@ -633,11 +960,11 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- Date now = new Date();
List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
.select(CheckIndexVideo::getKeyVideoAvailable)
.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)) {
@@ -645,6 +972,12 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
+ //鍔犱竴涓�绘暟
+ int totalCount = 0;
+ for (String s : resultCount) {
+ totalCount += Integer.parseInt(s);
+ }
+ resultCount.add(0, totalCount + "");
resultCount.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
map.put("count", resultCount);
@@ -653,7 +986,7 @@
}
/**
- * 瑙嗛锛氭爣娉ㄦ纭巼
+ * 瑙嗛锛氭爣娉ㄦ纭巼锛堟殏鍋滐級
*
* @param params
* @return
@@ -686,37 +1019,97 @@
@Override
public Result videoImportantPointLabelingAccuracy(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("deviceNo", "osdName");
- Query query = MongoUtil.getQuery(params, "checkTime", likeFileds, 3);
-
+ List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, "checkTime", 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("osdNameCorrect").is(1));
+ andCriteria.add(Criteria.where("osdTimeCorrect").is(1));
+ andCriteria.add(Criteria.where("osdProvinceCorrect").is(1));
+ andCriteria.add(Criteria.where("osdCityCorrect").is(1));
+ andCriteria.add(Criteria.where("osdPartCorrect").is(1));
+ 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);
+ Criteria c2 = Criteria.where("osdTimeCorrect").is(-1);
+ Criteria c3 = Criteria.where("osdProvinceCorrect").is(-1);
+ Criteria c4 = Criteria.where("osdCityCorrect").is(-1);
+ Criteria c5 = Criteria.where("osdPartCorrect").is(-1);
+ Criteria orOperator = new Criteria().orOperator(c1, c2, c3, c4, c5);
+ orOperator.andOperator(andCriteria);
+ query = Query.query(orOperator);
+ }else {
+ Criteria c1 = Criteria.where("osdNameCorrect").is(0);
+ Criteria c2 = Criteria.where("osdTimeCorrect").is(0);
+ Criteria c3 = Criteria.where("osdProvinceCorrect").is(0);
+ Criteria c4 = Criteria.where("osdCityCorrect").is(0);
+ Criteria c5 = Criteria.where("osdPartCorrect").is(0);
+ Criteria orOperator = new Criteria().orOperator(c1, c2, c3, c4, c5);
+ orOperator.andOperator(andCriteria);
+ query = Query.query(orOperator);
+ }
+ }
long total = mongoTemplate.count(query, OsdCheckResult.class);
MongoUtil.setPage(query, params, "checkTime");
List<OsdCheckResult> resultList = mongoTemplate.find(query, OsdCheckResult.class);
-
+ for (OsdCheckResult osdCheckResult : resultList) {
+ OsdCheckResult.getText(osdCheckResult);
+ }
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("osd_check_result");
-
+ //鎬绘暟
+ List<Document> dList = new ArrayList<>(2);
+ dList.add(new Document("importantTag", Boolean.TRUE));
+ setTag(params, dList);
+ Document osdFilter = new Document("$and", dList);
+ //姝e父鏁�
List<Document> dList1 = new ArrayList<>(2);
dList1.add(new Document("importantTag", Boolean.TRUE));
dList1.add(new Document("osdNameCorrect", new Document("$eq", 1)));
+ dList1.add(new Document("osdTimeCorrect", new Document("$eq", 1)));
+ dList1.add(new Document("osdProvinceCorrect", new Document("$eq", 1)));
+ dList1.add(new Document("osdCityCorrect", new Document("$eq", 1)));
+ dList1.add(new Document("osdPartCorrect", new Document("$eq", 1)));
setTag(params, dList1);
+ Document osdCorrectFilter = new Document("$and", dList1);
+ //寮傚父鏁�
List<Document> dList2 = new ArrayList<>(2);
- dList2.add(new Document("importantTag", Boolean.TRUE));
- dList2.add(new Document("osdNameCorrect", new Document("$eq", -1)));
- setTag(params, dList2);
+ setTag(params,dList2);
+ Document importantTagCondition = new Document("importantTag", Boolean.TRUE);
+ 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)));
+ errorConditions.add(new Document("osdProvinceCorrect", new Document("$eq", -1)));
+ errorConditions.add(new Document("osdCityCorrect", new Document("$eq", -1)));
+ errorConditions.add(new Document("osdPartCorrect", new Document("$eq", -1)));
+ Document errorFilter = new Document("$or", errorConditions);
+ dList2.add(errorFilter);
+ Document osdErrorFilter = new Document("$and", dList2);
+ //鏈煡鏁�
List<Document> dList3 = new ArrayList<>(2);
- dList3.add(new Document("importantTag", Boolean.TRUE));
- dList3.add(new Document("osdTimeCorrect", new Document("$eq", 1)));
- setTag(params, dList3);
- List<Document> dList4 = new ArrayList<>(2);
- dList4.add(new Document("importantTag", Boolean.TRUE));
- dList4.add(new Document("osdTimeCorrect", new Document("$eq", -1)));
- setTag(params, dList4);
- Document osdNameFilter = new Document("$and", dList1);
- Document osdNameErrFilter = new Document("$and", dList2);
- Document osdTimeFilter = new Document("$and", dList3);
- Document osdTimeErrFilter = new Document("$and", dList4);
- List<Document> lists = Arrays.asList(osdNameFilter, osdNameErrFilter, osdTimeFilter, osdTimeErrFilter);
+ 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)));
+ unknownConditions.add(new Document("osdProvinceCorrect", new Document("$eq", 0)));
+ unknownConditions.add(new Document("osdCityCorrect", new Document("$eq", 0)));
+ unknownConditions.add(new Document("osdPartCorrect", new Document("$eq", 0)));
+ // 浣跨敤$or閫昏緫缁勫悎鍓╀綑鐨勬潯浠�
+ Document unknownFilter = new Document("$or", unknownConditions);
+ 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 -> {
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -735,11 +1128,11 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- Date now = new Date();
List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
.select(CheckIndexVideo::getKeyAnnotationAccuracy)
.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)) {
@@ -788,29 +1181,74 @@
*/
@Override
public Result videoImportantPointCheckTimeAccuracy(DataCenterQuery params) {
-
List<String> likeFileds = Arrays.asList("deviceNo", "osdName");
Query query = MongoUtil.getQuery(params, "checkTime", likeFileds, 3);
+ //涓嬫媺妗嗘爣娉ㄦ纭煡璇㈡潯浠�
+ if (params.getOption() != null) {
+ if(params.getOption()==1) {
+ query.addCriteria(Criteria.where("osdTimeCorrect").is(1));
+ }else if(params.getOption()==-1){
+ query.addCriteria(Criteria.where("osdTimeCorrect").is(-1));
+ }else {
+ query.addCriteria(Criteria.where("osdTimeCorrect").is(0));
+ }
+ }
long total = mongoTemplate.count(query, OsdCheckResult.class);
MongoUtil.setPage(query, params, "checkTime");
List<OsdCheckResult> resultList = mongoTemplate.find(query, OsdCheckResult.class);
+ for (OsdCheckResult osdCheckResult : resultList) {
+ OsdCheckResult.getText(osdCheckResult);
+ }
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("osd_check_result");
-
+ //鎬绘暟
+ List<Document> dList = new ArrayList<>(2);
+ dList.add(new Document("importantTag", Boolean.TRUE));
+ setTag(params, dList);
+ Document osdFilter = new Document("$and", dList);
+ //姝e父鏁�
List<Document> dList1 = new ArrayList<>(2);
dList1.add(new Document("importantTag", Boolean.TRUE));
+ dList1.add(new Document("osdNameCorrect", new Document("$eq", 1)));
dList1.add(new Document("osdTimeCorrect", new Document("$eq", 1)));
+ dList1.add(new Document("osdProvinceCorrect", new Document("$eq", 1)));
+ dList1.add(new Document("osdCityCorrect", new Document("$eq", 1)));
+ dList1.add(new Document("osdPartCorrect", new Document("$eq", 1)));
setTag(params, dList1);
+ Document osdCorrectFilter = new Document("$and", dList1);
+ //寮傚父鏁�
List<Document> dList2 = new ArrayList<>(2);
- dList2.add(new Document("importantTag", Boolean.TRUE));
- dList2.add(new Document("osdTimeCorrect", new Document("$eq", -1)));
- setTag(params, dList2);
- Document osdTimeFilter = new Document("$and", dList1);
- Document osdTimeErrFilter = new Document("$and", dList2);
- List<Document> lists = Arrays.asList(osdTimeFilter, osdTimeErrFilter);
+ setTag(params,dList2);
+ Document importantTagCondition = new Document("importantTag", Boolean.TRUE);
+ 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)));
+ errorConditions.add(new Document("osdProvinceCorrect", new Document("$eq", -1)));
+ errorConditions.add(new Document("osdCityCorrect", new Document("$eq", -1)));
+ errorConditions.add(new Document("osdPartCorrect", new Document("$eq", -1)));
+ Document errorFilter = new Document("$or", errorConditions);
+ dList2.add(errorFilter);
+ Document osdErrorFilter = new Document("$and", dList2);
+ //鏈煡鏁�
+ 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)));
+ unknownConditions.add(new Document("osdProvinceCorrect", new Document("$eq", 0)));
+ unknownConditions.add(new Document("osdCityCorrect", new Document("$eq", 0)));
+ unknownConditions.add(new Document("osdPartCorrect", new Document("$eq", 0)));
+ // 浣跨敤$or閫昏緫缁勫悎鍓╀綑鐨勬潯浠�
+ Document unknownFilter = new Document("$or", unknownConditions);
+ 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 -> {
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -829,11 +1267,11 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- Date now = new Date();
List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
.select(CheckIndexVideo::getKeyTimingAccuracy)
.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)) {
@@ -859,36 +1297,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(
@@ -906,17 +1347,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));
@@ -936,6 +1392,18 @@
public Result vehiclePointOnlineRate(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("name", "no", "ip");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ //鏌ヨ溅杈嗚澶�
+ query.addCriteria(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Car + ".*"));
+ //涓嬫媺妗嗗湪绾挎儏鍐垫煡璇㈡潯浠�
+ if (params.getOption() != null) {
+ query.addCriteria(Criteria.where("online").is(params.getOption()));
+ }
+ Sort sort = Sort.by(
+ Sort.Order.asc("pingOnline"), // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭
+ Sort.Order.desc("offLineCount") // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭
+ );
+ // 閫氳繃pingOnline瀛楁鎺掑簭锛屼负false鐨勬帓鍦ㄥ墠闈�
+ query.with(sort);
//鍒嗛〉鏁伴噺
long total = mongoTemplate.count(query, TMonitorResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
@@ -943,12 +1411,12 @@
List<TMonitorResult> resultList = mongoTemplate.find(query, TMonitorResult.class);
params.setDeptTag(-1);
params.setDeviceType(2);
- // 缁熻璁惧鏁伴噺
- Integer distinctCount = pointMapper.distinctCount(params);
resultList.forEach(item -> {
- if (null != item.getPingOnline() && item.getPingOnline()) {
+ if (item.getPingOnline() == null) {
+ item.setPingOnlineStr("鏈煡");
+ } else if (item.getPingOnline()) {
item.setPingOnlineStr("鍦ㄧ嚎");
- } else {
+ } else if (!item.getPingOnline()) {
item.setPingOnlineStr("绂荤嚎");
}
if (1 == item.getOnline()) {
@@ -958,10 +1426,56 @@
} else {
item.setOnlineStr("鏈煡");
}
+ List<String> offLineTime = item.getOffLineTimeStr();
+ if(!CollectionUtils.isEmpty(offLineTime)) {
+ //鍚庣画鍙互鏀规垚閰嶇疆鐨勭绾挎鏁�(鎻愬彇鍓峮娆★紝n涓洪厤缃殑绂荤嚎娆℃暟)
+ if (offLineTime.size() > 1) {
+ offLineTime = offLineTime.subList(0, 2);
+ }
+ item.setOffLineTimeStr(offLineTime);
+ }
});
+
+ // 缁熻璁惧鏁伴噺
+ //鍗$墖缁熻
+ int totalCount = 0;
+ int onlineCount = 0;
+ int offlineCount = 0;
+ int unknownCount = 0;
+ //鏋勫缓鏉′欢
+ List<Criteria> criteriaList = new ArrayList<>();
+ // 娣诲姞鍥哄畾鏉′欢
+ criteriaList.add(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Car + ".*"));
+ criteriaList.add(Criteria.where("mongoCreateTime").gte(params.getStartTime()).lte(params.getEndTime()));
+ // 鏍规嵁dataType鍔ㄦ�佹坊鍔犳潯浠�
+ if (params.getDataType() == 1) {
+ criteriaList.add(Criteria.where("provinceTag").is(Boolean.TRUE));
+ } else if (params.getDataType() == 2) {
+ criteriaList.add(Criteria.where("deptTag").is(Boolean.TRUE));
+ }
+ // 鏋勫缓match鎿嶄綔
+ MatchOperation match = Aggregation.match(
+ new Criteria().andOperator(criteriaList.toArray(new Criteria[0]))
+ );
+ GroupOperation group = Aggregation.group()
+ .sum(ConditionalOperators.when(Criteria.where("online").is(ApiConstants.UY_OnlineSite_Online)).then(1).otherwise(0)).as("onlineCount")
+ .sum(ConditionalOperators.when(Criteria.where("online").is(ApiConstants.UY_OnlineSite_Offline)).then(1).otherwise(0)).as("offlineCount")
+ .sum(ConditionalOperators.when(Criteria.where("online").is(ApiConstants.UY_OnlineSite_Unknown)).then(1).otherwise(0)).as("unknownCount");
+ // 灏嗗尮閰嶉樁娈靛拰鍒嗙粍闃舵缁勫悎璧锋潵
+ Aggregation aggregation = Aggregation.newAggregation(match, group);
+ // 鎵ц鑱氬悎鏌ヨ
+ AggregationResults<Map> results = mongoTemplate.aggregate(aggregation, "t_monitor_online", Map.class); // 鏇挎崲涓轰綘鐨勯泦鍚堝悕绉�
+ for (Map<String, Object> result : results.getMappedResults()) {
+ offlineCount = (Integer) result.getOrDefault("offlineCount", 0L);
+ unknownCount = (Integer) result.getOrDefault("unknownCount", 0L);
+ onlineCount = (Integer) result.getOrDefault("onlineCount", 0L);
+ totalCount = offlineCount + unknownCount + onlineCount;
+ }
+
List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
.select(CheckIndexCar::getSiteOnline)
.eq(params.getDataType().equals(1), CheckIndexCar::getExamineTag, CheckConstants.Examine_Tag_Province)
+ .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;
@@ -971,7 +1485,7 @@
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(distinctCount + "", this.remove0(onlineRate)));
+ map.put("count", Arrays.asList(totalCount + "", onlineCount + "", offlineCount + "", unknownCount + "", this.remove0(onlineRate)));
map.put("list", resultList);
return Result.ok().data(map).total(total);
}
@@ -985,33 +1499,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(
@@ -1030,11 +1556,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)) {
@@ -1045,7 +1571,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);
}
@@ -1058,7 +1584,23 @@
@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){
+ Criteria lalType = Criteria.where("lalType").ne(ApiConstants.HK_Info_LayType_Normal);
+ Criteria gbCodeType = Criteria.where("gbCodeType").ne(ApiConstants.HK_Info_GbCodeType_Normal);
+ Criteria orOperator = new Criteria().orOperator(lalType, gbCodeType);
+ orOperator.andOperator(andCriteria);
+ query = Query.query(orOperator);
+ }
+ }
long total = mongoTemplate.count(query, CrossDetailResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
@@ -1069,23 +1611,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("$ne",1)));
+ errorConditions.add(new Document("gbCodeType",new Document("$ne",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(
@@ -1104,11 +1646,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)) {
@@ -1133,7 +1675,15 @@
public Result vehicleCollectionDataIntegrity(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+ if(params.getOption()!=null){
+ //涓昏灞炴�т笉瀹屾暣
+ if(params.getOption()==1){
+ query.addCriteria(Criteria.where("noIntegrityCount").gt(0));
+ }else if(params.getOption()==-1){
+ //灞炴�т笉瀹屾暣
+ query.addCriteria(Criteria.where("mainNoIntegrityCount").gt(0));
+ }
+ }
long total = mongoTemplate.count(query, DataIntegrityMonitoringResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
List<DataIntegrityMonitoringResult> resultList = mongoTemplate.find(query, DataIntegrityMonitoringResult.class);
@@ -1142,11 +1692,33 @@
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("hk_data_integrity_monitoring");
- Date now = new Date();
+ //鎶撴媿閲忔眰鍜�
+ // 鏋勫缓鍩烘湰鐨�$match鏉′欢
+ List<Document> matchConditions = new ArrayList<>();
+ setTag(params, matchConditions);
+ 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"))
+ .append("noIntegrityCount", new Document("$sum", "$noIntegrityCount"))
+ .append("mainNoIntegrityCount", new Document("$sum", "$mainNoIntegrityCount"))
+ ));
+ // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
+ AggregateIterable<Document> result = collection.aggregate(pipeline);
+ int dataCount = 0;
+ int noIntegrityCount = 0;
+ int mainNoIntegrityCount = 0;
+ for (Document doc : result) {
+ dataCount = doc.getInteger("dataCount");
+ noIntegrityCount = doc.getInteger("noIntegrityCount");
+ mainNoIntegrityCount = doc.getInteger("mainNoIntegrityCount");
+ }
+
List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
.select(CheckIndexCar::getVehicleCaptureIntegrity)
.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)) {
@@ -1154,9 +1726,13 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
-
+ List<String> countList = new ArrayList<>();
+ countList.add(dataCount+"");
+ countList.add(noIntegrityCount+"");
+ countList.add(mainNoIntegrityCount+"");
+ countList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(this.remove0(onlineRate)));
+ map.put("count", countList);
map.put("list", resultList);
return Result.ok().data(map).total(total);
}
@@ -1171,16 +1747,49 @@
public Result vehicleCollectionDataCaptured(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+ if(params.getOption()!=null){
+ //涓昏灞炴�т笉涓�鑷�
+ if(params.getOption()==1){
+ query.addCriteria(Criteria.where("majorDiffCount").gt(0));
+ }else if(params.getOption()==-1){
+ //閲嶈灞炴�т笉涓�鑷�
+ query.addCriteria(Criteria.where("importantDiffCount").gt(0));
+ }
+ }
long total = mongoTemplate.count(query, AttrRecognitionMonitorResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
List<AttrRecognitionMonitorResult> resultList = mongoTemplate.find(query, AttrRecognitionMonitorResult.class);
- Date now = new Date();
+ // 缁熻鏁伴噺
+ MongoDatabase database = mongoTemplate.getDb();
+ MongoCollection<Document> collection = database.getCollection("hk_attr_recognition_monitor");
+
+ // 鏋勫缓鍩烘湰鐨�$match鏉′欢
+ List<Document> matchConditions = new ArrayList<>();
+ setTag(params, matchConditions);
+ List<Document> pipeline = Arrays.asList(
+ new Document("$match", new Document("$and", matchConditions)),
+ new Document("$group", new Document("_id", "$mongoCreateTime")
+ .append("sampleCount", new Document("$sum", "$sampleCount"))
+ .append("majorDiffCount", new Document("$sum", "$majorDiffCount"))
+ .append("importantDiffCount", new Document("$sum", "$importantDiffCount"))
+ ));
+ // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
+ AggregateIterable<Document> result = collection.aggregate(pipeline);
+ int sampleCount = 0;
+ int majorDiffCount = 0;
+ int importantDiffCount = 0;
+ for (Document doc : result) {
+ sampleCount = doc.getInteger("sampleCount");
+ majorDiffCount = doc.getInteger("majorDiffCount");
+ importantDiffCount = doc.getInteger("importantDiffCount");
+ }
+
List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
.select(CheckIndexCar::getVehicleCaptureAccuracy)
.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)) {
@@ -1188,8 +1797,14 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
+
+ List<String> countList = new ArrayList<>();
+ countList.add(sampleCount+"");
+ countList.add(majorDiffCount+"");
+ countList.add(importantDiffCount+"");
+ countList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(this.remove0(onlineRate)));
+ map.put("count", countList);
map.put("list", resultList);
return Result.ok().data(map).total(total);
}
@@ -1204,30 +1819,46 @@
public Result vehicleClockAccuracy(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+ if(params.getOption()!=null){
+ //褰撴棩鏃堕挓寮傚父
+ if(params.getOption()==1){
+ query.addCriteria(Criteria.where("majorDiffCount").gt(0));
+ }else if(params.getOption()==-1){
+ //鍏ㄩ儴鏃堕挓寮傚父
+ query.addCriteria(Criteria.where("importantDiffCount").gt(0));
+ }
+ }
long total = mongoTemplate.count(query, VehicleDeviceInspectionResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
List<VehicleDeviceInspectionResult> resultList = mongoTemplate.find(query, VehicleDeviceInspectionResult.class);
-
+ List<SnapClockVO> resultVos = new ArrayList<>();
+ resultList.forEach(item->{
+ SnapClockVO vo = VehicleDeviceInspectionResult.getVO(item);
+ resultVos.add(vo);
+ });
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("hk_vehicle_device_inspection");
List<Document> dList1 = new ArrayList<>(2);
- dList1.add(new Document("snapResult", new Document("$eq", 1)));
+ dList1.add(new Document("snapClock.todayClockResult", new Document("$eq", 1)));
setTag(params, dList1);
List<Document> dList2 = new ArrayList<>(2);
- dList2.add(new Document("snapResult", new Document("$eq", 2)));
+ dList2.add(new Document("snapClock.todayClockResult", new Document("$eq", 0)));
setTag(params, dList2);
List<Document> dList3 = new ArrayList<>(2);
- dList3.add(new Document("snapResult", new Document("$eq", 4)));
+ dList3.add(new Document("snapClock.allClockResult", new Document("$eq", 1)));
setTag(params, dList3);
- Document ipErrFilter = new Document("$and", dList1);
- Document macdzErrFilter = new Document("$and", dList2);
- Document longitudeErrFilter = new Document("$and", dList3);
+ List<Document> dList4 = new ArrayList<>(2);
+ dList4.add(new Document("snapClock.allClockResult", new Document("$eq", 0)));
+ setTag(params, dList4);
+ Document todayFilter = new Document("$and", dList1);
+ Document todayErrFilter = new Document("$and", dList2);
+ Document allFilter = new Document("$and", dList3);
+ Document allErrFilter = new Document("$and", dList4);
- List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, longitudeErrFilter);
+ List<Document> lists = Arrays.asList(todayFilter, todayErrFilter, allFilter,allErrFilter);
List<String> rList = lists.stream().map(filter -> {
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -1246,11 +1877,11 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- Date now = new Date();
List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
.select(CheckIndexCar::getVehicleTimingAccuracy)
.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)) {
@@ -1261,7 +1892,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);
}
@@ -1275,17 +1906,58 @@
public Result vehicleTimelyUploadAccuracy(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+ query.addCriteria(Criteria.where("dataType").is(ApiConstants.HK_DataType_CAR));
+ if(params.getOption()!=null){
+ //姝e父
+ if(params.getOption()==1){
+ query.addCriteria(Criteria.where("delayCount").is(0));
+ }else if(params.getOption()==-1){
+ //寤惰繜
+ query.addCriteria(Criteria.where("delayCount").gt(0));
+ }
+ }
long total = mongoTemplate.count(query, SnapshotDelayMonitorResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
List<SnapshotDelayMonitorResult> resultList = mongoTemplate.find(query, SnapshotDelayMonitorResult.class);
-
// 缁熻鏁�
- Date now = new Date();
+ MongoDatabase database = mongoTemplate.getDb();
+ MongoCollection<Document> collection = database.getCollection("hk_snapshop_delay_monitor");
+
+ List<Document> dList1 = new ArrayList<>(2);
+ setTag(params, dList1);
+ dList1.add(new Document("dataType" ,new Document("$eq",ApiConstants.HK_DataType_CAR)));
+ Document allFilter = new Document("$and", dList1);
+ List<Document> dList2 = new ArrayList<>(2);
+ dList2.add(new Document("dataType" ,new Document("$eq",ApiConstants.HK_DataType_CAR)));
+ dList2.add(new Document("delayCount", new Document("$gt", 0)));
+ setTag(params, dList2);
+ Document delayFilter = new Document("$and", dList2);
+
+ List<Document> lists = Arrays.asList(allFilter,delayFilter);
+ List<String> rList = lists.stream().map(filter -> {
+ // 鏋勫缓鑱氬悎绠¢亾
+ List<Document> pipeline = Arrays.asList(
+ new Document("$match", filter),
+ // $group 鍘婚噸
+ new Document("$group", new Document("_id", "$externalIndexCode")),
+ new Document("$count", "uniqueDeviceIds")
+ );
+ // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
+ AggregateIterable<Document> result = collection.aggregate(pipeline);
+ Integer uniqueDeviceIdCount = 0;
+ for (Document doc : result) {
+ uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds");
+ break; // 涓嶉渶瑕佺户缁亶鍘嗭紝鍥犱负 $count 鍙細浜х敓涓�涓粨鏋�
+ }
+ return uniqueDeviceIdCount + "";
+ }).collect(Collectors.toList());
+
+
List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
.select(CheckIndexCar::getVehicleUploadTimeliness)
.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)) {
@@ -1293,8 +1965,9 @@
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", Arrays.asList(this.remove0(onlineRate)));
+ map.put("count", rList);
map.put("list", resultList);
return Result.ok().data(map).total(total);
}
@@ -1309,17 +1982,44 @@
public Result vehicleUrlAccuracy(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+ if(params.getOption()!=null){
+ if(params.getOption()==1){
+ query.addCriteria(Criteria.where("expCount").is(0));
+ }else if(params.getOption()==-1){
+ query.addCriteria(Criteria.where("expCount").gt(0));
+ }
+ }
long total = mongoTemplate.count(query, PicAccessResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
+ query.with(Sort.by(Sort.Order.desc("expCount")));
List<PicAccessResult> resultList = mongoTemplate.find(query, PicAccessResult.class);
// 缁熻鏁�
- Date now = new Date();
+ MongoDatabase database = mongoTemplate.getDb();
+ MongoCollection<Document> collection = database.getCollection("hk_pic_access");
+ // 鏋勫缓鍩烘湰鐨�$match鏉′欢
+ List<Document> matchConditions = new ArrayList<>();
+ setTag(params, matchConditions);
+ List<Document> pipeline = Arrays.asList(
+ new Document("$match", new Document("$and", matchConditions)),
+ new Document("$group", new Document("_id", "$mongoCreateTime")
+ .append("sampleCount", new Document("$sum", "$sampleCount"))
+ .append("expCount", new Document("$sum", "$expCount"))
+ ));
+ // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
+ AggregateIterable<Document> result = collection.aggregate(pipeline);
+ int sampleCount = 0;
+ int expCount = 0;
+ for (Document doc : result) {
+ sampleCount = doc.getInteger("sampleCount");
+ expCount = doc.getInteger("expCount");
+ }
+
List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
.select(CheckIndexCar::getVehicleUrlAvailability)
.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)) {
@@ -1327,8 +2027,13 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
+ List<String> rList = new ArrayList<>();
+ rList.add(sampleCount+"");
+ rList.add(expCount+"");
+ rList.add(this.remove0(onlineRate));
+
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(this.remove0(onlineRate)));
+ map.put("count", rList);
map.put("list", resultList);
return Result.ok().data(map).total(total);
}
@@ -1343,17 +2048,48 @@
public Result vehicleBigImgAccuracy(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+ if(params.getOption()!=null){
+ if(params.getOption()==1){
+ query.addCriteria(Criteria.where("bigUseful.bigPicExpCount").is(0));
+ }else if(params.getOption()==-1){
+ query.addCriteria(Criteria.where("bigUseful.bigPicExpCount").gt(0));
+ }
+ }
long total = mongoTemplate.count(query, VehicleDeviceSamplingResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
+ query.with(Sort.by(Sort.Order.desc("bigUseful.bigPicExpCount")));
List<VehicleDeviceSamplingResult> resultList = mongoTemplate.find(query, VehicleDeviceSamplingResult.class);
-
+ List<BigPicUsefulVO> voList = new ArrayList<>();
+ resultList.forEach(item->{
+ BigPicUsefulVO picVO = VehicleDeviceSamplingResult.getPicVO(item);
+ voList.add(picVO);
+ });
// 缁熻鏁�
- Date now = new Date();
+ MongoDatabase database = mongoTemplate.getDb();
+ MongoCollection<Document> collection = database.getCollection("hk_vehicle_device_sampling");
+ // 鏋勫缓鍩烘湰鐨�$match鏉′欢
+ List<Document> matchConditions = new ArrayList<>();
+ setTag(params, matchConditions);
+ List<Document> pipeline = Arrays.asList(
+ new Document("$match", new Document("$and", matchConditions)),
+ new Document("$group", new Document("_id", "$mongoCreateTime")
+ .append("sampleCount", new Document("$sum", "$bigUseful.sampleCount"))
+ .append("expCount", new Document("$sum", "$bigUseful.bigPicExpCount"))
+ ));
+ // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
+ AggregateIterable<Document> result = collection.aggregate(pipeline);
+ int sampleCount = 0;
+ int expCount = 0;
+ for (Document doc : result) {
+ sampleCount = doc.getInteger("sampleCount");
+ expCount = doc.getInteger("expCount");
+ }
+ List<String> countList = new ArrayList<>();
List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
.select(CheckIndexCar::getVehiclePictureAvailability)
.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)) {
@@ -1361,9 +2097,12 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
+ countList.add(sampleCount+"");
+ countList.add(expCount+"");
+ countList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(this.remove0(onlineRate)));
- map.put("list", resultList);
+ map.put("count", countList);
+ map.put("list", voList);
return Result.ok().data(map).total(total);
}
@@ -1377,32 +2116,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(
@@ -1420,12 +2166,28 @@
}
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)) {
@@ -1450,15 +2212,29 @@
public Result facePointOnlineRate(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("name", "no", "ip");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ //鏌ヤ汉鑴歌澶�
+ query.addCriteria(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Face + ".*"));
+ //涓嬫媺妗嗗湪绾挎儏鍐垫煡璇㈡潯浠�
+ if (params.getOption() != null) {
+ query.addCriteria(Criteria.where("online").is(params.getOption()));
+ }
+ Sort sort = Sort.by(
+ Sort.Order.asc("pingOnline"), // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭
+ Sort.Order.desc("offLineCount") // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭
+ );
+ // 閫氳繃pingOnline瀛楁鎺掑簭锛屼负false鐨勬帓鍦ㄥ墠闈�
+ query.with(sort);
//鍒嗛〉鏁伴噺
long total = mongoTemplate.count(query, TMonitorResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
List<TMonitorResult> resultList = mongoTemplate.find(query, TMonitorResult.class);
resultList.forEach(item -> {
- if (null != item.getPingOnline() && item.getPingOnline()) {
- item.setOnlineStr("鍦ㄧ嚎");
- } else {
- item.setOnlineStr("绂荤嚎");
+ if (item.getPingOnline() == null) {
+ item.setPingOnlineStr("鏈煡");
+ } else if (item.getPingOnline()) {
+ item.setPingOnlineStr("鍦ㄧ嚎");
+ } else if (!item.getPingOnline()) {
+ item.setPingOnlineStr("绂荤嚎");
}
if (1 == item.getOnline()) {
item.setOnlineStr("鍦ㄧ嚎");
@@ -1467,17 +2243,58 @@
} else {
item.setOnlineStr("鏈煡");
}
+ List<String> offLineTime = item.getOffLineTimeStr();
+ if(!CollectionUtils.isEmpty(offLineTime)) {
+ //鍚庣画鍙互鏀规垚閰嶇疆鐨勭绾挎鏁�(鎻愬彇鍓峮娆★紝n涓洪厤缃殑绂荤嚎娆℃暟)
+ if (offLineTime.size() > 1) {
+ offLineTime = offLineTime.subList(0, 2);
+ }
+ item.setOffLineTimeStr(offLineTime);
+ }
});
params.setDeptTag(-1);
params.setDeviceType(3);
- // 缁熻璁惧鏁伴噺
- Integer distinctCount = pointMapper.distinctCount(params);
- Date now = new Date();
+ // 缁熻璁惧鏁伴噺
+ //鍗$墖缁熻
+ int totalCount = 0;
+ int onlineCount = 0;
+ int offlineCount = 0;
+ int unknownCount = 0;
+ //鏋勫缓鏉′欢
+ List<Criteria> criteriaList = new ArrayList<>();
+ // 娣诲姞鍥哄畾鏉′欢
+ criteriaList.add(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Face + ".*"));
+ criteriaList.add(Criteria.where("mongoCreateTime").gte(params.getStartTime()).lte(params.getEndTime()));
+ // 鏍规嵁dataType鍔ㄦ�佹坊鍔犳潯浠�
+ if (params.getDataType() == 1) {
+ criteriaList.add(Criteria.where("provinceTag").is(Boolean.TRUE));
+ } else if (params.getDataType() == 2) {
+ criteriaList.add(Criteria.where("deptTag").is(Boolean.TRUE));
+ }
+ // 鏋勫缓match鎿嶄綔
+ MatchOperation match = Aggregation.match(
+ new Criteria().andOperator(criteriaList.toArray(new Criteria[0]))
+ );
+ GroupOperation group = Aggregation.group()
+ .sum(ConditionalOperators.when(Criteria.where("online").is(ApiConstants.UY_OnlineSite_Online)).then(1).otherwise(0)).as("onlineCount")
+ .sum(ConditionalOperators.when(Criteria.where("online").is(ApiConstants.UY_OnlineSite_Offline)).then(1).otherwise(0)).as("offlineCount")
+ .sum(ConditionalOperators.when(Criteria.where("online").is(ApiConstants.UY_OnlineSite_Unknown)).then(1).otherwise(0)).as("unknownCount");
+ // 灏嗗尮閰嶉樁娈靛拰鍒嗙粍闃舵缁勫悎璧锋潵
+ Aggregation aggregation = Aggregation.newAggregation(match, group);
+ // 鎵ц鑱氬悎鏌ヨ
+ AggregationResults<Map> results = mongoTemplate.aggregate(aggregation, "t_monitor_online", Map.class); // 鏇挎崲涓轰綘鐨勯泦鍚堝悕绉�
+ for (Map<String, Object> result : results.getMappedResults()) {
+ offlineCount = (Integer) result.getOrDefault("offlineCount", 0L);
+ unknownCount = (Integer) result.getOrDefault("unknownCount", 0L);
+ onlineCount = (Integer) result.getOrDefault("onlineCount", 0L);
+ totalCount = offlineCount + unknownCount + onlineCount;
+ }
List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
.select(CheckIndexFace::getSiteOnline)
.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, params.getStartTime(), params.getEndTime())
.list();
BigDecimal onlineRate = BigDecimal.ZERO;
if (CollectionUtils.isNotEmpty(videoList)) {
@@ -1485,11 +2302,9 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
- List<String> rList = new ArrayList<>(2);
- rList.add(distinctCount + "");
- rList.add(this.remove0(onlineRate));
+
HashMap<String, Object> map = new HashMap<>();
- map.put("count", rList);
+ map.put("count", Arrays.asList(totalCount + "", onlineCount + "", offlineCount + "", unknownCount + "", this.remove0(onlineRate)));
map.put("list", resultList);
return Result.ok().data(map).total(total);
}
@@ -1502,34 +2317,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(
@@ -1548,11 +2375,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)) {
@@ -1563,7 +2390,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);
}
@@ -1576,33 +2403,50 @@
@Override
public Result faceCollectionConsistency(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){
+ Criteria lalType = Criteria.where("lalType").ne(ApiConstants.HK_Info_LayType_Normal);
+ Criteria gbCodeType = Criteria.where("gbCodeType").ne(ApiConstants.HK_Info_GbCodeType_Normal);
+ Criteria orOperator = new Criteria().orOperator(lalType, gbCodeType);
+ orOperator.andOperator(andCriteria);
+ query = Query.query(orOperator);
+ }
+ }
- long total = mongoTemplate.count(query, CrossDetailResult.class);
+ long total = mongoTemplate.count(query, MonitoringDetailResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
- List<CrossDetailResult> resultList = mongoTemplate.find(query, CrossDetailResult.class);
+ List<MonitoringDetailResult> resultList = mongoTemplate.find(query, MonitoringDetailResult.class);
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
- MongoCollection<Document> collection = database.getCollection("hk_cross_detail");
+ MongoCollection<Document> collection = database.getCollection("hk_monitoring_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> lists = Arrays.asList(ipErrFilter, macdzErrFilter, latitudeErrFilter, longitudeErrFilter);
+ List<Document> errorConditions = new ArrayList<>();
+ errorConditions.add(new Document("lalType",new Document("$ne",1)));
+ errorConditions.add(new Document("gbCodeType",new Document("$ne",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(totalFilter, correctFilter, errorFilter);
List<String> rList = lists.stream().map(filter -> {
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -1621,11 +2465,11 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- Date now = new Date();
List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
.select(CheckIndexFace::getFaceInformationCollectionAccuracy)
.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)) {
@@ -1650,56 +2494,50 @@
public Result faceImgQualification(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "cameraName");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
- long total = mongoTemplate.count(query, MonitoringDetailResult.class);
+ if(params.getOption()!=null){
+ if(params.getOption()==1){
+ query.addCriteria(Criteria.where("faceEligibility.unfaceEligCount").is(0));
+ }else if(params.getOption()==-1){
+ query.addCriteria(Criteria.where("faceEligibility.unfaceEligCount").gt(0));
+ }
+ }
+ long total = mongoTemplate.count(query, FaceDeviceSamplingResult.class);
+ query.with(Sort.by(Sort.Order.desc("faceEligibility.unfaceEligCount")));
MongoUtil.setPage(query, params, TIME_FIELD);
- List<MonitoringDetailResult> resultList = mongoTemplate.find(query, MonitoringDetailResult.class);
+ List<FaceDeviceSamplingResult> resultList = mongoTemplate.find(query, FaceDeviceSamplingResult.class);
+ List<BigPicUsefulVO> voList = new ArrayList<>();
+ resultList.forEach(item->{
+ BigPicUsefulVO picVO = FaceDeviceSamplingResult.getEligeVO(item);
+ voList.add(picVO);
+ });
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
- MongoCollection<Document> collection = database.getCollection("hk_monitoring_detail");
+ MongoCollection<Document> collection = database.getCollection("hk_face_device_sampling");
+ // 鏋勫缓鍩烘湰鐨�$match鏉′欢
+ List<Document> matchConditions = new ArrayList<>();
+ setTag(params, matchConditions);
+ List<Document> pipeline = Arrays.asList(
+ new Document("$match", new Document("$and", matchConditions)),
+ new Document("$group", new Document("_id", "$mongoCreateTime")
+ .append("sampleCount", new Document("$sum", "$faceEligibility.sampleCount"))
+ .append("expCount", new Document("$sum", "$faceEligibility.unfaceEligCount"))
+ ));
+ // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
+ AggregateIterable<Document> result = collection.aggregate(pipeline);
+ int sampleCount = 0;
+ int expCount = 0;
+ for (Document doc : result) {
+ sampleCount = doc.getInteger("sampleCount");
+ expCount = doc.getInteger("expCount");
+ }
+ List<String> countList = new ArrayList<>();
- 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)));
- 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> lists = Arrays.asList(ipErrFilter, macdzErrFilter, latitudeErrFilter, longitudeErrFilter);
- List<String> rList = lists.stream().map(filter -> {
- // 鏋勫缓鑱氬悎绠¢亾
- List<Document> pipeline = Arrays.asList(
- new Document("$match", filter),
- // $group 鍘婚噸
- new Document("$group", new Document("_id", "$externalIndexCode")),
- new Document("$count", "uniqueDeviceIds")
- );
- // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
- AggregateIterable<Document> result = collection.aggregate(pipeline);
- Integer uniqueDeviceIdCount = 0;
- for (Document doc : result) {
- uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds");
- break; // 涓嶉渶瑕佺户缁亶鍘嗭紝鍥犱负 $count 鍙細浜х敓涓�涓粨鏋�
- }
- return uniqueDeviceIdCount + "";
- }).collect(Collectors.toList());
-
- Date now = new Date();
List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
.select(CheckIndexFace::getFacePictureQualification)
.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)) {
@@ -1707,10 +2545,12 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
- rList.add(this.remove0(onlineRate));
+ countList.add(sampleCount+"");
+ countList.add(expCount+"");
+ countList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
- map.put("count", rList);
- map.put("list", resultList);
+ map.put("count", countList);
+ map.put("list", voList);
return Result.ok().data(map).total(total);
}
@@ -1724,29 +2564,47 @@
public Result faceCapturesImagesAccuracy(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+ if(params.getOption()!=null){
+ //褰撴棩鏃堕挓寮傚父
+ if(params.getOption()==1){
+ query.addCriteria(Criteria.where("majorDiffCount").gt(0));
+ }else if(params.getOption()==-1){
+ //鍏ㄩ儴鏃堕挓寮傚父
+ query.addCriteria(Criteria.where("importantDiffCount").gt(0));
+ }
+ }
long total = mongoTemplate.count(query, FaceDeviceInspectionResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
List<FaceDeviceInspectionResult> resultList = mongoTemplate.find(query, FaceDeviceInspectionResult.class);
+ List<SnapClockVO> resultVos = new ArrayList<>();
+ resultList.forEach(item->{
+ SnapClockVO vo = FaceDeviceInspectionResult.getVO(item);
+ resultVos.add(vo);
+ });
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
- MongoCollection<Document> collection = database.getCollection("hk_vehicle_device_inspection");
+ MongoCollection<Document> collection = database.getCollection("hk_face_device_inspection");
List<Document> dList1 = new ArrayList<>(2);
- dList1.add(new Document("snapResult", new Document("$eq", 1)));
+ dList1.add(new Document("snapClock.todayClockResult", new Document("$eq", 1)));
setTag(params, dList1);
List<Document> dList2 = new ArrayList<>(2);
- dList2.add(new Document("snapResult", new Document("$eq", 2)));
+ dList2.add(new Document("snapClock.todayClockResult", new Document("$eq", 0)));
setTag(params, dList2);
List<Document> dList3 = new ArrayList<>(2);
- dList3.add(new Document("snapResult", new Document("$eq", 4)));
+ dList3.add(new Document("snapClock.allClockResult", new Document("$eq", 1)));
setTag(params, dList3);
- Document ipErrFilter = new Document("$and", dList1);
- Document macdzErrFilter = new Document("$and", dList2);
- Document longitudeErrFilter = new Document("$and", dList3);
+ List<Document> dList4 = new ArrayList<>(2);
+ dList4.add(new Document("snapClock.allClockResult", new Document("$eq", 0)));
+ setTag(params, dList4);
+ Document todayFilter = new Document("$and", dList1);
+ Document todayErrFilter = new Document("$and", dList2);
+ Document allFilter = new Document("$and", dList3);
+ Document allErrFilter = new Document("$and", dList4);
- List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, longitudeErrFilter);
+
+ List<Document> lists = Arrays.asList(todayFilter, todayErrFilter, allFilter,allErrFilter);
List<String> rList = lists.stream().map(filter -> {
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -1765,11 +2623,11 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- Date now = new Date();
List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
.select(CheckIndexFace::getFaceTimingAccuracy)
.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)) {
@@ -1780,7 +2638,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);
}
@@ -1794,29 +2652,34 @@
public Result faceTimelyUpload(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
- long total = mongoTemplate.count(query, FaceDeviceInspectionResult.class);
+ query.addCriteria(Criteria.where("dataType").is(ApiConstants.HK_DataType_FACE));
+ if(params.getOption()!=null){
+ //姝e父
+ if(params.getOption()==1){
+ query.addCriteria(Criteria.where("delayCount").is(0));
+ }else if(params.getOption()==-1){
+ //寤惰繜
+ query.addCriteria(Criteria.where("delayCount").gt(0));
+ }
+ }
+ long total = mongoTemplate.count(query, SnapshotDelayMonitorResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
- List<FaceDeviceInspectionResult> resultList = mongoTemplate.find(query, FaceDeviceInspectionResult.class);
-
- // 缁熻鏁伴噺
+ List<SnapshotDelayMonitorResult> resultList = mongoTemplate.find(query, SnapshotDelayMonitorResult.class);
+ // 缁熻鏁�
MongoDatabase database = mongoTemplate.getDb();
- MongoCollection<Document> collection = database.getCollection("hk_vehicle_device_inspection");
+ MongoCollection<Document> collection = database.getCollection("hk_snapshop_delay_monitor");
List<Document> dList1 = new ArrayList<>(2);
- dList1.add(new Document("snapResult", new Document("$eq", 1)));
setTag(params, dList1);
+ dList1.add(new Document("dataType" ,new Document("$eq",ApiConstants.HK_DataType_FACE)));
+ Document allFilter = new Document("$and", dList1);
List<Document> dList2 = new ArrayList<>(2);
- dList2.add(new Document("snapResult", new Document("$eq", 2)));
+ dList2.add(new Document("dataType" ,new Document("$eq",ApiConstants.HK_DataType_FACE)));
+ dList2.add(new Document("delayCount", new Document("$gt", 0)));
setTag(params, dList2);
- List<Document> dList3 = new ArrayList<>(2);
- dList3.add(new Document("snapResult", new Document("$eq", 4)));
- setTag(params, dList3);
- Document ipErrFilter = new Document("$and", dList1);
- Document macdzErrFilter = new Document("$and", dList2);
- Document longitudeErrFilter = new Document("$and", dList3);
+ Document delayFilter = new Document("$and", dList2);
- List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, longitudeErrFilter);
+ List<Document> lists = Arrays.asList(allFilter,delayFilter);
List<String> rList = lists.stream().map(filter -> {
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -1835,11 +2698,12 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- Date now = new Date();
+
List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
.select(CheckIndexFace::getFaceUploadTimeliness)
.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)) {
@@ -1864,17 +2728,50 @@
public Result faceAvailabilityOfLargeImg(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+ if(params.getOption()!=null){
+ if(params.getOption()==1){
+ query.addCriteria(Criteria.where("bigUseful.bigPicExpCount").is(0));
+ }else if(params.getOption()==-1){
+ query.addCriteria(Criteria.where("bigUseful.bigPicExpCount").gt(0));
+ }
+ }
long total = mongoTemplate.count(query, FaceDeviceSamplingResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
+ query.with(Sort.by(Sort.Order.desc("bigUseful.bigPicExpCount")));
List<FaceDeviceSamplingResult> resultList = mongoTemplate.find(query, FaceDeviceSamplingResult.class);
+ List<BigPicUsefulVO> voList = new ArrayList<>();
+ resultList.forEach(item->{
+ BigPicUsefulVO picVO = FaceDeviceSamplingResult.getPicVO(item);
+ voList.add(picVO);
+ });
+ // 缁熻鏁�
+ MongoDatabase database = mongoTemplate.getDb();
+ MongoCollection<Document> collection = database.getCollection("hk_face_device_sampling");
+ // 鏋勫缓鍩烘湰鐨�$match鏉′欢
+ List<Document> matchConditions = new ArrayList<>();
+ setTag(params, matchConditions);
+ List<Document> pipeline = Arrays.asList(
+ new Document("$match", new Document("$and", matchConditions)),
+ new Document("$group", new Document("_id", "$mongoCreateTime")
+ .append("sampleCount", new Document("$sum", "$bigUseful.sampleCount"))
+ .append("expCount", new Document("$sum", "$bigUseful.bigPicExpCount"))
+ ));
+ // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
+ AggregateIterable<Document> result = collection.aggregate(pipeline);
+ int sampleCount = 0;
+ int expCount = 0;
+ for (Document doc : result) {
+ sampleCount = doc.getInteger("sampleCount");
+ expCount = doc.getInteger("expCount");
+ }
+ List<String> countList = new ArrayList<>();
// 缁熻鏁�
- Date now = new Date();
List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
.select(CheckIndexFace::getFacePictureAvailability)
.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)) {
@@ -1882,10 +2779,12 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
-
+ countList.add(sampleCount+"");
+ countList.add(expCount+"");
+ countList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(this.remove0(onlineRate)));
- map.put("list", resultList);
+ map.put("count", countList);
+ map.put("list", voList);
return Result.ok().data(map).total(total);
}
@@ -1931,5 +2830,9 @@
} else if (params.getDataType().equals(2)) {
dList.add(new Document("deptTag", new Document("$eq", Boolean.TRUE)));
}
+ 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