From 3b0516a2959e25576e4f3fda697a3b025d06c8c9 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期二, 24 六月 2025 14:09:07 +0800
Subject: [PATCH] 每日录像可用指标添加日志,修改大屏为查看当前月平均
---
ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java | 2302 +++++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 1,784 insertions(+), 518 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 dbf36b9..331ec29 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java
@@ -1,7 +1,7 @@
package com.ycl.platform.service.impl;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
@@ -9,7 +9,7 @@
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.form.UpdateDynamicValueForm;
import com.ycl.platform.domain.query.DataCenterQuery;
import com.ycl.platform.domain.result.HK.*;
import com.ycl.platform.domain.result.SYS.TMonitorResult;
@@ -17,22 +17,28 @@
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.domain.vo.DynamicColumnVO;
+import com.ycl.platform.mapper.DynamicColumnMapper;
import com.ycl.platform.mapper.ImageResourceSecurityDetailMapper;
+import com.ycl.platform.mapper.TMonitorMapper;
import com.ycl.platform.mapper.YwPointMapper;
import com.ycl.platform.service.*;
import com.ycl.system.Result;
-import com.ycl.system.page.PageUtil;
+import com.ycl.system.entity.SysDept;
+import com.ycl.system.model.LoginUser;
+import com.ycl.system.service.ISysConfigService;
+import com.ycl.system.service.ISysDeptService;
import com.ycl.utils.DateUtils;
import com.ycl.utils.MongoUtil;
+import com.ycl.utils.SecurityUtils;
+import com.ycl.utils.StringUtils;
import com.ycl.utils.bean.BeanUtils;
import com.ycl.utils.poi.ExcelUtil;
-import constant.ApiConstants;
-import constant.CheckConstants;
+import constant.*;
import enumeration.general.AreaDeptEnum;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.bson.Document;
import org.springframework.data.domain.Sort;
@@ -40,9 +46,9 @@
import org.springframework.data.mongodb.core.aggregation.*;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
-import org.springframework.data.mongodb.core.query.TextCriteria;
import org.springframework.stereotype.Service;
+import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
@@ -59,32 +65,171 @@
*/
@Service
@RequiredArgsConstructor
+@Slf4j
public class DataCenterServiceImpl implements DataCenterService {
private final MongoTemplate mongoTemplate;
private final ImageResourceSecurityDetailMapper securityDetailMapper;
private final YwPointMapper pointMapper;
- private final ICheckIndexVideoService checkIndexVideoService;
private final ICheckIndexCarService checkIndexCarService;
private final ICheckIndexFaceService checkIndexFaceService;
+ private final DynamicColumnMapper dynamicColumnMapper;
+
private final static String TIME_FIELD = "mongoCreateTime";
private static DecimalFormat DF = new DecimalFormat("#.####");
- /**
- * 瑙嗛锛氱偣浣嶅湪绾跨巼
- *
- * @param params
- * @return
- */
+
+
+ public Map<String,List<DynamicColumnVO>> getDynamicByConditions(DataCenterQuery params,List<DynamicColumnVO> list){
+ //TODO 璇ヤ綅缃病鏈夎繃婊よ处鍙风殑閮ㄩ棬瀵瑰簲鐨勮澶囦俊鎭紝鑰屾槸鏇村叿鏉′欢鏌ヨ鐨勫叏閮�
+ //鑾峰緱鍒板搴攊d锛屼笖鍖呭惈浼犲叆瀛楃涓� 鍔ㄦ�佸垪闆嗗悎
+ List<DynamicColumnVO> likeFieldDynamicColumnVOList = list.stream()
+ .filter(dynamicColumnVO ->
+ dynamicColumnVO.getLabelId().equals(params.getDyId()) &&
+ dynamicColumnVO.getColumnValue().contains(params.getDyValue())
+ ).collect(Collectors.toList());
+ //鑾峰緱婊¤冻鏉′欢鐨刬d闆嗗悎
+ List<String> ids = likeFieldDynamicColumnVOList.stream().map(DynamicColumnVO::getRefStringId).toList();
+ Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = list.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId));
+ Set<String> removeSet = new HashSet<>(ids);
+ //绉婚櫎鎺変笉绗﹀悎鏉′欢鐨刱ey
+ groupByRefStringIdMap.keySet().retainAll(removeSet);
+
+ return groupByRefStringIdMap;
+ }
+ //褰曞儚鍙敤
@Override
- public Result videoPointOnlineRate(DataCenterQuery params) {
+ public void recordingAvailabilityExport(HttpServletResponse response,DataCenterQuery params) throws IOException {
+
+ List<String> likeFileds = Arrays.asList("deviceId", "deviceName");
+ Query query = MongoUtil.getQuery(params, "createTime", likeFileds, null);
+ //涓嬫媺妗嗗綍鍍忔儏鍐垫煡璇㈡潯浠�
+ if (params.getOption() != null) {
+ query.addCriteria(Criteria.where("recordStatus").is(params.getOption()));
+ }
+ SysDept sysDept = getSysDeptByLoginUser();
+ if (sysDept !=null){
+ AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromDept(Math.toIntExact(sysDept.getDeptId()));
+ if (areaDeptEnum != null){
+ query.addCriteria(Criteria.where("no").regex("^" +areaDeptEnum.getCode()));
+ }
+ }
+ MongoUtil.setNoPage(query, params, TIME_FIELD);
+ 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());
+ });
+ //鑾峰緱鍔ㄦ�佸垪鏁版嵁
+ List<DynamicColumnVO> dynamicColumnVOList = dynamicColumnMapper.getDynamicColumnByTableName(TableNameConstants.COLUMN_NAME_VIDEO);
+
+ //鍒ゆ柇鏄惁鏈夋煡璇㈡潯浠�
+ boolean conditions = false;
+ Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = new HashMap<>();
+ if (params.getDyId() != null && StringUtils.isNotEmpty(params.getDyValue())){
+ conditions = true;
+ //鑾峰緱鍔ㄦ�佸垪闆嗗悎涓寘鍚簡鐨勫瓧绗︿覆鍊肩殑闆嗗悎 鍖哄垎澶у皬鍐�
+
+ groupByRefStringIdMap = getDynamicByConditions(params,dynamicColumnVOList);
+ }else{
+ groupByRefStringIdMap = dynamicColumnVOList.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId));
+ }
+ //鍥哄畾琛ㄥご
+ LinkedHashSet<String> headers = new LinkedHashSet<>();
+ headers.add(RecordingAvailabilityHeaders.arealayername);
+ headers.add(RecordingAvailabilityHeaders.arealayerno);
+ headers.add(RecordingAvailabilityHeaders.createTime);
+ headers.add(RecordingAvailabilityHeaders.deviceId);
+ headers.add(RecordingAvailabilityHeaders.missDuration);
+ headers.add(RecordingAvailabilityHeaders.platId);
+ headers.add(RecordingAvailabilityHeaders.recordDuration);
+ headers.add(RecordingAvailabilityHeaders.recordStatusText);
+ headers.add(RecordingAvailabilityHeaders.statTime);
+
+ List<String> headersList = new LinkedList<>();
+ List<String> dynamicsHeaders = dynamicColumnMapper.getHeader(TableNameConstants.COLUMN_NAME_VIDEO);
+
+ //娣诲姞鍔ㄦ�佽〃澶�
+ if (!org.springframework.util.CollectionUtils.isEmpty(dynamicsHeaders)) {
+ //浣跨敤閾捐〃淇濊瘉鍚庣画琛ュ厖鏁版嵁鏃惰幏鍙栨暟鎹『搴忎竴鑷�
+ headersList.addAll(dynamicsHeaders);
+ headers.addAll(headersList);
+ }
+// SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+ //鏌ヨ鍒版湁鍔ㄦ�佸垪鏌ヨ鏉′欢
+ //鑾峰緱瀵瑰簲鍔ㄦ�佸垪涓璻ef鐨勫璞d 涓� 鏌ヨ缁撴灉id杩囨护
+ if (conditions){
+ Map<String, List<DynamicColumnVO>> finalGroupByRefStringIdMap = groupByRefStringIdMap;
+ resultList = resultList.stream()
+ .filter(obj -> finalGroupByRefStringIdMap.containsKey(obj.getId()))
+ .collect(Collectors.toList());
+ }
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ List<List<Object>> data = new ArrayList<>();
+ for (RecordMetaDSumResult result : resultList){
+ List<Object> row = new ArrayList<>();
+ row.add(result.getArealayername());
+ row.add(result.getArealayerno());
+ row.add(dateFormat.format(result.getCreateTime()));
+ row.add(result.getDeviceId());
+ row.add(result.getMissDuration());
+ row.add(result.getPlatId());
+ row.add(result.getRecordDuration());
+ row.add(result.getRecordStatusText());
+ row.add(dateFormat.format(result.getCreateTime()));
+ //娣诲姞鍔ㄦ�佸垪鏁版嵁
+ for (String header : headersList){
+ boolean flag = false;
+ List<DynamicColumnVO> columnVOS = groupByRefStringIdMap.get(result.getId());
+ if (!CollectionUtils.isEmpty(columnVOS)) {
+ for (DynamicColumnVO columnVO : columnVOS) {
+ if (header.equals(columnVO.getLabelValue())) {
+ row.add(columnVO.getColumnValue());
+ flag = true;
+ }
+ }
+ }
+ //娌℃壘鍒扮敤绌轰覆鍗犱綅
+ if (!flag) row.add("");
+ }
+ data.add(row);
+ }
+ List<List<String>> headList = new ArrayList<>();
+ for (String header : headers) {
+ headList.add(Collections.singletonList(header));
+ }
+ EasyExcel.write(response.getOutputStream())
+ .head(headList) // 璁剧疆琛ㄥご
+ .sheet("褰曞儚鍙敤鐜�") // 璁剧疆sheet鍚嶇О
+ .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+ .doWrite(data); // 鍐欏叆鏁版嵁
+ }
+
+ //鐐逛綅鍦ㄧ嚎
+ @Override
+ public void pointOnlineFaceExport(HttpServletResponse response, DataCenterQuery params) throws IOException {
+
List<String> likeFileds = Arrays.asList("name", "no", "ip");
- Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
- //鏌ヨ棰戣澶�
- query.addCriteria(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Video + ".*"));
+ Query query = null;
+ SysDept sysDept = getSysDeptByLoginUser();
+ if (sysDept !=null){
+ AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromDept(Math.toIntExact(sysDept.getDeptId()));
+ if (areaDeptEnum != null){
+ query = MongoUtil.getQueryDataCenter(areaDeptEnum.getCode(),params,TIME_FIELD,likeFileds,null,"no");
+ }
+ }else {
+ query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ }
+ //鏌ヤ汉鑴歌澶�
+ query.addCriteria(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Face + ".*"));
//涓嬫媺妗嗗湪绾挎儏鍐垫煡璇㈡潯浠�
if (params.getOption() != null) {
query.addCriteria(Criteria.where("online").is(params.getOption()));
@@ -95,9 +240,8 @@
);
// 閫氳繃pingOnline瀛楁鎺掑簭锛屼负false鐨勬帓鍦ㄥ墠闈�
query.with(sort);
+ MongoUtil.setNoPage(query, params, TIME_FIELD);
//鍒嗛〉鏁伴噺
- long total = mongoTemplate.count(query, TMonitorResult.class);
- MongoUtil.setPage(query, params, TIME_FIELD);
List<TMonitorResult> resultList = mongoTemplate.find(query, TMonitorResult.class);
resultList.forEach(item -> {
if (item.getPingOnline() == null) {
@@ -115,7 +259,7 @@
item.setOnlineStr("鏈煡");
}
List<String> offLineTime = item.getOffLineTimeStr();
- if(!CollectionUtils.isEmpty(offLineTime)) {
+ if (!CollectionUtils.isEmpty(offLineTime)) {
//鍚庣画鍙互鏀规垚閰嶇疆鐨勭绾挎鏁�(鎻愬彇鍓峮娆★紝n涓洪厤缃殑绂荤嚎娆℃暟)
if (offLineTime.size() > 1) {
offLineTime = offLineTime.subList(0, 2);
@@ -123,6 +267,500 @@
item.setOffLineTimeStr(offLineTime);
}
});
+
+
+
+ List<DynamicColumnVO> dynamicColumnVOList = dynamicColumnMapper.getDynamicColumnByTableName(TableNameConstants.COLUMN_NAME_FACE_POINT);
+
+
+ //鍒ゆ柇鏄惁鏈夋煡璇㈡潯浠�
+ boolean conditions = false;
+ Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = new HashMap<>();
+ if (params.getDyId() != null && StringUtils.isNotEmpty(params.getDyValue())){
+ conditions = true;
+ //鑾峰緱鍔ㄦ�佸垪闆嗗悎涓寘鍚簡鐨勫瓧绗︿覆鍊肩殑闆嗗悎 鍖哄垎澶у皬鍐�
+ groupByRefStringIdMap = getDynamicByConditions(params,dynamicColumnVOList);
+ }else{
+ groupByRefStringIdMap = dynamicColumnVOList.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId));
+ }
+
+ //鍥哄畾琛ㄥご
+ LinkedHashSet<String> headers = new LinkedHashSet<>();
+ headers.add(PointOnlineHeaders.no);
+ headers.add(PointOnlineHeaders.name);
+ headers.add(PointOnlineHeaders.ip);
+ headers.add(PointOnlineHeaders.onlineStr);
+ headers.add(PointOnlineHeaders.pingOnlineStr);
+ headers.add(PointOnlineHeaders.checkCount);
+ headers.add(PointOnlineHeaders.offLineCount);
+ headers.add(PointOnlineHeaders.offLineTimeStr);
+ headers.add(PointOnlineHeaders.mongoCreateTime);
+
+ List<String> headersList = new LinkedList<>();
+ List<String> dynamicsHeaders = dynamicColumnMapper.getHeader(TableNameConstants.COLUMN_NAME_FACE_POINT);
+
+ //娣诲姞鍔ㄦ�佽〃澶�
+ if (!org.springframework.util.CollectionUtils.isEmpty(dynamicsHeaders)) {
+ //浣跨敤閾捐〃淇濊瘉鍚庣画琛ュ厖鏁版嵁鏃惰幏鍙栨暟鎹『搴忎竴鑷�
+ headersList.addAll(dynamicsHeaders);
+ headers.addAll(headersList);
+ }
+
+ if (conditions){
+ Map<String, List<DynamicColumnVO>> finalGroupByRefStringIdMap = groupByRefStringIdMap;
+ resultList = resultList.stream()
+ .filter(obj -> finalGroupByRefStringIdMap.containsKey(obj.getNo()))
+ .collect(Collectors.toList());
+ }
+
+ List<List<Object>> data = new ArrayList<>();
+ for (TMonitorResult result : resultList){
+ List<Object> row = new ArrayList<>();
+ row.add(result.getNo());
+ row.add(result.getName());
+ row.add(result.getIp());
+ row.add(result.getOnlineStr());
+ row.add(result.getPingOnlineStr());
+ row.add(result.getCheckCount());
+ row.add(result.getOffLineCount());
+ if (CollectionUtils.isEmpty(result.getOffLineTimeStr())){
+ row.add(null);
+ }else {
+ row.add(result.getOffLineTimeStr().toString());
+ }
+ row.add(result.getMongoCreateTime());
+ //娣诲姞鍔ㄦ�佸垪鏁版嵁
+ for (String header : headersList){
+ boolean flag = false;
+ List<DynamicColumnVO> columnVOS = groupByRefStringIdMap.get(result.getNo());
+ if (!CollectionUtils.isEmpty(columnVOS)) {
+ for (DynamicColumnVO columnVO : columnVOS) {
+ if (header.equals(columnVO.getLabelValue())) {
+ row.add(columnVO.getColumnValue());
+ flag = true;
+ }
+ }
+ }
+ //娌℃壘鍒扮敤绌轰覆鍗犱綅
+ if (!flag) row.add("");
+ }
+ data.add(row);
+ }
+
+ List<List<String>> headList = new ArrayList<>();
+ for (String header : headers) {
+ headList.add(Collections.singletonList(header));
+ }
+
+ EasyExcel.write(response.getOutputStream())
+ .head(headList) // 璁剧疆琛ㄥご
+ .sheet("浜鸿劯鐐逛綅鍦ㄧ嚎鐜�") // 璁剧疆sheet鍚嶇О
+ .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+ .doWrite(data); // 鍐欏叆鏁版嵁
+
+ } private final ISysDeptService deptService;
+
+ public SysDept getSysDeptByLoginUser(){
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ SysDept sysDept = null;
+ Long deptId =null;
+ if (loginUser.getDeptId() != null){
+ deptId = loginUser.getDeptId();
+ sysDept = deptService.selectDeptById(deptId);
+ }
+ return sysDept;
+ }
+ //瑙嗛鍗曚綅鍦ㄧ嚎
+ @Override
+ public void pointOnlineVideoExport(HttpServletResponse response, DataCenterQuery params) throws IOException {
+ List<String> likeFileds = Arrays.asList("name", "no", "ip");
+ Query query = null;
+ SysDept sysDept = getSysDeptByLoginUser();
+ if (sysDept !=null){
+ AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromDept(Math.toIntExact(sysDept.getDeptId()));
+ if (areaDeptEnum != null){
+ query = MongoUtil.getQueryDataCenter(areaDeptEnum.getCode(),params,TIME_FIELD,likeFileds,null,"no");
+ }
+ }else {
+ query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ }
+
+ //鏌ヨ棰戣澶�
+ query.addCriteria(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Video + ".*"));
+ //涓嬫媺妗嗗湪绾挎儏鍐垫煡璇㈡潯浠�
+ if (params.getOption() != null) {
+ query.addCriteria(Criteria.where("online").is(params.getOption()));
+ }
+ Sort sort = Sort.by(
+ Sort.Order.asc("pingOnline"), // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭
+ Sort.Order.desc("offLineCount") // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭
+ );
+ // 閫氳繃pingOnline瀛楁鎺掑簭锛屼负false鐨勬帓鍦ㄥ墠闈�
+ query.with(sort);
+ MongoUtil.setNoPage(query, params, TIME_FIELD);
+ List<TMonitorResult> resultList = mongoTemplate.find(query, TMonitorResult.class);
+ resultList.forEach(item -> {
+ if (item.getPingOnline() == null) {
+ item.setPingOnlineStr("鏈煡");
+ } else if (item.getPingOnline()) {
+ item.setPingOnlineStr("鍦ㄧ嚎");
+ } else if (!item.getPingOnline()) {
+ item.setPingOnlineStr("绂荤嚎");
+ }
+ if (1 == item.getOnline()) {
+ item.setOnlineStr("鍦ㄧ嚎");
+ } else if (-1 == item.getOnline()) {
+ item.setOnlineStr("绂荤嚎");
+ } else {
+ item.setOnlineStr("鏈煡");
+ }
+ List<String> offLineTime = item.getOffLineTimeStr();
+ if (!CollectionUtils.isEmpty(offLineTime)) {
+ if (offLineTime.size() > 1) {
+ offLineTime = offLineTime.subList(offLineTime.size() - 2, offLineTime.size());
+ }
+ item.setOffLineTimeStr(offLineTime);
+ }
+ });
+ List<DynamicColumnVO> dynamicColumnVOList = dynamicColumnMapper.getDynamicColumnByTableName(TableNameConstants.COLUMN_NAME_VIDEO_POINT);
+ //鍒ゆ柇鏄惁鏈夋煡璇㈡潯浠�
+ boolean conditions = false;
+ Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = new HashMap<>();
+ if (params.getDyId() != null && StringUtils.isNotEmpty(params.getDyValue())){
+ conditions = true;
+ //鑾峰緱鍔ㄦ�佸垪闆嗗悎涓寘鍚簡鐨勫瓧绗︿覆鍊肩殑闆嗗悎 鍖哄垎澶у皬鍐�
+ groupByRefStringIdMap = getDynamicByConditions(params,dynamicColumnVOList);
+ }else{
+ groupByRefStringIdMap = dynamicColumnVOList.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId));
+ }
+ //鍥哄畾琛ㄥご
+ LinkedHashSet<String> headers = new LinkedHashSet<>();
+ headers.add(PointOnlineHeaders.no);
+ headers.add(PointOnlineHeaders.name);
+ headers.add(PointOnlineHeaders.ip);
+ headers.add(PointOnlineHeaders.onlineStr);
+ headers.add(PointOnlineHeaders.pingOnlineStr);
+ headers.add(PointOnlineHeaders.checkCount);
+ headers.add(PointOnlineHeaders.offLineCount);
+ headers.add(PointOnlineHeaders.offLineTimeStr);
+ headers.add(PointOnlineHeaders.mongoCreateTime);
+
+ List<String> headersList = new LinkedList<>();
+ List<String> dynamicsHeaders = dynamicColumnMapper.getHeader(TableNameConstants.COLUMN_NAME_VIDEO_POINT);
+
+ //娣诲姞鍔ㄦ�佽〃澶�
+ if (!org.springframework.util.CollectionUtils.isEmpty(dynamicsHeaders)) {
+ //浣跨敤閾捐〃淇濊瘉鍚庣画琛ュ厖鏁版嵁鏃惰幏鍙栨暟鎹『搴忎竴鑷�
+ headersList.addAll(dynamicsHeaders);
+ headers.addAll(headersList);
+ }
+
+
+ if (conditions){
+ Map<String, List<DynamicColumnVO>> finalGroupByRefStringIdMap = groupByRefStringIdMap;
+ resultList = resultList.stream()
+ .filter(obj -> finalGroupByRefStringIdMap.containsKey(obj.getNo()))
+ .collect(Collectors.toList());
+ }
+
+ List<List<Object>> data = new ArrayList<>();
+ for (TMonitorResult result : resultList){
+ List<Object> row = new ArrayList<>();
+ row.add(result.getNo());
+ row.add(result.getName());
+ row.add(result.getIp());
+ row.add(result.getOnlineStr());
+ row.add(result.getPingOnlineStr());
+ row.add(result.getCheckCount());
+ row.add(result.getOffLineCount());
+ if (CollectionUtils.isEmpty(result.getOffLineTimeStr())){
+ row.add(null);
+ }else {
+ row.add(result.getOffLineTimeStr().toString());
+ }
+ row.add(result.getMongoCreateTime());
+ //娣诲姞鍔ㄦ�佸垪鏁版嵁
+ for (String header : headersList){
+ boolean flag = false;
+ List<DynamicColumnVO> columnVOS = groupByRefStringIdMap.get(result.getNo());
+ if (!CollectionUtils.isEmpty(columnVOS)) {
+ for (DynamicColumnVO columnVO : columnVOS) {
+ if (header.equals(columnVO.getLabelValue())) {
+ row.add(columnVO.getColumnValue());
+ flag = true;
+ }
+ }
+ }
+ //娌℃壘鍒扮敤绌轰覆鍗犱綅
+ if (!flag) row.add("");
+ }
+ data.add(row);
+ }
+
+ List<List<String>> headList = new ArrayList<>();
+ for (String header : headers) {
+ headList.add(Collections.singletonList(header));
+ }
+
+ EasyExcel.write(response.getOutputStream())
+ .head(headList) // 璁剧疆琛ㄥご
+ .sheet("瑙嗛鐐逛綅鍦ㄧ嚎鐜�") // 璁剧疆sheet鍚嶇О
+ .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+ .doWrite(data); // 鍐欏叆鏁版嵁
+
+
+ }
+ //杞﹁締鐐逛綅鍦ㄧ嚎
+ @Override
+ public void pointOnlineCarExport(HttpServletResponse response, DataCenterQuery params) throws IOException {
+ List<String> likeFileds = Arrays.asList("name", "no", "ip");
+ Query query = null;
+ SysDept sysDept = getSysDeptByLoginUser();
+ if (sysDept !=null){
+ AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromDept(Math.toIntExact(sysDept.getDeptId()));
+ if (areaDeptEnum != null){
+ query = MongoUtil.getQueryDataCenter(areaDeptEnum.getCode(),params,TIME_FIELD,likeFileds,null,"no");
+ }
+ }else {
+ query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ }
+ //鏌ヨ溅杈嗚澶�
+ query.addCriteria(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Car + ".*"));
+ //涓嬫媺妗嗗湪绾挎儏鍐垫煡璇㈡潯浠�
+ if (params.getOption() != null) {
+ query.addCriteria(Criteria.where("online").is(params.getOption()));
+ }
+ Sort sort = Sort.by(
+ Sort.Order.asc("pingOnline"), // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭
+ Sort.Order.desc("offLineCount") // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭
+ );
+ // 閫氳繃pingOnline瀛楁鎺掑簭锛屼负false鐨勬帓鍦ㄥ墠闈�
+ query.with(sort);
+ //鍒嗛〉鏁伴噺
+ //绯荤粺ping鐨勭粨鏋�
+ List<TMonitorResult> resultList = mongoTemplate.find(query, TMonitorResult.class);
+ resultList.forEach(item -> {
+ if (item.getPingOnline() == null) {
+ item.setPingOnlineStr("鏈煡");
+ } else if (item.getPingOnline()) {
+ item.setPingOnlineStr("鍦ㄧ嚎");
+ } else if (!item.getPingOnline()) {
+ item.setPingOnlineStr("绂荤嚎");
+ }
+ if (1 == item.getOnline()) {
+ item.setOnlineStr("鍦ㄧ嚎");
+ } else if (-1 == item.getOnline()) {
+ item.setOnlineStr("绂荤嚎");
+ } else {
+ item.setOnlineStr("鏈煡");
+ }
+ List<String> offLineTime = item.getOffLineTimeStr();
+ if (!CollectionUtils.isEmpty(offLineTime)) {
+ //鍚庣画鍙互鏀规垚閰嶇疆鐨勭绾挎鏁�(鎻愬彇鍓峮娆★紝n涓洪厤缃殑绂荤嚎娆℃暟)
+ if (offLineTime.size() > 1) {
+ offLineTime = offLineTime.subList(0, 2);
+ }
+ item.setOffLineTimeStr(offLineTime);
+ }
+ });
+ List<DynamicColumnVO> dynamicColumnVOList = dynamicColumnMapper.getDynamicColumnByTableName(TableNameConstants.COLUMN_NAME_CAR_POINT);
+ //鍒ゆ柇鏄惁鏈夋煡璇㈡潯浠�
+ boolean conditions = false;
+ Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = new HashMap<>();
+ if (params.getDyId() != null && StringUtils.isNotEmpty(params.getDyValue())){
+ conditions = true;
+ //鑾峰緱鍔ㄦ�佸垪闆嗗悎涓寘鍚簡鐨勫瓧绗︿覆鍊肩殑闆嗗悎 鍖哄垎澶у皬鍐�
+ groupByRefStringIdMap = getDynamicByConditions(params,dynamicColumnVOList);
+ }else{
+ groupByRefStringIdMap = dynamicColumnVOList.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId));
+ }
+ //鍥哄畾琛ㄥご
+ LinkedHashSet<String> headers = new LinkedHashSet<>();
+ headers.add(PointOnlineHeaders.no);
+ headers.add(PointOnlineHeaders.name);
+ headers.add(PointOnlineHeaders.ip);
+ headers.add(PointOnlineHeaders.onlineStr);
+ headers.add(PointOnlineHeaders.pingOnlineStr);
+ headers.add(PointOnlineHeaders.checkCount);
+ headers.add(PointOnlineHeaders.offLineCount);
+ headers.add(PointOnlineHeaders.offLineTimeStr);
+ headers.add(PointOnlineHeaders.mongoCreateTime);
+
+ List<String> headersList = new LinkedList<>();
+ List<String> dynamicsHeaders = dynamicColumnMapper.getHeader(TableNameConstants.COLUMN_NAME_CAR_POINT);
+
+ //娣诲姞鍔ㄦ�佽〃澶�
+ if (!org.springframework.util.CollectionUtils.isEmpty(dynamicsHeaders)) {
+ //浣跨敤閾捐〃淇濊瘉鍚庣画琛ュ厖鏁版嵁鏃惰幏鍙栨暟鎹『搴忎竴鑷�
+ headersList.addAll(dynamicsHeaders);
+ headers.addAll(headersList);
+ }
+
+
+ if (conditions){
+ Map<String, List<DynamicColumnVO>> finalGroupByRefStringIdMap = groupByRefStringIdMap;
+ resultList = resultList.stream()
+ .filter(obj -> finalGroupByRefStringIdMap.containsKey(obj.getNo()))
+ .collect(Collectors.toList());
+ }
+
+ List<List<Object>> data = new ArrayList<>();
+ for (TMonitorResult result : resultList){
+ List<Object> row = new ArrayList<>();
+ row.add(result.getNo());
+ row.add(result.getName());
+ row.add(result.getIp());
+ row.add(result.getOnlineStr());
+ row.add(result.getPingOnlineStr());
+ row.add(result.getCheckCount());
+ row.add(result.getOffLineCount());
+ if (CollectionUtils.isEmpty(result.getOffLineTimeStr())){
+ row.add(null);
+ }else {
+ row.add(result.getOffLineTimeStr().toString());
+ }
+ row.add(result.getMongoCreateTime());
+ //娣诲姞鍔ㄦ�佸垪鏁版嵁
+ for (String header : headersList){
+ boolean flag = false;
+ List<DynamicColumnVO> columnVOS = groupByRefStringIdMap.get(result.getNo());
+ if (!CollectionUtils.isEmpty(columnVOS)) {
+ for (DynamicColumnVO columnVO : columnVOS) {
+ if (header.equals(columnVO.getLabelValue())) {
+ row.add(columnVO.getColumnValue());
+ flag = true;
+ }
+ }
+ }
+ //娌℃壘鍒扮敤绌轰覆鍗犱綅
+ if (!flag) row.add("");
+ }
+ data.add(row);
+ }
+
+ List<List<String>> headList = new ArrayList<>();
+ for (String header : headers) {
+ headList.add(Collections.singletonList(header));
+ }
+
+ EasyExcel.write(response.getOutputStream())
+ .head(headList) // 璁剧疆琛ㄥご
+ .sheet("杞﹁締鐐逛綅鍦ㄧ嚎鐜�") // 璁剧疆sheet鍚嶇О
+ .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+ .doWrite(data); // 鍐欏叆鏁版嵁
+ }
+
+ @Override
+ public Result updateDynamicValue(UpdateDynamicValueForm form) {
+ List<DynamicColumnVO> list = form.getDynamicColumnVOList();
+
+ if (CollectionUtils.isEmpty(list) || StringUtils.isEmpty(form.getId())) {
+ throw new RuntimeException("淇敼鑷畾涔夊垪鐨勪紶鍏ュ�间负null鎴栦紶鍏d涓簄ull");
+ }
+ List<DynamicColumnValue> updateList = new ArrayList<>();
+ List<DynamicColumnValue> addList = new ArrayList<>();
+
+ for (DynamicColumnVO dynamicColumnVO : list){
+ if(dynamicColumnVO.getColumnValue() == null){
+ continue;
+ }
+ DynamicColumnValue dynamicColumnValue = new DynamicColumnValue();
+ dynamicColumnValue.setColumnValue(dynamicColumnVO.getColumnValue());
+ dynamicColumnValue.setDynamicColumnId(dynamicColumnVO.getId());
+ dynamicColumnValue.setRefStringId(form.getId());
+ dynamicColumnValue.setRefId(0);
+ if(dynamicColumnVO.getValueId() == null){
+ addList.add(dynamicColumnValue);
+ }else {
+ dynamicColumnValue.setId(dynamicColumnVO.getValueId());
+ updateList.add(dynamicColumnValue);
+ }
+ }
+ log.error("addList:{}",addList);
+ log.error("updateList:{}",updateList);
+ if (CollectionUtils.isNotEmpty(addList)){
+ dynamicColumnMapper.saveBatch(addList);
+ }
+ if (CollectionUtils.isNotEmpty(updateList)) {
+ dynamicColumnMapper.updateBatch(updateList);
+ }
+ return Result.ok("淇敼鎴愬姛");
+
+
+
+ }
+
+
+
+ /**
+ * 瑙嗛锛氱偣浣嶅湪绾跨巼
+ *
+ * @param params
+ * @return
+ */
+ @Override
+ public Result videoPointOnlineRate(DataCenterQuery params) {
+ List<String> likeFileds = Arrays.asList("name", "no", "ip");
+ //姝ゅ鏂板浜嗘牴鎹敤鎴锋潈闄愭煡璇㈢殑鎯呭喌
+ Query query = null;
+ SysDept sysDept = getSysDeptByLoginUser();
+ AreaDeptEnum areaDeptEnum = null;
+ if (sysDept !=null){
+ areaDeptEnum = AreaDeptEnum.fromDept(Math.toIntExact(sysDept.getDeptId()));
+ if (areaDeptEnum != null){
+ query = MongoUtil.getQueryDataCenter(areaDeptEnum.getCode(),params,TIME_FIELD,likeFileds,null,"no");
+
+ }else{
+ query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ }
+ }else {
+ query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ }
+ //鏌ヨ棰戣澶�
+ query.addCriteria(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Video + ".*"));
+ //涓嬫媺妗嗗湪绾挎儏鍐垫煡璇㈡潯浠�
+ if (params.getOption() != null) {
+ query.addCriteria(Criteria.where("online").is(params.getOption()));
+ }
+ Sort sort = Sort.by(
+ Sort.Order.asc("pingOnline"), // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭
+ Sort.Order.desc("offLineCount") // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭
+ );
+ // 閫氳繃pingOnline瀛楁鎺掑簭锛屼负false鐨勬帓鍦ㄥ墠闈�
+ query.with(sort);
+ //鍒嗛〉鏁伴噺
+ long total = mongoTemplate.count(query, TMonitorResult.class);
+ MongoUtil.setPage(query, params, TIME_FIELD);
+ List<TMonitorResult> resultList = mongoTemplate.find(query, TMonitorResult.class);
+
+ resultList.forEach(item -> {
+ if (item.getPingOnline() == null) {
+ item.setPingOnlineStr("鏈煡");
+ } else if (item.getPingOnline()) {
+ item.setPingOnlineStr("鍦ㄧ嚎");
+ } else if (!item.getPingOnline()) {
+ item.setPingOnlineStr("绂荤嚎");
+ }
+ if (1 == item.getOnline()) {
+ item.setOnlineStr("鍦ㄧ嚎");
+ } else if (-1 == item.getOnline()) {
+ item.setOnlineStr("绂荤嚎");
+ } else {
+ item.setOnlineStr("鏈煡");
+ }
+ List<String> offLineTime = item.getOffLineTimeStr();
+ if (!CollectionUtils.isEmpty(offLineTime)) {
+ if (offLineTime.size() > 1) {
+ offLineTime = offLineTime.subList(offLineTime.size() - 2, offLineTime.size());
+ }
+ item.setOffLineTimeStr(offLineTime);
+ }
+ //娣诲姞鍔ㄦ�佹暟鎹�
+ List<DynamicColumnVO> list = dynamicColumnMapper.getDynamicColumnByTable(TableNameConstants.COLUMN_NAME_VIDEO_POINT,item.getNo());
+ item.setDynamicColumnList(list);
+ });
+
+
params.setDeptTag(-1);
params.setDeviceType(1);
@@ -136,6 +774,10 @@
// 娣诲姞鍥哄畾鏉′欢
criteriaList.add(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Video + ".*"));
criteriaList.add(Criteria.where("mongoCreateTime").gte(params.getStartTime()).lte(params.getEndTime()));
+ //姝ゅ鏂板浜嗘牴鎹敤鎴锋潈闄愭煡璇㈢殑鎯呭喌
+ if (areaDeptEnum != null){
+ criteriaList.add(Criteria.where("no").regex("^" +areaDeptEnum.getCode()));
+ }
// 鏍规嵁dataType鍔ㄦ�佹坊鍔犳潯浠�
if (params.getDataType() == 1) {
criteriaList.add(Criteria.where("provinceTag").is(Boolean.TRUE));
@@ -160,20 +802,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);
@@ -189,7 +835,21 @@
@Override
public Result deptVideoPointOnlineRate(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("name", "no", "ip");
- Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ //姝ゅ鏂板浜嗘牴鎹敤鎴锋潈闄愭煡璇㈢殑鎯呭喌
+ Query query = null;
+ SysDept sysDept = getSysDeptByLoginUser();
+ AreaDeptEnum areaDeptEnum = null;
+ if (sysDept !=null){
+ areaDeptEnum = AreaDeptEnum.fromDept(Math.toIntExact(sysDept.getDeptId()));
+ if (areaDeptEnum != null){
+ query = MongoUtil.getQueryDataCenter(areaDeptEnum.getCode(),params,TIME_FIELD,likeFileds,null,"no");
+
+ }else{
+ query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ }
+ }else {
+ query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ }
//鏌ヨ棰戣澶�
query.addCriteria(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Video + ".*"));
query.addCriteria(Criteria.where("deptTag").is(Boolean.TRUE));
@@ -227,6 +887,10 @@
int unknownCount = 0;
//鏋勫缓鏉′欢
List<Criteria> criteriaList = new ArrayList<>();
+ //姝ゅ鏂板浜嗘牴鎹敤鎴锋潈闄愭煡璇㈢殑鎯呭喌
+ if (areaDeptEnum != null){
+ criteriaList.add(Criteria.where("no").regex("^" +areaDeptEnum.getCode()));
+ }
// 娣诲姞鍥哄畾鏉′欢
criteriaList.add(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Video + ".*"));
criteriaList.add(Criteria.where("mongoCreateTime").gte(params.getStartTime()).lte(params.getEndTime()));
@@ -255,21 +919,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);
@@ -285,7 +952,21 @@
@Override
public Result videoImportantPointOnlineRate(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("name", "no", "ip");
- Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ //姝ゅ鏂板浜嗘牴鎹敤鎴锋潈闄愭煡璇㈢殑鎯呭喌
+ Query query = null;
+ SysDept sysDept = getSysDeptByLoginUser();
+ AreaDeptEnum areaDeptEnum = null;
+ if (sysDept !=null){
+ areaDeptEnum = AreaDeptEnum.fromDept(Math.toIntExact(sysDept.getDeptId()));
+ if (areaDeptEnum != null){
+ query = MongoUtil.getQueryDataCenter(areaDeptEnum.getCode(),params,TIME_FIELD,likeFileds,null,"no");
+
+ }else{
+ query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ }
+ }else {
+ query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ }
//鏌ヨ棰戣澶�
query.addCriteria(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Video + ".*"));
query.addCriteria(Criteria.where("importantTag").is(Boolean.TRUE));
@@ -326,9 +1007,14 @@
int unknownCount = 0;
//鏋勫缓鏉′欢
List<Criteria> criteriaList = new ArrayList<>();
+ //姝ゅ鏂板浜嗘牴鎹敤鎴锋潈闄愭煡璇㈢殑鎯呭喌
+ if (areaDeptEnum != null){
+ criteriaList.add(Criteria.where("no").regex("^" +areaDeptEnum.getCode()));
+ }
// 娣诲姞鍥哄畾鏉′欢
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));
@@ -353,18 +1039,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);
@@ -380,7 +1070,21 @@
@Override
public Result videoImportantPointImageOnlineRate(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("name", "no", "ip");
- Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ //姝ゅ鏂板浜嗘牴鎹敤鎴锋潈闄愭煡璇㈢殑鎯呭喌
+ Query query = null;
+ SysDept sysDept = getSysDeptByLoginUser();
+ AreaDeptEnum areaDeptEnum = null;
+ if (sysDept !=null){
+ areaDeptEnum = AreaDeptEnum.fromDept(Math.toIntExact(sysDept.getDeptId()));
+ if (areaDeptEnum != null){
+ query = MongoUtil.getQueryDataCenter(areaDeptEnum.getCode(),params,TIME_FIELD,likeFileds,null,"no");
+
+ }else{
+ query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ }
+ }else {
+ query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ }
//鏌ヨ棰戣澶�
query.addCriteria(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Video + ".*"));
query.addCriteria(Criteria.where("importantCommandImageTag").is(Boolean.TRUE));
@@ -422,9 +1126,14 @@
int unknownCount = 0;
//鏋勫缓鏉′欢
List<Criteria> criteriaList = new ArrayList<>();
+ //姝ゅ鏂板浜嗘牴鎹敤鎴锋潈闄愭煡璇㈢殑鎯呭喌
+ if (areaDeptEnum != null){
+ criteriaList.add(Criteria.where("no").regex("^" +areaDeptEnum.getCode()));
+ }
// 娣诲姞鍥哄畾鏉′欢
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));
@@ -449,19 +1158,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);
@@ -477,13 +1189,25 @@
@Override
public Result videoOneMachineDocumentRegister(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("ip.showValue", "name.showValue", "serialNumber.showValue");
- List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, TIME_FIELD, likeFileds, null);
+ SysDept sysDept = getSysDeptByLoginUser();
+ List<Criteria> andCriteria;
+ AreaDeptEnum areaDeptEnum = null;
+ if (sysDept != null) {
+ areaDeptEnum = AreaDeptEnum.fromDept(Math.toIntExact(sysDept.getDeptId()));
+ if (areaDeptEnum != null) {
+ andCriteria = MongoUtil.getAndCriteriaDateCenter(areaDeptEnum.getCode(),params, TIME_FIELD, likeFileds, null);
+ }else {
+ andCriteria = MongoUtil.getAndCriteria(params, TIME_FIELD, likeFileds, null);
+ }
+ }else {
+ 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));
}
}
@@ -500,15 +1224,26 @@
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("uy_monitor_qualify");
+ Document areDocument = null;
+ if (areaDeptEnum != null) {
+ String areaCodePrefix = areaDeptEnum.getCode();
+ areDocument = new Document("deviceNo", new Document("$regex", "^" + areaCodePrefix));
+ }
//鎬绘暟
List<Document> dList1 = new ArrayList<>(2);
+ if(areDocument != null){
+ dList1.add(areDocument);
+ }
setTag(params, dList1);
- Document totalFilter = new Document("$and",dList1);
+ Document totalFilter = new Document("$and", dList1);
//鏂拌澶囨暟
List<Document> dList2 = new ArrayList<>(2);
+ if(areDocument != null){
+ dList1.add(areDocument);
+ }
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 -> {
@@ -529,19 +1264,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);
@@ -557,13 +1296,26 @@
@Override
public Result videoOneMachineDocumentQualified(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("ip.showValue", "name.showValue", "serialNumber.showValue");
- List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, TIME_FIELD, likeFileds, null);
+ SysDept sysDept = getSysDeptByLoginUser();
+ List<Criteria> andCriteria;
+ AreaDeptEnum areaDeptEnum = null;
+ if (sysDept != null) {
+ areaDeptEnum = AreaDeptEnum.fromDept(Math.toIntExact(sysDept.getDeptId()));
+ if (areaDeptEnum != null) {
+ andCriteria = MongoUtil.getAndCriteriaDateCenter(areaDeptEnum.getCode(),params, TIME_FIELD, likeFileds, null);
+ }else {
+ andCriteria = MongoUtil.getAndCriteria(params, TIME_FIELD, likeFileds, null);
+ }
+ }else {
+ 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){
+ 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));
@@ -579,7 +1331,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);
@@ -609,29 +1361,45 @@
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("uy_monitor_qualify");
+ Document areDocument = null;
+ if (areaDeptEnum != null) {
+ String areaCodePrefix = areaDeptEnum.getCode();
+ areDocument = new Document("deviceNo", new Document("$regex", "^" + areaCodePrefix));
+ }
//鎬绘暟
List<Document> dList1 = new ArrayList<>(2);
+ if (areDocument != null){
+ dList1.add(areDocument);
+ }
setTag(params, dList1);
- Document totalFilter = new Document("$and",dList1);
+ Document totalFilter = new Document("$and", dList1);
+ //list1
+
//鍚堟牸鏁�
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);
+ if (areDocument != null){
+ dList2.add(areDocument);
+ }
+ dList2.add(new Document("serialNumber.error", Boolean.FALSE));
+ dList2.add(new Document("name.error", Boolean.FALSE));
+ dList2.add(new Document("civilCode.error", Boolean.FALSE));
+ dList2.add(new Document("integrated_device.error", Boolean.FALSE));
+ dList2.add(new Document("jkdwlx.error", Boolean.FALSE));
+ dList2.add(new Document("latitude.error", Boolean.FALSE));
+ dList2.add(new Document("longitude.error", Boolean.FALSE));
+ dList2.add(new Document("macdz.error", Boolean.FALSE));
+ dList2.add(new Document("name.error", Boolean.FALSE));
+ dList2.add(new Document("sbzt.error", Boolean.FALSE));
+ dList2.add(new Document("sxjcjqy.error", Boolean.FALSE));
+ dList2.add(new Document("sxjgnlx.error", Boolean.FALSE));
+ setTag(params, dList2);
+ Document qualifyFilter = new Document("$and", dList2);
//涓嶅悎鏍兼暟
- List<Document> dList3 = new ArrayList<>(2);
- setTag(params,dList3);
+ List<Document> dList3 = new ArrayList<>(2);
+ if (areDocument != null){
+ dList3.add(areDocument);
+ }
+ 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)));
@@ -667,19 +1435,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);
@@ -692,6 +1463,7 @@
* 妗f鐣欏瓨鎬婚噺锛歮ongo瀛樼殑鎵�鏈夊幓閲嶅悗鐨勬。妗�
* 褰撴棩妗f锛氬綋鏃ョ殑妗f
* 妗f鑰冩牳姣� = 褰撴棩妗f/妗f鐣欏瓨鎬婚噺
+ *
* @param params
* @return1
*/
@@ -717,14 +1489,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 -> {
@@ -744,25 +1516,45 @@
}
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);
map.put("list", resultVOS);
return Result.ok().data(map).total(total);
}
+
+ private final ISysConfigService configService;
+
+ public double getSySMinTime(){
+ //鑾峰彇绯荤粺鍙傛暟
+ String dictLabel = configService.selectConfigByKey("recording_min_time");
+ double recordingMinTime;
+ try {
+ recordingMinTime = Double.parseDouble(dictLabel) / 60; // 濡傛灉 dictLabel 鏄互灏忔椂涓哄崟浣嶏紝鍒欐棤闇�闄や互 60
+ } catch (Exception e) {
+ log.error("閰嶇疆鐨勫垹闄ゆ椂闂磋寖鍥存牸寮忎笉姝g‘: {}", dictLabel, e);
+ return 12.0; // 榛樿 12 灏忔椂锛堜互灏忔椂涓哄崟浣嶏級
+ }
+
+ return recordingMinTime;
+ }
+ private final TMonitorMapper tMonitorMapper;
/**
* 瑙嗛锛氬綍鍍忓彲鐢ㄧ巼
@@ -772,8 +1564,25 @@
*/
@Override
public Result videoAvailabilityRate(DataCenterQuery params) {
+ List<String> noString = tMonitorMapper.getIdListVideo();
List<String> likeFileds = Arrays.asList("deviceId", "deviceName");
- Query query = MongoUtil.getQuery(params, "createTime", likeFileds, null);
+ SysDept sysDept = getSysDeptByLoginUser();
+ AreaDeptEnum areaDeptEnum = null;
+ Query query = null;
+ if (sysDept !=null){
+ areaDeptEnum = AreaDeptEnum.fromDept(Math.toIntExact(sysDept.getDeptId()));
+ if (areaDeptEnum != null){
+ query = MongoUtil.getQueryDataCenter(areaDeptEnum.getCode(),params,"createTime",likeFileds,null,"no");
+ }else{
+ query = MongoUtil.getQuery(params, "createTime", likeFileds, null);
+ }
+ }else {
+ query = MongoUtil.getQuery(params, "createTime", likeFileds, null);
+ }
+
+ if (CollectionUtils.isNotEmpty(noString)) { // 闃叉绌洪泦鍚堝紓甯�
+ query.addCriteria(Criteria.where("no").in(noString));
+ }
//涓嬫媺妗嗗綍鍍忔儏鍐垫煡璇㈡潯浠�
if (params.getOption() != null) {
query.addCriteria(Criteria.where("recordStatus").is(params.getOption()));
@@ -781,19 +1590,38 @@
long total = mongoTemplate.count(query, RecordMetaDSumResult.class);
MongoUtil.setPage(query, params, "createTime");
List<RecordMetaDSumResult> resultList = mongoTemplate.find(query, RecordMetaDSumResult.class);
+ //鏌ヨ鍔ㄦ�佸垪鏁版嵁
+ //鏌ヨ鍔ㄦ�佸垪鏁版嵁鏇村叿id鏌ヨ
+// List<DynamicColumnVO> dynamicColumnNames = dynamicColumnMapper.getDynamicColumnByTableName("uy_record_meta_d_sum");
//缈昏瘧琛屾斂鍖哄煙
- resultList.forEach(item->{
+ resultList.forEach(item -> {
String areaCode = item.getArealayername().substring(0, 6);
- AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromCode(areaCode);
- if(areaDeptEnum!=null) item.setArealayername(areaDeptEnum.getName());
+ AreaDeptEnum areaDeptEnumInfo = AreaDeptEnum.fromCode(areaCode);
+ if (areaDeptEnumInfo != null) item.setArealayername(areaDeptEnumInfo.getName());
+
+ List<DynamicColumnVO> list = dynamicColumnMapper.getDynamicColumnByTable(TableNameConstants.COLUMN_NAME_VIDEO,item.getId());
+ item.setDynamicColumnList(list);
+
});
// 缁熻鏁伴噺
+
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("uy_record_meta_d_sum");
List<Integer> status = Arrays.asList(1, 0, -1);
+ AreaDeptEnum finalAreaDeptEnum = areaDeptEnum;
List<String> resultCount = status.stream().map(item -> {
List<Document> dList = new ArrayList<>(2);
+
dList.add(new Document("recordStatus", new Document("$eq", item)));
+ if(finalAreaDeptEnum != null){
+ dList.add(new Document("$and", Arrays.asList(
+ new Document("no", new Document("$in", noString)),
+ new Document("no", new Document("$regex", "^" + finalAreaDeptEnum.getCode()))
+ )));
+ }else {
+ dList.add(new Document("no", new Document("$in", noString)));
+ }
+
setTag(params, dList);
Document filter = new Document("$and", dList);
// 鏋勫缓鑱氬悎绠¢亾
@@ -812,25 +1640,59 @@
}
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));
+
+ //璁$畻褰曞儚鍙敤鐜�
+ MongoDatabase databaes2 = mongoTemplate.getDb();
+ MongoCollection<Document> collection2 = databaes2.getCollection("uy_record_meta_d_sum");
+
+ double finalRecordingMinTime = getSySMinTime();
+
+ List<Document> documentList = new ArrayList<>(2);
+ if(finalAreaDeptEnum != null){
+ documentList.add(new Document("$and", Arrays.asList(
+ new Document("no", new Document("$in", noString)),
+ new Document("no", new Document("$regex", "^" + finalAreaDeptEnum.getCode()))
+ )));
+ }else {
+ documentList.add(new Document("no", new Document("$in", noString)));
}
- //鍔犱竴涓�绘暟
+// documentList.add(new Document("$and", Arrays.asList(
+// new Document("no", new Document("$in", noString)),
+// new Document("no", new Document("$regex", "^" + finalAreaDeptEnum.getCode()))
+// )));
+ setTag(params, documentList);
+ Document recording = new Document("missDuration",new Document("$lte", finalRecordingMinTime));
+ documentList.add(recording);
+
+ Document filter = new Document("$and", documentList);
+ // 鏋勫缓鑱氬悎绠¢亾
+ List<Document> pipeline = Arrays.asList(
+ new Document("$match", filter),
+ // $group 鍘婚噸
+ new Document("$group", new Document("_id", "$deviceId")),
+ new Document("$count", "uniqueDeviceIds")
+ );
+ AggregateIterable<Document> result = collection2.aggregate(pipeline);
+
+
+ Integer uniqueDeviceIdCount = 0;
+ for (Document doc : result) {
+ uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds");
+ break; // 涓嶉渶瑕佺户缁亶鍘嗭紝鍥犱负 $count 鍙細浜х敓涓�涓粨鏋�
+ }
+ log.error("褰曞儚鍙敤鐜囨墦鍗帮細{}",uniqueDeviceIdCount);
int totalCount = 0;
for (String s : resultCount) {
totalCount += Integer.parseInt(s);
}
resultCount.add(0, totalCount + "");
+ BigDecimal onlineRate = BigDecimal.ZERO;
+// 1锛氬畬鏁� 0锛氶棿姝� -1锛氬紓甯� |
+ if (!StringUtils.isEmpty(resultCount.get(0)) && !"0".equals(resultCount.get(0))) {
+ //resultCount.get(0)鏄�绘暟 uniqueDeviceIdCount鏄洿鍏风郴缁熷弬鏁版煡璇㈠埌mongodb涓ぇ浜庣瓑浜� recordDuration瀛楁鐨勬�绘暟
+ onlineRate = new BigDecimal(uniqueDeviceIdCount).divide(new BigDecimal(resultCount.get(0)), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
+ }
resultCount.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
@@ -848,7 +1710,19 @@
@Override
public Result deptVideoAvailabilityRate(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("deviceId", "deviceName");
- Query query = MongoUtil.getQuery(params, "createTime", likeFileds, 1);
+ SysDept sysDept = getSysDeptByLoginUser();
+ AreaDeptEnum areaDeptEnum = null;
+ Query query = null;
+ if (sysDept !=null){
+ areaDeptEnum = AreaDeptEnum.fromDept(Math.toIntExact(sysDept.getDeptId()));
+ if (areaDeptEnum != null){
+ query = MongoUtil.getQueryDataCenter(areaDeptEnum.getCode(),params,"createTime",likeFileds,null,"no");
+ }else{
+ query = MongoUtil.getQuery(params, "createTime", likeFileds, null);
+ }
+ }else {
+ query = MongoUtil.getQuery(params, "createTime", likeFileds, null);
+ }
//涓嬫媺妗嗗綍鍍忔儏鍐垫煡璇㈡潯浠�
if (params.getOption() != null) {
query.addCriteria(Criteria.where("recordStatus").is(params.getOption()));
@@ -857,20 +1731,27 @@
MongoUtil.setPage(query, params, "createTime");
List<RecordMetaDSumResult> resultList = mongoTemplate.find(query, RecordMetaDSumResult.class);
//缈昏瘧琛屾斂鍖哄煙
- resultList.forEach(item->{
+ resultList.forEach(item -> {
String areaCode = item.getArealayername().substring(0, 6);
- AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromCode(areaCode);
- if(areaDeptEnum!=null) item.setArealayername(areaDeptEnum.getName());
+ AreaDeptEnum areaDeptEnumInfo = AreaDeptEnum.fromCode(areaCode);
+ if (areaDeptEnumInfo != null) item.setArealayername(areaDeptEnumInfo.getName());
});
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("uy_record_meta_d_sum");
List<Integer> status = Arrays.asList(1, 0, -1);
+ AreaDeptEnum finalAreaDeptEnum = areaDeptEnum;
List<String> resultCount = status.stream().map(item -> {
List<Document> dList = new ArrayList<>(4);
dList.add(new Document("deptTag", new Document("$eq", Boolean.TRUE)));
dList.add(new Document("recordStatus", new Document("$eq", item)));
setTag(params, dList);
+ if (finalAreaDeptEnum != null){
+ dList.add(new Document("$and", Arrays.asList(
+// new Document("no", new Document("$in", noString)),
+ new Document("no", new Document("$regex", "^" + finalAreaDeptEnum.getCode()))
+ )));
+ }
Document filter = new Document("$and", dList);
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -889,24 +1770,63 @@
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));
+
+ //璁$畻閮ㄧ骇褰曞儚鍙敤鐜�
+ MongoDatabase database2 = mongoTemplate.getDb();
+ MongoCollection<Document> collection2 = database2.getCollection("uy_record_meta_d_sum");
+ double finalRecordingMinTime = getSySMinTime();
+
+ List<Document> documentList = new ArrayList<>(4);
+ documentList.add(new Document("deptTag", new Document("$eq", Boolean.TRUE)));
+ setTag(params, documentList);
+ Document recording = new Document("missDuration",new Document("$lte", finalRecordingMinTime));
+ documentList.add(recording);
+ if (finalAreaDeptEnum != null){
+ documentList.add(new Document("$and", Arrays.asList(
+// new Document("no", new Document("$in", noString)),
+ new Document("no", new Document("$regex", "^" + finalAreaDeptEnum.getCode()))
+ )));
}
+ Document filter = new Document("$and", documentList);
+ // 鏋勫缓鑱氬悎绠¢亾
+ List<Document> pipeline = Arrays.asList(
+ new Document("$match", filter),
+ // $group 鍘婚噸
+ new Document("$group", new Document("_id", "$deviceId")),
+ new Document("$count", "uniqueDeviceIds")
+ );
+ AggregateIterable<Document> result = collection2.aggregate(pipeline);
+ Integer uniqueDeviceIdCount = 0;
+ for (Document doc : result) {
+ uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds");
+ break; // 涓嶉渶瑕佺户缁亶鍘嗭紝鍥犱负 $count 鍙細浜х敓涓�涓粨鏋�
+ }
+ log.error("閮ㄧ骇褰曞儚鍙敤鐜噞}:",uniqueDeviceIdCount);
+
+
+
+// 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(uniqueDeviceIdCount).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);
@@ -923,7 +1843,20 @@
@Override
public Result videoImportantPointAvailabilityRate(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("deviceId", "deviceName");
- Query query = MongoUtil.getQuery(params, "createTime", likeFileds, 3);
+ SysDept sysDept = getSysDeptByLoginUser();
+ AreaDeptEnum areaDeptEnum = null;
+ Query query = null;
+ if (sysDept !=null){
+ areaDeptEnum = AreaDeptEnum.fromDept(Math.toIntExact(sysDept.getDeptId()));
+ if (areaDeptEnum != null){
+ query = MongoUtil.getQueryDataCenter(areaDeptEnum.getCode(),params,"createTime",likeFileds,null,"no");
+ }else{
+ query = MongoUtil.getQuery(params, "createTime", likeFileds, null);
+ }
+ }else {
+ query = MongoUtil.getQuery(params, "createTime", likeFileds, null);
+ }
+ query.addCriteria(Criteria.where("importantTag").is(Boolean.TRUE));
//涓嬫媺妗嗗綍鍍忔儏鍐垫煡璇㈡潯浠�
if (params.getOption() != null) {
query.addCriteria(Criteria.where("recordStatus").is(params.getOption()));
@@ -932,20 +1865,27 @@
MongoUtil.setPage(query, params, "createTime");
List<RecordMetaDSumResult> resultList = mongoTemplate.find(query, RecordMetaDSumResult.class);
//缈昏瘧琛屾斂鍖哄煙
- resultList.forEach(item->{
+ resultList.forEach(item -> {
String areaCode = item.getArealayername().substring(0, 6);
- AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromCode(areaCode);
- if(areaDeptEnum!=null) item.setArealayername(areaDeptEnum.getName());
+ AreaDeptEnum areaDeptEnumInfo = AreaDeptEnum.fromCode(areaCode);
+ if (areaDeptEnumInfo != null) item.setArealayername(areaDeptEnumInfo.getName());
});
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("uy_record_meta_d_sum");
List<Integer> status = Arrays.asList(1, 0, -1);
+ AreaDeptEnum finalAreaDeptEnum = areaDeptEnum;
List<String> resultCount = status.stream().map(item -> {
List<Document> dList = new ArrayList<>(4);
dList.add(new Document("importantTag", new Document("$eq", Boolean.TRUE)));
dList.add(new Document("recordStatus", new Document("$eq", item)));
setTag(params, dList);
+ if (finalAreaDeptEnum != null){
+ dList.add(new Document("$and", Arrays.asList(
+// new Document("no", new Document("$in", noString)),
+ new Document("no", new Document("$regex", "^" + finalAreaDeptEnum.getCode()))
+ )));
+ }
Document filter = new Document("$and", dList);
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -964,24 +1904,60 @@
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));
+ //璁$畻閲嶇偣鐐逛綅褰曞儚鍙敤鐜�
+ MongoDatabase database2 = mongoTemplate.getDb();
+ MongoCollection<Document> collection2 = database2.getCollection("uy_record_meta_d_sum");
+ double finalRecordingMinTime = getSySMinTime();
+
+ List<Document> documentList = new ArrayList<>(4);
+ documentList.add(new Document("importantTag", new Document("$eq", Boolean.TRUE)));
+ setTag(params, documentList);
+ Document recording = new Document("missDuration",new Document("$lte", finalRecordingMinTime));
+ documentList.add(recording);
+ if (finalAreaDeptEnum != null){
+ documentList.add(new Document("$and", Arrays.asList(
+// new Document("no", new Document("$in", noString)),
+ new Document("no", new Document("$regex", "^" + finalAreaDeptEnum.getCode()))
+ )));
}
+ Document filter = new Document("$and", documentList);
+ // 鏋勫缓鑱氬悎绠¢亾
+ List<Document> pipeline = Arrays.asList(
+ new Document("$match", filter),
+ // $group 鍘婚噸
+ new Document("$group", new Document("_id", "$deviceId")),
+ new Document("$count", "uniqueDeviceIds")
+ );
+ AggregateIterable<Document> result = collection2.aggregate(pipeline);
+ Integer uniqueDeviceIdCount = 0;
+ for (Document doc : result) {
+ uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds");
+ break; // 涓嶉渶瑕佺户缁亶鍘嗭紝鍥犱负 $count 鍙細浜х敓涓�涓粨鏋�
+ }
+ log.error("閲嶇偣鐐逛綅褰曞儚鍙敤鐜噞}:",uniqueDeviceIdCount);
+
+// 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(uniqueDeviceIdCount).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);
@@ -1002,12 +1978,32 @@
long total = mongoTemplate.count(query, RecordMetaDSumResult.class);
List<RecordMetaDSumResult> resultList = mongoTemplate.find(query, RecordMetaDSumResult.class);
+ Query nonNetworkQuery;
+ Query networkQuery;
+ Query videoQuery;
+ Query carQuery;
+ Query faceQuery;
+// if (areaDeptEnum == null){
+ nonNetworkQuery = new Query().addCriteria(Criteria.where("LWSX").is("0"));
+ networkQuery = new Query().addCriteria(Criteria.where("LWSX").is("1"));
+ videoQuery = new Query().addCriteria(Criteria.where("SXJGNLX").regex(".*1.*"));
+ carQuery = new Query().addCriteria(Criteria.where("SXJGNLX").regex(".*2.*"));
+ faceQuery = new Query().addCriteria(Criteria.where("SXJGNLX").regex(".*3.*"));
+// }
+// else {
+// nonNetworkQuery = new Query().addCriteria(Criteria.where("LWSX").is("0")).addCriteria(Criteria.where("no").regex("^" + Pattern.quote(areaDeptEnum.getCode())));
+// networkQuery = new Query().addCriteria(Criteria.where("LWSX").is("1")).addCriteria(Criteria.where("no").regex("^" + Pattern.quote(areaDeptEnum.getCode())));
+// videoQuery = new Query().addCriteria(Criteria.where("SXJGNLX").regex(".*1.*")).addCriteria(Criteria.where("no").regex("^" + Pattern.quote(areaDeptEnum.getCode())));
+// carQuery = new Query().addCriteria(Criteria.where("SXJGNLX").regex(".*2.*")).addCriteria(Criteria.where("no").regex("^" + Pattern.quote(areaDeptEnum.getCode())));
+// faceQuery = new Query().addCriteria(Criteria.where("SXJGNLX").regex(".*3.*")).addCriteria(Criteria.where("no").regex("^" + Pattern.quote(areaDeptEnum.getCode())));
+// }
+
// 缁熻鏁�
- long nonNetwork = mongoTemplate.count(new Query().addCriteria(Criteria.where("LWSX").is("0")), RecordMetaDSumResult.class);
- long network = mongoTemplate.count(new Query().addCriteria(Criteria.where("LWSX").is("1")), RecordMetaDSumResult.class);
- long video = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex(".*1.*")), RecordMetaDSumResult.class);
- long car = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex(".*2.*")), RecordMetaDSumResult.class);
- long face = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex(".*3.*")), RecordMetaDSumResult.class);
+ long nonNetwork = mongoTemplate.count(nonNetworkQuery, RecordMetaDSumResult.class);
+ long network = mongoTemplate.count(networkQuery, RecordMetaDSumResult.class);
+ long video = mongoTemplate.count(videoQuery, RecordMetaDSumResult.class);
+ long car = mongoTemplate.count(carQuery, RecordMetaDSumResult.class);
+ long face = mongoTemplate.count(faceQuery, RecordMetaDSumResult.class);
HashMap<String, Object> map = new HashMap<>();
map.put("count", Arrays.asList(nonNetwork, network, video, car, face));
map.put("list", resultList);
@@ -1023,14 +2019,28 @@
@Override
public Result videoImportantPointLabelingAccuracy(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("deviceNo", "osdName");
- List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, "checkTime", likeFileds, null);
+ SysDept sysDept = getSysDeptByLoginUser();
+ List<Criteria> andCriteria;
+ AreaDeptEnum areaDeptEnum = null;
+ if (sysDept != null) {
+ areaDeptEnum = AreaDeptEnum.fromDept(Math.toIntExact(sysDept.getDeptId()));
+ if (areaDeptEnum != null) {
+ andCriteria = MongoUtil.getAndCriteriaDateCenter(areaDeptEnum.getCode(),params, "checkTime", likeFileds, null);
+ }else {
+ andCriteria = MongoUtil.getAndCriteria(params, "checkTime", likeFileds, null);
+ }
+ }else {
+ andCriteria = MongoUtil.getAndCriteria(params, "checkTime", likeFileds, null);
+ }
+
Query query = new Query();
Criteria and = new Criteria();
and.andOperator(andCriteria);
query = Query.query(and);
- //涓嬫媺妗嗘爣娉ㄦ纭煡璇㈡潯浠�
+ query.addCriteria(Criteria.where("importantTag").is(Boolean.TRUE));
+ // 涓嬫媺妗嗘爣娉ㄦ纭煡璇㈡潯浠�
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));
@@ -1039,7 +2049,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);
@@ -1049,7 +2059,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);
@@ -1069,13 +2079,26 @@
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("osd_check_result");
- //鎬绘暟
+ // 纭繚鍦ㄧ粺璁℃煡璇腑涔熷簲鐢ㄧ浉鍚岀殑杩囨护鏉′欢
+ Document areDocument = null;
+ if (areaDeptEnum != null) {
+ String areaCodePrefix = areaDeptEnum.getCode();
+ areDocument = new Document("deviceNo", new Document("$regex", "^" + areaCodePrefix));
+ }
+ // 鎬绘暟
List<Document> dList = new ArrayList<>(2);
+ if (areDocument != null){
+ dList.add(areDocument);
+ }
dList.add(new Document("importantTag", Boolean.TRUE));
setTag(params, dList);
+
Document osdFilter = new Document("$and", dList);
- //姝e父鏁�
+ // 姝e父鏁�
List<Document> dList1 = new ArrayList<>(2);
+ if (areDocument != null){
+ dList1.add(areDocument);
+ }
dList1.add(new Document("importantTag", Boolean.TRUE));
dList1.add(new Document("osdNameCorrect", new Document("$eq", 1)));
dList1.add(new Document("osdTimeCorrect", new Document("$eq", 1)));
@@ -1083,10 +2106,14 @@
dList1.add(new Document("osdCityCorrect", new Document("$eq", 1)));
dList1.add(new Document("osdPartCorrect", new Document("$eq", 1)));
setTag(params, dList1);
+
Document osdCorrectFilter = new Document("$and", dList1);
//寮傚父鏁�
List<Document> dList2 = new ArrayList<>(2);
- setTag(params,dList2);
+ if (areDocument != null){
+ dList2.add(areDocument);
+ }
+ setTag(params, dList2);
Document importantTagCondition = new Document("importantTag", Boolean.TRUE);
dList2.add(importantTagCondition);
List<Document> errorConditions = new ArrayList<>();
@@ -1097,10 +2124,15 @@
errorConditions.add(new Document("osdPartCorrect", new Document("$eq", -1)));
Document errorFilter = new Document("$or", errorConditions);
dList2.add(errorFilter);
+
Document osdErrorFilter = new Document("$and", dList2);
- //鏈煡鏁�
+
+ // 鏈煡鏁�
List<Document> dList3 = new ArrayList<>(2);
- setTag(params,dList3);
+ if (areDocument != null){
+ dList3.add(areDocument);
+ }
+ setTag(params, dList3);
dList3.add(importantTagCondition);
List<Document> unknownConditions = new ArrayList<>();
unknownConditions.add(new Document("osdNameCorrect", new Document("$eq", 0)));
@@ -1108,12 +2140,12 @@
unknownConditions.add(new Document("osdProvinceCorrect", new Document("$eq", 0)));
unknownConditions.add(new Document("osdCityCorrect", new Document("$eq", 0)));
unknownConditions.add(new Document("osdPartCorrect", new Document("$eq", 0)));
- // 浣跨敤$or閫昏緫缁勫悎鍓╀綑鐨勬潯浠�
Document unknownFilter = new Document("$or", unknownConditions);
dList3.add(unknownFilter);
+
Document osdUnknownFilter = new Document("$and", dList3);
- List<Document> lists = Arrays.asList(osdFilter, osdCorrectFilter, osdErrorFilter,osdUnknownFilter);
+ List<Document> lists = Arrays.asList(osdFilter, osdCorrectFilter, osdErrorFilter, osdUnknownFilter);
List<String> rList = lists.stream().map(filter -> {
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -1132,17 +2164,9 @@
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();
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<>();
@@ -1161,7 +2185,7 @@
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));
@@ -1170,7 +2194,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);
@@ -1180,7 +2204,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);
@@ -1212,7 +2236,7 @@
}
/**
- * 瑙嗛锛氭牎鏃舵纭巼
+ * 瑙嗛锛氭牎鏃舵纭巼(鍋滅敤)
*
* @param params
* @return
@@ -1246,14 +2270,32 @@
@Override
public Result videoImportantPointCheckTimeAccuracy(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("deviceNo", "osdName");
- Query query = MongoUtil.getQuery(params, "checkTime", likeFileds, null);
+
+ SysDept sysDept = getSysDeptByLoginUser();
+ List<Criteria> andCriteria;
+ AreaDeptEnum areaDeptEnum = null;
+ if (sysDept != null) {
+ areaDeptEnum = AreaDeptEnum.fromDept(Math.toIntExact(sysDept.getDeptId()));
+ if (areaDeptEnum != null) {
+ andCriteria = MongoUtil.getAndCriteriaDateCenter(areaDeptEnum.getCode(),params, "checkTime", likeFileds, null);
+ }else {
+ andCriteria = MongoUtil.getAndCriteria(params, "checkTime", likeFileds, null);
+ }
+ }else {
+ andCriteria = MongoUtil.getAndCriteria(params, "checkTime", likeFileds, null);
+ }
+ Query query = new Query();
+ Criteria and = new Criteria();
+ and.andOperator(andCriteria);
+ query = Query.query(and);
+ query.addCriteria(Criteria.where("importantTag").is(Boolean.TRUE));
//涓嬫媺妗嗘爣娉ㄦ纭煡璇㈡潯浠�
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));
}
}
@@ -1261,6 +2303,11 @@
long total = mongoTemplate.count(query, OsdCheckResult.class);
MongoUtil.setPage(query, params, "checkTime");
List<OsdCheckResult> resultList = mongoTemplate.find(query, OsdCheckResult.class);
+ Document areDocument = null;
+ if (areaDeptEnum != null) {
+ String areaCodePrefix = areaDeptEnum.getCode();
+ areDocument = new Document("deviceNo", new Document("$regex", "^" + areaCodePrefix));
+ }
for (OsdCheckResult osdCheckResult : resultList) {
OsdCheckResult.getError(osdCheckResult);
@@ -1269,7 +2316,10 @@
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("osd_check_result");
//鎬绘暟
- List<Document> dList = new ArrayList<>(2);
+ List<Document> dList = new ArrayList<>(3);
+ if (areDocument != null){
+ dList.add(areDocument);
+ }
dList.add(new Document("importantTag", Boolean.TRUE));
setTag(params, dList);
Document osdFilter = new Document("$and", dList);
@@ -1281,11 +2331,17 @@
dList1.add(new Document("osdProvinceCorrect", new Document("$eq", 1)));
dList1.add(new Document("osdCityCorrect", new Document("$eq", 1)));
dList1.add(new Document("osdPartCorrect", new Document("$eq", 1)));
+ if (areDocument != null){
+ dList1.add(areDocument);
+ }
setTag(params, dList1);
Document osdCorrectFilter = new Document("$and", dList1);
//寮傚父鏁�
List<Document> dList2 = new ArrayList<>(2);
- setTag(params,dList2);
+ if (areDocument != null){
+ dList2.add(areDocument);
+ }
+ setTag(params, dList2);
Document importantTagCondition = new Document("importantTag", Boolean.TRUE);
dList2.add(importantTagCondition);
List<Document> errorConditions = new ArrayList<>();
@@ -1299,7 +2355,10 @@
Document osdErrorFilter = new Document("$and", dList2);
//鏈煡鏁�
List<Document> dList3 = new ArrayList<>(2);
- setTag(params,dList3);
+ if (areDocument != null){
+ dList3.add(areDocument);
+ }
+ setTag(params, dList3);
dList3.add(importantTagCondition);
List<Document> unknownConditions = new ArrayList<>();
unknownConditions.add(new Document("osdNameCorrect", new Document("$eq", 0)));
@@ -1312,7 +2371,7 @@
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(
@@ -1331,17 +2390,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<>();
@@ -1360,40 +2423,80 @@
@Override
public Result vehicleViewDockStable(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
- Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ Query query = null;
+ SysDept sysDept = getSysDeptByLoginUser();
+ AreaDeptEnum areaDeptEnum = null;
+ if (sysDept !=null){
+ areaDeptEnum = AreaDeptEnum.fromDept(Math.toIntExact(sysDept.getDeptId()));
+ if (areaDeptEnum != null){
+ query = MongoUtil.getQueryDataCenter(areaDeptEnum.getCode(),params,TIME_FIELD,likeFileds,null,"no");
+
+ }else{
+ query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ }
+ }else {
+ 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())) {
+ 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())){
+ } 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())){
+ } 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())){
+ } 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()));
+ resultList.forEach(item -> item.setResultTypeText(item.getResultTypeText()));
+ Document areDocument = null;
+ if (areaDeptEnum != null) {
+ String areaCodePrefix = areaDeptEnum.getCode();
+ areDocument = new Document("deviceNo", new Document("$regex", "^" + areaCodePrefix));
+ }
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("hk_snapshot_data_monitor");
List<Document> dList2 = new ArrayList<>(2);
+ if (areDocument != null){
+ dList2.add(areDocument);
+ }
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);
+ if (areDocument != null){
+ dList3.add(areDocument);
+ }
dList3.add(new Document("resultType", new Document("$eq", 2)));
dList3.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_CAR)));
setTag(params, dList3);
-
- Document noDataFilter = new Document("$and", dList2);
- Document trFilter = new Document("$and", dList3);
- List<Document> lists = Arrays.asList(noDataFilter, trFilter);
+ List<Document> dList4 = new ArrayList<>(2);
+ if (areDocument != null){
+ dList4.add(areDocument);
+ }
+ dList4.add(new Document("resultType", new Document("$eq", 3)));
+ dList4.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_CAR)));
+ setTag(params, dList4);
+ List<Document> dList5 = new ArrayList<>(2);
+ if (areDocument != null){
+ dList5.add(areDocument);
+ }
+ 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(
@@ -1426,24 +2529,51 @@
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();
+ 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(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));
+ 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);
return Result.ok().data(map).total(total);
+ }
+
+ public Query buildQuery(DataCenterQuery params,List<String> likeFileds,String fileName){
+ Query query = null;
+ SysDept sysDept = getSysDeptByLoginUser();
+ AreaDeptEnum areaDeptEnum = null;
+ if (sysDept !=null){
+ areaDeptEnum = AreaDeptEnum.fromDept(Math.toIntExact(sysDept.getDeptId()));
+ if (areaDeptEnum != null){
+ query = MongoUtil.getQueryDataCenter(areaDeptEnum.getCode(),params,TIME_FIELD,likeFileds,null,"no");
+
+ }else{
+ query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ }
+ }else {
+ query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ }
+ return query;
}
/**
@@ -1455,7 +2585,20 @@
@Override
public Result vehiclePointOnlineRate(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("name", "no", "ip");
- Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ Query query = null;
+ SysDept sysDept = getSysDeptByLoginUser();
+ AreaDeptEnum areaDeptEnum = null;
+ if (sysDept !=null){
+ areaDeptEnum = AreaDeptEnum.fromDept(Math.toIntExact(sysDept.getDeptId()));
+ if (areaDeptEnum != null){
+ query = MongoUtil.getQueryDataCenter(areaDeptEnum.getCode(),params,TIME_FIELD,likeFileds,null,"no");
+
+ }else{
+ query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ }
+ }else {
+ query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ }
//鏌ヨ溅杈嗚澶�
query.addCriteria(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Car + ".*"));
//涓嬫媺妗嗗湪绾挎儏鍐垫煡璇㈡潯浠�
@@ -1491,13 +2634,16 @@
item.setOnlineStr("鏈煡");
}
List<String> offLineTime = item.getOffLineTimeStr();
- if(!CollectionUtils.isEmpty(offLineTime)) {
+ if (!CollectionUtils.isEmpty(offLineTime)) {
//鍚庣画鍙互鏀规垚閰嶇疆鐨勭绾挎鏁�(鎻愬彇鍓峮娆★紝n涓洪厤缃殑绂荤嚎娆℃暟)
if (offLineTime.size() > 1) {
offLineTime = offLineTime.subList(0, 2);
}
item.setOffLineTimeStr(offLineTime);
}
+ //娣诲姞鍔ㄦ�佹暟鎹�
+ List<DynamicColumnVO> list = dynamicColumnMapper.getDynamicColumnByTable(TableNameConstants.COLUMN_NAME_CAR_POINT,item.getNo());
+ item.setDynamicColumnList(list);
});
// 缁熻璁惧鏁伴噺
@@ -1508,6 +2654,9 @@
int unknownCount = 0;
//鏋勫缓鏉′欢
List<Criteria> criteriaList = new ArrayList<>();
+ if (areaDeptEnum != null){
+ criteriaList.add(Criteria.where("no").regex("^" +areaDeptEnum.getCode()));
+ }
// 娣诲姞鍥哄畾鏉′欢
criteriaList.add(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Car + ".*"));
criteriaList.add(Criteria.where("mongoCreateTime").gte(params.getStartTime()).lte(params.getEndTime()));
@@ -1536,17 +2685,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)));
@@ -1563,16 +2716,28 @@
@Override
public Result vehicleNetDeviceDirectoryConsistency(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("ip.showValue", "name.showValue", "serialNumber.showValue");
- List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, TIME_FIELD, likeFileds, null);
+ SysDept sysDept = getSysDeptByLoginUser();
+ List<Criteria> andCriteria;
+ AreaDeptEnum areaDeptEnum = null;
+ if (sysDept != null) {
+ areaDeptEnum = AreaDeptEnum.fromDept(Math.toIntExact(sysDept.getDeptId()));
+ if (areaDeptEnum != null) {
+ andCriteria = MongoUtil.getAndCriteriaDateCenter(areaDeptEnum.getCode(),params, "checkTime", likeFileds, null);
+ }else {
+ andCriteria = MongoUtil.getAndCriteria(params, "checkTime", likeFileds, null);
+ }
+ }else {
+ andCriteria = MongoUtil.getAndCriteria(params, "checkTime", 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){
+ 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));
}
}
@@ -1589,17 +2754,29 @@
//缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("uy_monitor_qualify");
+ Document areDocument = null;
+ if (areaDeptEnum != null) {
+ String areaCodePrefix = areaDeptEnum.getCode();
+ areDocument = new Document("no", new Document("$regex", "^" + areaCodePrefix));
+ }
+
//鎬绘暟
List<Document> dList1 = new ArrayList<>(2);
+ if (areDocument != null){
+ dList1.add(areDocument);
+ }
setTag(params, dList1);
dList1.add(new Document("sxjgnlx.value", new Document("$regex", ".*2.*")));
- Document totalFilter = new Document("$and",dList1);
+ Document totalFilter = new Document("$and", dList1);
//鏂拌澶囨暟
List<Document> dList2 = new ArrayList<>(2);
+ if (areDocument != null){
+ dList2.add(areDocument);
+ }
setTag(params, dList2);
dList2.add(new Document("sxjgnlx.value", new Document("$regex", ".*2.*")));
- dList2.add(new Document("newDevice",Boolean.TRUE));
- Document newFilter = new Document("$and",dList2);
+ 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 -> {
@@ -1620,17 +2797,21 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- 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();
+// 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<>();
@@ -1653,11 +2834,11 @@
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) {
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){
+ } 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);
@@ -1683,9 +2864,9 @@
List<Document> dList3 = new ArrayList<>(2);
setTag(params, dList3);
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);
+ 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);
@@ -1710,17 +2891,21 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- 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();
+// 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<>();
@@ -1739,11 +2924,11 @@
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() != null) {
//涓昏灞炴�т笉瀹屾暣
- if(params.getOption()==1){
- query.addCriteria(Criteria.where("noIntegrityCount").gt(0));
- }else if(params.getOption()==-1){
+ if (params.getOption() == 1) {
+ query.addCriteria(Criteria.where("noIntegrityCount").gt(0));
+ } else if (params.getOption() == -1) {
//灞炴�т笉瀹屾暣
query.addCriteria(Criteria.where("mainNoIntegrityCount").gt(0));
}
@@ -1778,22 +2963,26 @@
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<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+"");
+ 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", countList);
@@ -1811,11 +3000,11 @@
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() != null) {
//涓昏灞炴�т笉涓�鑷�
- if(params.getOption()==1){
+ if (params.getOption() == 1) {
query.addCriteria(Criteria.where("majorDiffCount").gt(0));
- }else if(params.getOption()==-1){
+ } else if (params.getOption() == -1) {
//閲嶈灞炴�т笉涓�鑷�
query.addCriteria(Criteria.where("importantDiffCount").gt(0));
}
@@ -1849,23 +3038,27 @@
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<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+"");
+ 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", countList);
@@ -1883,11 +3076,11 @@
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() != null) {
//褰撴棩鏃堕挓寮傚父
- if(params.getOption()==1){
+ if (params.getOption() == 1) {
query.addCriteria(Criteria.where("majorDiffCount").gt(0));
- }else if(params.getOption()==-1){
+ } else if (params.getOption() == -1) {
//鍏ㄩ儴鏃堕挓寮傚父
query.addCriteria(Criteria.where("importantDiffCount").gt(0));
}
@@ -1896,7 +3089,7 @@
MongoUtil.setPage(query, params, TIME_FIELD);
List<VehicleDeviceInspectionResult> resultList = mongoTemplate.find(query, VehicleDeviceInspectionResult.class);
List<SnapClockVO> resultVos = new ArrayList<>();
- resultList.forEach(item->{
+ resultList.forEach(item -> {
SnapClockVO vo = VehicleDeviceInspectionResult.getVO(item);
resultVos.add(vo);
});
@@ -1922,7 +3115,7 @@
Document allFilter = new Document("$and", dList3);
Document allErrFilter = new Document("$and", dList4);
- List<Document> lists = Arrays.asList(todayFilter, todayErrFilter, allFilter,allErrFilter);
+ List<Document> lists = Arrays.asList(todayFilter, todayErrFilter, allFilter, allErrFilter);
List<String> rList = lists.stream().map(filter -> {
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -1941,17 +3134,24 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- 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();
+// 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<>();
@@ -1971,11 +3171,11 @@
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){
+ if (params.getOption() != null) {
//姝e父
- if(params.getOption()==1){
+ if (params.getOption() == 1) {
query.addCriteria(Criteria.where("delayCount").is(0));
- }else if(params.getOption()==-1){
+ } else if (params.getOption() == -1) {
//寤惰繜
query.addCriteria(Criteria.where("delayCount").gt(0));
}
@@ -1989,15 +3189,15 @@
List<Document> dList1 = new ArrayList<>(2);
setTag(params, dList1);
- dList1.add(new Document("dataType" ,new Document("$eq",ApiConstants.HK_DataType_CAR)));
+ 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("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<Document> lists = Arrays.asList(allFilter, delayFilter);
List<String> rList = lists.stream().map(filter -> {
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -2017,17 +3217,21 @@
}).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();
+// 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<>();
@@ -2046,10 +3250,10 @@
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){
+ if (params.getOption() != null) {
+ if (params.getOption() == 1) {
query.addCriteria(Criteria.where("expCount").is(0));
- }else if(params.getOption()==-1){
+ } else if (params.getOption() == -1) {
query.addCriteria(Criteria.where("expCount").gt(0));
}
}
@@ -2092,8 +3296,8 @@
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(sampleCount + "");
+ rList.add(expCount + "");
rList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
@@ -2112,10 +3316,10 @@
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){
+ if (params.getOption() != null) {
+ if (params.getOption() == 1) {
query.addCriteria(Criteria.where("bigUseful.bigPicExpCount").is(0));
- }else if(params.getOption()==-1){
+ } else if (params.getOption() == -1) {
query.addCriteria(Criteria.where("bigUseful.bigPicExpCount").gt(0));
}
}
@@ -2124,7 +3328,7 @@
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->{
+ resultList.forEach(item -> {
BigPicUsefulVO picVO = VehicleDeviceSamplingResult.getPicVO(item);
voList.add(picVO);
});
@@ -2149,20 +3353,24 @@
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();
+// 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 (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));
+ if (sampleCount!=0) {
+ onlineRate = new BigDecimal(sampleCount-expCount).divide(new BigDecimal(sampleCount), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
}
- countList.add(sampleCount+"");
- countList.add(expCount+"");
countList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
map.put("count", countList);
@@ -2182,21 +3390,21 @@
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())) {
+ 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())){
+ } 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())){
+ } 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())){
+ } 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()));
+ resultList.forEach(item -> item.setResultTypeText(item.getResultTypeText()));
// 缁熻鏁伴噺
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("hk_snapshot_data_monitor");
@@ -2210,9 +3418,19 @@
dList3.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_CAR)));
setTag(params, dList3);
- Document noDataFilter = new Document("$and", dList2);
- Document trFilter = new Document("$and", dList3);
- List<Document> lists = Arrays.asList(noDataFilter, trFilter);
+ List<Document> dList4 = new ArrayList<>(2);
+ dList4.add(new Document("resultType", new Document("$eq", 3)));
+ dList4.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_CAR)));
+ setTag(params, dList4);
+ 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(
@@ -2246,18 +3464,27 @@
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();
+ 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<>();
@@ -2308,13 +3535,16 @@
item.setOnlineStr("鏈煡");
}
List<String> offLineTime = item.getOffLineTimeStr();
- if(!CollectionUtils.isEmpty(offLineTime)) {
+ if (!CollectionUtils.isEmpty(offLineTime)) {
//鍚庣画鍙互鏀规垚閰嶇疆鐨勭绾挎鏁�(鎻愬彇鍓峮娆★紝n涓洪厤缃殑绂荤嚎娆℃暟)
if (offLineTime.size() > 1) {
offLineTime = offLineTime.subList(0, 2);
}
item.setOffLineTimeStr(offLineTime);
}
+ //娣诲姞鍔ㄦ�佹暟鎹�
+ List<DynamicColumnVO> list = dynamicColumnMapper.getDynamicColumnByTable(TableNameConstants.COLUMN_NAME_FACE_POINT,item.getNo());
+ item.setDynamicColumnList(list);
});
params.setDeptTag(-1);
params.setDeviceType(3);
@@ -2354,19 +3584,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);
@@ -2388,10 +3621,10 @@
andCriteria.add(Criteria.where("sxjgnlx.value").regex(pattern));
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));
}
}
@@ -2412,13 +3645,13 @@
List<Document> dList1 = new ArrayList<>(2);
setTag(params, dList1);
dList1.add(new Document("sxjgnlx.value", new Document("$regex", ".*3.*")));
- Document totalFilter = new Document("$and",dList1);
+ Document totalFilter = new Document("$and", dList1);
//鏂拌澶囨暟
List<Document> dList2 = new ArrayList<>(2);
setTag(params, dList2);
dList2.add(new Document("sxjgnlx.value", new Document("$regex", ".*3.*")));
- dList2.add(new Document("newDevice",Boolean.TRUE));
- Document newFilter = new Document("$and",dList2);
+ 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 -> {
@@ -2439,17 +3672,21 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- 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();
+// 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<>();
@@ -2472,11 +3709,11 @@
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) {
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){
+ } 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);
@@ -2502,9 +3739,9 @@
List<Document> dList3 = new ArrayList<>(2);
setTag(params, dList3);
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);
+ 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);
@@ -2529,17 +3766,21 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- 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();
+// 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<>();
@@ -2558,10 +3799,10 @@
public Result faceImgQualification(DataCenterQuery params) {
List<String> likeFileds = Arrays.asList("externalIndexCode", "cameraName");
Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
- if(params.getOption()!=null){
- if(params.getOption()==1){
+ if (params.getOption() != null) {
+ if (params.getOption() == 1) {
query.addCriteria(Criteria.where("faceEligibility.unfaceEligCount").is(0));
- }else if(params.getOption()==-1){
+ } else if (params.getOption() == -1) {
query.addCriteria(Criteria.where("faceEligibility.unfaceEligCount").gt(0));
}
}
@@ -2570,7 +3811,7 @@
MongoUtil.setPage(query, params, TIME_FIELD);
List<FaceDeviceSamplingResult> resultList = mongoTemplate.find(query, FaceDeviceSamplingResult.class);
List<BigPicUsefulVO> voList = new ArrayList<>();
- resultList.forEach(item->{
+ resultList.forEach(item -> {
BigPicUsefulVO picVO = FaceDeviceSamplingResult.getEligeVO(item);
voList.add(picVO);
});
@@ -2597,20 +3838,24 @@
}
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();
+// 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 (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));
+ if (sampleCount!=0) {
+ onlineRate = new BigDecimal(sampleCount-expCount).divide(new BigDecimal(sampleCount), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
}
- countList.add(sampleCount+"");
- countList.add(expCount+"");
countList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
map.put("count", countList);
@@ -2628,11 +3873,11 @@
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() != null) {
//褰撴棩鏃堕挓寮傚父
- if(params.getOption()==1){
+ if (params.getOption() == 1) {
query.addCriteria(Criteria.where("majorDiffCount").gt(0));
- }else if(params.getOption()==-1){
+ } else if (params.getOption() == -1) {
//鍏ㄩ儴鏃堕挓寮傚父
query.addCriteria(Criteria.where("importantDiffCount").gt(0));
}
@@ -2641,7 +3886,7 @@
MongoUtil.setPage(query, params, TIME_FIELD);
List<FaceDeviceInspectionResult> resultList = mongoTemplate.find(query, FaceDeviceInspectionResult.class);
List<SnapClockVO> resultVos = new ArrayList<>();
- resultList.forEach(item->{
+ resultList.forEach(item -> {
SnapClockVO vo = FaceDeviceInspectionResult.getVO(item);
resultVos.add(vo);
});
@@ -2668,7 +3913,7 @@
Document allErrFilter = new Document("$and", dList4);
- List<Document> lists = Arrays.asList(todayFilter, todayErrFilter, allFilter,allErrFilter);
+ List<Document> lists = Arrays.asList(todayFilter, todayErrFilter, allFilter, allErrFilter);
List<String> rList = lists.stream().map(filter -> {
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -2687,17 +3932,24 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
- 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();
+// 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<>();
@@ -2717,11 +3969,11 @@
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_FACE));
- if(params.getOption()!=null){
+ if (params.getOption() != null) {
//姝e父
- if(params.getOption()==1){
+ if (params.getOption() == 1) {
query.addCriteria(Criteria.where("delayCount").is(0));
- }else if(params.getOption()==-1){
+ } else if (params.getOption() == -1) {
//寤惰繜
query.addCriteria(Criteria.where("delayCount").gt(0));
}
@@ -2735,15 +3987,15 @@
List<Document> dList1 = new ArrayList<>(2);
setTag(params, dList1);
- dList1.add(new Document("dataType" ,new Document("$eq",ApiConstants.HK_DataType_FACE)));
+ 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("dataType" ,new Document("$eq",ApiConstants.HK_DataType_FACE)));
+ dList2.add(new Document("dataType", new Document("$eq", ApiConstants.HK_DataType_FACE)));
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<Document> lists = Arrays.asList(allFilter, delayFilter);
List<String> rList = lists.stream().map(filter -> {
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -2763,17 +4015,21 @@
}).collect(Collectors.toList());
- 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();
+// 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<>();
@@ -2792,10 +4048,10 @@
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){
+ if (params.getOption() != null) {
+ if (params.getOption() == 1) {
query.addCriteria(Criteria.where("bigUseful.bigPicExpCount").is(0));
- }else if(params.getOption()==-1){
+ } else if (params.getOption() == -1) {
query.addCriteria(Criteria.where("bigUseful.bigPicExpCount").gt(0));
}
}
@@ -2804,7 +4060,7 @@
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->{
+ resultList.forEach(item -> {
BigPicUsefulVO picVO = FaceDeviceSamplingResult.getPicVO(item);
voList.add(picVO);
});
@@ -2828,24 +4084,34 @@
sampleCount = doc.getInteger("sampleCount");
expCount = doc.getInteger("expCount");
}
+
+
+ //鏂版瀯寤鸿仛鍚堟煡璇㈢绾挎椂闂�
+
List<String> countList = new ArrayList<>();
// 缁熻鏁�
- 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();
+// 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(sampleCount+"");
- countList.add(expCount+"");
countList.add(this.remove0(onlineRate));
+
+
HashMap<String, Object> map = new HashMap<>();
map.put("count", countList);
map.put("list", voList);
@@ -2895,8 +4161,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