From 58b691e9cfe1e5e1ae8a62c8b66f1995eaad0e9e Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期四, 27 二月 2025 15:07:32 +0800
Subject: [PATCH] 导出osd问题 以及缺少小时改分钟
---
ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java | 1777 ++++++++++++++++++++++++++++++++++++++++-------------------
1 files changed, 1,202 insertions(+), 575 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 28abd57..3406bf0 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
@@ -9,12 +9,16 @@
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.ycl.platform.domain.entity.*;
+import com.ycl.platform.domain.excel.TMonitorExp;
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.BigPicUsefulVO;
import com.ycl.platform.domain.vo.DataCenter.MonitorQualifyResultVO;
+import com.ycl.platform.domain.vo.DataCenter.SnapClockVO;
import com.ycl.platform.domain.vo.PointDetailVO;
+import com.ycl.platform.domain.vo.home.HomeFaceVO;
import com.ycl.platform.mapper.ImageResourceSecurityDetailMapper;
import com.ycl.platform.mapper.YwPointMapper;
import com.ycl.platform.service.*;
@@ -22,9 +26,13 @@
import com.ycl.system.page.PageUtil;
import com.ycl.utils.DateUtils;
import com.ycl.utils.MongoUtil;
+import com.ycl.utils.StringUtils;
import com.ycl.utils.bean.BeanUtils;
+import com.ycl.utils.poi.ExcelUtil;
import constant.ApiConstants;
import constant.CheckConstants;
+import enumeration.general.AreaDeptEnum;
+import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections.CollectionUtils;
import org.bson.Document;
@@ -39,7 +47,9 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
import java.util.*;
+import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
@@ -80,8 +90,12 @@
if (params.getOption() != null) {
query.addCriteria(Criteria.where("online").is(params.getOption()));
}
+ Sort sort = Sort.by(
+ Sort.Order.asc("pingOnline"), // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭
+ Sort.Order.desc("offLineCount") // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭
+ );
// 閫氳繃pingOnline瀛楁鎺掑簭锛屼负false鐨勬帓鍦ㄥ墠闈�
- query.with(Sort.by(Sort.Order.asc("pingOnline")));
+ query.with(sort);
//鍒嗛〉鏁伴噺
long total = mongoTemplate.count(query, TMonitorResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
@@ -100,6 +114,13 @@
item.setOnlineStr("绂荤嚎");
} else {
item.setOnlineStr("鏈煡");
+ }
+ List<String> offLineTime = item.getOffLineTimeStr();
+ if (!CollectionUtils.isEmpty(offLineTime)) {
+ if (offLineTime.size() > 1) {
+ offLineTime = offLineTime.subList(offLineTime.size() - 2, offLineTime.size());
+ }
+ item.setOffLineTimeStr(offLineTime);
}
});
params.setDeptTag(-1);
@@ -139,20 +160,24 @@
onlineCount = (Integer) result.getOrDefault("onlineCount", 0L);
totalCount = offlineCount + unknownCount + onlineCount;
}
- /** 鏌ヨ褰撳ぉ鍦ㄧ嚎鐜� */
- List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
- .select(CheckIndexVideo::getSiteOnline)
- .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);
- BigDecimal count = BigDecimal.valueOf(videoList.size());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+ if (totalCount!=0) {
+ onlineRate = new BigDecimal(onlineCount).divide(new BigDecimal(totalCount), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
}
+// /** 鏌ヨ褰撳ぉ鍦ㄧ嚎鐜� */
+// List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
+// .select(CheckIndexVideo::getSiteOnline)
+// .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);
+// 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(totalCount + "", onlineCount + "", offlineCount + "", unknownCount + "", this.remove0(onlineRate)));
map.put("list", resultList);
@@ -209,6 +234,7 @@
// 娣诲姞鍥哄畾鏉′欢
criteriaList.add(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Video + ".*"));
criteriaList.add(Criteria.where("mongoCreateTime").gte(params.getStartTime()).lte(params.getEndTime()));
+ criteriaList.add(Criteria.where("deptTag").is(Boolean.TRUE));
// 鏍规嵁dataType鍔ㄦ�佹坊鍔犳潯浠�
if (params.getDataType() == 1) {
criteriaList.add(Criteria.where("provinceTag").is(Boolean.TRUE));
@@ -233,21 +259,24 @@
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)
- .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::getMinistrySiteOnline).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal count = BigDecimal.valueOf(videoList.size());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+ if (totalCount!=0) {
+ onlineRate = new BigDecimal(onlineCount).divide(new BigDecimal(totalCount), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
}
+// params.setDeptTag(1);
+// params.setDeviceType(1);
+// List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
+// .select(CheckIndexVideo::getMinistrySiteOnline)
+// .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::getMinistrySiteOnline).reduce(BigDecimal.ZERO, BigDecimal::add);
+// 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(totalCount + "", onlineCount + "", offlineCount + "", unknownCount + "", this.remove0(onlineRate)));
map.put("list", resultList);
@@ -307,6 +336,7 @@
// 娣诲姞鍥哄畾鏉′欢
criteriaList.add(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Video + ".*"));
criteriaList.add(Criteria.where("mongoCreateTime").gte(params.getStartTime()).lte(params.getEndTime()));
+ criteriaList.add(Criteria.where("importantTag").is(Boolean.TRUE));
// 鏍规嵁dataType鍔ㄦ�佹坊鍔犳潯浠�
if (params.getDataType() == 1) {
criteriaList.add(Criteria.where("provinceTag").is(Boolean.TRUE));
@@ -331,18 +361,22 @@
onlineCount = (Integer) result.getOrDefault("onlineCount", 0L);
totalCount = offlineCount + unknownCount + onlineCount;
}
- List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
- .select(CheckIndexVideo::getKeySiteOnline)
- .eq(params.getDataType().equals(1), CheckIndexVideo::getExamineTag, CheckConstants.Examine_Tag_Province)
- .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::getKeySiteOnline).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal count = BigDecimal.valueOf(videoList.size());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+ if (totalCount!=0) {
+ onlineRate = new BigDecimal(onlineCount).divide(new BigDecimal(totalCount), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
}
+// List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
+// .select(CheckIndexVideo::getKeySiteOnline)
+// .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::getKeySiteOnline).reduce(BigDecimal.ZERO, BigDecimal::add);
+// 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(totalCount + "", onlineCount + "", offlineCount + "", unknownCount + "", this.remove0(onlineRate)));
map.put("list", resultList);
@@ -403,6 +437,7 @@
// 娣诲姞鍥哄畾鏉′欢
criteriaList.add(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Video + ".*"));
criteriaList.add(Criteria.where("mongoCreateTime").gte(params.getStartTime()).lte(params.getEndTime()));
+ criteriaList.add(Criteria.where("importantCommandImageTag").is(Boolean.TRUE));
// 鏍规嵁dataType鍔ㄦ�佹坊鍔犳潯浠�
if (params.getDataType() == 1) {
criteriaList.add(Criteria.where("provinceTag").is(Boolean.TRUE));
@@ -427,19 +462,22 @@
onlineCount = (Integer) result.getOrDefault("onlineCount", 0L);
totalCount = offlineCount + unknownCount + onlineCount;
}
-
- List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
- .select(CheckIndexVideo::getKeyCommandImageOnline)
- .eq(params.getDataType().equals(1), CheckIndexVideo::getExamineTag, CheckConstants.Examine_Tag_Province)
- .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::getKeyCommandImageOnline).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal count = BigDecimal.valueOf(videoList.size());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+ if (totalCount!=0) {
+ onlineRate = new BigDecimal(onlineCount).divide(new BigDecimal(totalCount), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
}
+// List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
+// .select(CheckIndexVideo::getKeyCommandImageOnline)
+// .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::getKeyCommandImageOnline).reduce(BigDecimal.ZERO, BigDecimal::add);
+// 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(totalCount + "", onlineCount + "", offlineCount + "", unknownCount + "", this.remove0(onlineRate)));
map.put("list", resultList);
@@ -458,10 +496,10 @@
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){
+ if (params.getOption() != null) {
+ if (params.getOption() == 1) {
andCriteria.add(Criteria.where("newDevice").is(Boolean.TRUE));
- }else if(params.getOption() ==-1){
+ } else if (params.getOption() == -1) {
andCriteria.add(Criteria.where("newDevice").is(Boolean.FALSE));
}
}
@@ -481,12 +519,12 @@
//鎬绘暟
List<Document> dList1 = new ArrayList<>(2);
setTag(params, dList1);
- Document totalFilter = new Document("$and",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);
+ dList2.add(new Document("newDevice", Boolean.TRUE));
+ Document newFilter = new Document("$and", dList2);
List<Document> lists = Arrays.asList(totalFilter, newFilter);
List<String> rList = lists.stream().map(filter -> {
@@ -507,19 +545,23 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
- .select(CheckIndexVideo::getMonitorRegistration)
- .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::getMonitorRegistration).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal count = BigDecimal.valueOf(videoList.size());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+// List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
+// .select(CheckIndexVideo::getMonitorRegistration)
+// .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::getMonitorRegistration).reduce(BigDecimal.ZERO, BigDecimal::add);
+// BigDecimal count = BigDecimal.valueOf(videoList.size());
+// onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+// }
+ BigDecimal rate = BigDecimal.ZERO;
+ if (!StringUtils.isEmpty(rList.get(0)) && !"0".equals(rList.get(0))) {
+ rate = new BigDecimal(rList.get(0)).subtract(new BigDecimal(rList.get(1))).divide(new BigDecimal(rList.get(0)), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
}
- rList.add(this.remove0(onlineRate));
+ rList.add(this.remove0(rate));
HashMap<String, Object> map = new HashMap<>();
map.put("count", rList);
map.put("list", resultVOS);
@@ -540,8 +582,8 @@
Criteria and = new Criteria();
and.andOperator(andCriteria);
query = Query.query(and);
- if(params.getOption()!=null){
- if(params.getOption() ==1){
+ 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));
@@ -557,7 +599,7 @@
Criteria and2 = new Criteria();
and2.andOperator(andCriteria);
query = Query.query(and2);
- }else if(params.getOption() ==-1){
+ } 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);
@@ -590,28 +632,26 @@
//鎬绘暟
List<Document> dList1 = new ArrayList<>(2);
setTag(params, dList1);
- Document totalFilter = new Document("$and",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);
+ 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);
//涓嶅悎鏍兼暟
- Document mongoCreateTimeRange = new Document()
- .append("$gte", params.getStartTime())
- .append("$lt", params.getEndTime());
- Document mongoCreateTime = new Document("mongoCreateTime", mongoCreateTimeRange);
+ List<Document> dList3 = new ArrayList<>(2);
+ setTag(params, dList3);
List<Document> errorConditions = new ArrayList<>();
errorConditions.add(new Document("serialNumber.error", new Document("$eq", Boolean.TRUE)));
errorConditions.add(new Document("name.error", new Document("$eq", Boolean.TRUE)));
@@ -626,7 +666,8 @@
errorConditions.add(new Document("sxjcjqy.error", new Document("$eq", Boolean.TRUE)));
errorConditions.add(new Document("sxjgnlx.error", new Document("$eq", Boolean.TRUE)));
Document errorFilter = new Document("$or", errorConditions);
- Document unQualifyFilter = new Document("$and", Arrays.asList(mongoCreateTime, errorFilter));
+ dList3.add(errorFilter);
+ Document unQualifyFilter = new Document("$and", dList3);
List<Document> lists = Arrays.asList(totalFilter, qualifyFilter, unQualifyFilter);
List<String> rList = lists.stream().map(filter -> {
@@ -646,19 +687,22 @@
}
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
-
- List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
- .select(CheckIndexVideo::getMonitorQualification)
- .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::getMonitorQualification).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal count = BigDecimal.valueOf(videoList.size());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+ if (!StringUtils.isEmpty(rList.get(0)) && !"0".equals(rList.get(0))) {
+ onlineRate = new BigDecimal(rList.get(1)).divide(new BigDecimal(rList.get(0)), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
}
+// List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
+// .select(CheckIndexVideo::getMonitorQualification)
+// .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::getMonitorQualification).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);
@@ -671,6 +715,7 @@
* 妗f鐣欏瓨鎬婚噺锛歮ongo瀛樼殑鎵�鏈夊幓閲嶅悗鐨勬。妗�
* 褰撴棩妗f锛氬綋鏃ョ殑妗f
* 妗f鑰冩牳姣� = 褰撴棩妗f/妗f鐣欏瓨鎬婚噺
+ *
* @param params
* @return1
*/
@@ -696,14 +741,14 @@
//鎬绘暟
List<Document> dList1 = new ArrayList<>(2);
DataCenterQuery totalParams = new DataCenterQuery();
- BeanUtils.copyProperties(params,totalParams);
+ BeanUtils.copyProperties(params, totalParams);
totalParams.setStartTime(null);
setTag(totalParams, dList1);
- Document totalFilter = new Document("$and",dList1);
+ Document totalFilter = new Document("$and", dList1);
//褰撴棩妗f鏁�
List<Document> dList2 = new ArrayList<>(2);
setTag(params, dList2);
- Document newFilter = new Document("$and",dList2);
+ Document newFilter = new Document("$and", dList2);
List<Document> lists = Arrays.asList(totalFilter, newFilter);
List<String> rList = lists.stream().map(filter -> {
@@ -723,19 +768,22 @@
}
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
-
- 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));
+ if (!StringUtils.isEmpty(rList.get(0)) && !"0".equals(rList.get(0))) {
+ onlineRate = new BigDecimal(rList.get(1)).divide(new BigDecimal(rList.get(0)), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
}
+// 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);
@@ -760,7 +808,12 @@
long total = mongoTemplate.count(query, RecordMetaDSumResult.class);
MongoUtil.setPage(query, params, "createTime");
List<RecordMetaDSumResult> resultList = mongoTemplate.find(query, RecordMetaDSumResult.class);
-
+ //缈昏瘧琛屾斂鍖哄煙
+ resultList.forEach(item -> {
+ String areaCode = item.getArealayername().substring(0, 6);
+ AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromCode(areaCode);
+ if (areaDeptEnum != null) item.setArealayername(areaDeptEnum.getName());
+ });
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("uy_record_meta_d_sum");
@@ -786,18 +839,18 @@
}
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
- .select(CheckIndexVideo::getVideoAvailable)
- .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::getVideoAvailable).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal count = BigDecimal.valueOf(videoList.size());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
- }
+// List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
+// .select(CheckIndexVideo::getVideoAvailable)
+// .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::getVideoAvailable).reduce(BigDecimal.ZERO, BigDecimal::add);
+// BigDecimal count = BigDecimal.valueOf(videoList.size());
+// onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+// }
//鍔犱竴涓�绘暟
int totalCount = 0;
for (String s : resultCount) {
@@ -805,6 +858,10 @@
}
resultCount.add(0, totalCount + "");
+ BigDecimal onlineRate = BigDecimal.ZERO;
+ if (!StringUtils.isEmpty(resultCount.get(0)) && !"0".equals(resultCount.get(0))) {
+ onlineRate = new BigDecimal(resultCount.get(1)).divide(new BigDecimal(resultCount.get(0)), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
+ }
resultCount.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
@@ -830,7 +887,12 @@
long total = mongoTemplate.count(query, RecordMetaDSumResult.class);
MongoUtil.setPage(query, params, "createTime");
List<RecordMetaDSumResult> resultList = mongoTemplate.find(query, RecordMetaDSumResult.class);
-
+ //缈昏瘧琛屾斂鍖哄煙
+ resultList.forEach(item -> {
+ String areaCode = item.getArealayername().substring(0, 6);
+ AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromCode(areaCode);
+ if (areaDeptEnum != null) item.setArealayername(areaDeptEnum.getName());
+ });
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("uy_record_meta_d_sum");
@@ -858,24 +920,28 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
- .select(CheckIndexVideo::getMinistryVideoAvailable)
- .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::getMinistryVideoAvailable).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal count = BigDecimal.valueOf(videoList.size());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
- }
+// List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
+// .select(CheckIndexVideo::getMinistryVideoAvailable)
+// .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::getMinistryVideoAvailable).reduce(BigDecimal.ZERO, BigDecimal::add);
+// BigDecimal count = BigDecimal.valueOf(videoList.size());
+// onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+// }
//鍔犱竴涓�绘暟
int totalCount = 0;
for (String s : resultCount) {
totalCount += Integer.parseInt(s);
}
resultCount.add(0, totalCount + "");
+ BigDecimal onlineRate = BigDecimal.ZERO;
+ if (!StringUtils.isEmpty(resultCount.get(0)) && !"0".equals(resultCount.get(0))) {
+ onlineRate = new BigDecimal(resultCount.get(1)).divide(new BigDecimal(resultCount.get(0)), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
+ }
resultCount.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
map.put("count", resultCount);
@@ -900,7 +966,12 @@
long total = mongoTemplate.count(query, RecordMetaDSumResult.class);
MongoUtil.setPage(query, params, "createTime");
List<RecordMetaDSumResult> resultList = mongoTemplate.find(query, RecordMetaDSumResult.class);
-
+ //缈昏瘧琛屾斂鍖哄煙
+ resultList.forEach(item -> {
+ String areaCode = item.getArealayername().substring(0, 6);
+ AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromCode(areaCode);
+ if (areaDeptEnum != null) item.setArealayername(areaDeptEnum.getName());
+ });
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("uy_record_meta_d_sum");
@@ -928,24 +999,28 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
- .select(CheckIndexVideo::getKeyVideoAvailable)
- .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::getKeyVideoAvailable).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal count = BigDecimal.valueOf(videoList.size());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
- }
+// List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
+// .select(CheckIndexVideo::getKeyVideoAvailable)
+// .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::getKeyVideoAvailable).reduce(BigDecimal.ZERO, BigDecimal::add);
+// BigDecimal count = BigDecimal.valueOf(videoList.size());
+// onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+// }
//鍔犱竴涓�绘暟
int totalCount = 0;
for (String s : resultCount) {
totalCount += Integer.parseInt(s);
}
resultCount.add(0, totalCount + "");
+ BigDecimal onlineRate = BigDecimal.ZERO;
+ if (!StringUtils.isEmpty(resultCount.get(0)) && !"0".equals(resultCount.get(0))) {
+ onlineRate = new BigDecimal(resultCount.get(1)).divide(new BigDecimal(resultCount.get(0)), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
+ }
resultCount.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
map.put("count", resultCount);
@@ -987,14 +1062,14 @@
@Override
public Result videoImportantPointLabelingAccuracy(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("deviceNo", "osdName");
- List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, "checkTime", likeFileds, 3);
+ List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, "checkTime", likeFileds, null);
Query query = new Query();
Criteria and = new Criteria();
and.andOperator(andCriteria);
query = Query.query(and);
//涓嬫媺妗嗘爣娉ㄦ纭煡璇㈡潯浠�
if (params.getOption() != null) {
- if(params.getOption()==1) {
+ 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));
@@ -1003,7 +1078,7 @@
Criteria and2 = new Criteria();
and2.andOperator(andCriteria);
query = Query.query(and2);
- }else if(params.getOption()==-1){
+ } else if (params.getOption() == -1) {
// 浣跨敤$or鏉′欢杩炴帴澶氫釜瀛楁妫�鏌ワ紝姣忎釜瀛楁妫�鏌ユ槸鍚︾瓑浜�-1
Criteria c1 = Criteria.where("osdNameCorrect").is(-1);
Criteria c2 = Criteria.where("osdTimeCorrect").is(-1);
@@ -1013,7 +1088,7 @@
Criteria orOperator = new Criteria().orOperator(c1, c2, c3, c4, c5);
orOperator.andOperator(andCriteria);
query = Query.query(orOperator);
- }else {
+ } else {
Criteria c1 = Criteria.where("osdNameCorrect").is(0);
Criteria c2 = Criteria.where("osdTimeCorrect").is(0);
Criteria c3 = Criteria.where("osdProvinceCorrect").is(0);
@@ -1028,7 +1103,7 @@
MongoUtil.setPage(query, params, "checkTime");
List<OsdCheckResult> resultList = mongoTemplate.find(query, OsdCheckResult.class);
for (OsdCheckResult osdCheckResult : resultList) {
- OsdCheckResult.getText(osdCheckResult);
+ OsdCheckResult.getError(osdCheckResult);
}
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
@@ -1049,11 +1124,10 @@
setTag(params, dList1);
Document osdCorrectFilter = new Document("$and", dList1);
//寮傚父鏁�
+ List<Document> dList2 = new ArrayList<>(2);
+ setTag(params, dList2);
Document importantTagCondition = new Document("importantTag", Boolean.TRUE);
- Document mongoCreateTimeRange = new Document()
- .append("$gte", params.getStartTime())
- .append("$lt", params.getEndTime());
- Document mongoCreateTime = new Document("mongoCreateTime", mongoCreateTimeRange);
+ dList2.add(importantTagCondition);
List<Document> errorConditions = new ArrayList<>();
errorConditions.add(new Document("osdNameCorrect", new Document("$eq", -1)));
errorConditions.add(new Document("osdTimeCorrect", new Document("$eq", -1)));
@@ -1061,8 +1135,12 @@
errorConditions.add(new Document("osdCityCorrect", new Document("$eq", -1)));
errorConditions.add(new Document("osdPartCorrect", new Document("$eq", -1)));
Document errorFilter = new Document("$or", errorConditions);
- Document osdErrorFilter = new Document("$and", Arrays.asList(importantTagCondition,mongoCreateTime, errorFilter));
- //TODO锛氭湭鐭ユ暟 鏂板0鐨勭姸鎬�
+ dList2.add(errorFilter);
+ Document osdErrorFilter = new Document("$and", dList2);
+ //鏈煡鏁�
+ List<Document> dList3 = new ArrayList<>(2);
+ setTag(params, dList3);
+ dList3.add(importantTagCondition);
List<Document> unknownConditions = new ArrayList<>();
unknownConditions.add(new Document("osdNameCorrect", new Document("$eq", 0)));
unknownConditions.add(new Document("osdTimeCorrect", new Document("$eq", 0)));
@@ -1071,9 +1149,10 @@
unknownConditions.add(new Document("osdPartCorrect", new Document("$eq", 0)));
// 浣跨敤$or閫昏緫缁勫悎鍓╀綑鐨勬潯浠�
Document unknownFilter = new Document("$or", unknownConditions);
- Document osdUnknownFilter = new Document("$and", Arrays.asList(importantTagCondition, mongoCreateTime,unknownFilter));
+ dList3.add(unknownFilter);
+ Document osdUnknownFilter = new Document("$and", dList3);
- List<Document> lists = Arrays.asList(osdFilter, osdCorrectFilter, osdErrorFilter,osdUnknownFilter);
+ List<Document> lists = Arrays.asList(osdFilter, osdCorrectFilter, osdErrorFilter, osdUnknownFilter);
List<String> rList = lists.stream().map(filter -> {
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -1092,17 +1171,21 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
- .select(CheckIndexVideo::getKeyAnnotationAccuracy)
- .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();
+// List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
+// .select(CheckIndexVideo::getKeyAnnotationAccuracy)
+// .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::getKeyAnnotationAccuracy).reduce(BigDecimal.ZERO, BigDecimal::add);
+// BigDecimal count = BigDecimal.valueOf(videoList.size());
+// onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+// }
BigDecimal onlineRate = BigDecimal.ZERO;
- if (CollectionUtils.isNotEmpty(videoList)) {
- BigDecimal sum = videoList.stream().map(CheckIndexVideo::getKeyAnnotationAccuracy).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal count = BigDecimal.valueOf(videoList.size());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+ if (!StringUtils.isEmpty(rList.get(0)) && !"0".equals(rList.get(0))) {
+ onlineRate = new BigDecimal(rList.get(1)).divide(new BigDecimal(rList.get(0)), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
}
rList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
@@ -1111,8 +1194,68 @@
return Result.ok().data(map).total(total);
}
+ @Override
+ public void videoImportantPointLabelingAccuracyExport(HttpServletResponse response, DataCenterQuery params) {
+ List<String> likeFileds = Arrays.asList("deviceNo", "osdName");
+ List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, "checkTime", likeFileds, null);
+ Query query = new Query();
+ Criteria and = new Criteria();
+ and.andOperator(andCriteria);
+ query = Query.query(and);
+ //涓嬫媺妗嗘爣娉ㄦ纭煡璇㈡潯浠�
+ if (params.getOption() != null) {
+ if (params.getOption() == 1) {
+ andCriteria.add(Criteria.where("osdNameCorrect").is(1));
+ andCriteria.add(Criteria.where("osdTimeCorrect").is(1));
+ andCriteria.add(Criteria.where("osdProvinceCorrect").is(1));
+ andCriteria.add(Criteria.where("osdCityCorrect").is(1));
+ andCriteria.add(Criteria.where("osdPartCorrect").is(1));
+ Criteria and2 = new Criteria();
+ and2.andOperator(andCriteria);
+ query = Query.query(and2);
+ } else if (params.getOption() == -1) {
+ // 浣跨敤$or鏉′欢杩炴帴澶氫釜瀛楁妫�鏌ワ紝姣忎釜瀛楁妫�鏌ユ槸鍚︾瓑浜�-1
+ Criteria c1 = Criteria.where("osdNameCorrect").is(-1);
+ Criteria c2 = Criteria.where("osdTimeCorrect").is(-1);
+ Criteria c3 = Criteria.where("osdProvinceCorrect").is(-1);
+ Criteria c4 = Criteria.where("osdCityCorrect").is(-1);
+ Criteria c5 = Criteria.where("osdPartCorrect").is(-1);
+ Criteria orOperator = new Criteria().orOperator(c1, c2, c3, c4, c5);
+ orOperator.andOperator(andCriteria);
+ query = Query.query(orOperator);
+ } else {
+ Criteria c1 = Criteria.where("osdNameCorrect").is(0);
+ Criteria c2 = Criteria.where("osdTimeCorrect").is(0);
+ Criteria c3 = Criteria.where("osdProvinceCorrect").is(0);
+ Criteria c4 = Criteria.where("osdCityCorrect").is(0);
+ Criteria c5 = Criteria.where("osdPartCorrect").is(0);
+ Criteria orOperator = new Criteria().orOperator(c1, c2, c3, c4, c5);
+ orOperator.andOperator(andCriteria);
+ query = Query.query(orOperator);
+ }
+ }
+ List<OsdCheckResult> resultList = mongoTemplate.find(query, OsdCheckResult.class);
+ for (OsdCheckResult osdCheckResult : resultList) {
+ OsdCheckResult.getError(osdCheckResult);
+ StringBuilder tag = new StringBuilder("" +
+ (osdCheckResult.getProvinceTag() ? "鐪佸巺銆�" : "") +
+ (osdCheckResult.getImportantTag() ? "閲嶇偣鐐逛綅銆�" : "") +
+ (osdCheckResult.getImportantCommandImageTag() ? "閲嶇偣鎸囨尌鍥惧儚銆�" : "") +
+ (osdCheckResult.getDeptTag() ? "閮ㄧ骇銆�" : ""));
+ // 鍒犻櫎瀛楃涓叉湯灏剧殑"銆�"
+ if (tag.toString().endsWith("銆�")) {
+ tag = new StringBuilder(tag.substring(0, tag.length() - 1));
+ }
+ osdCheckResult.setTagStr(tag.toString());
+ }
+ ExcelUtil<OsdCheckResult> util = new ExcelUtil<>(OsdCheckResult.class);
+ String sheetName = "OSD鏍囨敞";
+
+ util.exportExcel(response, resultList, sheetName);
+ }
+
/**
- * 瑙嗛锛氭牎鏃舵纭巼
+ * 瑙嗛锛氭牎鏃舵纭巼(鍋滅敤)
*
* @param params
* @return
@@ -1146,14 +1289,14 @@
@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, null);
//涓嬫媺妗嗘爣娉ㄦ纭煡璇㈡潯浠�
if (params.getOption() != null) {
- if(params.getOption()==1) {
- query.addCriteria(Criteria.where("osdTimeCorrect").is(1));
- }else if(params.getOption()==-1){
+ if (params.getOption() == 1) {
+ query.addCriteria(Criteria.where("osdTimeCorrect").is(1));
+ } else if (params.getOption() == -1) {
query.addCriteria(Criteria.where("osdTimeCorrect").is(-1));
- }else {
+ } else {
query.addCriteria(Criteria.where("osdTimeCorrect").is(0));
}
}
@@ -1163,7 +1306,7 @@
List<OsdCheckResult> resultList = mongoTemplate.find(query, OsdCheckResult.class);
for (OsdCheckResult osdCheckResult : resultList) {
- OsdCheckResult.getText(osdCheckResult);
+ OsdCheckResult.getError(osdCheckResult);
}
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
@@ -1184,11 +1327,10 @@
setTag(params, dList1);
Document osdCorrectFilter = new Document("$and", dList1);
//寮傚父鏁�
+ List<Document> dList2 = new ArrayList<>(2);
+ setTag(params, dList2);
Document importantTagCondition = new Document("importantTag", Boolean.TRUE);
- Document mongoCreateTimeRange = new Document()
- .append("$gte", params.getStartTime())
- .append("$lt", params.getEndTime());
- Document mongoCreateTime = new Document("mongoCreateTime", mongoCreateTimeRange);
+ dList2.add(importantTagCondition);
List<Document> errorConditions = new ArrayList<>();
errorConditions.add(new Document("osdNameCorrect", new Document("$eq", -1)));
errorConditions.add(new Document("osdTimeCorrect", new Document("$eq", -1)));
@@ -1196,8 +1338,12 @@
errorConditions.add(new Document("osdCityCorrect", new Document("$eq", -1)));
errorConditions.add(new Document("osdPartCorrect", new Document("$eq", -1)));
Document errorFilter = new Document("$or", errorConditions);
- Document osdErrorFilter = new Document("$and", Arrays.asList(importantTagCondition,mongoCreateTime, errorFilter));
- //TODO锛氭湭鐭ユ暟 鏂板0鐨勭姸鎬�
+ dList2.add(errorFilter);
+ Document osdErrorFilter = new Document("$and", dList2);
+ //鏈煡鏁�
+ List<Document> dList3 = new ArrayList<>(2);
+ setTag(params, dList3);
+ dList3.add(importantTagCondition);
List<Document> unknownConditions = new ArrayList<>();
unknownConditions.add(new Document("osdNameCorrect", new Document("$eq", 0)));
unknownConditions.add(new Document("osdTimeCorrect", new Document("$eq", 0)));
@@ -1206,9 +1352,10 @@
unknownConditions.add(new Document("osdPartCorrect", new Document("$eq", 0)));
// 浣跨敤$or閫昏緫缁勫悎鍓╀綑鐨勬潯浠�
Document unknownFilter = new Document("$or", unknownConditions);
- Document osdUnknownFilter = new Document("$and", Arrays.asList(importantTagCondition, mongoCreateTime,unknownFilter));
+ dList3.add(unknownFilter);
+ Document osdUnknownFilter = new Document("$and", dList3);
- List<Document> lists = Arrays.asList(osdFilter, osdCorrectFilter, osdErrorFilter,osdUnknownFilter);
+ List<Document> lists = Arrays.asList(osdFilter, osdCorrectFilter, osdErrorFilter, osdUnknownFilter);
List<String> rList = lists.stream().map(filter -> {
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -1227,17 +1374,21 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
- .select(CheckIndexVideo::getKeyTimingAccuracy)
- .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();
+// List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
+// .select(CheckIndexVideo::getKeyTimingAccuracy)
+// .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::getKeyTimingAccuracy).reduce(BigDecimal.ZERO, BigDecimal::add);
+// BigDecimal count = BigDecimal.valueOf(videoList.size());
+// onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+// }
BigDecimal onlineRate = BigDecimal.ZERO;
- if (CollectionUtils.isNotEmpty(videoList)) {
- BigDecimal sum = videoList.stream().map(CheckIndexVideo::getKeyTimingAccuracy).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal count = BigDecimal.valueOf(videoList.size());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+ if (!StringUtils.isEmpty(rList.get(0)) && !"0".equals(rList.get(0))) {
+ onlineRate = new BigDecimal(rList.get(1)).divide(new BigDecimal(rList.get(0)), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
}
rList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
@@ -1257,36 +1408,48 @@
public Result vehicleViewDockStable(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+ //鍔燚ataType涓鸿溅杈�
+ query.addCriteria(Criteria.where("dataType").is(ApiConstants.HK_DataType_CAR));
+ if (params.getOption() != null) {
+ if (ApiConstants.HK_SnapCount_ResultType_Normal.equals(params.getOption())) {
+ query.addCriteria(Criteria.where("resultType").is(ApiConstants.HK_SnapCount_ResultType_Normal));
+ } else if (ApiConstants.HK_SnapCount_ResultType_Null.equals(params.getOption())) {
+ query.addCriteria(Criteria.where("resultType").is(ApiConstants.HK_SnapCount_ResultType_Null));
+ } else if (ApiConstants.HK_SnapCount_ResultType_Descent.equals(params.getOption())) {
+ query.addCriteria(Criteria.where("resultType").is(ApiConstants.HK_SnapCount_ResultType_Descent));
+ } else if (ApiConstants.HK_SnapCount_ResultType_Low.equals(params.getOption())) {
+ query.addCriteria(Criteria.where("resultType").is(ApiConstants.HK_SnapCount_ResultType_Low));
+ }
+ }
long total = mongoTemplate.count(query, SnapshotDataMonitorResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
List<SnapshotDataMonitorResult> resultList = mongoTemplate.find(query, SnapshotDataMonitorResult.class);
-
+ resultList.forEach(item -> item.setResultTypeText(item.getResultTypeText()));
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("hk_snapshot_data_monitor");
- List<Document> dList1 = new ArrayList<>(2);
- dList1.add(new Document("importantTag", Boolean.TRUE));
- dList1.add(new Document("resultType", new Document("$eq", 1)));
- setTag(params, dList1);
List<Document> dList2 = new ArrayList<>(2);
- dList2.add(new Document("importantTag", Boolean.TRUE));
- dList2.add(new Document("resultType", new Document("$eq", 2)));
+ dList2.add(new Document("resultType", new Document("$eq", 1)));
+ dList2.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_CAR)));
setTag(params, dList2);
List<Document> dList3 = new ArrayList<>(2);
- dList3.add(new Document("importantTag", Boolean.TRUE));
- dList3.add(new Document("resultType", new Document("$eq", 3)));
+ dList3.add(new Document("resultType", new Document("$eq", 2)));
+ dList3.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_CAR)));
setTag(params, dList3);
List<Document> dList4 = new ArrayList<>(2);
- dList4.add(new Document("importantTag", Boolean.TRUE));
- dList4.add(new Document("resultType", new Document("$eq", 4)));
+ dList4.add(new Document("resultType", new Document("$eq", 3)));
+ dList4.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_CAR)));
setTag(params, dList4);
- Document normalFilter = new Document("$and", dList1);
- Document noDataFilter = new Document("$and", dList2);
- Document trFilter = new Document("$and", dList3);
- Document littleFilter = new Document("$and", dList4);
- List<Document> lists = Arrays.asList(normalFilter, noDataFilter, trFilter, littleFilter);
+ List<Document> dList5 = new ArrayList<>(2);
+ dList5.add(new Document("resultType", new Document("$eq", 4)));
+ dList5.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_CAR)));
+ setTag(params, dList5);
+ Document normalFilter = new Document("$and", dList2);
+ Document noDataFilter = new Document("$and", dList3);
+ Document downFilter = new Document("$and", dList4);
+ Document lessFilter = new Document("$and", dList5);
+ List<Document> lists = Arrays.asList(normalFilter, noDataFilter,downFilter,lessFilter);
List<String> rList = lists.stream().map(filter -> {
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -1304,18 +1467,42 @@
}
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
-
- Date now = new Date();
- List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
- .select(CheckIndexCar::getViewConnectStability)
- .eq(params.getDataType().equals(1), CheckIndexCar::getExamineTag, CheckConstants.Examine_Tag_Province)
- .between(CheckIndexCar::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
- .list();
+ // 鏋勫缓鍩烘湰鐨�$match鏉′欢
+ List<Document> matchConditions = new ArrayList<>();
+ setTag(params, matchConditions);
+ matchConditions.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_CAR)));
+ List<Document> pipeline = Arrays.asList(
+ new Document("$match", new Document("$and", matchConditions)),
+ new Document("$group", new Document("_id", "$mongoCreateTime")
+ .append("dataCount", new Document("$sum", "$dataCount"))
+ ));
+ // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
+ AggregateIterable<Document> result = collection.aggregate(pipeline);
+ int dataCount = 0;
+ for (Document doc : result) {
+ dataCount = doc.getInteger("dataCount");
+ }
+ rList.add(0, dataCount + "");
+// List<CheckIndexCar> carList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
+// .select(CheckIndexCar::getViewConnectStability)
+// .eq(params.getDataType().equals(1), CheckIndexCar::getExamineTag, CheckConstants.Examine_Tag_Province)
+// .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(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));
+// }
+ BigDecimal normal = new BigDecimal(rList.get(1));
+ BigDecimal noData = new BigDecimal(rList.get(2));
+ BigDecimal down = new BigDecimal(rList.get(3));
+ BigDecimal less = new BigDecimal(rList.get(4));
+ BigDecimal totalCount = normal.add(noData).add(down).add(less);
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());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+ if (totalCount.compareTo(BigDecimal.ZERO)>0) {
+ onlineRate = normal.divide(totalCount, 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
}
rList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
@@ -1340,8 +1527,12 @@
if (params.getOption() != null) {
query.addCriteria(Criteria.where("online").is(params.getOption()));
}
+ Sort sort = Sort.by(
+ Sort.Order.asc("pingOnline"), // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭
+ Sort.Order.desc("offLineCount") // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭
+ );
// 閫氳繃pingOnline瀛楁鎺掑簭锛屼负false鐨勬帓鍦ㄥ墠闈�
- query.with(Sort.by(Sort.Order.asc("pingOnline")));
+ query.with(sort);
//鍒嗛〉鏁伴噺
long total = mongoTemplate.count(query, TMonitorResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
@@ -1363,6 +1554,14 @@
item.setOnlineStr("绂荤嚎");
} else {
item.setOnlineStr("鏈煡");
+ }
+ List<String> offLineTime = item.getOffLineTimeStr();
+ if (!CollectionUtils.isEmpty(offLineTime)) {
+ //鍚庣画鍙互鏀规垚閰嶇疆鐨勭绾挎鏁�(鎻愬彇鍓峮娆★紝n涓洪厤缃殑绂荤嚎娆℃暟)
+ if (offLineTime.size() > 1) {
+ offLineTime = offLineTime.subList(0, 2);
+ }
+ item.setOffLineTimeStr(offLineTime);
}
});
@@ -1402,17 +1601,21 @@
totalCount = offlineCount + unknownCount + onlineCount;
}
- List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
- .select(CheckIndexCar::getSiteOnline)
- .eq(params.getDataType().equals(1), CheckIndexCar::getExamineTag, CheckConstants.Examine_Tag_Province)
- .eq(params.getDataType().equals(2), CheckIndexCar::getExamineTag, CheckConstants.Examine_Tag_Dept)
- .between(CheckIndexCar::getCreateTime, DateUtils.getDayStart(params.getStartTime()), DateUtils.getDayEnd(params.getEndTime()))
- .list();
+// List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
+// .select(CheckIndexCar::getSiteOnline)
+// .eq(params.getDataType().equals(1), CheckIndexCar::getExamineTag, CheckConstants.Examine_Tag_Province)
+// .eq(params.getDataType().equals(2), CheckIndexCar::getExamineTag, CheckConstants.Examine_Tag_Dept)
+// .between(CheckIndexCar::getCreateTime, DateUtils.getDayStart(params.getStartTime()), DateUtils.getDayEnd(params.getEndTime()))
+// .list();
+// BigDecimal onlineRate = BigDecimal.ZERO;
+// if (CollectionUtils.isNotEmpty(videoList)) {
+// BigDecimal sum = videoList.stream().map(CheckIndexCar::getSiteOnline).reduce(BigDecimal.ZERO, BigDecimal::add);
+// BigDecimal count = BigDecimal.valueOf(videoList.size());
+// onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+// }
BigDecimal onlineRate = BigDecimal.ZERO;
- if (CollectionUtils.isNotEmpty(videoList)) {
- BigDecimal sum = videoList.stream().map(CheckIndexCar::getSiteOnline).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal count = BigDecimal.valueOf(videoList.size());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+ if (totalCount!=0) {
+ onlineRate = new BigDecimal(onlineCount).divide(new BigDecimal(totalCount), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
}
HashMap<String, Object> map = new HashMap<>();
map.put("count", Arrays.asList(totalCount + "", onlineCount + "", offlineCount + "", unknownCount + "", this.remove0(onlineRate)));
@@ -1429,33 +1632,45 @@
@Override
public Result vehicleNetDeviceDirectoryConsistency(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("ip.showValue", "name.showValue", "serialNumber.showValue");
- Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+ List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, TIME_FIELD, likeFileds, null);
+ // 1/2/3 瑙嗛/杞﹁締/浜鸿劯
+ Pattern pattern = Pattern.compile(".*2.*");
+ andCriteria.add(Criteria.where("sxjgnlx.value").regex(pattern));
+ Query query = new Query();
+ Criteria and = new Criteria();
+ if (params.getOption() != null) {
+ if (params.getOption() == 1) {
+ andCriteria.add(Criteria.where("newDevice").is(Boolean.TRUE));
+ } else if (params.getOption() == -1) {
+ andCriteria.add(Criteria.where("newDevice").is(Boolean.FALSE));
+ }
+ }
+ and.andOperator(andCriteria);
+ query = Query.query(and);
long total = mongoTemplate.count(query, MonitorQualifyResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
List<MonitorQualifyResult> resultList = mongoTemplate.find(query, MonitorQualifyResult.class);
-
- // 缁熻鏁伴噺
+ List<MonitorQualifyResultVO> resultVOS = new ArrayList<>();
+ for (MonitorQualifyResult result : resultList) {
+ MonitorQualifyResultVO vo = MonitorQualifyResult.getVO(result);
+ resultVOS.add(vo);
+ }
+ //缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("uy_monitor_qualify");
-
+ //鎬绘暟
List<Document> dList1 = new ArrayList<>(2);
- dList1.add(new Document("ip.error", new Document("$eq", Boolean.TRUE)));
setTag(params, dList1);
+ dList1.add(new Document("sxjgnlx.value", new Document("$regex", ".*2.*")));
+ Document totalFilter = new Document("$and", dList1);
+ //鏂拌澶囨暟
List<Document> dList2 = new ArrayList<>(2);
- dList2.add(new Document("macdz.error", new Document("$eq", Boolean.TRUE)));
setTag(params, dList2);
- List<Document> dList3 = new ArrayList<>(2);
- dList3.add(new Document("latitude.error", new Document("$eq", Boolean.TRUE)));
- setTag(params, dList3);
- List<Document> dList4 = new ArrayList<>(2);
- dList4.add(new Document("longitude.error", new Document("$eq", Boolean.TRUE)));
- setTag(params, dList4);
- Document ipErrFilter = new Document("$and", dList1);
- Document macdzErrFilter = new Document("$and", dList2);
- Document latitudeErrFilter = new Document("$and", dList3);
- Document longitudeErrFilter = new Document("$and", dList4);
- List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, latitudeErrFilter, longitudeErrFilter);
+ dList2.add(new Document("sxjgnlx.value", new Document("$regex", ".*2.*")));
+ dList2.add(new Document("newDevice", Boolean.TRUE));
+ Document newFilter = new Document("$and", dList2);
+
+ List<Document> lists = Arrays.asList(totalFilter, newFilter);
List<String> rList = lists.stream().map(filter -> {
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -1474,22 +1689,26 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- Date now = new Date();
- List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
- .select(CheckIndexCar::getDeviceDirectoryConsistent)
- .eq(params.getDataType().equals(1), CheckIndexCar::getExamineTag, CheckConstants.Examine_Tag_Province)
- .between(CheckIndexCar::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
- .list();
+// List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
+// .select(CheckIndexCar::getDeviceDirectoryConsistent)
+// .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::getDeviceDirectoryConsistent).reduce(BigDecimal.ZERO, BigDecimal::add);
+// BigDecimal count = BigDecimal.valueOf(videoList.size());
+// onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+// }
BigDecimal onlineRate = BigDecimal.ZERO;
- if (CollectionUtils.isNotEmpty(videoList)) {
- BigDecimal sum = videoList.stream().map(CheckIndexCar::getDeviceDirectoryConsistent).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal count = BigDecimal.valueOf(videoList.size());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+ if (!StringUtils.isEmpty(rList.get(0)) && !"0".equals(rList.get(0))) {
+ onlineRate = new BigDecimal(rList.get(0)).subtract(new BigDecimal(rList.get(1))).divide(new BigDecimal(rList.get(0)), 3,RoundingMode.DOWN).multiply(new BigDecimal("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);
}
@@ -1502,7 +1721,23 @@
@Override
public Result vehicleCollectionConsistency(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "crossName");
- Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, TIME_FIELD, likeFileds, null);
+ Query query = new Query();
+ Criteria and = new Criteria();
+ and.andOperator(andCriteria);
+ query = Query.query(and);
+ if (params.getOption() != null) {
+ if (params.getOption() == 1) {
+ query.addCriteria(Criteria.where("lalType").is(ApiConstants.HK_Info_LayType_Normal));
+ query.addCriteria(Criteria.where("gbCodeType").is(ApiConstants.HK_Info_GbCodeType_Normal));
+ } else if (params.getOption() == -1) {
+ Criteria lalType = Criteria.where("lalType").ne(ApiConstants.HK_Info_LayType_Normal);
+ Criteria gbCodeType = Criteria.where("gbCodeType").ne(ApiConstants.HK_Info_GbCodeType_Normal);
+ Criteria orOperator = new Criteria().orOperator(lalType, gbCodeType);
+ orOperator.andOperator(andCriteria);
+ query = Query.query(orOperator);
+ }
+ }
long total = mongoTemplate.count(query, CrossDetailResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
@@ -1513,23 +1748,23 @@
MongoCollection<Document> collection = database.getCollection("hk_cross_detail");
List<Document> dList1 = new ArrayList<>(2);
- dList1.add(new Document("lalType", new Document("$eq", 1)));
setTag(params, dList1);
List<Document> dList2 = new ArrayList<>(2);
- dList2.add(new Document("lalType", new Document("$eq", 2)));
+ dList2.add(new Document("lalType", new Document("$eq", 1)));
+ dList2.add(new Document("gbCodeType", new Document("$eq", 1)));
setTag(params, dList2);
List<Document> dList3 = new ArrayList<>(2);
- dList3.add(new Document("lalType", new Document("$eq", 3)));
setTag(params, dList3);
- List<Document> dList4 = new ArrayList<>(2);
- dList4.add(new Document("lalType", new Document("$eq", 4)));
- setTag(params, dList4);
- Document ipErrFilter = new Document("$and", dList1);
- Document macdzErrFilter = new Document("$and", dList2);
- Document latitudeErrFilter = new Document("$and", dList3);
- Document longitudeErrFilter = new Document("$and", dList4);
+ List<Document> errorConditions = new ArrayList<>();
+ errorConditions.add(new Document("lalType", new Document("$ne", 1)));
+ errorConditions.add(new Document("gbCodeType", new Document("$ne", 1)));
+ Document errorDoc = new Document("$or", errorConditions);
+ dList3.add(errorDoc);
+ Document totalFilter = new Document("$and", dList1);
+ Document correctFilter = new Document("$and", dList2);
+ Document errorFilter = new Document("$and", dList3);
- List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, latitudeErrFilter, longitudeErrFilter);
+ List<Document> lists = Arrays.asList(totalFilter, correctFilter, errorFilter);
List<String> rList = lists.stream().map(filter -> {
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -1548,17 +1783,21 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- Date now = new Date();
- List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
- .select(CheckIndexCar::getVehicleInformationCollectionAccuracy)
- .eq(params.getDataType().equals(1), CheckIndexCar::getExamineTag, CheckConstants.Examine_Tag_Province)
- .between(CheckIndexCar::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
- .list();
+// List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
+// .select(CheckIndexCar::getVehicleInformationCollectionAccuracy)
+// .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::getVehicleInformationCollectionAccuracy).reduce(BigDecimal.ZERO, BigDecimal::add);
+// BigDecimal count = BigDecimal.valueOf(videoList.size());
+// onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+// }
BigDecimal onlineRate = BigDecimal.ZERO;
- if (CollectionUtils.isNotEmpty(videoList)) {
- BigDecimal sum = videoList.stream().map(CheckIndexCar::getVehicleInformationCollectionAccuracy).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal count = BigDecimal.valueOf(videoList.size());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+ if (!StringUtils.isEmpty(rList.get(0)) && !"0".equals(rList.get(0))) {
+ onlineRate = new BigDecimal(rList.get(1)).divide(new BigDecimal(rList.get(0)), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
}
rList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
@@ -1577,7 +1816,15 @@
public Result vehicleCollectionDataIntegrity(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+ if (params.getOption() != null) {
+ //涓昏灞炴�т笉瀹屾暣
+ if (params.getOption() == 1) {
+ query.addCriteria(Criteria.where("noIntegrityCount").gt(0));
+ } else if (params.getOption() == -1) {
+ //灞炴�т笉瀹屾暣
+ query.addCriteria(Criteria.where("mainNoIntegrityCount").gt(0));
+ }
+ }
long total = mongoTemplate.count(query, DataIntegrityMonitoringResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
List<DataIntegrityMonitoringResult> resultList = mongoTemplate.find(query, DataIntegrityMonitoringResult.class);
@@ -1586,21 +1833,51 @@
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("hk_data_integrity_monitoring");
- 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;
- if (CollectionUtils.isNotEmpty(videoList)) {
- BigDecimal sum = videoList.stream().map(CheckIndexCar::getVehicleCaptureIntegrity).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal count = BigDecimal.valueOf(videoList.size());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+ //鎶撴媿閲忔眰鍜�
+ // 鏋勫缓鍩烘湰鐨�$match鏉′欢
+ List<Document> matchConditions = new ArrayList<>();
+ setTag(params, matchConditions);
+ List<Document> pipeline = Arrays.asList(
+ new Document("$match", new Document("$and", matchConditions)),
+ new Document("$group", new Document("_id", "$mongoCreateTime")
+ .append("dataCount", new Document("$sum", "$dataCount"))
+ .append("noIntegrityCount", new Document("$sum", "$noIntegrityCount"))
+ .append("mainNoIntegrityCount", new Document("$sum", "$mainNoIntegrityCount"))
+ ));
+ // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
+ AggregateIterable<Document> result = collection.aggregate(pipeline);
+ int dataCount = 0;
+ int noIntegrityCount = 0;
+ int mainNoIntegrityCount = 0;
+ for (Document doc : result) {
+ dataCount = doc.getInteger("dataCount");
+ noIntegrityCount = doc.getInteger("noIntegrityCount");
+ mainNoIntegrityCount = doc.getInteger("mainNoIntegrityCount");
}
+// List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
+// .select(CheckIndexCar::getVehicleCaptureIntegrity)
+// .eq(params.getDataType().equals(1), CheckIndexCar::getExamineTag, CheckConstants.Examine_Tag_Province)
+// .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::getVehicleCaptureIntegrity).reduce(BigDecimal.ZERO, BigDecimal::add);
+// BigDecimal count = BigDecimal.valueOf(videoList.size());
+// onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+// }
+ List<String> countList = new ArrayList<>();
+ countList.add(dataCount + "");
+ countList.add(noIntegrityCount + "");
+ countList.add(mainNoIntegrityCount + "");
+ BigDecimal onlineRate = BigDecimal.ZERO;
+ if (dataCount!=0) {
+ onlineRate = new BigDecimal(dataCount-noIntegrityCount).divide(new BigDecimal(dataCount), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
+ }
+ countList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(this.remove0(onlineRate)));
+ map.put("count", countList);
map.put("list", resultList);
return Result.ok().data(map).total(total);
}
@@ -1615,25 +1892,68 @@
public Result vehicleCollectionDataCaptured(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+ if (params.getOption() != null) {
+ //涓昏灞炴�т笉涓�鑷�
+ if (params.getOption() == 1) {
+ query.addCriteria(Criteria.where("majorDiffCount").gt(0));
+ } else if (params.getOption() == -1) {
+ //閲嶈灞炴�т笉涓�鑷�
+ query.addCriteria(Criteria.where("importantDiffCount").gt(0));
+ }
+ }
long total = mongoTemplate.count(query, AttrRecognitionMonitorResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
List<AttrRecognitionMonitorResult> resultList = mongoTemplate.find(query, AttrRecognitionMonitorResult.class);
- Date now = new Date();
- 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;
- if (CollectionUtils.isNotEmpty(videoList)) {
- BigDecimal sum = videoList.stream().map(CheckIndexCar::getVehicleCaptureAccuracy).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal count = BigDecimal.valueOf(videoList.size());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+ // 缁熻鏁伴噺
+ MongoDatabase database = mongoTemplate.getDb();
+ MongoCollection<Document> collection = database.getCollection("hk_attr_recognition_monitor");
+
+ // 鏋勫缓鍩烘湰鐨�$match鏉′欢
+ List<Document> matchConditions = new ArrayList<>();
+ setTag(params, matchConditions);
+ List<Document> pipeline = Arrays.asList(
+ new Document("$match", new Document("$and", matchConditions)),
+ new Document("$group", new Document("_id", "$mongoCreateTime")
+ .append("sampleCount", new Document("$sum", "$sampleCount"))
+ .append("majorDiffCount", new Document("$sum", "$majorDiffCount"))
+ .append("importantDiffCount", new Document("$sum", "$importantDiffCount"))
+ ));
+ // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
+ AggregateIterable<Document> result = collection.aggregate(pipeline);
+ int sampleCount = 0;
+ int majorDiffCount = 0;
+ int importantDiffCount = 0;
+ for (Document doc : result) {
+ sampleCount = doc.getInteger("sampleCount");
+ majorDiffCount = doc.getInteger("majorDiffCount");
+ importantDiffCount = doc.getInteger("importantDiffCount");
}
+
+// List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
+// .select(CheckIndexCar::getVehicleCaptureAccuracy)
+// .eq(params.getDataType().equals(1), CheckIndexCar::getExamineTag, CheckConstants.Examine_Tag_Province)
+// .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::getVehicleCaptureAccuracy).reduce(BigDecimal.ZERO, BigDecimal::add);
+// BigDecimal count = BigDecimal.valueOf(videoList.size());
+// onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+// }
+
+ List<String> countList = new ArrayList<>();
+ countList.add(sampleCount + "");
+ countList.add(majorDiffCount + "");
+ countList.add(importantDiffCount + "");
+ BigDecimal onlineRate = BigDecimal.ZERO;
+ if (sampleCount!=0) {
+ onlineRate = new BigDecimal(sampleCount-majorDiffCount).divide(new BigDecimal(sampleCount), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
+ }
+ countList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(this.remove0(onlineRate)));
+ map.put("count", countList);
map.put("list", resultList);
return Result.ok().data(map).total(total);
}
@@ -1648,30 +1968,46 @@
public Result vehicleClockAccuracy(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+ if (params.getOption() != null) {
+ //褰撴棩鏃堕挓寮傚父
+ if (params.getOption() == 1) {
+ query.addCriteria(Criteria.where("majorDiffCount").gt(0));
+ } else if (params.getOption() == -1) {
+ //鍏ㄩ儴鏃堕挓寮傚父
+ query.addCriteria(Criteria.where("importantDiffCount").gt(0));
+ }
+ }
long total = mongoTemplate.count(query, VehicleDeviceInspectionResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
List<VehicleDeviceInspectionResult> resultList = mongoTemplate.find(query, VehicleDeviceInspectionResult.class);
-
+ List<SnapClockVO> resultVos = new ArrayList<>();
+ resultList.forEach(item -> {
+ SnapClockVO vo = VehicleDeviceInspectionResult.getVO(item);
+ resultVos.add(vo);
+ });
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("hk_vehicle_device_inspection");
List<Document> dList1 = new ArrayList<>(2);
- dList1.add(new Document("snapResult", new Document("$eq", 1)));
+ dList1.add(new Document("snapClock.todayClockResult", new Document("$eq", 1)));
setTag(params, dList1);
List<Document> dList2 = new ArrayList<>(2);
- dList2.add(new Document("snapResult", new Document("$eq", 2)));
+ dList2.add(new Document("snapClock.todayClockResult", new Document("$eq", 0)));
setTag(params, dList2);
List<Document> dList3 = new ArrayList<>(2);
- dList3.add(new Document("snapResult", new Document("$eq", 4)));
+ dList3.add(new Document("snapClock.allClockResult", new Document("$eq", 1)));
setTag(params, dList3);
- Document ipErrFilter = new Document("$and", dList1);
- Document macdzErrFilter = new Document("$and", dList2);
- Document longitudeErrFilter = new Document("$and", dList3);
+ List<Document> dList4 = new ArrayList<>(2);
+ dList4.add(new Document("snapClock.allClockResult", new Document("$eq", 0)));
+ setTag(params, dList4);
+ Document todayFilter = new Document("$and", dList1);
+ Document todayErrFilter = new Document("$and", dList2);
+ Document allFilter = new Document("$and", dList3);
+ Document allErrFilter = new Document("$and", dList4);
- List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, longitudeErrFilter);
+ List<Document> lists = Arrays.asList(todayFilter, todayErrFilter, allFilter, allErrFilter);
List<String> rList = lists.stream().map(filter -> {
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -1690,22 +2026,29 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- Date now = new Date();
- List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
- .select(CheckIndexCar::getVehicleTimingAccuracy)
- .eq(params.getDataType().equals(1), CheckIndexCar::getExamineTag, CheckConstants.Examine_Tag_Province)
- .between(CheckIndexCar::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
- .list();
+// List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
+// .select(CheckIndexCar::getVehicleTimingAccuracy)
+// .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::getVehicleTimingAccuracy).reduce(BigDecimal.ZERO, BigDecimal::add);
+// BigDecimal count = BigDecimal.valueOf(videoList.size());
+// onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+// }
BigDecimal onlineRate = BigDecimal.ZERO;
- if (CollectionUtils.isNotEmpty(videoList)) {
- BigDecimal sum = videoList.stream().map(CheckIndexCar::getVehicleTimingAccuracy).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal count = BigDecimal.valueOf(videoList.size());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+ BigDecimal normal = new BigDecimal(rList.get(0));
+ BigDecimal abnormal = new BigDecimal(rList.get(1));
+ BigDecimal totalCount = normal.add(abnormal);
+ if (totalCount.compareTo(BigDecimal.ZERO)>0) {
+ onlineRate = normal.divide(totalCount, 3,RoundingMode.DOWN).multiply(new BigDecimal("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);
}
@@ -1719,26 +2062,72 @@
public Result vehicleTimelyUploadAccuracy(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+ query.addCriteria(Criteria.where("dataType").is(ApiConstants.HK_DataType_CAR));
+ if (params.getOption() != null) {
+ //姝e父
+ if (params.getOption() == 1) {
+ query.addCriteria(Criteria.where("delayCount").is(0));
+ } else if (params.getOption() == -1) {
+ //寤惰繜
+ query.addCriteria(Criteria.where("delayCount").gt(0));
+ }
+ }
long total = mongoTemplate.count(query, SnapshotDelayMonitorResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
List<SnapshotDelayMonitorResult> resultList = mongoTemplate.find(query, SnapshotDelayMonitorResult.class);
-
// 缁熻鏁�
- Date now = new Date();
- 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();
+ MongoDatabase database = mongoTemplate.getDb();
+ MongoCollection<Document> collection = database.getCollection("hk_snapshop_delay_monitor");
+
+ List<Document> dList1 = new ArrayList<>(2);
+ setTag(params, dList1);
+ dList1.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_CAR)));
+ Document allFilter = new Document("$and", dList1);
+ List<Document> dList2 = new ArrayList<>(2);
+ dList2.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_CAR)));
+ dList2.add(new Document("delayCount", new Document("$gt", 0)));
+ setTag(params, dList2);
+ Document delayFilter = new Document("$and", dList2);
+
+ List<Document> lists = Arrays.asList(allFilter, delayFilter);
+ List<String> rList = lists.stream().map(filter -> {
+ // 鏋勫缓鑱氬悎绠¢亾
+ List<Document> pipeline = Arrays.asList(
+ new Document("$match", filter),
+ // $group 鍘婚噸
+ new Document("$group", new Document("_id", "$externalIndexCode")),
+ new Document("$count", "uniqueDeviceIds")
+ );
+ // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
+ AggregateIterable<Document> result = collection.aggregate(pipeline);
+ Integer uniqueDeviceIdCount = 0;
+ for (Document doc : result) {
+ uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds");
+ break; // 涓嶉渶瑕佺户缁亶鍘嗭紝鍥犱负 $count 鍙細浜х敓涓�涓粨鏋�
+ }
+ return uniqueDeviceIdCount + "";
+ }).collect(Collectors.toList());
+
+
+// List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
+// .select(CheckIndexCar::getVehicleUploadTimeliness)
+// .eq(params.getDataType().equals(1), CheckIndexCar::getExamineTag, CheckConstants.Examine_Tag_Province)
+// .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::getVehicleUploadTimeliness).reduce(BigDecimal.ZERO, BigDecimal::add);
+// BigDecimal count = BigDecimal.valueOf(videoList.size());
+// onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+// }
BigDecimal onlineRate = BigDecimal.ZERO;
- if (CollectionUtils.isNotEmpty(videoList)) {
- BigDecimal sum = videoList.stream().map(CheckIndexCar::getVehicleUploadTimeliness).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal count = BigDecimal.valueOf(videoList.size());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+ if (!StringUtils.isEmpty(rList.get(0)) && !"0".equals(rList.get(0))) {
+ onlineRate = new BigDecimal(rList.get(0)).subtract(new BigDecimal(rList.get(1))).divide(new BigDecimal(rList.get(0)), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
}
+ rList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(this.remove0(onlineRate)));
+ map.put("count", rList);
map.put("list", resultList);
return Result.ok().data(map).total(total);
}
@@ -1753,17 +2142,44 @@
public Result vehicleUrlAccuracy(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+ if (params.getOption() != null) {
+ if (params.getOption() == 1) {
+ query.addCriteria(Criteria.where("expCount").is(0));
+ } else if (params.getOption() == -1) {
+ query.addCriteria(Criteria.where("expCount").gt(0));
+ }
+ }
long total = mongoTemplate.count(query, PicAccessResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
+ query.with(Sort.by(Sort.Order.desc("expCount")));
List<PicAccessResult> resultList = mongoTemplate.find(query, PicAccessResult.class);
// 缁熻鏁�
- Date now = new Date();
+ MongoDatabase database = mongoTemplate.getDb();
+ MongoCollection<Document> collection = database.getCollection("hk_pic_access");
+ // 鏋勫缓鍩烘湰鐨�$match鏉′欢
+ List<Document> matchConditions = new ArrayList<>();
+ setTag(params, matchConditions);
+ List<Document> pipeline = Arrays.asList(
+ new Document("$match", new Document("$and", matchConditions)),
+ new Document("$group", new Document("_id", "$mongoCreateTime")
+ .append("sampleCount", new Document("$sum", "$sampleCount"))
+ .append("expCount", new Document("$sum", "$expCount"))
+ ));
+ // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
+ AggregateIterable<Document> result = collection.aggregate(pipeline);
+ int sampleCount = 0;
+ int expCount = 0;
+ for (Document doc : result) {
+ sampleCount = doc.getInteger("sampleCount");
+ expCount = doc.getInteger("expCount");
+ }
+
List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
.select(CheckIndexCar::getVehicleUrlAvailability)
.eq(params.getDataType().equals(1), CheckIndexCar::getExamineTag, CheckConstants.Examine_Tag_Province)
- .between(CheckIndexCar::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
+ .eq(params.getDataType().equals(2), CheckIndexCar::getExamineTag, CheckConstants.Examine_Tag_Dept)
+ .between(CheckIndexCar::getCreateTime, DateUtils.getDayStart(params.getStartTime()), DateUtils.getDayEnd(params.getEndTime()))
.list();
BigDecimal onlineRate = BigDecimal.ZERO;
if (CollectionUtils.isNotEmpty(videoList)) {
@@ -1771,8 +2187,13 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
+ List<String> rList = new ArrayList<>();
+ rList.add(sampleCount + "");
+ rList.add(expCount + "");
+ rList.add(this.remove0(onlineRate));
+
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(this.remove0(onlineRate)));
+ map.put("count", rList);
map.put("list", resultList);
return Result.ok().data(map).total(total);
}
@@ -1787,27 +2208,65 @@
public Result vehicleBigImgAccuracy(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+ if (params.getOption() != null) {
+ if (params.getOption() == 1) {
+ query.addCriteria(Criteria.where("bigUseful.bigPicExpCount").is(0));
+ } else if (params.getOption() == -1) {
+ query.addCriteria(Criteria.where("bigUseful.bigPicExpCount").gt(0));
+ }
+ }
long total = mongoTemplate.count(query, VehicleDeviceSamplingResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
+ query.with(Sort.by(Sort.Order.desc("bigUseful.bigPicExpCount")));
List<VehicleDeviceSamplingResult> resultList = mongoTemplate.find(query, VehicleDeviceSamplingResult.class);
-
+ List<BigPicUsefulVO> voList = new ArrayList<>();
+ resultList.forEach(item -> {
+ BigPicUsefulVO picVO = VehicleDeviceSamplingResult.getPicVO(item);
+ voList.add(picVO);
+ });
// 缁熻鏁�
- Date now = new Date();
- 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;
- if (CollectionUtils.isNotEmpty(videoList)) {
- BigDecimal sum = videoList.stream().map(CheckIndexCar::getVehiclePictureAvailability).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal count = BigDecimal.valueOf(videoList.size());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+ MongoDatabase database = mongoTemplate.getDb();
+ MongoCollection<Document> collection = database.getCollection("hk_vehicle_device_sampling");
+ // 鏋勫缓鍩烘湰鐨�$match鏉′欢
+ List<Document> matchConditions = new ArrayList<>();
+ setTag(params, matchConditions);
+ List<Document> pipeline = Arrays.asList(
+ new Document("$match", new Document("$and", matchConditions)),
+ new Document("$group", new Document("_id", "$mongoCreateTime")
+ .append("sampleCount", new Document("$sum", "$bigUseful.sampleCount"))
+ .append("expCount", new Document("$sum", "$bigUseful.bigPicExpCount"))
+ ));
+ // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
+ AggregateIterable<Document> result = collection.aggregate(pipeline);
+ int sampleCount = 0;
+ int expCount = 0;
+ for (Document doc : result) {
+ sampleCount = doc.getInteger("sampleCount");
+ expCount = doc.getInteger("expCount");
}
+ List<String> countList = new ArrayList<>();
+// List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
+// .select(CheckIndexCar::getVehiclePictureAvailability)
+// .eq(params.getDataType().equals(1), CheckIndexCar::getExamineTag, CheckConstants.Examine_Tag_Province)
+// .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::getVehiclePictureAvailability).reduce(BigDecimal.ZERO, BigDecimal::add);
+// BigDecimal count = BigDecimal.valueOf(videoList.size());
+// onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+// }
+ countList.add(sampleCount + "");
+ countList.add(expCount + "");
+ BigDecimal onlineRate = BigDecimal.ZERO;
+ if (sampleCount!=0) {
+ onlineRate = new BigDecimal(sampleCount-expCount).divide(new BigDecimal(sampleCount), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
+ }
+ countList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(this.remove0(onlineRate)));
- map.put("list", resultList);
+ map.put("count", countList);
+ map.put("list", voList);
return Result.ok().data(map).total(total);
}
@@ -1821,32 +2280,49 @@
public Result faceViewDockStable(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+ //鍔燚ataType涓鸿溅杈�
+ query.addCriteria(Criteria.where("dataType").is(ApiConstants.HK_DataType_FACE));
+ if (params.getOption() != null) {
+ if (ApiConstants.HK_SnapCount_ResultType_Normal.equals(params.getOption())) {
+ query.addCriteria(Criteria.where("resultType").is(ApiConstants.HK_SnapCount_ResultType_Normal));
+ } else if (ApiConstants.HK_SnapCount_ResultType_Null.equals(params.getOption())) {
+ query.addCriteria(Criteria.where("resultType").is(ApiConstants.HK_SnapCount_ResultType_Null));
+ } else if (ApiConstants.HK_SnapCount_ResultType_Descent.equals(params.getOption())) {
+ query.addCriteria(Criteria.where("resultType").is(ApiConstants.HK_SnapCount_ResultType_Descent));
+ } else if (ApiConstants.HK_SnapCount_ResultType_Low.equals(params.getOption())) {
+ query.addCriteria(Criteria.where("resultType").is(ApiConstants.HK_SnapCount_ResultType_Low));
+ }
+ }
long total = mongoTemplate.count(query, SnapshotDataMonitorResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
List<SnapshotDataMonitorResult> resultList = mongoTemplate.find(query, SnapshotDataMonitorResult.class);
-
+ resultList.forEach(item -> item.setResultTypeText(item.getResultTypeText()));
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("hk_snapshot_data_monitor");
- List<Document> dList1 = new ArrayList<>(2);
- dList1.add(new Document("resultType", new Document("$eq", 1)));
- setTag(params, dList1);
List<Document> dList2 = new ArrayList<>(2);
- dList2.add(new Document("resultType", new Document("$eq", 2)));
+ dList2.add(new Document("resultType", new Document("$eq", 1)));
+ dList2.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_CAR)));
setTag(params, dList2);
List<Document> dList3 = new ArrayList<>(2);
- dList3.add(new Document("resultType", new Document("$eq", 3)));
+ dList3.add(new Document("resultType", new Document("$eq", 2)));
+ dList3.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_CAR)));
setTag(params, dList3);
+
List<Document> dList4 = new ArrayList<>(2);
- dList4.add(new Document("resultType", new Document("$eq", 4)));
+ dList4.add(new Document("resultType", new Document("$eq", 3)));
+ dList4.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_CAR)));
setTag(params, dList4);
- Document normalFilter = new Document("$and", dList1);
- Document noDataFilter = new Document("$and", dList2);
- Document trFilter = new Document("$and", dList3);
- Document littleFilter = new Document("$and", dList4);
- List<Document> lists = Arrays.asList(normalFilter, noDataFilter, trFilter, littleFilter);
+ List<Document> dList5 = new ArrayList<>(2);
+ dList5.add(new Document("resultType", new Document("$eq", 4)));
+ dList5.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_CAR)));
+ setTag(params, dList5);
+ Document normalFilter = new Document("$and", dList2);
+ Document noDataFilter = new Document("$and", dList3);
+ Document downFilter = new Document("$and", dList4);
+ Document lessFilter = new Document("$and", dList5);
+ List<Document> lists = Arrays.asList(normalFilter, noDataFilter,downFilter,lessFilter);
List<String> rList = lists.stream().map(filter -> {
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -1864,18 +2340,43 @@
}
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
-
- Date now = new Date();
- List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
- .select(CheckIndexFace::getViewConnectStability)
- .eq(params.getDataType().equals(1), CheckIndexFace::getExamineTag, CheckConstants.Examine_Tag_Province)
- .between(CheckIndexFace::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
- .list();
+ //鎶撴媿閲忔眰鍜�
+ // 鏋勫缓鍩烘湰鐨�$match鏉′欢
+ List<Document> matchConditions = new ArrayList<>();
+ setTag(params, matchConditions);
+ matchConditions.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_FACE)));
+ List<Document> pipeline = Arrays.asList(
+ new Document("$match", new Document("$and", matchConditions)),
+ new Document("$group", new Document("_id", "$mongoCreateTime")
+ .append("dataCount", new Document("$sum", "$dataCount"))
+ ));
+ // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
+ AggregateIterable<Document> result = collection.aggregate(pipeline);
+ int dataCount = 0;
+ for (Document doc : result) {
+ dataCount = doc.getInteger("dataCount");
+ }
+ rList.add(0, dataCount + "");
+// List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
+// .select(CheckIndexFace::getViewConnectStability)
+// .eq(params.getDataType().equals(1), CheckIndexFace::getExamineTag, CheckConstants.Examine_Tag_Province)
+// .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)) {
+// BigDecimal sum = videoList.stream().map(CheckIndexFace::getViewConnectStability).reduce(BigDecimal.ZERO, BigDecimal::add);
+// BigDecimal count = BigDecimal.valueOf(videoList.size());
+// onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+// }
+ BigDecimal normal = new BigDecimal(rList.get(1));
+ BigDecimal noData = new BigDecimal(rList.get(2));
+ BigDecimal down = new BigDecimal(rList.get(3));
+ BigDecimal less = new BigDecimal(rList.get(4));
+ BigDecimal totalCount = normal.add(noData).add(down).add(less);
BigDecimal onlineRate = BigDecimal.ZERO;
- if (CollectionUtils.isNotEmpty(videoList)) {
- BigDecimal sum = videoList.stream().map(CheckIndexFace::getViewConnectStability).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal count = BigDecimal.valueOf(videoList.size());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+ if (totalCount.compareTo(BigDecimal.ZERO)>0) {
+ onlineRate = normal.divide(totalCount, 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
}
rList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
@@ -1900,8 +2401,12 @@
if (params.getOption() != null) {
query.addCriteria(Criteria.where("online").is(params.getOption()));
}
+ Sort sort = Sort.by(
+ Sort.Order.asc("pingOnline"), // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭
+ Sort.Order.desc("offLineCount") // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭
+ );
// 閫氳繃pingOnline瀛楁鎺掑簭锛屼负false鐨勬帓鍦ㄥ墠闈�
- query.with(Sort.by(Sort.Order.asc("pingOnline")));
+ query.with(sort);
//鍒嗛〉鏁伴噺
long total = mongoTemplate.count(query, TMonitorResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
@@ -1921,11 +2426,19 @@
} else {
item.setOnlineStr("鏈煡");
}
+ List<String> offLineTime = item.getOffLineTimeStr();
+ if (!CollectionUtils.isEmpty(offLineTime)) {
+ //鍚庣画鍙互鏀规垚閰嶇疆鐨勭绾挎鏁�(鎻愬彇鍓峮娆★紝n涓洪厤缃殑绂荤嚎娆℃暟)
+ if (offLineTime.size() > 1) {
+ offLineTime = offLineTime.subList(0, 2);
+ }
+ item.setOffLineTimeStr(offLineTime);
+ }
});
params.setDeptTag(-1);
params.setDeviceType(3);
-// 缁熻璁惧鏁伴噺
+ // 缁熻璁惧鏁伴噺
//鍗$墖缁熻
int totalCount = 0;
int onlineCount = 0;
@@ -1960,19 +2473,22 @@
onlineCount = (Integer) result.getOrDefault("onlineCount", 0L);
totalCount = offlineCount + unknownCount + onlineCount;
}
- List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
- .select(CheckIndexFace::getSiteOnline)
- .eq(params.getDataType().equals(1), CheckIndexFace::getExamineTag, CheckConstants.Examine_Tag_Province)
- .eq(params.getDataType().equals(2), CheckIndexFace::getExamineTag, CheckConstants.Examine_Tag_Dept)
- .between(CheckIndexFace::getCreateTime, params.getStartTime(), params.getEndTime())
- .list();
+// List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
+// .select(CheckIndexFace::getSiteOnline)
+// .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)) {
+// BigDecimal sum = videoList.stream().map(CheckIndexFace::getSiteOnline).reduce(BigDecimal.ZERO, BigDecimal::add);
+// BigDecimal count = BigDecimal.valueOf(videoList.size());
+// onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+// }
BigDecimal onlineRate = BigDecimal.ZERO;
- if (CollectionUtils.isNotEmpty(videoList)) {
- BigDecimal sum = videoList.stream().map(CheckIndexFace::getSiteOnline).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal count = BigDecimal.valueOf(videoList.size());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+ if (totalCount!=0) {
+ onlineRate = new BigDecimal(onlineCount).divide(new BigDecimal(totalCount), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
}
-
HashMap<String, Object> map = new HashMap<>();
map.put("count", Arrays.asList(totalCount + "", onlineCount + "", offlineCount + "", unknownCount + "", this.remove0(onlineRate)));
map.put("list", resultList);
@@ -1987,34 +2503,46 @@
*/
@Override
public Result faceDirectoryConsistency(DataCenterQuery params) {
- List<String> likeFileds = Arrays.asList("serialNumber.showValue", "ip.showValue", "name.showValue");
- Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+ List<String> likeFileds = Arrays.asList("ip.showValue", "name.showValue", "serialNumber.showValue");
+ List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, TIME_FIELD, likeFileds, null);
+ // 1/2/3 瑙嗛/杞﹁締/浜鸿劯
+ Pattern pattern = Pattern.compile(".*3.*");
+ andCriteria.add(Criteria.where("sxjgnlx.value").regex(pattern));
+ Query query = new Query();
+ Criteria and = new Criteria();
+ if (params.getOption() != null) {
+ if (params.getOption() == 1) {
+ andCriteria.add(Criteria.where("newDevice").is(Boolean.TRUE));
+ } else if (params.getOption() == -1) {
+ andCriteria.add(Criteria.where("newDevice").is(Boolean.FALSE));
+ }
+ }
+ and.andOperator(andCriteria);
+ query = Query.query(and);
long total = mongoTemplate.count(query, MonitorQualifyResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
List<MonitorQualifyResult> resultList = mongoTemplate.find(query, MonitorQualifyResult.class);
-
+ List<MonitorQualifyResultVO> resultVOS = new ArrayList<>();
+ for (MonitorQualifyResult result : resultList) {
+ MonitorQualifyResultVO vo = MonitorQualifyResult.getVO(result);
+ resultVOS.add(vo);
+ }
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("uy_monitor_qualify");
-
+ //鎬绘暟
List<Document> dList1 = new ArrayList<>(2);
- dList1.add(new Document("ip.error", new Document("$eq", Boolean.TRUE)));
setTag(params, dList1);
+ dList1.add(new Document("sxjgnlx.value", new Document("$regex", ".*3.*")));
+ Document totalFilter = new Document("$and", dList1);
+ //鏂拌澶囨暟
List<Document> dList2 = new ArrayList<>(2);
- dList2.add(new Document("macdz.error", new Document("$eq", Boolean.TRUE)));
setTag(params, dList2);
- List<Document> dList3 = new ArrayList<>(2);
- dList3.add(new Document("latitude.error", new Document("$eq", Boolean.TRUE)));
- setTag(params, dList3);
- List<Document> dList4 = new ArrayList<>(2);
- dList4.add(new Document("longitude.error", new Document("$eq", Boolean.TRUE)));
- setTag(params, dList4);
- Document ipErrFilter = new Document("$and", dList1);
- Document macdzErrFilter = new Document("$and", dList2);
- Document latitudeErrFilter = new Document("$and", dList3);
- Document longitudeErrFilter = new Document("$and", dList4);
- List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, latitudeErrFilter, longitudeErrFilter);
+ dList2.add(new Document("sxjgnlx.value", new Document("$regex", ".*3.*")));
+ dList2.add(new Document("newDevice", Boolean.TRUE));
+ Document newFilter = new Document("$and", dList2);
+
+ List<Document> lists = Arrays.asList(totalFilter, newFilter);
List<String> rList = lists.stream().map(filter -> {
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -2033,22 +2561,26 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- Date now = new Date();
- List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
- .select(CheckIndexFace::getDeviceDirectoryConsistent)
- .eq(params.getDataType().equals(1), CheckIndexFace::getExamineTag, CheckConstants.Examine_Tag_Province)
- .between(CheckIndexFace::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
- .list();
+// List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
+// .select(CheckIndexFace::getDeviceDirectoryConsistent)
+// .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)) {
+// BigDecimal sum = videoList.stream().map(CheckIndexFace::getDeviceDirectoryConsistent).reduce(BigDecimal.ZERO, BigDecimal::add);
+// BigDecimal count = BigDecimal.valueOf(videoList.size());
+// onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+// }
BigDecimal onlineRate = BigDecimal.ZERO;
- if (CollectionUtils.isNotEmpty(videoList)) {
- BigDecimal sum = videoList.stream().map(CheckIndexFace::getDeviceDirectoryConsistent).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal count = BigDecimal.valueOf(videoList.size());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+ if (!StringUtils.isEmpty(rList.get(0)) && !"0".equals(rList.get(0))) {
+ onlineRate = new BigDecimal(rList.get(0)).subtract(new BigDecimal(rList.get(1))).divide(new BigDecimal(rList.get(0)), 3,RoundingMode.DOWN).multiply(new BigDecimal("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);
}
@@ -2061,33 +2593,50 @@
@Override
public Result faceCollectionConsistency(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "crossName");
- Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, TIME_FIELD, likeFileds, null);
+ Query query = new Query();
+ Criteria and = new Criteria();
+ and.andOperator(andCriteria);
+ query = Query.query(and);
+ if (params.getOption() != null) {
+ if (params.getOption() == 1) {
+ query.addCriteria(Criteria.where("lalType").is(ApiConstants.HK_Info_LayType_Normal));
+ query.addCriteria(Criteria.where("gbCodeType").is(ApiConstants.HK_Info_GbCodeType_Normal));
+ } else if (params.getOption() == -1) {
+ Criteria lalType = Criteria.where("lalType").ne(ApiConstants.HK_Info_LayType_Normal);
+ Criteria gbCodeType = Criteria.where("gbCodeType").ne(ApiConstants.HK_Info_GbCodeType_Normal);
+ Criteria orOperator = new Criteria().orOperator(lalType, gbCodeType);
+ orOperator.andOperator(andCriteria);
+ query = Query.query(orOperator);
+ }
+ }
- long total = mongoTemplate.count(query, CrossDetailResult.class);
+ long total = mongoTemplate.count(query, MonitoringDetailResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
- List<CrossDetailResult> resultList = mongoTemplate.find(query, CrossDetailResult.class);
+ List<MonitoringDetailResult> resultList = mongoTemplate.find(query, MonitoringDetailResult.class);
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
- MongoCollection<Document> collection = database.getCollection("hk_cross_detail");
+ MongoCollection<Document> collection = database.getCollection("hk_monitoring_detail");
List<Document> dList1 = new ArrayList<>(2);
- dList1.add(new Document("lalType", new Document("$eq", 1)));
setTag(params, dList1);
List<Document> dList2 = new ArrayList<>(2);
- dList2.add(new Document("lalType", new Document("$eq", 2)));
+ dList2.add(new Document("lalType", new Document("$eq", 1)));
+ dList2.add(new Document("gbCodeType", new Document("$eq", 1)));
setTag(params, dList2);
List<Document> dList3 = new ArrayList<>(2);
- dList3.add(new Document("lalType", new Document("$eq", 3)));
setTag(params, dList3);
- List<Document> dList4 = new ArrayList<>(2);
- dList4.add(new Document("lalType", new Document("$eq", 4)));
- setTag(params, dList4);
- Document ipErrFilter = new Document("$and", dList1);
- Document macdzErrFilter = new Document("$and", dList2);
- Document latitudeErrFilter = new Document("$and", dList3);
- Document longitudeErrFilter = new Document("$and", dList4);
- List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, latitudeErrFilter, longitudeErrFilter);
+ List<Document> errorConditions = new ArrayList<>();
+ errorConditions.add(new Document("lalType", new Document("$ne", 1)));
+ errorConditions.add(new Document("gbCodeType", new Document("$ne", 1)));
+ Document errorDoc = new Document("$or", errorConditions);
+ dList3.add(errorDoc);
+ Document totalFilter = new Document("$and", dList1);
+ Document correctFilter = new Document("$and", dList2);
+ Document errorFilter = new Document("$and", dList3);
+
+ List<Document> lists = Arrays.asList(totalFilter, correctFilter, errorFilter);
List<String> rList = lists.stream().map(filter -> {
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -2106,17 +2655,21 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- Date now = new Date();
- List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
- .select(CheckIndexFace::getFaceInformationCollectionAccuracy)
- .eq(params.getDataType().equals(1), CheckIndexFace::getExamineTag, CheckConstants.Examine_Tag_Province)
- .between(CheckIndexFace::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
- .list();
+// List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
+// .select(CheckIndexFace::getFaceInformationCollectionAccuracy)
+// .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)) {
+// BigDecimal sum = videoList.stream().map(CheckIndexFace::getFaceInformationCollectionAccuracy).reduce(BigDecimal.ZERO, BigDecimal::add);
+// BigDecimal count = BigDecimal.valueOf(videoList.size());
+// onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+// }
BigDecimal onlineRate = BigDecimal.ZERO;
- if (CollectionUtils.isNotEmpty(videoList)) {
- BigDecimal sum = videoList.stream().map(CheckIndexFace::getFaceInformationCollectionAccuracy).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal count = BigDecimal.valueOf(videoList.size());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+ if (!StringUtils.isEmpty(rList.get(0)) && !"0".equals(rList.get(0))) {
+ onlineRate = new BigDecimal(rList.get(1)).divide(new BigDecimal(rList.get(0)), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
}
rList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
@@ -2135,67 +2688,67 @@
public Result faceImgQualification(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "cameraName");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
- long total = mongoTemplate.count(query, MonitoringDetailResult.class);
+ if (params.getOption() != null) {
+ if (params.getOption() == 1) {
+ query.addCriteria(Criteria.where("faceEligibility.unfaceEligCount").is(0));
+ } else if (params.getOption() == -1) {
+ query.addCriteria(Criteria.where("faceEligibility.unfaceEligCount").gt(0));
+ }
+ }
+ long total = mongoTemplate.count(query, FaceDeviceSamplingResult.class);
+ query.with(Sort.by(Sort.Order.desc("faceEligibility.unfaceEligCount")));
MongoUtil.setPage(query, params, TIME_FIELD);
- List<MonitoringDetailResult> resultList = mongoTemplate.find(query, MonitoringDetailResult.class);
+ List<FaceDeviceSamplingResult> resultList = mongoTemplate.find(query, FaceDeviceSamplingResult.class);
+ List<BigPicUsefulVO> voList = new ArrayList<>();
+ resultList.forEach(item -> {
+ BigPicUsefulVO picVO = FaceDeviceSamplingResult.getEligeVO(item);
+ voList.add(picVO);
+ });
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
- MongoCollection<Document> collection = database.getCollection("hk_monitoring_detail");
-
- List<Document> dList1 = new ArrayList<>(2);
- dList1.add(new Document("lalType", new Document("$eq", 1)));
- setTag(params, dList1);
- List<Document> dList2 = new ArrayList<>(2);
- dList2.add(new Document("lalType", new Document("$eq", 2)));
- setTag(params, dList2);
- List<Document> dList3 = new ArrayList<>(2);
- dList3.add(new Document("lalType", new Document("$eq", 3)));
- setTag(params, dList3);
- List<Document> dList4 = new ArrayList<>(2);
- dList4.add(new Document("lalType", new Document("$eq", 4)));
- setTag(params, dList4);
- Document ipErrFilter = new Document("$and", dList1);
- Document macdzErrFilter = new Document("$and", dList2);
- Document latitudeErrFilter = new Document("$and", dList3);
- Document longitudeErrFilter = new Document("$and", dList4);
-
- List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, latitudeErrFilter, longitudeErrFilter);
- List<String> rList = lists.stream().map(filter -> {
- // 鏋勫缓鑱氬悎绠¢亾
- List<Document> pipeline = Arrays.asList(
- new Document("$match", filter),
- // $group 鍘婚噸
- new Document("$group", new Document("_id", "$externalIndexCode")),
- new Document("$count", "uniqueDeviceIds")
- );
- // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
- AggregateIterable<Document> result = collection.aggregate(pipeline);
- Integer uniqueDeviceIdCount = 0;
- for (Document doc : result) {
- uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds");
- break; // 涓嶉渶瑕佺户缁亶鍘嗭紝鍥犱负 $count 鍙細浜х敓涓�涓粨鏋�
- }
- return uniqueDeviceIdCount + "";
- }).collect(Collectors.toList());
-
- Date now = new Date();
- List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
- .select(CheckIndexFace::getFacePictureQualification)
- .eq(params.getDataType().equals(1), CheckIndexFace::getExamineTag, CheckConstants.Examine_Tag_Province)
- .between(CheckIndexFace::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
- .list();
- BigDecimal onlineRate = BigDecimal.ZERO;
- if (CollectionUtils.isNotEmpty(videoList)) {
- BigDecimal sum = videoList.stream().map(CheckIndexFace::getFacePictureQualification).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal count = BigDecimal.valueOf(videoList.size());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+ MongoCollection<Document> collection = database.getCollection("hk_face_device_sampling");
+ // 鏋勫缓鍩烘湰鐨�$match鏉′欢
+ List<Document> matchConditions = new ArrayList<>();
+ setTag(params, matchConditions);
+ List<Document> pipeline = Arrays.asList(
+ new Document("$match", new Document("$and", matchConditions)),
+ new Document("$group", new Document("_id", "$mongoCreateTime")
+ .append("sampleCount", new Document("$sum", "$faceEligibility.sampleCount"))
+ .append("expCount", new Document("$sum", "$faceEligibility.unfaceEligCount"))
+ ));
+ // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
+ AggregateIterable<Document> result = collection.aggregate(pipeline);
+ int sampleCount = 0;
+ int expCount = 0;
+ for (Document doc : result) {
+ sampleCount = doc.getInteger("sampleCount");
+ expCount = doc.getInteger("expCount");
}
- rList.add(this.remove0(onlineRate));
+ List<String> countList = new ArrayList<>();
+
+// List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
+// .select(CheckIndexFace::getFacePictureQualification)
+// .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)) {
+// BigDecimal sum = videoList.stream().map(CheckIndexFace::getFacePictureQualification).reduce(BigDecimal.ZERO, BigDecimal::add);
+// BigDecimal count = BigDecimal.valueOf(videoList.size());
+// onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+// }
+ countList.add(sampleCount + "");
+ countList.add(expCount + "");
+ BigDecimal onlineRate = BigDecimal.ZERO;
+ if (sampleCount!=0) {
+ onlineRate = new BigDecimal(sampleCount-expCount).divide(new BigDecimal(sampleCount), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
+ }
+ countList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
- map.put("count", rList);
- map.put("list", resultList);
+ map.put("count", countList);
+ map.put("list", voList);
return Result.ok().data(map).total(total);
}
@@ -2209,29 +2762,47 @@
public Result faceCapturesImagesAccuracy(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+ if (params.getOption() != null) {
+ //褰撴棩鏃堕挓寮傚父
+ if (params.getOption() == 1) {
+ query.addCriteria(Criteria.where("majorDiffCount").gt(0));
+ } else if (params.getOption() == -1) {
+ //鍏ㄩ儴鏃堕挓寮傚父
+ query.addCriteria(Criteria.where("importantDiffCount").gt(0));
+ }
+ }
long total = mongoTemplate.count(query, FaceDeviceInspectionResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
List<FaceDeviceInspectionResult> resultList = mongoTemplate.find(query, FaceDeviceInspectionResult.class);
+ List<SnapClockVO> resultVos = new ArrayList<>();
+ resultList.forEach(item -> {
+ SnapClockVO vo = FaceDeviceInspectionResult.getVO(item);
+ resultVos.add(vo);
+ });
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
- MongoCollection<Document> collection = database.getCollection("hk_vehicle_device_inspection");
+ MongoCollection<Document> collection = database.getCollection("hk_face_device_inspection");
List<Document> dList1 = new ArrayList<>(2);
- dList1.add(new Document("snapResult", new Document("$eq", 1)));
+ dList1.add(new Document("snapClock.todayClockResult", new Document("$eq", 1)));
setTag(params, dList1);
List<Document> dList2 = new ArrayList<>(2);
- dList2.add(new Document("snapResult", new Document("$eq", 2)));
+ dList2.add(new Document("snapClock.todayClockResult", new Document("$eq", 0)));
setTag(params, dList2);
List<Document> dList3 = new ArrayList<>(2);
- dList3.add(new Document("snapResult", new Document("$eq", 4)));
+ dList3.add(new Document("snapClock.allClockResult", new Document("$eq", 1)));
setTag(params, dList3);
- Document ipErrFilter = new Document("$and", dList1);
- Document macdzErrFilter = new Document("$and", dList2);
- Document longitudeErrFilter = new Document("$and", dList3);
+ List<Document> dList4 = new ArrayList<>(2);
+ dList4.add(new Document("snapClock.allClockResult", new Document("$eq", 0)));
+ setTag(params, dList4);
+ Document todayFilter = new Document("$and", dList1);
+ Document todayErrFilter = new Document("$and", dList2);
+ Document allFilter = new Document("$and", dList3);
+ Document allErrFilter = new Document("$and", dList4);
- List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, longitudeErrFilter);
+
+ List<Document> lists = Arrays.asList(todayFilter, todayErrFilter, allFilter, allErrFilter);
List<String> rList = lists.stream().map(filter -> {
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -2250,22 +2821,29 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- Date now = new Date();
- List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
- .select(CheckIndexFace::getFaceTimingAccuracy)
- .eq(params.getDataType().equals(1), CheckIndexFace::getExamineTag, CheckConstants.Examine_Tag_Province)
- .between(CheckIndexFace::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
- .list();
+// List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
+// .select(CheckIndexFace::getFaceTimingAccuracy)
+// .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)) {
+// BigDecimal sum = videoList.stream().map(CheckIndexFace::getFaceTimingAccuracy).reduce(BigDecimal.ZERO, BigDecimal::add);
+// BigDecimal count = BigDecimal.valueOf(videoList.size());
+// onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+// }
BigDecimal onlineRate = BigDecimal.ZERO;
- if (CollectionUtils.isNotEmpty(videoList)) {
- BigDecimal sum = videoList.stream().map(CheckIndexFace::getFaceTimingAccuracy).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal count = BigDecimal.valueOf(videoList.size());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+ BigDecimal normal = new BigDecimal(rList.get(0));
+ BigDecimal abnormal = new BigDecimal(rList.get(1));
+ BigDecimal totalCount = normal.add(abnormal);
+ if (totalCount.compareTo(BigDecimal.ZERO)>0) {
+ onlineRate = normal.divide(totalCount, 3,RoundingMode.DOWN).multiply(new BigDecimal("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);
}
@@ -2279,29 +2857,34 @@
public Result faceTimelyUpload(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
- long total = mongoTemplate.count(query, FaceDeviceInspectionResult.class);
+ query.addCriteria(Criteria.where("dataType").is(ApiConstants.HK_DataType_FACE));
+ if (params.getOption() != null) {
+ //姝e父
+ if (params.getOption() == 1) {
+ query.addCriteria(Criteria.where("delayCount").is(0));
+ } else if (params.getOption() == -1) {
+ //寤惰繜
+ query.addCriteria(Criteria.where("delayCount").gt(0));
+ }
+ }
+ long total = mongoTemplate.count(query, SnapshotDelayMonitorResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
- List<FaceDeviceInspectionResult> resultList = mongoTemplate.find(query, FaceDeviceInspectionResult.class);
-
- // 缁熻鏁伴噺
+ List<SnapshotDelayMonitorResult> resultList = mongoTemplate.find(query, SnapshotDelayMonitorResult.class);
+ // 缁熻鏁�
MongoDatabase database = mongoTemplate.getDb();
- MongoCollection<Document> collection = database.getCollection("hk_vehicle_device_inspection");
+ MongoCollection<Document> collection = database.getCollection("hk_snapshop_delay_monitor");
List<Document> dList1 = new ArrayList<>(2);
- dList1.add(new Document("snapResult", new Document("$eq", 1)));
setTag(params, dList1);
+ dList1.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_FACE)));
+ Document allFilter = new Document("$and", dList1);
List<Document> dList2 = new ArrayList<>(2);
- dList2.add(new Document("snapResult", new Document("$eq", 2)));
+ dList2.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_FACE)));
+ dList2.add(new Document("delayCount", new Document("$gt", 0)));
setTag(params, dList2);
- List<Document> dList3 = new ArrayList<>(2);
- dList3.add(new Document("snapResult", new Document("$eq", 4)));
- setTag(params, dList3);
- Document ipErrFilter = new Document("$and", dList1);
- Document macdzErrFilter = new Document("$and", dList2);
- Document longitudeErrFilter = new Document("$and", dList3);
+ Document delayFilter = new Document("$and", dList2);
- List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, longitudeErrFilter);
+ List<Document> lists = Arrays.asList(allFilter, delayFilter);
List<String> rList = lists.stream().map(filter -> {
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -2320,17 +2903,22 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- Date now = new Date();
- List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
- .select(CheckIndexFace::getFaceUploadTimeliness)
- .eq(params.getDataType().equals(1), CheckIndexFace::getExamineTag, CheckConstants.Examine_Tag_Province)
- .between(CheckIndexFace::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
- .list();
+
+// List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
+// .select(CheckIndexFace::getFaceUploadTimeliness)
+// .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)) {
+// BigDecimal sum = videoList.stream().map(CheckIndexFace::getFaceUploadTimeliness).reduce(BigDecimal.ZERO, BigDecimal::add);
+// BigDecimal count = BigDecimal.valueOf(videoList.size());
+// onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+// }
BigDecimal onlineRate = BigDecimal.ZERO;
- if (CollectionUtils.isNotEmpty(videoList)) {
- BigDecimal sum = videoList.stream().map(CheckIndexFace::getFaceUploadTimeliness).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal count = BigDecimal.valueOf(videoList.size());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+ if (!StringUtils.isEmpty(rList.get(0)) && !"0".equals(rList.get(0))) {
+ onlineRate = new BigDecimal(rList.get(0)).subtract(new BigDecimal(rList.get(1))).divide(new BigDecimal(rList.get(0)), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
}
rList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
@@ -2349,28 +2937,67 @@
public Result faceAvailabilityOfLargeImg(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
-
+ if (params.getOption() != null) {
+ if (params.getOption() == 1) {
+ query.addCriteria(Criteria.where("bigUseful.bigPicExpCount").is(0));
+ } else if (params.getOption() == -1) {
+ query.addCriteria(Criteria.where("bigUseful.bigPicExpCount").gt(0));
+ }
+ }
long total = mongoTemplate.count(query, FaceDeviceSamplingResult.class);
MongoUtil.setPage(query, params, TIME_FIELD);
+ query.with(Sort.by(Sort.Order.desc("bigUseful.bigPicExpCount")));
List<FaceDeviceSamplingResult> resultList = mongoTemplate.find(query, FaceDeviceSamplingResult.class);
+ List<BigPicUsefulVO> voList = new ArrayList<>();
+ resultList.forEach(item -> {
+ BigPicUsefulVO picVO = FaceDeviceSamplingResult.getPicVO(item);
+ voList.add(picVO);
+ });
+ // 缁熻鏁�
+ MongoDatabase database = mongoTemplate.getDb();
+ MongoCollection<Document> collection = database.getCollection("hk_face_device_sampling");
+ // 鏋勫缓鍩烘湰鐨�$match鏉′欢
+ List<Document> matchConditions = new ArrayList<>();
+ setTag(params, matchConditions);
+ List<Document> pipeline = Arrays.asList(
+ new Document("$match", new Document("$and", matchConditions)),
+ new Document("$group", new Document("_id", "$mongoCreateTime")
+ .append("sampleCount", new Document("$sum", "$bigUseful.sampleCount"))
+ .append("expCount", new Document("$sum", "$bigUseful.bigPicExpCount"))
+ ));
+ // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
+ AggregateIterable<Document> result = collection.aggregate(pipeline);
+ int sampleCount = 0;
+ int expCount = 0;
+ for (Document doc : result) {
+ sampleCount = doc.getInteger("sampleCount");
+ expCount = doc.getInteger("expCount");
+ }
+ List<String> countList = new ArrayList<>();
// 缁熻鏁�
- Date now = new Date();
- List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
- .select(CheckIndexFace::getFacePictureAvailability)
- .eq(params.getDataType().equals(1), CheckIndexFace::getExamineTag, CheckConstants.Examine_Tag_Province)
- .between(CheckIndexFace::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now))
- .list();
+// List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
+// .select(CheckIndexFace::getFacePictureAvailability)
+// .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)) {
+// BigDecimal sum = videoList.stream().map(CheckIndexFace::getFacePictureAvailability).reduce(BigDecimal.ZERO, BigDecimal::add);
+// BigDecimal count = BigDecimal.valueOf(videoList.size());
+// onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+// }
+ countList.add(sampleCount + "");
+ countList.add(expCount + "");
BigDecimal onlineRate = BigDecimal.ZERO;
- if (CollectionUtils.isNotEmpty(videoList)) {
- BigDecimal sum = videoList.stream().map(CheckIndexFace::getFacePictureAvailability).reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal count = BigDecimal.valueOf(videoList.size());
- onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+ if (sampleCount!=0) {
+ onlineRate = new BigDecimal(sampleCount-expCount).divide(new BigDecimal(sampleCount), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
}
-
+ countList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(this.remove0(onlineRate)));
- map.put("list", resultList);
+ map.put("count", countList);
+ map.put("list", voList);
return Result.ok().data(map).total(total);
}
@@ -2417,8 +3044,8 @@
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());
+ 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