From 746a85a842adc99322b364d1c564a624dce62429 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期三, 30 十月 2024 23:01:49 +0800
Subject: [PATCH] 工单阈值bug、工单分页故障查询bug、工单未进入下发表bug
---
ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java | 1480 ++++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 1,157 insertions(+), 323 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 39fb39a..0c7bf7f 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java
@@ -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;
@@ -10,7 +11,11 @@
import com.ycl.platform.domain.entity.*;
import com.ycl.platform.domain.query.DataCenterQuery;
import com.ycl.platform.domain.result.HK.*;
+import com.ycl.platform.domain.result.SYS.TMonitorResult;
import com.ycl.platform.domain.result.UY.*;
+import com.ycl.platform.domain.vo.DataCenter.MonitorQualifyResultVO;
+import com.ycl.platform.domain.vo.PointDetailVO;
+import com.ycl.platform.domain.vo.home.HomeFaceVO;
import com.ycl.platform.mapper.ImageResourceSecurityDetailMapper;
import com.ycl.platform.mapper.YwPointMapper;
import com.ycl.platform.service.*;
@@ -18,11 +23,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;
@@ -30,7 +40,9 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
+import java.text.DecimalFormat;
import java.util.*;
+import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
@@ -53,6 +65,8 @@
private final static String TIME_FIELD = "mongoCreateTime";
+ private static DecimalFormat DF = new DecimalFormat("#.####");
+
/**
* 瑙嗛锛氱偣浣嶅湪绾跨巼
*
@@ -61,24 +75,81 @@
*/
@Override
public Result videoPointOnlineRate(DataCenterQuery params) {
- // 鐢熸垚鏌ヨ
- List<String> likeFileds = Arrays.asList("arealayerName", "ipAddr", "deviceName", "deviceId");
+ List<String> likeFileds = Arrays.asList("name", "no", "ip");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
- // 鍏堟煡鎬绘暟鍐嶅垎椤�
- long total = mongoTemplate.count(query, VideoOnlineResult.class);
+ //鏌ヨ棰戣澶�
+ query.addCriteria(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Video + ".*"));
+ //涓嬫媺妗嗗湪绾挎儏鍐垫煡璇㈡潯浠�
+ 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<VideoOnlineResult> resultList = mongoTemplate.find(query, VideoOnlineResult.class);
+ List<TMonitorResult> resultList = mongoTemplate.find(query, TMonitorResult.class);
+ resultList.forEach(item -> {
+ if (item.getPingOnline() == null) {
+ item.setPingOnlineStr("鏈煡");
+ } else if (item.getPingOnline()) {
+ item.setPingOnlineStr("鍦ㄧ嚎");
+ } else if (!item.getPingOnline()) {
+ item.setPingOnlineStr("绂荤嚎");
+ }
+ if (1 == item.getOnline()) {
+ item.setOnlineStr("鍦ㄧ嚎");
+ } else if (-1 == item.getOnline()) {
+ item.setOnlineStr("绂荤嚎");
+ } else {
+ item.setOnlineStr("鏈煡");
+ }
+ });
+ params.setDeptTag(-1);
+ params.setDeviceType(1);
- // 缁熻鏁伴噺
- MongoDatabase database = mongoTemplate.getDb();
- MongoCollection<Document> collection = database.getCollection("uy_online");
- long distinctCount = collection.distinct("deviceId", String.class).into(new ArrayList<>()).size();
- Date now = new Date();
+ //鍗$墖缁熻
+ 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, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
+ .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);
@@ -86,7 +157,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 + "",onlineRate + "%"));
+ map.put("count", Arrays.asList(totalCount + "", onlineCount + "", offlineCount + "", unknownCount + "", this.remove0(onlineRate)));
map.put("list", resultList);
return Result.ok().data(map).total(total);
}
@@ -99,39 +170,80 @@
*/
@Override
public Result deptVideoPointOnlineRate(DataCenterQuery params) {
-
- List<String> likeFileds = Arrays.asList("arealayerName", "ipAddr", "deviceName", "deviceId");
- // 鐢熸垚鏌ヨ
- Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, 1);
-
- // 鍏堟煡鎬绘暟鍐嶅垎椤�
- long total = mongoTemplate.count(query, VideoOnlineResult.class);
- MongoUtil.setPage(query, params, TIME_FIELD);
- List<VideoOnlineResult> resultList = mongoTemplate.find(query, VideoOnlineResult.class);
-
- // 缁熻鏁伴噺
- MongoDatabase database = mongoTemplate.getDb();
- MongoCollection<Document> collection = database.getCollection("uy_online");
- Document filter = new Document("deptTag", new Document("$eq", Boolean.TRUE));
- // 鏋勫缓鑱氬悎绠¢亾
- List<Document> pipeline = Arrays.asList(
- // 鍙閮ㄧ骇鐨�
- new Document("$match", filter),
- // $group 鍘婚噸
- new Document("$group", new Document("_id", "$deviceId")),
- new Document("$count", "uniqueDeviceIds")
- );
- // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
- AggregateIterable<Document> result = collection.aggregate(pipeline);
- Integer uniqueDeviceIdCount = 0;
- for (Document doc : result) {
- uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds");
- break; // 涓嶉渶瑕佺户缁亶鍘嗭紝鍥犱负 $count 鍙細浜х敓涓�涓粨鏋�
+ List<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()));
}
- Date now = new Date();
+ // 閫氳繃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 (item.getPingOnline() == null) {
+ item.setPingOnlineStr("鏈煡");
+ } else if (item.getPingOnline()) {
+ item.setPingOnlineStr("鍦ㄧ嚎");
+ } else if (!item.getPingOnline()) {
+ item.setPingOnlineStr("绂荤嚎");
+ }
+ if (1 == item.getOnline()) {
+ item.setOnlineStr("鍦ㄧ嚎");
+ } else if (-1 == item.getOnline()) {
+ item.setOnlineStr("绂荤嚎");
+ } else {
+ item.setOnlineStr("鏈煡");
+ }
+ });
+ // 缁熻璁惧鏁伴噺
+ //鍗$墖缁熻
+ 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);
List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
.select(CheckIndexVideo::getMinistrySiteOnline)
- .between(CheckIndexVideo::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
+ .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)) {
@@ -140,7 +252,7 @@
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(uniqueDeviceIdCount + "", onlineRate + "%"));
+ map.put("count", Arrays.asList(totalCount + "", onlineCount + "", offlineCount + "", unknownCount + "", this.remove0(onlineRate)));
map.put("list", resultList);
return Result.ok().data(map).total(total);
}
@@ -153,36 +265,80 @@
*/
@Override
public Result videoImportantPointOnlineRate(DataCenterQuery params) {
- List<String> likeFileds = Arrays.asList("arealayerName", "ipAddr", "deviceName", "deviceId");
- Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, 3);
-
- long total = mongoTemplate.count(query, VideoOnlineResult.class);
- MongoUtil.setPage(query, params, TIME_FIELD);
- List<VideoOnlineResult> resultList = mongoTemplate.find(query, VideoOnlineResult.class);
-
- // 缁熻鏁伴噺
- MongoDatabase database = mongoTemplate.getDb();
- MongoCollection<Document> collection = database.getCollection("uy_online");
- Document filter = new Document("importantTag", new Document("$eq", Boolean.TRUE));
- // 鏋勫缓鑱氬悎绠¢亾
- List<Document> pipeline = Arrays.asList(
- new Document("$match", filter),
- // $group 鍘婚噸
- new Document("$group", new Document("_id", "$deviceId")),
- new Document("$count", "uniqueDeviceIds")
- );
- // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
- AggregateIterable<Document> result = collection.aggregate(pipeline);
- Integer uniqueDeviceIdCount = 0;
- for (Document doc : result) {
- uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds");
- break; // 涓嶉渶瑕佺户缁亶鍘嗭紝鍥犱负 $count 鍙細浜х敓涓�涓粨鏋�
+ List<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);
+ resultList.forEach(item -> {
+ if (item.getPingOnline() == null) {
+ item.setPingOnlineStr("鏈煡");
+ } else if (item.getPingOnline()) {
+ item.setPingOnlineStr("鍦ㄧ嚎");
+ } else if (!item.getPingOnline()) {
+ item.setPingOnlineStr("绂荤嚎");
+ }
+ if (1 == item.getOnline()) {
+ item.setOnlineStr("鍦ㄧ嚎");
+ } else if (-1 == item.getOnline()) {
+ item.setOnlineStr("绂荤嚎");
+ } else {
+ 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)
- .between(CheckIndexVideo::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
+ .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)) {
@@ -191,7 +347,7 @@
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(uniqueDeviceIdCount + "", onlineRate + "%"));
+ map.put("count", Arrays.asList(totalCount + "", onlineCount + "", offlineCount + "", unknownCount + "", this.remove0(onlineRate)));
map.put("list", resultList);
return Result.ok().data(map).total(total);
}
@@ -204,36 +360,82 @@
*/
@Override
public Result videoImportantPointImageOnlineRate(DataCenterQuery params) {
- List<String> likeFileds = Arrays.asList("arealayerName", "ipAddr", "deviceName", "deviceId");
- Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, 4);
-
- long total = mongoTemplate.count(query, VideoOnlineResult.class);
+ List<String> likeFileds = Arrays.asList("name", "no", "ip");
+ Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ //鏌ヨ棰戣澶�
+ 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);
- List<VideoOnlineResult> resultList = mongoTemplate.find(query, VideoOnlineResult.class);
+ List<TMonitorResult> resultList = mongoTemplate.find(query, TMonitorResult.class);
- // 缁熻鏁伴噺
- MongoDatabase database = mongoTemplate.getDb();
- MongoCollection<Document> collection = database.getCollection("uy_online");
- Document filter = new Document("importantCommandImageTag", new Document("$eq", Boolean.TRUE));
- // 鏋勫缓鑱氬悎绠¢亾
- List<Document> pipeline = Arrays.asList(
- new Document("$match", filter),
- // $group 鍘婚噸
- new Document("$group", new Document("_id", "$deviceId")),
- new Document("$count", "uniqueDeviceIds")
+ params.setDeptTag(4);
+ params.setDeviceType(1);
+ resultList.forEach(item -> {
+ if (item.getPingOnline() == null) {
+ item.setPingOnlineStr("鏈煡");
+ } else if (item.getPingOnline()) {
+ item.setPingOnlineStr("鍦ㄧ嚎");
+ } else if (!item.getPingOnline()) {
+ item.setPingOnlineStr("绂荤嚎");
+ }
+ if (1 == item.getOnline()) {
+ item.setOnlineStr("鍦ㄧ嚎");
+ } else if (-1 == item.getOnline()) {
+ item.setOnlineStr("绂荤嚎");
+ } else {
+ item.setOnlineStr("鏈煡");
+ }
+ });
+
+ // 缁熻璁惧鏁伴噺
+ //鍗$墖缁熻
+ 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]))
);
- // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
- AggregateIterable<Document> result = collection.aggregate(pipeline);
- Integer uniqueDeviceIdCount = 0;
- for (Document doc : result) {
- uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds");
- break; // 涓嶉渶瑕佺户缁亶鍘嗭紝鍥犱负 $count 鍙細浜х敓涓�涓粨鏋�
+ 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;
}
- Date now = new Date();
List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
.select(CheckIndexVideo::getKeyCommandImageOnline)
- .between(CheckIndexVideo::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
+ .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)) {
@@ -242,7 +444,7 @@
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(uniqueDeviceIdCount + "", onlineRate + "%"));
+ map.put("count", Arrays.asList(totalCount + "", onlineCount + "", offlineCount + "", unknownCount + "", this.remove0(onlineRate)));
map.put("list", resultList);
return Result.ok().data(map).total(total);
}
@@ -256,22 +458,40 @@
@Override
public Result videoOneMachineDocumentRegister(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("ip.showValue", "name.showValue", "serialNumber.showValue");
- Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+ List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, TIME_FIELD, likeFileds, null);
+ Query query = new Query();
+ Criteria and = new Criteria();
+ if(params.getOption()!=null){
+ if(params.getOption() ==1){
+ andCriteria.add(Criteria.where("newDevice").is(Boolean.TRUE));
+ }else if(params.getOption() ==-1){
+ andCriteria.add(Criteria.where("newDevice").is(Boolean.FALSE));
+ }
+ }
+ and.andOperator(andCriteria);
+ query = Query.query(and);
long total = mongoTemplate.count(query, MonitorQualifyResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
List<MonitorQualifyResult> resultList = mongoTemplate.find(query, MonitorQualifyResult.class);
-
+ List<MonitorQualifyResultVO> resultVOS = new ArrayList<>();
+ for (MonitorQualifyResult result : resultList) {
+ MonitorQualifyResultVO vo = MonitorQualifyResult.getVO(result);
+ resultVOS.add(vo);
+ }
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("uy_monitor_qualify");
+ //鎬绘暟
+ List<Document> dList1 = new ArrayList<>(2);
+ setTag(params, dList1);
+ Document totalFilter = new Document("$and",dList1);
+ //鏂拌澶囨暟
+ List<Document> dList2 = new ArrayList<>(2);
+ setTag(params, dList2);
+ dList2.add(new Document("newDevice",Boolean.TRUE));
+ Document newFilter = new Document("$and",dList2);
- Document ipErrFilter = new Document("ip.error", true);
- Document macdzErrFilter = new Document("macdz.error", true);
- Document latitudeErrFilter = new Document("latitude.error", true);
- Document longitudeErrFilter = new Document("longitude.error", true);
-
- 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(
@@ -290,10 +510,11 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- Date now = new Date();
List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
.select(CheckIndexVideo::getMonitorRegistration)
- .between(CheckIndexVideo::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
+ .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)) {
@@ -301,10 +522,10 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
- rList.add(onlineRate + "%");
+ 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);
}
@@ -317,22 +538,99 @@
@Override
public Result videoOneMachineDocumentQualified(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("ip.showValue", "name.showValue", "serialNumber.showValue");
- Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, TIME_FIELD, likeFileds, null);
+ Query query = new Query();
+ Criteria and = new Criteria();
+ and.andOperator(andCriteria);
+ query = Query.query(and);
+ if(params.getOption()!=null){
+ if(params.getOption() ==1){
+ andCriteria.add(Criteria.where("serialNumber.error").is(Boolean.FALSE));
+ andCriteria.add(Criteria.where("name.error").is(Boolean.FALSE));
+ andCriteria.add(Criteria.where("civilCode.error").is(Boolean.FALSE));
+ andCriteria.add(Criteria.where("integrated_device.error").is(Boolean.FALSE));
+ andCriteria.add(Criteria.where("jkdwlx.error").is(Boolean.FALSE));
+ andCriteria.add(Criteria.where("latitude.error").is(Boolean.FALSE));
+ andCriteria.add(Criteria.where("longitude.error").is(Boolean.FALSE));
+ andCriteria.add(Criteria.where("macdz.error").is(Boolean.FALSE));
+ andCriteria.add(Criteria.where("name.error").is(Boolean.FALSE));
+ andCriteria.add(Criteria.where("sbzt.error").is(Boolean.FALSE));
+ andCriteria.add(Criteria.where("sxjcjqy.error").is(Boolean.FALSE));
+ andCriteria.add(Criteria.where("sxjgnlx.error").is(Boolean.FALSE));
+ Criteria and2 = new Criteria();
+ and2.andOperator(andCriteria);
+ query = Query.query(and2);
+ }else if(params.getOption() ==-1){
+ Criteria c1 = Criteria.where("serialNumber.error").is(Boolean.TRUE);
+ Criteria c2 = Criteria.where("name.error").is(Boolean.TRUE);
+ Criteria c3 = Criteria.where("civilCode.error").is(Boolean.TRUE);
+ Criteria c4 = Criteria.where("integrated_device.error").is(Boolean.TRUE);
+ Criteria c5 = Criteria.where("jkdwlx.error").is(Boolean.TRUE);
+ Criteria c6 = Criteria.where("latitude.error").is(Boolean.TRUE);
+ Criteria c7 = Criteria.where("longitude.error").is(Boolean.TRUE);
+ Criteria c8 = Criteria.where("macdz.error").is(Boolean.TRUE);
+ Criteria c9 = Criteria.where("name.error").is(Boolean.TRUE);
+ Criteria c10 = Criteria.where("sbzt.error").is(Boolean.TRUE);
+ Criteria c11 = Criteria.where("sxjcjqy.error").is(Boolean.TRUE);
+ Criteria c12 = Criteria.where("sxjgnlx.error").is(Boolean.TRUE);
+ Criteria orOperator = new Criteria().orOperator(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12);
+ orOperator.andOperator(andCriteria);
+ query = Query.query(orOperator);
+ }
+ }
long total = mongoTemplate.count(query, MonitorQualifyResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
List<MonitorQualifyResult> resultList = mongoTemplate.find(query, MonitorQualifyResult.class);
-
+ List<MonitorQualifyResultVO> resultVOS = new ArrayList<>();
+ for (MonitorQualifyResult result : resultList) {
+ MonitorQualifyResultVO vo = MonitorQualifyResult.getVO(result);
+ resultVOS.add(vo);
+ }
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("uy_monitor_qualify");
+ //鎬绘暟
+ List<Document> dList1 = new ArrayList<>(2);
+ setTag(params, dList1);
+ Document totalFilter = new Document("$and",dList1);
+ //鍚堟牸鏁�
+ List<Document> dList2 = new ArrayList<>(2);
+ 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);
- Document ipErrFilter = new Document("ip.error", true);
- Document macdzErrFilter = new Document("macdz.error", true);
- Document latitudeErrFilter = new Document("latitude.error", true);
- Document longitudeErrFilter = new Document("longitude.error", true);
-
- 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(
@@ -351,10 +649,11 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- Date now = new Date();
List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
.select(CheckIndexVideo::getMonitorQualification)
- .between(CheckIndexVideo::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
+ .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)) {
@@ -362,39 +661,53 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
- rList.add(onlineRate + "%");
+ 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) {
- // TODO 鏂板涓�寮犺〃璁板綍姣忔鐨勬。妗堣�冩牳
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);
+ 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);
+ setTag(params, dList2);
+ Document newFilter = new Document("$and",dList2);
- Document ipErrFilter = new Document("ip.error", true);
- Document macdzErrFilter = new Document("macdz.error", true);
- Document latitudeErrFilter = new Document("latitude.error", true);
- Document longitudeErrFilter = new Document("longitude.error", true);
-
- 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(
@@ -413,10 +726,22 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- rList.add("0%");
+ List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
+ .select(CheckIndexVideo::getArchivesRate)
+ .eq(params.getDataType().equals(1), CheckIndexVideo::getExamineTag, CheckConstants.Examine_Tag_Province)
+ .eq(params.getDataType().equals(2), CheckIndexVideo::getExamineTag, CheckConstants.Examine_Tag_Dept)
+ .between(CheckIndexVideo::getCreateTime, DateUtils.getDayStart(params.getStartTime()), DateUtils.getDayEnd(params.getEndTime()))
+ .list();
+ BigDecimal onlineRate = BigDecimal.ZERO;
+ if (CollectionUtils.isNotEmpty(videoList)) {
+ BigDecimal sum = videoList.stream().map(CheckIndexVideo::getArchivesRate).reduce(BigDecimal.ZERO, BigDecimal::add);
+ BigDecimal count = BigDecimal.valueOf(videoList.size());
+ onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+ }
+ rList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
map.put("count", rList);
- map.put("list", resultList);
+ map.put("list", resultVOS);
return Result.ok().data(map).total(total);
}
@@ -429,18 +754,29 @@
@Override
public Result videoAvailabilityRate(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("deviceId", "deviceName");
- Query query = MongoUtil.getQuery(params,"createTime", likeFileds, null);
-
+ 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");
List<Integer> status = Arrays.asList(1, 0, -1);
List<String> resultCount = status.stream().map(item -> {
- Document filter = new Document("recordStatus", item);
+ List<Document> dList = new ArrayList<>(2);
+ dList.add(new Document("recordStatus", new Document("$eq", item)));
+ setTag(params, dList);
+ Document filter = new Document("$and", dList);
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
new Document("$match", filter),
@@ -457,11 +793,11 @@
}
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
-
- Date now = new Date();
List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
.select(CheckIndexVideo::getVideoAvailable)
- .between(CheckIndexVideo::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
+ .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)) {
@@ -469,7 +805,15 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
- resultCount.add(onlineRate + "%");
+ //鍔犱竴涓�绘暟
+ 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);
@@ -485,21 +829,30 @@
@Override
public Result deptVideoAvailabilityRate(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("deviceId", "deviceName");
- Query query = MongoUtil.getQuery(params,"createTime", likeFileds, 1);
-
+ 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");
List<Integer> status = Arrays.asList(1, 0, -1);
List<String> resultCount = status.stream().map(item -> {
- Document filter = new Document("$and", Arrays.asList(
- new Document("deptTag", new Document("$eq", Boolean.TRUE)),
- new Document("recordStatus", item)
- ));
+ List<Document> dList = new ArrayList<>(4);
+ dList.add(new Document("deptTag", new Document("$eq", Boolean.TRUE)));
+ dList.add(new Document("recordStatus", new Document("$eq", item)));
+ setTag(params, dList);
+ Document filter = new Document("$and", dList);
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
new Document("$match", filter),
@@ -517,10 +870,11 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- Date now = new Date();
List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
.select(CheckIndexVideo::getMinistryVideoAvailable)
- .between(CheckIndexVideo::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
+ .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)) {
@@ -528,7 +882,13 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
- resultCount.add(onlineRate + "%");
+ //鍔犱竴涓�绘暟
+ 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);
@@ -544,21 +904,30 @@
@Override
public Result videoImportantPointAvailabilityRate(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("deviceId", "deviceName");
- Query query = MongoUtil.getQuery(params,"createTime", likeFileds, 3);
-
+ 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");
List<Integer> status = Arrays.asList(1, 0, -1);
List<String> resultCount = status.stream().map(item -> {
- Document filter = new Document("$and", Arrays.asList(
- new Document("importantTag", new Document("$eq", Boolean.TRUE)),
- new Document("recordStatus", item)
- ));
+ List<Document> dList = new ArrayList<>(4);
+ dList.add(new Document("importantTag", new Document("$eq", Boolean.TRUE)));
+ dList.add(new Document("recordStatus", new Document("$eq", item)));
+ setTag(params, dList);
+ Document filter = new Document("$and", dList);
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
new Document("$match", filter),
@@ -573,13 +942,14 @@
uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds");
break; // 涓嶉渶瑕佺户缁亶鍘嗭紝鍥犱负 $count 鍙細浜х敓涓�涓粨鏋�
}
- return uniqueDeviceIdCount + "%";
+ return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- Date now = new Date();
List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
.select(CheckIndexVideo::getKeyVideoAvailable)
- .between(CheckIndexVideo::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
+ .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)) {
@@ -587,7 +957,13 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
- resultCount.add(onlineRate + "%");
+ //鍔犱竴涓�绘暟
+ 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);
@@ -595,7 +971,7 @@
}
/**
- * 瑙嗛锛氭爣娉ㄦ纭巼
+ * 瑙嗛锛氭爣娉ㄦ纭巼锛堟殏鍋滐級
*
* @param params
* @return
@@ -628,22 +1004,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, 3);
+ 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);
+ 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);
+ //TODO锛氭湭鐭ユ暟 鏂板0鐨勭姸鎬�
+ List<Document> dList3 = new ArrayList<>(2);
+ setTag(params,dList3);
+ dList3.add(importantTagCondition);
+ List<Document> unknownConditions = new ArrayList<>();
+ unknownConditions.add(new Document("osdNameCorrect", new Document("$eq", 0)));
+ unknownConditions.add(new Document("osdTimeCorrect", new Document("$eq", 0)));
+ 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);
- Document importantTag = new Document("importantTag", Boolean.TRUE);
- Document osdNameFilter = new Document("$and", Arrays.asList(new Document("osdNameCorrect", 1), importantTag));
- Document osdNameErrFilter = new Document("$and", Arrays.asList(new Document("osdNameCorrect", -1), importantTag));
- Document osdTimeFilter = new Document("$and", Arrays.asList(new Document("osdTimeCorrect", 1), importantTag));
- Document osdTimeErrFilter = new Document("$and", Arrays.asList(new Document("osdTimeCorrect", -1), importantTag));
- List<Document> lists = Arrays.asList(osdNameFilter, osdNameErrFilter, osdTimeFilter, osdTimeErrFilter);
+ List<Document> lists = Arrays.asList(osdFilter, osdCorrectFilter, osdErrorFilter,osdUnknownFilter);
List<String> rList = lists.stream().map(filter -> {
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -662,10 +1113,11 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- Date now = new Date();
List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
.select(CheckIndexVideo::getKeyAnnotationAccuracy)
- .between(CheckIndexVideo::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
+ .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)) {
@@ -673,7 +1125,7 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
- rList.add(onlineRate + "%");
+ rList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
map.put("count", rList);
map.put("list", resultList);
@@ -714,22 +1166,74 @@
*/
@Override
public Result videoImportantPointCheckTimeAccuracy(DataCenterQuery params) {
-
List<String> likeFileds = Arrays.asList("deviceNo", "osdName");
- Query query = MongoUtil.getQuery(params,"checkTime", likeFileds, 3);
+ 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);
+ 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);
+ //TODO锛氭湭鐭ユ暟 鏂板0鐨勭姸鎬�
+ List<Document> dList3 = new ArrayList<>(2);
+ setTag(params,dList3);
+ dList3.add(importantTagCondition);
+ List<Document> unknownConditions = new ArrayList<>();
+ unknownConditions.add(new Document("osdNameCorrect", new Document("$eq", 0)));
+ unknownConditions.add(new Document("osdTimeCorrect", new Document("$eq", 0)));
+ 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);
- Document importantTag = new Document("importantTag", Boolean.TRUE);
- Document osdTimeFilter = new Document("$and", Arrays.asList(new Document("osdTimeCorrect", 1), importantTag));
- Document osdTimeErrFilter = new Document("$and", Arrays.asList(new Document("osdTimeCorrect", -1), importantTag));
- List<Document> lists = Arrays.asList(osdTimeFilter, osdTimeErrFilter);
+ List<Document> lists = Arrays.asList(osdFilter, osdCorrectFilter, osdErrorFilter,osdUnknownFilter);
List<String> rList = lists.stream().map(filter -> {
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -748,10 +1252,11 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- Date now = new Date();
List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
.select(CheckIndexVideo::getKeyTimingAccuracy)
- .between(CheckIndexVideo::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
+ .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)) {
@@ -759,7 +1264,7 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
- rList.add(onlineRate + "%");
+ rList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
map.put("count", rList);
map.put("list", resultList);
@@ -777,20 +1282,39 @@
public Result vehicleViewDockStable(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+ //鍔燚ataType涓鸿溅杈�
+ query.addCriteria(Criteria.where("dataType").is(ApiConstants.HK_DataType_CAR));
+ if(params.getOption()!=null){
+ if(ApiConstants.HK_SnapCount_ResultType_Normal.equals(params.getOption())) {
+ query.addCriteria(Criteria.where("resultType").is(ApiConstants.HK_SnapCount_ResultType_Normal));
+ }else if(ApiConstants.HK_SnapCount_ResultType_Null.equals(params.getOption())){
+ query.addCriteria(Criteria.where("resultType").is(ApiConstants.HK_SnapCount_ResultType_Null));
+ }else if(ApiConstants.HK_SnapCount_ResultType_Descent.equals(params.getOption())){
+ query.addCriteria(Criteria.where("resultType").is(ApiConstants.HK_SnapCount_ResultType_Descent));
+ }else if(ApiConstants.HK_SnapCount_ResultType_Low.equals(params.getOption())){
+ query.addCriteria(Criteria.where("resultType").is(ApiConstants.HK_SnapCount_ResultType_Low));
+ }
+ }
long total = mongoTemplate.count(query, SnapshotDataMonitorResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
List<SnapshotDataMonitorResult> resultList = mongoTemplate.find(query, SnapshotDataMonitorResult.class);
-
+ resultList.forEach(item ->item.setResultTypeText(item.getResultTypeText()));
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("hk_snapshot_data_monitor");
- Document normalFilter = new Document("resultType", 1);
- Document noDataFilter = new Document("resultType", 2);
- Document trFilter = new Document("resultType", 3);
- Document littleFilter = new Document("resultType", 4);
- List<Document> lists = Arrays.asList(normalFilter, noDataFilter, trFilter, littleFilter);
+ List<Document> dList2 = new ArrayList<>(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", 2)));
+ dList3.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_CAR)));
+ setTag(params, dList3);
+
+ Document noDataFilter = new Document("$and", dList2);
+ Document trFilter = new Document("$and", dList3);
+ List<Document> lists = Arrays.asList(noDataFilter, trFilter);
List<String> rList = lists.stream().map(filter -> {
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -808,19 +1332,35 @@
}
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)
- .between(CheckIndexCar::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
+ .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;
- 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(onlineRate + "%");
+ rList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
map.put("count", rList);
map.put("list", resultList);
@@ -835,22 +1375,81 @@
*/
@Override
public Result vehiclePointOnlineRate(DataCenterQuery params) {
- List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
+ List<String> likeFileds = Arrays.asList("name", "no", "ip");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
- long total = mongoTemplate.count(query, SnapshotDataMonitorResult.class);
+ //鏌ヨ溅杈嗚澶�
+ query.addCriteria(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Car + ".*"));
+ //涓嬫媺妗嗗湪绾挎儏鍐垫煡璇㈡潯浠�
+ 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<SnapshotDataMonitorResult> resultList = mongoTemplate.find(query, SnapshotDataMonitorResult.class);
+ //绯荤粺ping鐨勭粨鏋�
+ List<TMonitorResult> resultList = mongoTemplate.find(query, TMonitorResult.class);
+ params.setDeptTag(-1);
+ params.setDeviceType(2);
+ resultList.forEach(item -> {
+ if (item.getPingOnline() == null) {
+ item.setPingOnlineStr("鏈煡");
+ } else if (item.getPingOnline()) {
+ item.setPingOnlineStr("鍦ㄧ嚎");
+ } else if (!item.getPingOnline()) {
+ item.setPingOnlineStr("绂荤嚎");
+ }
+ if (1 == item.getOnline()) {
+ item.setOnlineStr("鍦ㄧ嚎");
+ } else if (-1 == item.getOnline()) {
+ item.setOnlineStr("绂荤嚎");
+ } else {
+ item.setOnlineStr("鏈煡");
+ }
+ });
- // 缁熻鏁伴噺
- MongoDatabase database = mongoTemplate.getDb();
- MongoCollection<Document> collection = database.getCollection("hk_snapshot_data_monitor");
- long distinctCount = collection.distinct("externalIndexCode", String.class).into(new ArrayList<>()).size();
+ // 缁熻璁惧鏁伴噺
+ //鍗$墖缁熻
+ 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;
+ }
- Date now = new Date();
List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
.select(CheckIndexCar::getSiteOnline)
- .between(CheckIndexCar::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
+ .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;
if (CollectionUtils.isNotEmpty(videoList)) {
@@ -859,7 +1458,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 + "%", onlineRate + "%"));
+ map.put("count", Arrays.asList(totalCount + "", onlineCount + "", offlineCount + "", unknownCount + "", this.remove0(onlineRate)));
map.put("list", resultList);
return Result.ok().data(map).total(total);
}
@@ -873,22 +1472,45 @@
@Override
public Result vehicleNetDeviceDirectoryConsistency(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("ip.showValue", "name.showValue", "serialNumber.showValue");
- Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+ List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, TIME_FIELD, likeFileds, null);
+ // 1/2/3 瑙嗛/杞﹁締/浜鸿劯
+ Pattern pattern = Pattern.compile(".*2.*");
+ andCriteria.add(Criteria.where("sxjgnlx.value").regex(pattern));
+ Query query = new Query();
+ Criteria and = new Criteria();
+ if(params.getOption()!=null){
+ if(params.getOption() ==1){
+ andCriteria.add(Criteria.where("newDevice").is(Boolean.TRUE));
+ }else if(params.getOption() ==-1){
+ andCriteria.add(Criteria.where("newDevice").is(Boolean.FALSE));
+ }
+ }
+ and.andOperator(andCriteria);
+ query = Query.query(and);
long total = mongoTemplate.count(query, MonitorQualifyResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
List<MonitorQualifyResult> resultList = mongoTemplate.find(query, MonitorQualifyResult.class);
-
- // 缁熻鏁伴噺
+ List<MonitorQualifyResultVO> resultVOS = new ArrayList<>();
+ for (MonitorQualifyResult result : resultList) {
+ MonitorQualifyResultVO vo = MonitorQualifyResult.getVO(result);
+ resultVOS.add(vo);
+ }
+ //缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("uy_monitor_qualify");
+ //鎬绘暟
+ List<Document> dList1 = new ArrayList<>(2);
+ 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);
+ setTag(params, dList2);
+ dList2.add(new Document("sxjgnlx.value", new Document("$regex", ".*2.*")));
+ dList2.add(new Document("newDevice",Boolean.TRUE));
+ Document newFilter = new Document("$and",dList2);
- Document ipErrFilter = new Document("ip.error", true);
- Document macdzErrFilter = new Document("macdz.error", true);
- Document latitudeErrFilter = new Document("latitude.error", true);
- Document longitudeErrFilter = new Document("longitude.error", true);
-
- 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(
@@ -904,13 +1526,14 @@
uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds");
break; // 涓嶉渶瑕佺户缁亶鍘嗭紝鍥犱负 $count 鍙細浜х敓涓�涓粨鏋�
}
- return uniqueDeviceIdCount + "%";
+ return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- Date now = new Date();
List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
.select(CheckIndexCar::getDeviceDirectoryConsistent)
- .between(CheckIndexCar::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
+ .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;
if (CollectionUtils.isNotEmpty(videoList)) {
@@ -918,10 +1541,10 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
- rList.add(onlineRate + "%");
+ 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);
}
@@ -934,7 +1557,19 @@
@Override
public Result vehicleCollectionConsistency(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "crossName");
- Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, TIME_FIELD, likeFileds, null);
+ Query query = new Query();
+ Criteria and = new Criteria();
+ and.andOperator(andCriteria);
+ query = Query.query(and);
+ if(params.getOption()!=null){
+ if(params.getOption() ==1){
+ query.addCriteria(Criteria.where("lalType").is(ApiConstants.HK_Info_LayType_Normal));
+ query.addCriteria(Criteria.where("gbCodeType").is(ApiConstants.HK_Info_GbCodeType_Normal));
+ }else if(params.getOption() !=-1){
+
+ }
+ }
long total = mongoTemplate.count(query, CrossDetailResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
@@ -944,12 +1579,24 @@
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("hk_cross_detail");
- Document ipErrFilter = new Document("lalType", 1);
- Document macdzErrFilter = new Document("lalType", 2);
- Document latitudeErrFilter = new Document("lalType", 3);
- Document longitudeErrFilter = new Document("lalType", 4);
+ List<Document> dList1 = new ArrayList<>(2);
+ setTag(params, dList1);
+ List<Document> dList2 = new ArrayList<>(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);
+ setTag(params, dList3);
+ List<Document> errorConditions = new ArrayList<>();
+ errorConditions.add(new Document("lalType",new Document("$eq",-1)));
+ errorConditions.add(new Document("gbCodeType",new Document("$eq",-1)));
+ Document errorDoc = new Document("$or",errorConditions);
+ dList3.add(errorDoc);
+ Document totalFilter = new Document("$and", dList1);
+ Document correctFilter = new Document("$and", dList2);
+ Document errorFilter = new Document("$and", dList3);
- List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, latitudeErrFilter, longitudeErrFilter);
+ List<Document> lists = Arrays.asList(totalFilter, correctFilter, errorFilter);
List<String> rList = lists.stream().map(filter -> {
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -968,10 +1615,11 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- Date now = new Date();
List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
.select(CheckIndexCar::getVehicleInformationCollectionAccuracy)
- .between(CheckIndexCar::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
+ .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;
if (CollectionUtils.isNotEmpty(videoList)) {
@@ -979,7 +1627,7 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
- rList.add(onlineRate + "%");
+ rList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
map.put("count", rList);
map.put("list", resultList);
@@ -1008,6 +1656,7 @@
Date now = new Date();
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))
.list();
BigDecimal onlineRate = BigDecimal.ZERO;
@@ -1018,7 +1667,7 @@
}
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(onlineRate + "%"));
+ map.put("count", Arrays.asList(this.remove0(onlineRate)));
map.put("list", resultList);
return Result.ok().data(map).total(total);
}
@@ -1041,6 +1690,7 @@
Date now = new Date();
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))
.list();
BigDecimal onlineRate = BigDecimal.ZERO;
@@ -1050,7 +1700,7 @@
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(onlineRate + "%"));
+ map.put("count", Arrays.asList(this.remove0(onlineRate)));
map.put("list", resultList);
return Result.ok().data(map).total(total);
}
@@ -1075,9 +1725,18 @@
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("hk_vehicle_device_inspection");
- Document ipErrFilter = new Document("snapResult", 1);
- Document macdzErrFilter = new Document("snapResult", 2);
- Document longitudeErrFilter = new Document("snapResult", 4);
+ List<Document> dList1 = new ArrayList<>(2);
+ dList1.add(new Document("snapResult", new Document("$eq", 1)));
+ setTag(params, dList1);
+ List<Document> dList2 = new ArrayList<>(2);
+ dList2.add(new Document("snapResult", new Document("$eq", 2)));
+ 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);
List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, longitudeErrFilter);
List<String> rList = lists.stream().map(filter -> {
@@ -1101,6 +1760,7 @@
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))
.list();
BigDecimal onlineRate = BigDecimal.ZERO;
@@ -1109,7 +1769,7 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
- rList.add(onlineRate + "%");
+ rList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
map.put("count", rList);
map.put("list", resultList);
@@ -1135,6 +1795,7 @@
Date now = new Date();
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))
.list();
BigDecimal onlineRate = BigDecimal.ZERO;
@@ -1144,7 +1805,7 @@
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(onlineRate + "%"));
+ map.put("count", Arrays.asList(this.remove0(onlineRate)));
map.put("list", resultList);
return Result.ok().data(map).total(total);
}
@@ -1168,6 +1829,7 @@
Date now = new Date();
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))
.list();
BigDecimal onlineRate = BigDecimal.ZERO;
@@ -1177,7 +1839,7 @@
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(onlineRate + "%"));
+ map.put("count", Arrays.asList(this.remove0(onlineRate)));
map.put("list", resultList);
return Result.ok().data(map).total(total);
}
@@ -1201,6 +1863,7 @@
Date now = new Date();
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))
.list();
BigDecimal onlineRate = BigDecimal.ZERO;
@@ -1210,7 +1873,7 @@
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(onlineRate + "%"));
+ map.put("count", Arrays.asList(this.remove0(onlineRate)));
map.put("list", resultList);
return Result.ok().data(map).total(total);
}
@@ -1225,20 +1888,39 @@
public Result faceViewDockStable(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+ //鍔燚ataType涓鸿溅杈�
+ query.addCriteria(Criteria.where("dataType").is(ApiConstants.HK_DataType_FACE));
+ if(params.getOption()!=null){
+ if(ApiConstants.HK_SnapCount_ResultType_Normal.equals(params.getOption())) {
+ query.addCriteria(Criteria.where("resultType").is(ApiConstants.HK_SnapCount_ResultType_Normal));
+ }else if(ApiConstants.HK_SnapCount_ResultType_Null.equals(params.getOption())){
+ query.addCriteria(Criteria.where("resultType").is(ApiConstants.HK_SnapCount_ResultType_Null));
+ }else if(ApiConstants.HK_SnapCount_ResultType_Descent.equals(params.getOption())){
+ query.addCriteria(Criteria.where("resultType").is(ApiConstants.HK_SnapCount_ResultType_Descent));
+ }else if(ApiConstants.HK_SnapCount_ResultType_Low.equals(params.getOption())){
+ query.addCriteria(Criteria.where("resultType").is(ApiConstants.HK_SnapCount_ResultType_Low));
+ }
+ }
long total = mongoTemplate.count(query, SnapshotDataMonitorResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
List<SnapshotDataMonitorResult> resultList = mongoTemplate.find(query, SnapshotDataMonitorResult.class);
-
+ resultList.forEach(item ->item.setResultTypeText(item.getResultTypeText()));
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("hk_snapshot_data_monitor");
- Document normalFilter = new Document("resultType", 1);
- Document noDataFilter = new Document("resultType", 2);
- Document trFilter = new Document("resultType", 3);
- Document littleFilter = new Document("resultType", 4);
- List<Document> lists = Arrays.asList(normalFilter, noDataFilter, trFilter, littleFilter);
+ List<Document> dList2 = new ArrayList<>(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", 2)));
+ dList3.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_CAR)));
+ setTag(params, dList3);
+
+ Document noDataFilter = new Document("$and", dList2);
+ Document trFilter = new Document("$and", dList3);
+ List<Document> lists = Arrays.asList(noDataFilter, trFilter);
List<String> rList = lists.stream().map(filter -> {
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -1256,11 +1938,27 @@
}
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
-
- Date now = new Date();
+ // 鏋勫缓鍩烘湰鐨�$match鏉′欢
+ List<Document> matchConditions = new ArrayList<>();
+ setTag(params, matchConditions);
+ matchConditions.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_FACE)));
+ List<Document> pipeline = Arrays.asList(
+ new Document("$match", new Document("$and", matchConditions)),
+ new Document("$group", new Document("_id", "$mongoCreateTime")
+ .append("dataCount", new Document("$sum", "$dataCount"))
+ ));
+ // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
+ AggregateIterable<Document> result = collection.aggregate(pipeline);
+ int dataCount = 0;
+ for (Document doc : result) {
+ dataCount = doc.getInteger("dataCount");
+ }
+ rList.add(0,dataCount+"");
List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
.select(CheckIndexFace::getViewConnectStability)
- .between(CheckIndexFace::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
+ .eq(params.getDataType().equals(1), CheckIndexFace::getExamineTag, CheckConstants.Examine_Tag_Province)
+ .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)) {
@@ -1268,7 +1966,7 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
- rList.add(onlineRate + "%");
+ rList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
map.put("count", rList);
map.put("list", resultList);
@@ -1283,44 +1981,79 @@
*/
@Override
public Result facePointOnlineRate(DataCenterQuery params) {
- List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
+ List<String> likeFileds = Arrays.asList("name", "no", "ip");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
- long total = mongoTemplate.count(query, SnapshotDataMonitorResult.class);
+ //鏌ヤ汉鑴歌澶�
+ query.addCriteria(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Face + ".*"));
+ //涓嬫媺妗嗗湪绾挎儏鍐垫煡璇㈡潯浠�
+ 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<SnapshotDataMonitorResult> resultList = mongoTemplate.find(query, SnapshotDataMonitorResult.class);
-
- // 缁熻鏁伴噺
- MongoDatabase database = mongoTemplate.getDb();
- MongoCollection<Document> collection = database.getCollection("hk_snapshot_data_monitor");
-
- Document normalFilter = new Document("resultType", 1);
- Document noDataFilter = new Document("resultType", 2);
- Document trFilter = new Document("resultType", 3);
- Document littleFilter = new Document("resultType", 4);
- List<Document> lists = Arrays.asList(normalFilter, noDataFilter, trFilter, littleFilter);
- List<String> rList = lists.stream().map(filter -> {
- // 鏋勫缓鑱氬悎绠¢亾
- List<Document> pipeline = Arrays.asList(
- new Document("$match", filter),
- // $group 鍘婚噸
- new Document("$group", new Document("_id", "$externalIndexCode")),
- new Document("$count", "uniqueDeviceIds")
- );
- // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
- AggregateIterable<Document> result = collection.aggregate(pipeline);
- Integer uniqueDeviceIdCount = 0;
- for (Document doc : result) {
- uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds");
- break; // 涓嶉渶瑕佺户缁亶鍘嗭紝鍥犱负 $count 鍙細浜х敓涓�涓粨鏋�
+ List<TMonitorResult> resultList = mongoTemplate.find(query, TMonitorResult.class);
+ resultList.forEach(item -> {
+ if (item.getPingOnline() == null) {
+ item.setPingOnlineStr("鏈煡");
+ } else if (item.getPingOnline()) {
+ item.setPingOnlineStr("鍦ㄧ嚎");
+ } else if (!item.getPingOnline()) {
+ item.setPingOnlineStr("绂荤嚎");
}
- return uniqueDeviceIdCount + "";
- }).collect(Collectors.toList());
+ if (1 == item.getOnline()) {
+ item.setOnlineStr("鍦ㄧ嚎");
+ } else if (-1 == item.getOnline()) {
+ item.setOnlineStr("绂荤嚎");
+ } else {
+ item.setOnlineStr("鏈煡");
+ }
+ });
+ params.setDeptTag(-1);
+ params.setDeviceType(3);
- 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)
- .between(CheckIndexFace::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
+ .eq(params.getDataType().equals(1), CheckIndexFace::getExamineTag, CheckConstants.Examine_Tag_Province)
+ .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)) {
@@ -1328,9 +2061,9 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
- rList.add(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);
}
@@ -1343,23 +2076,46 @@
*/
@Override
public Result faceDirectoryConsistency(DataCenterQuery params) {
- List<String> likeFileds = Arrays.asList("serialNumber.showValue", "ip.showValue", "name.showValue");
- Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+ List<String> likeFileds = Arrays.asList("ip.showValue", "name.showValue", "serialNumber.showValue");
+ List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, TIME_FIELD, likeFileds, null);
+ // 1/2/3 瑙嗛/杞﹁締/浜鸿劯
+ Pattern pattern = Pattern.compile(".*3.*");
+ andCriteria.add(Criteria.where("sxjgnlx.value").regex(pattern));
+ Query query = new Query();
+ Criteria and = new Criteria();
+ if(params.getOption()!=null){
+ if(params.getOption() ==1){
+ andCriteria.add(Criteria.where("newDevice").is(Boolean.TRUE));
+ }else if(params.getOption() ==-1){
+ andCriteria.add(Criteria.where("newDevice").is(Boolean.FALSE));
+ }
+ }
+ and.andOperator(andCriteria);
+ query = Query.query(and);
long total = mongoTemplate.count(query, MonitorQualifyResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
List<MonitorQualifyResult> resultList = mongoTemplate.find(query, MonitorQualifyResult.class);
-
+ List<MonitorQualifyResultVO> resultVOS = new ArrayList<>();
+ for (MonitorQualifyResult result : resultList) {
+ MonitorQualifyResultVO vo = MonitorQualifyResult.getVO(result);
+ resultVOS.add(vo);
+ }
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("uy_monitor_qualify");
+ //鎬绘暟
+ List<Document> dList1 = new ArrayList<>(2);
+ 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);
+ setTag(params, dList2);
+ dList2.add(new Document("sxjgnlx.value", new Document("$regex", ".*3.*")));
+ dList2.add(new Document("newDevice",Boolean.TRUE));
+ Document newFilter = new Document("$and",dList2);
- Document ipErrFilter = new Document("ip.error", true);
- Document macdzErrFilter = new Document("macdz.error", true);
- Document latitudeErrFilter = new Document("latitude.error", true);
- Document longitudeErrFilter = new Document("longitude.error", true);
-
- 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(
@@ -1378,10 +2134,11 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- Date now = new Date();
List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
.select(CheckIndexFace::getDeviceDirectoryConsistent)
- .between(CheckIndexFace::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
+ .eq(params.getDataType().equals(1), CheckIndexFace::getExamineTag, CheckConstants.Examine_Tag_Province)
+ .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)) {
@@ -1389,10 +2146,10 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
- rList.add(onlineRate + "%");
+ 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);
}
@@ -1415,11 +2172,22 @@
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("hk_cross_detail");
- Document ipErrFilter = new Document("lalType", 1);
- Document macdzErrFilter = new Document("lalType", 2);
- Document latitudeErrFilter = new Document("lalType", 3);
- Document longitudeErrFilter = new Document("lalType", 4);
-
+ 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 -> {
// 鏋勫缓鑱氬悎绠¢亾
@@ -1442,6 +2210,7 @@
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))
.list();
BigDecimal onlineRate = BigDecimal.ZERO;
@@ -1450,7 +2219,7 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
- rList.add(onlineRate + "%");
+ rList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
map.put("count", rList);
map.put("list", resultList);
@@ -1476,10 +2245,22 @@
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("hk_monitoring_detail");
- Document ipErrFilter = new Document("lalType", 1);
- Document macdzErrFilter = new Document("lalType", 2);
- Document latitudeErrFilter = new Document("lalType", 3);
- Document longitudeErrFilter = new Document("lalType", 4);
+ 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 -> {
@@ -1503,6 +2284,7 @@
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))
.list();
BigDecimal onlineRate = BigDecimal.ZERO;
@@ -1511,7 +2293,7 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
- rList.add(onlineRate + "%");
+ rList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
map.put("count", rList);
map.put("list", resultList);
@@ -1537,9 +2319,18 @@
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("hk_vehicle_device_inspection");
- Document ipErrFilter = new Document("snapResult", 1);
- Document macdzErrFilter = new Document("snapResult", 2);
- Document longitudeErrFilter = new Document("snapResult", 4);
+ List<Document> dList1 = new ArrayList<>(2);
+ dList1.add(new Document("snapResult", new Document("$eq", 1)));
+ setTag(params, dList1);
+ List<Document> dList2 = new ArrayList<>(2);
+ dList2.add(new Document("snapResult", new Document("$eq", 2)));
+ 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);
List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, longitudeErrFilter);
List<String> rList = lists.stream().map(filter -> {
@@ -1563,6 +2354,7 @@
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))
.list();
BigDecimal onlineRate = BigDecimal.ZERO;
@@ -1571,7 +2363,7 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
- rList.add(onlineRate + "%");
+ rList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
map.put("count", rList);
map.put("list", resultList);
@@ -1597,9 +2389,18 @@
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("hk_vehicle_device_inspection");
- Document ipErrFilter = new Document("snapResult", 1);
- Document macdzErrFilter = new Document("snapResult", 2);
- Document longitudeErrFilter = new Document("snapResult", 4);
+ List<Document> dList1 = new ArrayList<>(2);
+ dList1.add(new Document("snapResult", new Document("$eq", 1)));
+ setTag(params, dList1);
+ List<Document> dList2 = new ArrayList<>(2);
+ dList2.add(new Document("snapResult", new Document("$eq", 2)));
+ 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);
List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, longitudeErrFilter);
List<String> rList = lists.stream().map(filter -> {
@@ -1623,6 +2424,7 @@
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))
.list();
BigDecimal onlineRate = BigDecimal.ZERO;
@@ -1631,7 +2433,7 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
- rList.add(onlineRate + "%");
+ rList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
map.put("count", rList);
map.put("list", resultList);
@@ -1657,6 +2459,7 @@
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))
.list();
BigDecimal onlineRate = BigDecimal.ZERO;
@@ -1665,11 +2468,13 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
+
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(onlineRate + "%"));
+ map.put("count", Arrays.asList(this.remove0(onlineRate)));
map.put("list", resultList);
return Result.ok().data(map).total(total);
}
+
/**
* 瑙嗛锛氳棰戝浘鍍忚祫婧愬畨鍏ㄧ鐞�
*
@@ -1688,4 +2493,33 @@
return Result.ok().data(map).total(page.getTotal());
}
+
+ /**
+ * 鍒犻櫎灏鹃儴鐨�0
+ *
+ * @param rate
+ * @return
+ */
+ private String remove0(BigDecimal rate) {
+ DF.setDecimalSeparatorAlwaysShown(false);
+ return DF.format(rate) + "%";
+ }
+
+ /**
+ * 璁剧疆鏍囩鎼滅储鏉′欢
+ *
+ * @param params
+ * @param dList
+ */
+ private void setTag(DataCenterQuery params, List<Document> dList) {
+ if (params.getDataType().equals(1)) {
+ dList.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
+ } else if (params.getDataType().equals(2)) {
+ dList.add(new Document("deptTag", new Document("$eq", Boolean.TRUE)));
+ }
+ 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