From 373c036205c6d8ac3871857da7b3c7a44e384086 Mon Sep 17 00:00:00 2001 From: jinpengyong <jpy123456> Date: Wed, 30 Aug 2023 16:22:13 +0800 Subject: [PATCH] Merge branch 'dev' of http://blit.7drlb.com:8888/r/moral into wb --- screen-job/src/main/java/com/moral/api/service/impl/CityAqiYearlyServiceImpl.java | 41 +++++++++++++++++++++++++++++------------ 1 files changed, 29 insertions(+), 12 deletions(-) diff --git a/screen-job/src/main/java/com/moral/api/service/impl/CityAqiYearlyServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/CityAqiYearlyServiceImpl.java index cdda6d5..92736ee 100644 --- a/screen-job/src/main/java/com/moral/api/service/impl/CityAqiYearlyServiceImpl.java +++ b/screen-job/src/main/java/com/moral/api/service/impl/CityAqiYearlyServiceImpl.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.moral.api.entity.CityAqiDaily; import com.moral.api.entity.CityAqiYearly; import com.moral.api.mapper.CityAqiYearlyMapper; @@ -18,7 +19,6 @@ import java.text.DecimalFormat; import java.util.ArrayList; -import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -59,12 +59,26 @@ //���������������������1��� Date end = DateUtils.getDate(DateUtils.getDateAddYear(DateUtils.dateToDateString(start, DateUtils.yyyy), 1), DateUtils.yyyy); + //���������1���1��������������������������� + //������1���1��������������������������������������������������������� + String monthAndDay = DateUtils.dateToDateString(new Date(), DateUtils.MM_dd_EN); + UpdateWrapper<CityAqiYearly> cityAqiYearlyUpdateWrapper = new UpdateWrapper<>(); + if ("01-01".equals(monthAndDay)) { + cityAqiYearlyUpdateWrapper.eq("time", start); + } else { + start = end; + end = DateUtils.getDate(DateUtils.getDateAddYear(DateUtils.dateToDateString(start, DateUtils.yyyy), 1), DateUtils.yyyy); + lastLastYear = DateUtils.getDate(DateUtils.getDateAddYear(DateUtils.dateToDateString(start, DateUtils.yyyy), -1), DateUtils.yyyy); + cityAqiYearlyUpdateWrapper.eq("time", start); + } + cityAqiYearlyMapper.delete(cityAqiYearlyUpdateWrapper); + //������������������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) { @@ -77,19 +91,23 @@ //������������ 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<>(); + Date finalStart = start; data.forEach((cityCode, value) -> { CityAqiYearly cityAqiYearly = new CityAqiYearly(); Map<String, Object> jsonMap = new HashMap<>(); cityAqiYearly.setCityCode(Integer.parseInt(cityCode)); - cityAqiYearly.setTime(start); + cityAqiYearly.setTime(finalStart); //PM2.5 Double pm25Avg = AmendUtils.getAvgOfYear(value, "PM2_5"); @@ -120,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); -- Gitblit v1.8.0