| | |
| | | |
| | | private static DecimalFormat DF = new DecimalFormat("#.####"); |
| | | |
| | | |
| | | |
| | | public Map<String,List<DynamicColumnVO>> getDynamicByConditions(DataCenterQuery params,List<DynamicColumnVO> list){ |
| | | //获得到对应id,且包含传入字符串 动态列集合 |
| | | List<DynamicColumnVO> likeFieldDynamicColumnVOList = list.stream() |
| | | .filter(dynamicColumnVO -> |
| | | dynamicColumnVO.getLabelId().equals(params.getDyId()) && |
| | | dynamicColumnVO.getColumnValue().contains(params.getDyValue()) |
| | | ).collect(Collectors.toList()); |
| | | //获得满足条件的id集合 |
| | | 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); |
| | | //移除掉不符合条件的key |
| | | groupByRefStringIdMap.keySet().retainAll(removeSet); |
| | | |
| | | return groupByRefStringIdMap; |
| | | } |
| | | |
| | | @Override |
| | | 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())); |
| | | } |
| | | MongoUtil.setNoPage(query, params, TIME_FIELD); |
| | | List<RecordMetaDSumResult> resultList = mongoTemplate.find(query, RecordMetaDSumResult.class); |
| | | //翻译行政区域 |
| | | resultList.forEach(item -> { |
| | |
| | | AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromCode(areaCode); |
| | | if (areaDeptEnum != null) item.setArealayername(areaDeptEnum.getName()); |
| | | }); |
| | | //获得动态列数据 |
| | | List<DynamicColumnVO> dynamicColumnVOList = dynamicColumnMapper.getDynamicColumnByTableName(TableNameConstants.COLUMN_NAME_VIDEO); |
| | | Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = dynamicColumnVOList.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId)); |
| | | |
| | | //判断是否有查询条件 |
| | | 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); |
| | |
| | | headersList.addAll(dynamicsHeaders); |
| | | headers.addAll(headersList); |
| | | } |
| | | SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); |
| | | SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | |
| | | // SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); |
| | | //查询到有动态列查询条件 |
| | | //获得对应动态列中ref的对象id 与 查询结果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(dateFormat2.format(result.getCreateTime())); |
| | | 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(dateFormat2.format(result.getCreateTime())); |
| | | row.add(dateFormat.format(result.getCreateTime())); |
| | | //添加动态列数据 |
| | | for (String header : headersList){ |
| | | boolean flag = false; |
| | |
| | | item.setOffLineTimeStr(offLineTime); |
| | | } |
| | | }); |
| | | |
| | | |
| | | |
| | | List<DynamicColumnVO> dynamicColumnVOList = dynamicColumnMapper.getDynamicColumnByTableName(TableNameConstants.COLUMN_NAME_FACE_POINT); |
| | | Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = dynamicColumnVOList.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId)); |
| | | |
| | | |
| | | //判断是否有查询条件 |
| | | 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); |
| | |
| | | //使用链表保证后续补充数据时获取数据顺序一致 |
| | | 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<>(); |
| | |
| | | } |
| | | }); |
| | | List<DynamicColumnVO> dynamicColumnVOList = dynamicColumnMapper.getDynamicColumnByTableName(TableNameConstants.COLUMN_NAME_VIDEO_POINT); |
| | | Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = dynamicColumnVOList.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId)); |
| | | //判断是否有查询条件 |
| | | 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); |
| | |
| | | //使用链表保证后续补充数据时获取数据顺序一致 |
| | | 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<>(); |
| | |
| | | } |
| | | }); |
| | | List<DynamicColumnVO> dynamicColumnVOList = dynamicColumnMapper.getDynamicColumnByTableName(TableNameConstants.COLUMN_NAME_CAR_POINT); |
| | | Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = dynamicColumnVOList.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId)); |
| | | //判断是否有查询条件 |
| | | 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); |
| | |
| | | //使用链表保证后续补充数据时获取数据顺序一致 |
| | | 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<>(); |
| | |
| | | */ |
| | | @Override |
| | | public Result videoAvailabilityRate(DataCenterQuery params) { |
| | | |
| | | |
| | | |
| | | |
| | | List<String> likeFileds = Arrays.asList("deviceId", "deviceName"); |
| | | Query query = MongoUtil.getQuery(params, "createTime", likeFileds, null); |