| | |
| | | import com.ycl.platform.domain.query.DataCenterQuery; |
| | | import com.ycl.platform.domain.result.HK.*; |
| | | import com.ycl.platform.domain.result.UY.*; |
| | | import com.ycl.platform.domain.vo.PointDetailVO; |
| | | import com.ycl.platform.mapper.ImageResourceSecurityDetailMapper; |
| | | import com.ycl.platform.mapper.YwPointMapper; |
| | | import com.ycl.platform.service.*; |
| | |
| | | */ |
| | | @Override |
| | | public Result videoPointOnlineRate(DataCenterQuery params) { |
| | | // 生成查询 |
| | | List<String> likeFileds = Arrays.asList("arealayerName", "ipAddr", "deviceName", "deviceId"); |
| | | Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null); |
| | | params.setDeptTag(-1); |
| | | params.setDeviceType(1); |
| | | IPage<PointDetailVO> page = PageUtil.getPage(params, PointDetailVO.class); |
| | | pointMapper.dataCenterPage(page, params); |
| | | |
| | | // 先查总数再分页 |
| | | long total = mongoTemplate.count(query, VideoOnlineResult.class); |
| | | MongoUtil.setPage(query, params, TIME_FIELD); |
| | | List<VideoOnlineResult> resultList = mongoTemplate.find(query, VideoOnlineResult.class); |
| | | // 统计设备数量 |
| | | Integer distinctCount = pointMapper.distinctCount(params); |
| | | |
| | | // 统计数量 |
| | | MongoDatabase database = mongoTemplate.getDb(); |
| | | MongoCollection<Document> collection = database.getCollection("uy_online"); |
| | | long distinctCount = collection.distinct("deviceId", String.class).into(new ArrayList<>()).size(); |
| | | Date now = new Date(); |
| | | List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper()) |
| | | .select(CheckIndexVideo::getSiteOnline) |
| | |
| | | } |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | map.put("count", Arrays.asList(distinctCount + "",this.remove0(onlineRate))); |
| | | map.put("list", resultList); |
| | | return Result.ok().data(map).total(total); |
| | | map.put("list", page.getRecords()); |
| | | return Result.ok().data(map).total(page.getTotal()); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Override |
| | | public Result deptVideoPointOnlineRate(DataCenterQuery params) { |
| | | params.setDeptTag(1); |
| | | params.setDeviceType(1); |
| | | IPage<PointDetailVO> page = PageUtil.getPage(params, PointDetailVO.class); |
| | | pointMapper.dataCenterPage(page, params); |
| | | |
| | | List<String> likeFileds = Arrays.asList("arealayerName", "ipAddr", "deviceName", "deviceId"); |
| | | // 生成查询 |
| | | Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, 1); |
| | | // 统计设备数量 |
| | | Integer distinctCount = pointMapper.distinctCount(params); |
| | | |
| | | // 先查总数再分页 |
| | | long total = mongoTemplate.count(query, VideoOnlineResult.class); |
| | | MongoUtil.setPage(query, params, TIME_FIELD); |
| | | List<VideoOnlineResult> resultList = mongoTemplate.find(query, VideoOnlineResult.class); |
| | | |
| | | // 统计数量 |
| | | MongoDatabase database = mongoTemplate.getDb(); |
| | | MongoCollection<Document> collection = database.getCollection("uy_online"); |
| | | List<Document> dList = new ArrayList<>(2); |
| | | dList.add(new Document("deptTag", new Document("$eq", Boolean.TRUE))); |
| | | if (params.getDataType().equals(1)) { |
| | | dList.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE))); |
| | | } |
| | | Document filter = new Document("$and", dList); |
| | | // 构建聚合管道 |
| | | List<Document> pipeline = Arrays.asList( |
| | | // 只要部级的 |
| | | new Document("$match", filter), |
| | | // $group 去重 |
| | | new Document("$group", new Document("_id", "$deviceId")), |
| | | new Document("$count", "uniqueDeviceIds") |
| | | ); |
| | | // 执行聚合查询并获取结果 |
| | | AggregateIterable<Document> result = collection.aggregate(pipeline); |
| | | Integer uniqueDeviceIdCount = 0; |
| | | for (Document doc : result) { |
| | | uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds"); |
| | | break; // 不需要继续遍历,因为 $count 只会产生一个结果 |
| | | } |
| | | Date now = new Date(); |
| | | List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper()) |
| | | .select(CheckIndexVideo::getMinistrySiteOnline) |
| | |
| | | onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)); |
| | | } |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | map.put("count", Arrays.asList(uniqueDeviceIdCount + "", this.remove0(onlineRate))); |
| | | map.put("list", resultList); |
| | | return Result.ok().data(map).total(total); |
| | | map.put("count", Arrays.asList(distinctCount + "", this.remove0(onlineRate))); |
| | | map.put("list", page.getRecords()); |
| | | return Result.ok().data(map).total(page.getTotal()); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Override |
| | | public Result videoImportantPointOnlineRate(DataCenterQuery params) { |
| | | List<String> likeFileds = Arrays.asList("arealayerName", "ipAddr", "deviceName", "deviceId"); |
| | | Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, 3); |
| | | params.setDeptTag(3); |
| | | params.setDeviceType(1); |
| | | IPage<PointDetailVO> page = PageUtil.getPage(params, PointDetailVO.class); |
| | | pointMapper.dataCenterPage(page, params); |
| | | |
| | | long total = mongoTemplate.count(query, VideoOnlineResult.class); |
| | | MongoUtil.setPage(query, params, TIME_FIELD); |
| | | List<VideoOnlineResult> resultList = mongoTemplate.find(query, VideoOnlineResult.class); |
| | | |
| | | // 统计数量 |
| | | MongoDatabase database = mongoTemplate.getDb(); |
| | | MongoCollection<Document> collection = database.getCollection("uy_online"); |
| | | |
| | | List<Document> dList = new ArrayList<>(2); |
| | | dList.add(new Document("importantTag", new Document("$eq", Boolean.TRUE))); |
| | | if (params.getDataType().equals(1)) { |
| | | dList.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE))); |
| | | } |
| | | Document filter = new Document("$and", dList); |
| | | // 构建聚合管道 |
| | | List<Document> pipeline = Arrays.asList( |
| | | new Document("$match", filter), |
| | | // $group 去重 |
| | | new Document("$group", new Document("_id", "$deviceId")), |
| | | new Document("$count", "uniqueDeviceIds") |
| | | ); |
| | | // 执行聚合查询并获取结果 |
| | | AggregateIterable<Document> result = collection.aggregate(pipeline); |
| | | Integer uniqueDeviceIdCount = 0; |
| | | for (Document doc : result) { |
| | | uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds"); |
| | | break; // 不需要继续遍历,因为 $count 只会产生一个结果 |
| | | } |
| | | // 统计设备数量 |
| | | Integer distinctCount = pointMapper.distinctCount(params); |
| | | |
| | | Date now = new Date(); |
| | | List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper()) |
| | |
| | | onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)); |
| | | } |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | map.put("count", Arrays.asList(uniqueDeviceIdCount + "", this.remove0(onlineRate))); |
| | | map.put("list", resultList); |
| | | return Result.ok().data(map).total(total); |
| | | map.put("count", Arrays.asList(distinctCount + "", this.remove0(onlineRate))); |
| | | map.put("list", page.getRecords()); |
| | | return Result.ok().data(map).total(page.getTotal()); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Override |
| | | public Result videoImportantPointImageOnlineRate(DataCenterQuery params) { |
| | | List<String> likeFileds = Arrays.asList("arealayerName", "ipAddr", "deviceName", "deviceId"); |
| | | Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, 4); |
| | | params.setDeptTag(4); |
| | | params.setDeviceType(1); |
| | | IPage<PointDetailVO> page = PageUtil.getPage(params, PointDetailVO.class); |
| | | pointMapper.dataCenterPage(page, params); |
| | | |
| | | long total = mongoTemplate.count(query, VideoOnlineResult.class); |
| | | MongoUtil.setPage(query, params, TIME_FIELD); |
| | | List<VideoOnlineResult> resultList = mongoTemplate.find(query, VideoOnlineResult.class); |
| | | |
| | | // 统计数量 |
| | | MongoDatabase database = mongoTemplate.getDb(); |
| | | MongoCollection<Document> collection = database.getCollection("uy_online"); |
| | | |
| | | List<Document> dList = new ArrayList<>(2); |
| | | dList.add(new Document("importantCommandImageTag", new Document("$eq", Boolean.TRUE))); |
| | | if (params.getDataType().equals(1)) { |
| | | dList.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE))); |
| | | } |
| | | Document filter = new Document("$and", dList); |
| | | // 构建聚合管道 |
| | | List<Document> pipeline = Arrays.asList( |
| | | new Document("$match", filter), |
| | | // $group 去重 |
| | | new Document("$group", new Document("_id", "$deviceId")), |
| | | new Document("$count", "uniqueDeviceIds") |
| | | ); |
| | | // 执行聚合查询并获取结果 |
| | | AggregateIterable<Document> result = collection.aggregate(pipeline); |
| | | Integer uniqueDeviceIdCount = 0; |
| | | for (Document doc : result) { |
| | | uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds"); |
| | | break; // 不需要继续遍历,因为 $count 只会产生一个结果 |
| | | } |
| | | // 统计设备数量 |
| | | Integer distinctCount = pointMapper.distinctCount(params); |
| | | |
| | | Date now = new Date(); |
| | | List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper()) |
| | |
| | | onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)); |
| | | } |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | map.put("count", Arrays.asList(uniqueDeviceIdCount + "", this.remove0(onlineRate))); |
| | | map.put("list", resultList); |
| | | return Result.ok().data(map).total(total); |
| | | map.put("count", Arrays.asList(distinctCount + "", this.remove0(onlineRate))); |
| | | map.put("list", page.getRecords()); |
| | | return Result.ok().data(map).total(page.getTotal()); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Override |
| | | public Result vehiclePointOnlineRate(DataCenterQuery params) { |
| | | List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName"); |
| | | Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null); |
| | | params.setDeptTag(-1); |
| | | params.setDeviceType(2); |
| | | IPage<PointDetailVO> page = PageUtil.getPage(params, PointDetailVO.class); |
| | | pointMapper.dataCenterPage(page, params); |
| | | |
| | | long total = mongoTemplate.count(query, SnapshotDataMonitorResult.class); |
| | | MongoUtil.setPage(query, params, TIME_FIELD); |
| | | List<SnapshotDataMonitorResult> resultList = mongoTemplate.find(query, SnapshotDataMonitorResult.class); |
| | | |
| | | // 统计数量 |
| | | MongoDatabase database = mongoTemplate.getDb(); |
| | | MongoCollection<Document> collection = database.getCollection("hk_snapshot_data_monitor"); |
| | | long distinctCount = collection.distinct("externalIndexCode", String.class).into(new ArrayList<>()).size(); |
| | | // 统计设备数量 |
| | | Integer distinctCount = pointMapper.distinctCount(params); |
| | | |
| | | Date now = new Date(); |
| | | List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper()) |
| | |
| | | } |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | map.put("count", Arrays.asList(distinctCount + "", this.remove0(onlineRate))); |
| | | map.put("list", resultList); |
| | | return Result.ok().data(map).total(total); |
| | | map.put("list", page.getRecords()); |
| | | return Result.ok().data(map).total(page.getTotal()); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Override |
| | | public Result facePointOnlineRate(DataCenterQuery params) { |
| | | List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName"); |
| | | Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null); |
| | | params.setDeptTag(-1); |
| | | params.setDeviceType(3); |
| | | IPage<PointDetailVO> page = PageUtil.getPage(params, PointDetailVO.class); |
| | | pointMapper.dataCenterPage(page, params); |
| | | |
| | | long total = mongoTemplate.count(query, SnapshotDataMonitorResult.class); |
| | | MongoUtil.setPage(query, params, TIME_FIELD); |
| | | List<SnapshotDataMonitorResult> resultList = mongoTemplate.find(query, SnapshotDataMonitorResult.class); |
| | | |
| | | // 统计数量 |
| | | MongoDatabase database = mongoTemplate.getDb(); |
| | | MongoCollection<Document> collection = database.getCollection("hk_snapshot_data_monitor"); |
| | | |
| | | List<Document> dList1 = new ArrayList<>(2); |
| | | dList1.add(new Document("resultType", new Document("$eq", 1))); |
| | | if (params.getDataType().equals(1)) { |
| | | dList1.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE))); |
| | | } |
| | | List<Document> dList2 = new ArrayList<>(2); |
| | | dList2.add(new Document("resultType", new Document("$eq", 2))); |
| | | if (params.getDataType().equals(1)) { |
| | | dList2.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE))); |
| | | } |
| | | List<Document> dList3 = new ArrayList<>(2); |
| | | dList3.add(new Document("resultType", new Document("$eq", 3))); |
| | | if (params.getDataType().equals(1)) { |
| | | dList3.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE))); |
| | | } |
| | | List<Document> dList4 = new ArrayList<>(2); |
| | | dList4.add(new Document("resultType", new Document("$eq", 4))); |
| | | if (params.getDataType().equals(1)) { |
| | | dList4.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE))); |
| | | } |
| | | Document normalFilter = new Document("$and", dList1); |
| | | Document noDataFilter = new Document("$and", dList2); |
| | | Document trFilter = new Document("$and", dList3); |
| | | Document littleFilter = new Document("$and", dList4); |
| | | List<Document> lists = Arrays.asList(normalFilter, noDataFilter, trFilter, littleFilter); |
| | | List<String> rList = lists.stream().map(filter -> { |
| | | // 构建聚合管道 |
| | | List<Document> pipeline = Arrays.asList( |
| | | new Document("$match", filter), |
| | | // $group 去重 |
| | | new Document("$group", new Document("_id", "$externalIndexCode")), |
| | | new Document("$count", "uniqueDeviceIds") |
| | | ); |
| | | // 执行聚合查询并获取结果 |
| | | AggregateIterable<Document> result = collection.aggregate(pipeline); |
| | | Integer uniqueDeviceIdCount = 0; |
| | | for (Document doc : result) { |
| | | uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds"); |
| | | break; // 不需要继续遍历,因为 $count 只会产生一个结果 |
| | | } |
| | | return uniqueDeviceIdCount + ""; |
| | | }).collect(Collectors.toList()); |
| | | // 统计设备数量 |
| | | Integer distinctCount = pointMapper.distinctCount(params); |
| | | |
| | | Date now = new Date(); |
| | | List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper()) |
| | |
| | | BigDecimal count = BigDecimal.valueOf(videoList.size()); |
| | | onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)); |
| | | } |
| | | List<String> rList = new ArrayList<>(2); |
| | | rList.add(distinctCount + ""); |
| | | rList.add(this.remove0(onlineRate)); |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | map.put("count", rList); |
| | | map.put("list", resultList); |
| | | return Result.ok().data(map).total(total); |
| | | map.put("list", page.getRecords()); |
| | | return Result.ok().data(map).total(page.getTotal()); |
| | | } |
| | | |
| | | /** |