| | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | 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.vo.cityAQI.PieChartOfPollutionLevelVO; |
| | | import com.moral.api.pojo.form.aqi.QueryChartOfPollutionLevelForm; |
| | | 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.SysAreaService; |
| | | import com.moral.constant.Constants; |
| | | import com.moral.util.AQIUtils; |
| | | import com.moral.util.DateUtils; |
| | |
| | | |
| | | @Autowired |
| | | CityAqiDailyMapper cityAqiDailyMapper; |
| | | @Autowired |
| | | SysAreaService sysAreaService; |
| | | |
| | | @Override |
| | | public PieChartOfPollutionLevelVO queryPieChartOfPollutionLevels(QueryChartOfPollutionLevelForm form) { |
| | | public PieChartOfPollutionLevelVO queryPieChartOfPollutionLevels(ChartOfPollutionLevelForm form) { |
| | | //取参 |
| | | Integer regionCode = form.getRegionCode(); |
| | | Date startDate = form.getStartDate(); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public List<MonthlyPollutionLevel> queryBarChartOfPollutionLevels(QueryChartOfPollutionLevelForm form) { |
| | | public List<MonthlyPollutionLevel> queryBarChartOfPollutionLevels(ChartOfPollutionLevelForm form) { |
| | | //取参 |
| | | Integer regionCode = form.getRegionCode(); |
| | | Date startDate = form.getStartDate(); |
| | |
| | | return resultMap; |
| | | } |
| | | |
| | | @Override |
| | | public List<CityPollutionLevel> queryAreaPollutionLevel(AreaPollutionLevelForm form) { |
| | | //取参 |
| | | Integer regionCode = form.getRegionCode(); |
| | | Date startDate = form.getStartDate(); |
| | | Date endDate = form.getEndDate(); |
| | | //查询该市区下所有的县 |
| | | List<SysArea> allAreas = sysAreaService.getChildren(regionCode); |
| | | //创建返回数据对象 |
| | | 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)); |
| | | datas.add(cityPollutionLevel); |
| | | } |
| | | return datas; |
| | | } |
| | | |
| | | } |