|  |  | 
 |  |  |         //获取所有城市aqi日数据 | 
 |  |  |         QueryWrapper<CityAqiDaily> wrapper = new QueryWrapper<>(); | 
 |  |  |         wrapper.select("city_code", "time", "value") | 
 |  |  |                 .ge("time", DateUtils.dateToDateString(start)) | 
 |  |  |                 .lt("time", DateUtils.dateToDateString(end)); | 
 |  |  |                 .ge("time", start) | 
 |  |  |                 .lt("time", end); | 
 |  |  |         List<Map<String, Object>> monthlyData = cityAqiDailyService.listMaps(wrapper); | 
 |  |  |  | 
 |  |  |         if (monthlyData.size() == 0) { | 
 |  |  | 
 |  |  |         //上年数据 | 
 |  |  |         QueryWrapper<CityAqiYearly> queryWrapper = new QueryWrapper<>(); | 
 |  |  |         queryWrapper.select("city_code", "value") | 
 |  |  |                 .eq("time", DateUtils.dateToDateString(lastLastYear)); | 
 |  |  |                 .eq("time", lastLastYear); | 
 |  |  |         //获取上年数据 | 
 |  |  |         List<CityAqiYearly> lastCityAqiYearly = cityAqiYearlyMapper.selectList(queryWrapper); | 
 |  |  |         Map<Integer, List<CityAqiYearly>> lastYearData = lastCityAqiYearly.stream() | 
 |  |  |                 .collect(Collectors.groupingBy(CityAqiYearly::getCityCode)); | 
 |  |  |         List<CityAqiYearly> lastCityAqiYearlyList = cityAqiYearlyMapper.selectList(queryWrapper); | 
 |  |  |         Map<Integer, CityAqiYearly> lastYearData = new HashMap<>(); | 
 |  |  |         for (CityAqiYearly cityAqiYearly : lastCityAqiYearlyList) { | 
 |  |  |             lastYearData.put(cityAqiYearly.getCityCode(), cityAqiYearly); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         List<CityAqiYearly> cityAqiYearlyList = new ArrayList<>(); | 
 |  |  |  | 
 |  |  | 
 |  |  |             jsonMap.put("compositeIndex", compositeIndex); | 
 |  |  |  | 
 |  |  |             //上年数据同本年对比 | 
 |  |  |             List<CityAqiYearly> cityAqiYearlies = lastYearData.get(Integer.parseInt(cityCode)); | 
 |  |  |             if (!ObjectUtils.isEmpty(cityAqiYearlies)) { | 
 |  |  |                 CityAqiYearly yearly = cityAqiYearlies.get(0); | 
 |  |  |                 Map<String, Object> map = JSONObject.parseObject(yearly.getValue(), Map.class); | 
 |  |  |             CityAqiYearly lastCityAqiYearly = lastYearData.get(Integer.parseInt(cityCode)); | 
 |  |  |             if (lastCityAqiYearly != null) { | 
 |  |  |                 Map<String, Object> map = JSONObject.parseObject(lastCityAqiYearly.getValue(), Map.class); | 
 |  |  |                 double lastCompositeIndex = Double.parseDouble(map.get("compositeIndex").toString()); | 
 |  |  |                 DecimalFormat decimalFormat = new DecimalFormat("0.00%"); | 
 |  |  |                 String format = decimalFormat.format((compositeIndex - lastCompositeIndex) / lastCompositeIndex); |