| | |
| | | } |
| | | } |
| | | List<String> deviceIds = tMonitorResults.stream().map(BaseResult::getNo).collect(Collectors.toList()); |
| | | Query query = getQuery(deviceIds, exportForm.getMonth()); |
| | | // 将年月字符串解析为YearMonth对象 |
| | | YearMonth yearMonth = YearMonth.parse(exportForm.getMonth()); |
| | | // 获取当月的第一天 |
| | | LocalDate start = yearMonth.atDay(1); |
| | | // 获取下个月的第一天(通过加上1个月并设置日为1) |
| | | YearMonth nextMonth = yearMonth.plusMonths(1); |
| | | LocalDate end = nextMonth.atDay(1); |
| | | //获取这个月份的部门数据,录像由于是前一天的所以不用createTime字段 |
| | | Query query = new Query(Criteria.where("statTime").gte(start).lt(end)); |
| | | query.addCriteria(Criteria.where("no").in(deviceIds)); |
| | | //月份每日录像线数据 |
| | | List<RecordMetaDSumResult> recordResult = mongoTemplate.find(query, RecordMetaDSumResult.class); |
| | | //全量表 |
| | |
| | | } |
| | | } |
| | | List<String> deviceIds = tMonitorResults.stream().map(BaseResult::getNo).collect(Collectors.toList()); |
| | | Query query = getQuery(deviceIds, exportForm.getMonth()); |
| | | // 将年月字符串解析为YearMonth对象 |
| | | YearMonth yearMonth = YearMonth.parse(exportForm.getMonth()); |
| | | // 获取当月的第一天 |
| | | LocalDate start = yearMonth.atDay(1); |
| | | // 获取下个月的第一天(通过加上1个月并设置日为1) |
| | | YearMonth nextMonth = yearMonth.plusMonths(1); |
| | | LocalDate end = nextMonth.atDay(1); |
| | | //获取这个月份的部门数据,录像由于是前一天的所以不用createTime字段 |
| | | Query query = new Query(Criteria.where("statTime").gte(start).lt(end)); |
| | | query.addCriteria(Criteria.where("no").in(deviceIds)); |
| | | //月份每日录像线数据 |
| | | List<RecordMetaDSumResult> recordResult = mongoTemplate.find(query, RecordMetaDSumResult.class); |
| | | //全量表 |
| | |
| | | MongoDatabase database = mongoTemplate.getDb(); |
| | | MongoCollection<Document> collection = database.getCollection("uy_record_meta_d_sum"); |
| | | Integer examineTag = monitorQuery.getExamineTag(); |
| | | Document matchConditions = new Document("mongoCreateTime", new Document("$gte", startDate).append("$lte", endDate)); |
| | | Document matchConditions = new Document("statTime", new Document("$gte", startDate).append("$lte", endDate)); |
| | | // 根据examineTag的值动态添加额外的条件 |
| | | if (examineTag != null && examineTag.equals(1)) { |
| | | matchConditions.append("provinceTag", true); |
| | |
| | | // 构建聚合管道 |
| | | List<Document> pipeline = Arrays.asList( |
| | | new Document("$match", matchConditions), |
| | | new Document("$group", new Document("_id", "$mongoCreateTime") |
| | | new Document("$group", new Document("_id", "$statTime") |
| | | .append("normalCount", new Document("$sum", |
| | | new Document("$cond", Arrays.asList( |
| | | new Document("$eq", Arrays.asList("$recordStatus", 1)), |
| | |
| | | String type = car.replaceAll("3", "人脸"); |
| | | monitor.setCameraFunType(type); |
| | | } |
| | | StringBuilder tag = new StringBuilder("" + (monitor.getProvinceTag() ? "省厅、" : "") + (monitor.getImportantTag() ? "重点点位、" : "") + (monitor.getImportantCommandImageTag() ? "重点指挥图像、" : "") + (monitor.getDeptTag() ? "部级、" : "")); |
| | | StringBuilder tag = new StringBuilder("" + (monitor.getProvinceTagVideo() ? "省厅视频、" : "") + (monitor.getProvinceTagCar() ? "省厅车辆、" : "")+ (monitor.getProvinceTagFace() ? "省厅人脸、" : "")+ (monitor.getImportantTag() ? "重点点位、" : "") + (monitor.getImportantCommandImageTag() ? "重点指挥图像、" : "") + (monitor.getDeptTag() ? "部级、" : "")); |
| | | //动态列处理加在标签里 |
| | | if (!CollectionUtils.isEmpty(monitor.getDynamicColumnList())) { |
| | | List<DynamicColumnVO> dynamicColumnList = monitor.getDynamicColumnList(); |
| | |
| | | monitor.setTag(tag.toString()); |
| | | }); |
| | | ExcelUtil<TMonitorExp> util = new ExcelUtil<>(TMonitorExp.class); |
| | | util.exportExcel(response, monitors, "2".equals(tMonitor.getCameraFunType()) ? "车辆" : "人脸"); |
| | | String sheetName = ""; |
| | | if("1".equals(tMonitor.getCameraFunType())){ |
| | | sheetName = "视频"; |
| | | }else if("2".equals(tMonitor.getCameraFunType())){ |
| | | sheetName = "车辆"; |
| | | }else if("3".equals(tMonitor.getCameraFunType())){ |
| | | sheetName = "人脸"; |
| | | } |
| | | util.exportExcel(response, monitors,sheetName); |
| | | } |
| | | |
| | | |
| | |
| | | results.add(homecarVO); |
| | | } |
| | | |
| | | //TODO:在线修改,需要把检测海康优云检测的结果存入mongo,mongo查点位在线 |
| | | MongoCollection<Document> onlineCollection = database.getCollection("t_monitor_online"); |
| | | // 构建基本的$match条件 |
| | | List<Document> onlineMatch = new ArrayList<>(); |
| | |
| | | Map<String, Object> resultMap = new HashMap<>(); |
| | | //按时间排序 |
| | | results = results.stream().sorted(Comparator.comparing(BaseHomeVO::getCreateDate)).collect(Collectors.toList()); |
| | | int snapCount = 0; |
| | | for (HomeCarVO vo : results) { |
| | | if (vo.getSnapCount() != null) { |
| | | snapCount += vo.getSnapCount(); |
| | | //如果是默认或累和则进行累和以及获取基准线 |
| | | if(monitorQuery.getCategory() == null || monitorQuery.getCategory().equals(1)) { |
| | | int snapCount = 0; |
| | | for (HomeCarVO vo : results) { |
| | | if (vo.getSnapCount() != null) { |
| | | snapCount += vo.getSnapCount(); |
| | | } |
| | | vo.setSnapCount(snapCount); |
| | | } |
| | | vo.setSnapCount(snapCount); |
| | | //从字典获取基准线 |
| | | List<SysDictData> baseLines = dictDataMapper.selectDictDataByType("home_baseLine"); |
| | | String condition; |
| | | if (examineTag != null && examineTag == 1) { |
| | | condition = "car_province_baseLine"; |
| | | } else if (examineTag != null && examineTag == 2) { |
| | | condition = "car_dept_baseLine"; |
| | | } else { |
| | | condition = "car_all_baseLine"; |
| | | } |
| | | |
| | | Optional<SysDictData> first = baseLines.stream().filter(sysDictData -> condition.equals(sysDictData.getDictLabel())).findFirst(); |
| | | if (first.isPresent()) { |
| | | SysDictData sysDictData = first.get(); |
| | | resultMap.put("baseLine", Integer.valueOf(sysDictData.getDictValue())); |
| | | } |
| | | } |
| | | resultMap.put("list", results); |
| | | //从字典获取基准线 |
| | | List<SysDictData> baseLines = dictDataMapper.selectDictDataByType("home_baseLine"); |
| | | String condition; |
| | | if (examineTag != null && examineTag == 1) { |
| | | condition = "car_province_baseLine"; |
| | | } else if (examineTag != null && examineTag == 2) { |
| | | condition = "car_dept_baseLine"; |
| | | } else { |
| | | condition = "car_all_baseLine"; |
| | | } |
| | | |
| | | Optional<SysDictData> first = baseLines.stream().filter(sysDictData -> condition.equals(sysDictData.getDictLabel())).findFirst(); |
| | | if (first.isPresent()) { |
| | | SysDictData sysDictData = first.get(); |
| | | resultMap.put("baseLine", Integer.valueOf(sysDictData.getDictValue())); |
| | | } |
| | | return resultMap; |
| | | } |
| | | |
| | |
| | | HomeFaceVO vo = findOrCreateVO(doc, results, HomeFaceVO.class); |
| | | vo.setOnline(doc.getInteger("onlineCount")); |
| | | } |
| | | Map<String, Object> resultMap = new HashMap<>(); |
| | | //按时间排序 |
| | | results = results.stream().sorted(Comparator.comparing(BaseHomeVO::getCreateDate)).collect(Collectors.toList()); |
| | | int snapCount = 0; |
| | | for (HomeFaceVO vo : results) { |
| | | if (vo.getSnapCount() != null) { |
| | | snapCount += vo.getSnapCount(); |
| | | //如果是默认或累和则进行累和以及获取基准线 |
| | | if(monitorQuery.getCategory() == null || monitorQuery.getCategory().equals(1)) { |
| | | int snapCount = 0; |
| | | for (HomeFaceVO vo : results) { |
| | | if (vo.getSnapCount() != null) { |
| | | snapCount += vo.getSnapCount(); |
| | | } |
| | | vo.setSnapCount(snapCount); |
| | | } |
| | | vo.setSnapCount(snapCount); |
| | | //从字典获取基准线 |
| | | List<SysDictData> baseLines = dictDataMapper.selectDictDataByType("home_baseLine"); |
| | | String condition; |
| | | if (examineTag != null && examineTag == 1) { |
| | | condition = "face_province_baseLine"; |
| | | } else if (examineTag != null && examineTag == 2) { |
| | | condition = "face_dept_baseLine"; |
| | | } else { |
| | | condition = "face_all_baseLine"; |
| | | } |
| | | Optional<SysDictData> first = baseLines.stream().filter(sysDictData -> condition.equals(sysDictData.getDictLabel())).findFirst(); |
| | | if (first.isPresent()) { |
| | | SysDictData sysDictData = first.get(); |
| | | resultMap.put("baseLine", Integer.valueOf(sysDictData.getDictValue())); |
| | | } |
| | | } |
| | | Map<String, Object> resultMap = new HashMap<>(); |
| | | resultMap.put("list", results); |
| | | //从字典获取基准线 |
| | | List<SysDictData> baseLines = dictDataMapper.selectDictDataByType("home_baseLine"); |
| | | String condition; |
| | | if (examineTag != null && examineTag == 1) { |
| | | condition = "face_province_baseLine"; |
| | | } else if (examineTag != null && examineTag == 2) { |
| | | condition = "face_dept_baseLine"; |
| | | } else { |
| | | condition = "face_all_baseLine"; |
| | | } |
| | | Optional<SysDictData> first = baseLines.stream().filter(sysDictData -> condition.equals(sysDictData.getDictLabel())).findFirst(); |
| | | if (first.isPresent()) { |
| | | SysDictData sysDictData = first.get(); |
| | | resultMap.put("baseLine", Integer.valueOf(sysDictData.getDictValue())); |
| | | } |
| | | return resultMap; |
| | | } |
| | | |
| | |
| | | //一个设备当月在线情况 |
| | | List<RecordMetaDSumResult> recordResults = records.stream().filter(online -> online.getNo().equals(result.getNo())).collect(Collectors.toList()); |
| | | for (RecordMetaDSumResult recordResult : recordResults) { |
| | | int dayOfMonth = recordResult.getMongoCreateTime().getDayOfMonth(); |
| | | int dayOfMonth = DateUtils.getDayOfMonth(recordResult.getStatTime()); |
| | | Integer status = recordResult.getRecordStatus(); |
| | | String text = ""; |
| | | if (ApiConstants.UY_RecordStatus_Interval.equals(status)) { |
| | |
| | | //一个设备当月在线情况 |
| | | List<RecordMetaDSumResult> recordResults = records.stream().filter(online -> online.getNo().equals(result.getNo())).collect(Collectors.toList()); |
| | | for (RecordMetaDSumResult recordResult : recordResults) { |
| | | int dayOfMonth = recordResult.getMongoCreateTime().getDayOfMonth(); |
| | | int dayOfMonth = DateUtils.getDayOfMonth(recordResult.getStatTime()); |
| | | //反射赋值,字段统一定义为day+1,2,3... |
| | | Field field = videoDailyExp.getClass().getDeclaredField("day" + dayOfMonth); |
| | | field.setAccessible(true); |