package com.ycl.platform.service.impl; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.ycl.platform.domain.entity.ImageResourceSecurityDetail; import com.ycl.platform.domain.query.DataCenterQuery; import com.ycl.platform.domain.result.HK.*; import com.ycl.platform.domain.result.UY.MonitorQualifyResult; import com.ycl.platform.domain.result.UY.OneMachineFileResult; import com.ycl.platform.domain.result.UY.RecordMetaDSumResult; import com.ycl.platform.domain.result.UY.VideoOnlineResult; import com.ycl.platform.mapper.ImageResourceSecurityDetailMapper; import com.ycl.platform.service.DataCenterService; import com.ycl.system.Result; import com.ycl.utils.MongoUtil; import lombok.RequiredArgsConstructor; import org.apache.commons.collections.CollectionUtils; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Objects; /** * 数据中心接口 * * @author:xp * @date:2024/8/2 11:07 */ @Service @RequiredArgsConstructor public class DataCenterServiceImpl implements DataCenterService { private final MongoTemplate mongoTemplate; private final ImageResourceSecurityDetailMapper securityDetailMapper; private final static String TIME_FIELD = "mongoCreateTime"; /** * 视频:点位在线率 * * @param params * @return */ @Override public Result videoPointOnlineRate(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, VideoOnlineResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, VideoOnlineResult.class); long count = mongoTemplate.count(new Query(), VideoOnlineResult.class); HashMap map = new HashMap<>(); map.put("total", count); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 视频:一机一档注册率 * * @param params * @return */ @Override public Result videoOneMachineDocumentRegister(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, OneMachineFileResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, OneMachineFileResult.class); // 统计数 long nonNetwork = mongoTemplate.count(new Query().addCriteria(Criteria.where("LWSX").is("0")), OneMachineFileResult.class); long network = mongoTemplate.count(new Query().addCriteria(Criteria.where("LWSX").is("1")), OneMachineFileResult.class); long video = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/1/")), OneMachineFileResult.class); long car = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/2/")), OneMachineFileResult.class); long face = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/3/")), OneMachineFileResult.class); HashMap map = new HashMap<>(); map.put("count", Arrays.asList(nonNetwork, network, video, car, face)); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 视频:一机一档合格率 * * @param params * @return */ @Override public Result videoOneMachineDocumentQualified(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, MonitorQualifyResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, MonitorQualifyResult.class); // 统计数 HashMap map = new HashMap<>(); map.put("count", CollectionUtils.EMPTY_COLLECTION); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 视频:档案考核比 * * @param params * @return */ @Override public Result videoAssessmentFileRatio(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, OneMachineFileResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, OneMachineFileResult.class); // 统计数 long nonNetwork = mongoTemplate.count(new Query().addCriteria(Criteria.where("LWSX").is("0")), OneMachineFileResult.class); long network = mongoTemplate.count(new Query().addCriteria(Criteria.where("LWSX").is("1")), OneMachineFileResult.class); long video = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/1/")), OneMachineFileResult.class); long car = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/2/")), OneMachineFileResult.class); long face = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/3/")), OneMachineFileResult.class); HashMap map = new HashMap<>(); map.put("count", Arrays.asList(nonNetwork, network, video, car, face)); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 视频:录像可用率 * * @param params * @return */ @Override public Result videoAvailabilityRate(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, RecordMetaDSumResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, RecordMetaDSumResult.class); // 统计数 long one = mongoTemplate.count(new Query().addCriteria(Criteria.where("recordStatus").is("1")), OneMachineFileResult.class); long two = mongoTemplate.count(new Query().addCriteria(Criteria.where("recordStatus").is("2")), OneMachineFileResult.class); long three = mongoTemplate.count(new Query().addCriteria(Criteria.where("recordStatus").is("-1")), OneMachineFileResult.class); HashMap map = new HashMap<>(); map.put("count", Arrays.asList(one, two, three)); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 视频:重点点位录像可用率 * * @param params * @return */ @Override public Result videoImportantPointAvailabilityRate(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, RecordMetaDSumResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, RecordMetaDSumResult.class); // 统计数 long one = mongoTemplate.count(new Query().addCriteria(Criteria.where("recordStatus").is("1")), OneMachineFileResult.class); long two = mongoTemplate.count(new Query().addCriteria(Criteria.where("recordStatus").is("2")), OneMachineFileResult.class); long three = mongoTemplate.count(new Query().addCriteria(Criteria.where("recordStatus").is("-1")), OneMachineFileResult.class); HashMap map = new HashMap<>(); map.put("count", Arrays.asList(one, two, three)); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 视频:标注正确率 * * @param params * @return */ @Override public Result videoLabelingAccuracy(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, OneMachineFileResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, OneMachineFileResult.class); // 统计数 long nonNetwork = mongoTemplate.count(new Query().addCriteria(Criteria.where("LWSX").is("0")), OneMachineFileResult.class); long network = mongoTemplate.count(new Query().addCriteria(Criteria.where("LWSX").is("1")), OneMachineFileResult.class); long video = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/1/")), OneMachineFileResult.class); long car = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/2/")), OneMachineFileResult.class); long face = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/3/")), OneMachineFileResult.class); HashMap map = new HashMap<>(); map.put("count", Arrays.asList(nonNetwork, network, video, car, face)); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 视频:重点点位标注正确率 * * @param params * @return */ @Override public Result videoImportantPointLabelingAccuracy(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, OneMachineFileResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, OneMachineFileResult.class); // 统计数 long nonNetwork = mongoTemplate.count(new Query().addCriteria(Criteria.where("LWSX").is("0")), OneMachineFileResult.class); long network = mongoTemplate.count(new Query().addCriteria(Criteria.where("LWSX").is("1")), OneMachineFileResult.class); long video = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/1/")), OneMachineFileResult.class); long car = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/2/")), OneMachineFileResult.class); long face = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/3/")), OneMachineFileResult.class); HashMap map = new HashMap<>(); map.put("count", Arrays.asList(nonNetwork, network, video, car, face)); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 视频:校时正确率 * * @param params * @return */ @Override public Result videoCheckTimeAccuracy(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, OneMachineFileResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, OneMachineFileResult.class); // 统计数 long nonNetwork = mongoTemplate.count(new Query().addCriteria(Criteria.where("LWSX").is("0")), OneMachineFileResult.class); long network = mongoTemplate.count(new Query().addCriteria(Criteria.where("LWSX").is("1")), OneMachineFileResult.class); long video = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/1/")), OneMachineFileResult.class); long car = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/2/")), OneMachineFileResult.class); long face = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/3/")), OneMachineFileResult.class); HashMap map = new HashMap<>(); map.put("count", Arrays.asList(nonNetwork, network, video, car, face)); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 视频:重点点位校时正确率 * * @param params * @return */ @Override public Result videoImportantPointCheckTimeAccuracy(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, OneMachineFileResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, OneMachineFileResult.class); // 统计数 long nonNetwork = mongoTemplate.count(new Query().addCriteria(Criteria.where("LWSX").is("0")), OneMachineFileResult.class); long network = mongoTemplate.count(new Query().addCriteria(Criteria.where("LWSX").is("1")), OneMachineFileResult.class); long video = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/1/")), OneMachineFileResult.class); long car = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/2/")), OneMachineFileResult.class); long face = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/3/")), OneMachineFileResult.class); HashMap map = new HashMap<>(); map.put("count", Arrays.asList(nonNetwork, network, video, car, face)); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 视频:重点点位在线率 * * @param params * @return */ @Override public Result videoImportantPointOnlineRate(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, OneMachineFileResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, OneMachineFileResult.class); // 统计数 long nonNetwork = mongoTemplate.count(new Query().addCriteria(Criteria.where("LWSX").is("0")), OneMachineFileResult.class); long network = mongoTemplate.count(new Query().addCriteria(Criteria.where("LWSX").is("1")), OneMachineFileResult.class); long video = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/1/")), OneMachineFileResult.class); long car = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/2/")), OneMachineFileResult.class); long face = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/3/")), OneMachineFileResult.class); HashMap map = new HashMap<>(); map.put("count", Arrays.asList(nonNetwork, network, video, car, face)); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 视频:重点指挥图像在线率 * * @param params * @return */ @Override public Result videoImportantPointImageOnlineRate(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, OneMachineFileResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, OneMachineFileResult.class); // 统计数 long nonNetwork = mongoTemplate.count(new Query().addCriteria(Criteria.where("LWSX").is("0")), OneMachineFileResult.class); long network = mongoTemplate.count(new Query().addCriteria(Criteria.where("LWSX").is("1")), OneMachineFileResult.class); long video = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/1/")), OneMachineFileResult.class); long car = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/2/")), OneMachineFileResult.class); long face = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/3/")), OneMachineFileResult.class); HashMap map = new HashMap<>(); map.put("count", Arrays.asList(nonNetwork, network, video, car, face)); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 车辆:视图库对接稳定性 * * @param params * @return */ @Override public Result vehicleViewDockStable(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, SnapshotDataMonitorResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, SnapshotDataMonitorResult.class); // 统计数 long one = mongoTemplate.count(new Query().addCriteria(Criteria.where("resultType").is("1")), SnapshotDataMonitorResult.class); long two = mongoTemplate.count(new Query().addCriteria(Criteria.where("resultType").is("2")), SnapshotDataMonitorResult.class); long three = mongoTemplate.count(new Query().addCriteria(Criteria.where("resultType").is("3")), SnapshotDataMonitorResult.class); long four = mongoTemplate.count(new Query().addCriteria(Criteria.where("resultType").is("4")), SnapshotDataMonitorResult.class); HashMap map = new HashMap<>(); map.put("count", Arrays.asList(one, two, three, four)); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 车辆:点位在线率 * * @param params * @return */ @Override public Result vehiclePointOnlineRate(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, SnapshotDataMonitorResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, SnapshotDataMonitorResult.class); // 统计数 long one = mongoTemplate.count(new Query().addCriteria(Criteria.where("resultType").is("1")), SnapshotDataMonitorResult.class); long two = mongoTemplate.count(new Query().addCriteria(Criteria.where("resultType").is("2")), SnapshotDataMonitorResult.class); long three = mongoTemplate.count(new Query().addCriteria(Criteria.where("resultType").is("3")), SnapshotDataMonitorResult.class); long four = mongoTemplate.count(new Query().addCriteria(Criteria.where("resultType").is("4")), SnapshotDataMonitorResult.class); HashMap map = new HashMap<>(); map.put("count", Arrays.asList(one, two, three, four)); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 车辆:互联网卡口设备目录一致性 * * @param params * @return */ @Override public Result vehicleNetDeviceDirectoryConsistency(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, OneMachineFileResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, OneMachineFileResult.class); // 统计数 long nonNetwork = mongoTemplate.count(new Query().addCriteria(Criteria.where("LWSX").is("0")), OneMachineFileResult.class); long network = mongoTemplate.count(new Query().addCriteria(Criteria.where("LWSX").is("1")), OneMachineFileResult.class); long video = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/1/")), OneMachineFileResult.class); long car = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/2/")), OneMachineFileResult.class); long face = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/3/")), OneMachineFileResult.class); HashMap map = new HashMap<>(); map.put("count", Arrays.asList(nonNetwork, network, video, car, face)); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 车辆:车辆卡口信息采集准确率 * * @param params * @return */ @Override public Result vehicleCollectionConsistency(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, CrossDetailResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, CrossDetailResult.class); // 统计数 long one = mongoTemplate.count(new Query().addCriteria(Criteria.where("lalType").is("1")), CrossDetailResult.class); long two = mongoTemplate.count(new Query().addCriteria(Criteria.where("lalType").is("2")), CrossDetailResult.class); long three = mongoTemplate.count(new Query().addCriteria(Criteria.where("lalType").is("3")), CrossDetailResult.class); long four = mongoTemplate.count(new Query().addCriteria(Criteria.where("lalType").is("4")), CrossDetailResult.class); HashMap map = new HashMap<>(); map.put("count", Arrays.asList(one, two, three, four)); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 车辆:车辆卡口设备抓拍数据完整性 * * @param params * @return */ @Override public Result vehicleCollectionDataIntegrity(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, DataIntegrityMonitoringResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, DataIntegrityMonitoringResult.class); // 统计数 HashMap map = new HashMap<>(); map.put("count", CollectionUtils.EMPTY_COLLECTION); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 车辆:车辆卡口设备抓拍数据准确性 * * @param params * @return */ @Override public Result vehicleCollectionDataCaptured(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, AttrRecognitionMonitorResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, AttrRecognitionMonitorResult.class); // 统计数 HashMap map = new HashMap<>(); map.put("count", CollectionUtils.EMPTY_COLLECTION); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 车辆:车辆卡口设备时钟准确性 * * @param params * @return */ @Override public Result vehicleClockAccuracy(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, VehicleDeviceInspectionResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, VehicleDeviceInspectionResult.class); // 统计数 long one = mongoTemplate.count(new Query().addCriteria(Criteria.where("snapResult").is("1")), VehicleDeviceInspectionResult.class); long two = mongoTemplate.count(new Query().addCriteria(Criteria.where("snapResult").is("2")), VehicleDeviceInspectionResult.class); long four = mongoTemplate.count(new Query().addCriteria(Criteria.where("snapResult").is("4")), VehicleDeviceInspectionResult.class); HashMap map = new HashMap<>(); map.put("count", Arrays.asList(one, two, four)); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 车辆:车辆卡口设备抓拍数据上传及时性 * * @param params * @return */ @Override public Result vehicleTimelyUploadAccuracy(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, SnapshotDelayMonitorResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, SnapshotDelayMonitorResult.class); // 统计数 HashMap map = new HashMap<>(); map.put("count", CollectionUtils.EMPTY_COLLECTION); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 车辆:车辆卡口设备url可用性 * * @param params * @return */ @Override public Result vehicleUrlAccuracy(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, PicAccessResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, PicAccessResult.class); // 统计数 HashMap map = new HashMap<>(); map.put("count", CollectionUtils.EMPTY_COLLECTION); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 车辆:车辆卡口设备抓拍数据大图可用性 * * @param params * @return */ @Override public Result vehicleBigImgAccuracy(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, VehicleDeviceSamplingResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, VehicleDeviceSamplingResult.class); // 统计数 HashMap map = new HashMap<>(); map.put("count", CollectionUtils.EMPTY_COLLECTION); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 人脸:视图库对接稳定性 * * @param params * @return */ @Override public Result faceViewDockStable(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, SnapshotDataMonitorResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, SnapshotDataMonitorResult.class); // 统计数 long one = mongoTemplate.count(new Query().addCriteria(Criteria.where("resultType").is("1")), SnapshotDataMonitorResult.class); long two = mongoTemplate.count(new Query().addCriteria(Criteria.where("resultType").is("2")), SnapshotDataMonitorResult.class); long three = mongoTemplate.count(new Query().addCriteria(Criteria.where("resultType").is("3")), SnapshotDataMonitorResult.class); long four = mongoTemplate.count(new Query().addCriteria(Criteria.where("resultType").is("4")), SnapshotDataMonitorResult.class); HashMap map = new HashMap<>(); map.put("count", Arrays.asList(one, two, three, four)); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 人脸:点位在线率 * * @param params * @return */ @Override public Result facePointOnlineRate(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, SnapshotDataMonitorResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, SnapshotDataMonitorResult.class); // 统计数 long one = mongoTemplate.count(new Query().addCriteria(Criteria.where("resultType").is("1")), SnapshotDataMonitorResult.class); long two = mongoTemplate.count(new Query().addCriteria(Criteria.where("resultType").is("2")), SnapshotDataMonitorResult.class); long three = mongoTemplate.count(new Query().addCriteria(Criteria.where("resultType").is("3")), SnapshotDataMonitorResult.class); long four = mongoTemplate.count(new Query().addCriteria(Criteria.where("resultType").is("4")), SnapshotDataMonitorResult.class); HashMap map = new HashMap<>(); map.put("count", Arrays.asList(one, two, three, four)); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 人脸:目录一致率 * * @param params * @return */ @Override public Result faceDirectoryConsistency(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, OneMachineFileResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, OneMachineFileResult.class); // 统计数 long nonNetwork = mongoTemplate.count(new Query().addCriteria(Criteria.where("LWSX").is("0")), OneMachineFileResult.class); long network = mongoTemplate.count(new Query().addCriteria(Criteria.where("LWSX").is("1")), OneMachineFileResult.class); long video = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/1/")), OneMachineFileResult.class); long car = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/2/")), OneMachineFileResult.class); long face = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex("/3/")), OneMachineFileResult.class); HashMap map = new HashMap<>(); map.put("count", Arrays.asList(nonNetwork, network, video, car, face)); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 人脸:人脸卡口信息采集准确率 * * @param params * @return */ @Override public Result faceCollectionConsistency(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, CrossDetailResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, CrossDetailResult.class); // 统计数 long one = mongoTemplate.count(new Query().addCriteria(Criteria.where("lalType").is("1")), CrossDetailResult.class); long two = mongoTemplate.count(new Query().addCriteria(Criteria.where("lalType").is("2")), CrossDetailResult.class); long three = mongoTemplate.count(new Query().addCriteria(Criteria.where("lalType").is("3")), CrossDetailResult.class); long four = mongoTemplate.count(new Query().addCriteria(Criteria.where("lalType").is("4")), CrossDetailResult.class); HashMap map = new HashMap<>(); map.put("count", Arrays.asList(one, two, three, four)); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 人脸:设备抓拍图片合格性 * * @param params * @return */ @Override public Result faceImgQualification(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, MonitoringDetailResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, MonitoringDetailResult.class); // 统计数 long one = mongoTemplate.count(new Query().addCriteria(Criteria.where("lalType").is("1")), MonitoringDetailResult.class); long two = mongoTemplate.count(new Query().addCriteria(Criteria.where("lalType").is("2")), MonitoringDetailResult.class); long three = mongoTemplate.count(new Query().addCriteria(Criteria.where("lalType").is("3")), MonitoringDetailResult.class); long four = mongoTemplate.count(new Query().addCriteria(Criteria.where("lalType").is("4")), MonitoringDetailResult.class); HashMap map = new HashMap<>(); map.put("count", Arrays.asList(one, two, three, four)); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 人脸:设备抓拍图片时钟准确性 * * @param params * @return */ @Override public Result faceCapturesImagesAccuracy(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, FaceDeviceInspectionResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, FaceDeviceInspectionResult.class); // 统计数 long one = mongoTemplate.count(new Query().addCriteria(Criteria.where("snapResult").is("1")), FaceDeviceInspectionResult.class); long two = mongoTemplate.count(new Query().addCriteria(Criteria.where("snapResult").is("2")), FaceDeviceInspectionResult.class); long four = mongoTemplate.count(new Query().addCriteria(Criteria.where("snapResult").is("4")), FaceDeviceInspectionResult.class); HashMap map = new HashMap<>(); map.put("count", Arrays.asList(one, two, four)); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 人脸:抓拍人脸数据上传及时性 * * @param params * @return */ @Override public Result faceTimelyUpload(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, FaceDeviceInspectionResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, FaceDeviceInspectionResult.class); // 统计数 long one = mongoTemplate.count(new Query().addCriteria(Criteria.where("snapResult").is("1")), FaceDeviceInspectionResult.class); long two = mongoTemplate.count(new Query().addCriteria(Criteria.where("snapResult").is("2")), FaceDeviceInspectionResult.class); long four = mongoTemplate.count(new Query().addCriteria(Criteria.where("snapResult").is("4")), FaceDeviceInspectionResult.class); HashMap map = new HashMap<>(); map.put("count", Arrays.asList(one, two, four)); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 人脸:人脸卡口设备抓拍数据大图可用性 * * @param params * @return */ @Override public Result faceAvailabilityOfLargeImg(DataCenterQuery params) { Query query = new Query(); // 全文索引查询 MongoUtil.fullText(query, params.getKeyword()); Criteria criteria = new Criteria(); // 普通查询 if (Objects.nonNull(params.getStartTime()) && Objects.nonNull(params.getEndTime())) { criteria.andOperator( Criteria.where(TIME_FIELD).gte(params.getStartTime()).lte(params.getEndTime()) ); } query.addCriteria(criteria); long total = mongoTemplate.count(query, FaceDeviceSamplingResult.class); query.with(Sort.by(Sort.Order.asc(TIME_FIELD))).skip(params.getSkipNum()).limit(Math.toIntExact(params.getPageSize())); List resultList = mongoTemplate.find(query, FaceDeviceSamplingResult.class); // 统计数 HashMap map = new HashMap<>(); map.put("count", CollectionUtils.EMPTY_COLLECTION); map.put("list", resultList); return Result.ok().data(map).total(total); } /** * 视频:视频图像资源安全管理 * * @param query * @return */ @Override public Result videoImageResourceSecurity(DataCenterQuery query) { ImageResourceSecurityDetail imageResourceSecurityDetail = new ImageResourceSecurityDetail(); Page page = PageHelper.startPage(query.getPageNum(), query.getPageSize()); securityDetailMapper.selectImageResourceSecurityDetailList(imageResourceSecurityDetail); return Result.ok().data(page.getResult()).total(page.getTotal()); } }