From 3cf84aa99a0bb5acddf63eeea9d5d84810105c1e Mon Sep 17 00:00:00 2001
From: lizijie <lzjiiie@163.com>
Date: Mon, 24 Jan 2022 10:12:19 +0800
Subject: [PATCH] 添加边界接口修改
---
screen-api/src/main/java/com/moral/api/service/impl/CityAqiDailyServiceImpl.java | 151 ++++++++++++++++++++++++++++++++++++--------------
1 files changed, 109 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..b5b1328 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,102 @@
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);
+ //���������������������������������������
+ 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