From 6716f456e8e01ea50ef26c71cc6c81b54c6573a9 Mon Sep 17 00:00:00 2001 From: kaiyu <404897439@qq.com> Date: Fri, 11 Feb 2022 14:27:42 +0800 Subject: [PATCH] screen-api 修改优良天气变化率分析单位 --- screen-api/src/main/java/com/moral/api/service/impl/CityAqiDailyServiceImpl.java | 153 +++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 111 insertions(+), 42 deletions(-) diff --git a/screen-api/src/main/java/com/moral/api/service/impl/CityAqiDailyServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/CityAqiDailyServiceImpl.java index 44e67e4..2ef07d2 100644 --- a/screen-api/src/main/java/com/moral/api/service/impl/CityAqiDailyServiceImpl.java +++ b/screen-api/src/main/java/com/moral/api/service/impl/CityAqiDailyServiceImpl.java @@ -3,20 +3,23 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.moral.api.config.properties.SpecialCitiesProperties; import com.moral.api.entity.CityAqiDaily; import com.moral.api.entity.SysArea; import com.moral.api.mapper.CityAqiDailyMapper; import com.moral.api.pojo.dto.cityAQI.CityPollutionLevel; import com.moral.api.pojo.dto.cityAQI.MonthlyPollutionLevel; import com.moral.api.pojo.dto.cityAQI.PollutionDaysAndProportion; -import com.moral.api.pojo.form.aqi.AreaPollutionLevelForm; +import com.moral.api.pojo.form.aqi.*; import com.moral.api.pojo.vo.cityAQI.PieChartOfPollutionLevelVO; -import com.moral.api.pojo.form.aqi.ChartOfPollutionLevelForm; import com.moral.api.service.CityAqiDailyService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.moral.api.service.CityAqiMonthlyService; +import com.moral.api.service.CityAqiYearlyService; import com.moral.api.service.SysAreaService; import com.moral.constant.Constants; import com.moral.util.AQIUtils; +import com.moral.util.ComprehensiveIndexUtils; import com.moral.util.DateUtils; import com.moral.util.MathUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -41,6 +44,16 @@ CityAqiDailyMapper cityAqiDailyMapper; @Autowired SysAreaService sysAreaService; + @Autowired + SpecialCitiesProperties specialCitiesProperties; + + @Override + public List<CityAqiDaily> getCityAqiDailyByRegionCodeAndTime(Integer regionCode, Date startDate, Date endDate) { + QueryWrapper<CityAqiDaily> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("city_code",regionCode); + queryWrapper.between("time",startDate,endDate); + return cityAqiDailyMapper.selectList(queryWrapper); + } @Override public PieChartOfPollutionLevelVO queryPieChartOfPollutionLevels(ChartOfPollutionLevelForm form) { @@ -283,6 +296,7 @@ return resultMap; } + @Override public List<CityPollutionLevel> queryAreaPollutionLevel(AreaPollutionLevelForm form) { //������ @@ -295,49 +309,104 @@ List<CityPollutionLevel> datas = new ArrayList<>(); //��������������������� ������������ for (SysArea area : allAreas) { - //������������ - QueryWrapper<CityAqiDaily> wrapper = new QueryWrapper<>(); - wrapper.eq("city_code", area.getAreaCode()); - wrapper.between("time", startDate, endDate); - wrapper.orderByAsc("time"); - List<CityAqiDaily> cityAqiDailies = cityAqiDailyMapper.selectList(wrapper); - //��������������������������������������� - Map<String, CityAqiDaily> tmpMap = new LinkedHashMap<>(); - for (CityAqiDaily cityAqiDaily : cityAqiDailies) { - String tmpTime = DateUtils.dateToDateString(cityAqiDaily.getTime(), "yyyy-MM-dd"); - tmpMap.put(tmpTime, cityAqiDaily); - } - cityAqiDailies = new ArrayList<CityAqiDaily>(tmpMap.values()); - //��������������������������������������� - Map<String, Integer> pollutionDaysMap = new LinkedHashMap<>(); - pollutionDaysMap.put(Constants.EXCELLENT_WEATHER_CODE, 0); - pollutionDaysMap.put(Constants.GOOD_WEATHER_CODE, 0); - pollutionDaysMap.put(Constants.MILD_WEATHER_CODE, 0); - pollutionDaysMap.put(Constants.MIDDLE_WEATHER_CODE, 0); - pollutionDaysMap.put(Constants.SERIOUS_WEATHER_CODE, 0); - pollutionDaysMap.put(Constants.SERVER_WEATHER_CODE, 0); - for (CityAqiDaily cityAqiDaily : cityAqiDailies) { - Map<String, Object> valueMap = JSON.parseObject(cityAqiDaily.getValue(), Map.class); - if (valueMap.get("AQI") == null) - continue; - Integer aqi = Integer.valueOf(valueMap.get("AQI").toString()); - //������AQI������������ - String pollutionClass = AQIUtils.classCodeOfPollutionByAqi(aqi); - Integer days = pollutionDaysMap.get(pollutionClass); - pollutionDaysMap.put(pollutionClass, days + 1); - } - //������������ - CityPollutionLevel cityPollutionLevel = new CityPollutionLevel(); - cityPollutionLevel.setRegionName(area.getAreaName()); - cityPollutionLevel.setExcellentWeatherDays(pollutionDaysMap.get(Constants.EXCELLENT_WEATHER_CODE)); - cityPollutionLevel.setGoodWeatherDays(pollutionDaysMap.get(Constants.GOOD_WEATHER_CODE)); - cityPollutionLevel.setMildWeatherDays(pollutionDaysMap.get(Constants.MILD_WEATHER_CODE)); - cityPollutionLevel.setMiddleWeatherDays(pollutionDaysMap.get(Constants.MIDDLE_WEATHER_CODE)); - cityPollutionLevel.setSeriousWeatherDays(pollutionDaysMap.get(Constants.SERIOUS_WEATHER_CODE)); - cityPollutionLevel.setServerWeatherDays(pollutionDaysMap.get(Constants.SERVER_WEATHER_CODE)); + CityPollutionLevel cityPollutionLevel = calculateDaysByTimeAndSysArea(area, startDate, endDate); datas.add(cityPollutionLevel); } return datas; } + @Override + public List<CityPollutionLevel> querySpecialCitiesPollutionLevel(SpecialCitiesPollutionLevelForm form) { + //������ + Date startDate = form.getStartDate(); + Date endDate = form.getEndDate(); + List<SysArea> areas = specialCitiesProperties.getTwentyEightCities(); + //������������������������ + List<CityPollutionLevel> datas = new ArrayList<>(); + //��������������������� ������������ + for (SysArea area : areas) { + CityPollutionLevel cityPollutionLevel = calculateDaysByTimeAndSysArea(area, startDate, endDate); + datas.add(cityPollutionLevel); + } + return datas; + } + + @Override + public List<CityPollutionLevel> queryProvinceCitiesPollutionLevel(ProvinceCitiesPollutionLevelForm form) { + //������ + Date startDate = form.getStartDate(); + Date endDate = form.getEndDate(); + Integer regionCode = form.getRegionCode(); + //������������������������ + List<SysArea> allCities = sysAreaService.getChildren(regionCode); + //������������������������ + List<CityPollutionLevel> datas = new ArrayList<>(); + //��������������������� ������������ + for (SysArea city : allCities) { + CityPollutionLevel cityPollutionLevel = calculateDaysByTimeAndSysArea(city, startDate, endDate); + datas.add(cityPollutionLevel); + } + return datas; + } + + + /** + * @Description: ��������������������������������������������������������� + * @Param: [area, startDate, endDate] + * @return: com.moral.api.pojo.dto.cityAQI.CityPollutionLevel + * @Author: ��������� + * @Date: 2021/12/31 + */ + @Override + public CityPollutionLevel calculateDaysByTimeAndSysArea(SysArea area, Date startDate, Date endDate) { + //������������ + QueryWrapper<CityAqiDaily> wrapper = new QueryWrapper<>(); + wrapper.eq("city_code", area.getAreaCode()); + wrapper.between("time", startDate, endDate); + wrapper.orderByAsc("time"); + List<CityAqiDaily> cityAqiDailies = cityAqiDailyMapper.selectList(wrapper); + if(ObjectUtils.isEmpty(cityAqiDailies)) + return null; + //��������������������������������������� + Map<String, CityAqiDaily> tmpMap = new LinkedHashMap<>(); + for (CityAqiDaily cityAqiDaily : cityAqiDailies) { + String tmpTime = DateUtils.dateToDateString(cityAqiDaily.getTime(), "yyyy-MM-dd"); + tmpMap.put(tmpTime, cityAqiDaily); + } + cityAqiDailies = new ArrayList<CityAqiDaily>(tmpMap.values()); + //��������������������������������������� + Map<String, Integer> pollutionDaysMap = new LinkedHashMap<>(); + pollutionDaysMap.put(Constants.EXCELLENT_WEATHER_CODE, 0); + pollutionDaysMap.put(Constants.GOOD_WEATHER_CODE, 0); + pollutionDaysMap.put(Constants.MILD_WEATHER_CODE, 0); + pollutionDaysMap.put(Constants.MIDDLE_WEATHER_CODE, 0); + pollutionDaysMap.put(Constants.SERIOUS_WEATHER_CODE, 0); + pollutionDaysMap.put(Constants.SERVER_WEATHER_CODE, 0); + for (CityAqiDaily cityAqiDaily : cityAqiDailies) { + Map<String, Object> valueMap = JSON.parseObject(cityAqiDaily.getValue(), Map.class); + if (valueMap.get("AQI") == null) + continue; + Integer aqi = Integer.valueOf(valueMap.get("AQI").toString()); + //������AQI������������ + String pollutionClass = AQIUtils.classCodeOfPollutionByAqi(aqi); + Integer days = pollutionDaysMap.get(pollutionClass); + pollutionDaysMap.put(pollutionClass, days + 1); + } + //������������ + CityPollutionLevel cityPollutionLevel = new CityPollutionLevel(); + cityPollutionLevel.setRegionName(area.getAreaName()); + cityPollutionLevel.setExcellentWeatherDays(pollutionDaysMap.get(Constants.EXCELLENT_WEATHER_CODE)); + cityPollutionLevel.setGoodWeatherDays(pollutionDaysMap.get(Constants.GOOD_WEATHER_CODE)); + cityPollutionLevel.setMildWeatherDays(pollutionDaysMap.get(Constants.MILD_WEATHER_CODE)); + cityPollutionLevel.setMiddleWeatherDays(pollutionDaysMap.get(Constants.MIDDLE_WEATHER_CODE)); + cityPollutionLevel.setSeriousWeatherDays(pollutionDaysMap.get(Constants.SERIOUS_WEATHER_CODE)); + cityPollutionLevel.setServerWeatherDays(pollutionDaysMap.get(Constants.SERVER_WEATHER_CODE)); + return cityPollutionLevel; + } + + + + + } + -- Gitblit v1.8.0