jinpengyong
2022-04-08 fdbef2a3293e536be6b119e4e1e67cc8cc9842f0
screen-job/src/main/java/com/moral/api/service/impl/CityAqiYearlyServiceImpl.java
@@ -77,8 +77,8 @@
        //获取所有城市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) {
@@ -91,11 +91,14 @@
        //上年数据
        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<>();
@@ -135,10 +138,9 @@
            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);