for (String groupid : groupIds) { Long groupId1 = Long.valueOf(groupid); List<HkEquipment> hkEquipments = hkEquipmentRepository.findAllByAppIdAndShopIdAndGroupId(appId, shopId, groupId1); if (hkEquipments.isEmpty()) { throw new CustomException("该分组没有设备"); } List<String> cameraUuids = hkEquipments.stream().map(HkEquipment::getCameraUuid).toList(); List<PassengerFlowMonth> yearList = passengerFlowMonthRepository.findAllByAppIdAndShopIdAndCountMonthBetweenAndCameraUuidIn(appId, shopId, Stime, Etime, cameraUuids); Map<String, Integer> groupData = yearList.stream() .collect(Collectors.groupingBy( item -> item.getCountMonth().toString().substring(0, 4), Collectors.summingInt(item -> Math.toIntExact(item.getInNum())) )); ArrayList<Map<String, Object>> list = new ArrayList<>(); TreeMap<String, Integer> paramTreeMap = new TreeMap<>(groupData); paramTreeMap.forEach((K, V) -> { Map<String, Object> hash = new HashMap<>(); hash.put("time", K); hash.put("count", V); list.add(hash); }); for (Map<String, Object> stringObjectMap : list1) { for (Map<String, Object> objectMap : list) { if (stringObjectMap.get("time").toString().equals(objectMap.get("time").toString())) { stringObjectMap.put("count", objectMap.get("count")); } } } }第二次循环groupId的时候list1里的key相同 value以,方式隔开
时间: 2024-02-14 17:21:18 浏览: 117
这段代码中包含了对一组设备的数据进行处理的逻辑。首先根据给定的appId、shopId和groupId找到对应的设备列表hkEquipments,如果列表为空则抛出异常。然后从hkEquipments中提取出所有的cameraUuid,用这些uuid从数据库中查询符合条件的记录yearList。对yearList进行分组,将每年的数据统计出来,存放在groupData中,最后将groupData中的数据按时间排序,存放在list中。接下来的循环中,将list中的统计数据和list1中的原始数据进行比较,如果时间相同则将统计数据中的count值赋给list1中的count值。至于“以,方式隔开”的部分,可能需要更多的上下文信息才能理解。
阅读全文