From 6a8b22c541448dbe15eb1b046dbf456131c2f325 Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Fri, 12 Nov 2021 11:38:25 +0800
Subject: [PATCH] screen-api            添加获取今年天气污染情况饼状图接口

---
 screen-api/src/main/java/com/moral/api/pojo/dto/dataDisplay/PieChartOfPollutionLevelDTO.java |    2 
 screen-api/src/main/java/com/moral/api/service/CityAqiDailyService.java                      |    7 ++-
 screen-api/src/main/java/com/moral/api/controller/AqiController.java                         |   21 ++++++++--
 screen-api/src/main/java/com/moral/api/service/impl/CityAqiDailyServiceImpl.java             |   37 ++++++++++--------
 screen-api/src/main/java/com/moral/api/pojo/form/aqi/QueryPieChartOfPollutionLevelForm.java  |   50 +++++++++++++++++++++++++
 5 files changed, 93 insertions(+), 24 deletions(-)

diff --git a/screen-api/src/main/java/com/moral/api/controller/AqiController.java b/screen-api/src/main/java/com/moral/api/controller/AqiController.java
index 172fbad..29b1784 100644
--- a/screen-api/src/main/java/com/moral/api/controller/AqiController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/AqiController.java
@@ -1,6 +1,7 @@
 package com.moral.api.controller;
 
-import com.moral.api.pojo.dto.dataDisplay.PollutionLevelProportionDTO;
+import com.moral.api.pojo.dto.dataDisplay.PieChartOfPollutionLevelDTO;
+import com.moral.api.pojo.form.aqi.QueryPieChartOfPollutionLevelForm;
 import com.moral.api.service.CityAqiDailyService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -87,9 +88,21 @@
         return ResultMessage.ok(datas);
     }
 
-    @GetMapping("queryPollutionLevelsForThisYear")
-    public ResultMessage queryPollutionLevelsForThisYear(Integer regionCode){
-        PollutionLevelProportionDTO dto = cityAqiDailyService.queryPollutionLevelsForThisYear(regionCode);
+    /**
+    * @Description: ������������������������������������������������
+            * @Param: [regionCode]
+            * @return: com.moral.constant.ResultMessage
+            * @Author: ���������
+            * @Date: 2021/11/11
+            */
+    @GetMapping("queryPieChartOfPollutionLevel")
+    public ResultMessage queryPieChartOfPollutionLevel(QueryPieChartOfPollutionLevelForm form){
+        //������������������������
+        if (!form.valid())
+            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
+                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+
+        PieChartOfPollutionLevelDTO dto = cityAqiDailyService.queryPieChartOfPollutionLevels(form);
         return ResultMessage.ok(dto);
     }
 
diff --git a/screen-api/src/main/java/com/moral/api/pojo/dto/dataDisplay/PollutionLevelProportionDTO.java b/screen-api/src/main/java/com/moral/api/pojo/dto/dataDisplay/PieChartOfPollutionLevelDTO.java
similarity index 94%
rename from screen-api/src/main/java/com/moral/api/pojo/dto/dataDisplay/PollutionLevelProportionDTO.java
rename to screen-api/src/main/java/com/moral/api/pojo/dto/dataDisplay/PieChartOfPollutionLevelDTO.java
index 56db4d0..d3b6a2f 100644
--- a/screen-api/src/main/java/com/moral/api/pojo/dto/dataDisplay/PollutionLevelProportionDTO.java
+++ b/screen-api/src/main/java/com/moral/api/pojo/dto/dataDisplay/PieChartOfPollutionLevelDTO.java
@@ -13,7 +13,7 @@
  * @Version TODO
  **/
 @Data
-public class PollutionLevelProportionDTO {
+public class PieChartOfPollutionLevelDTO {
     /*������������yyyy-MM-dd ��� yyyy-MM-dd*/
     private String time;
 
diff --git a/screen-api/src/main/java/com/moral/api/pojo/form/aqi/QueryPieChartOfPollutionLevelForm.java b/screen-api/src/main/java/com/moral/api/pojo/form/aqi/QueryPieChartOfPollutionLevelForm.java
new file mode 100644
index 0000000..f8ae421
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/pojo/form/aqi/QueryPieChartOfPollutionLevelForm.java
@@ -0,0 +1,50 @@
+package com.moral.api.pojo.form.aqi;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.moral.util.DateUtils;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @ClassName QueryPollutionLevelsForPieChartFrom
+ * @Description TODO
+ * @Author ���������
+ * @Date 2021/11/11 8:37
+ * @Version TODO
+ **/
+@Data
+public class QueryPieChartOfPollutionLevelForm {
+
+    /*
+    * ��������� ������
+    * */
+    Integer regionCode;
+
+    /*
+    * ���������������������
+    * ���������������������������������������������������������
+    * */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    Date startDate;
+
+    /*
+    * ���������������������
+    * */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    Date endDate;
+
+    public boolean valid(){
+        if(regionCode==null)
+            return false;
+        //���������������������������������������������������������������������������������������������������
+        if(startDate==null||endDate==null){
+             startDate = DateUtils.getFirstDayOfCurrYear();
+             endDate = DateUtils.getYesterdayDate();
+        }
+        return true;
+    }
+}
diff --git a/screen-api/src/main/java/com/moral/api/service/CityAqiDailyService.java b/screen-api/src/main/java/com/moral/api/service/CityAqiDailyService.java
index 9dedad1..67a08d8 100644
--- a/screen-api/src/main/java/com/moral/api/service/CityAqiDailyService.java
+++ b/screen-api/src/main/java/com/moral/api/service/CityAqiDailyService.java
@@ -2,7 +2,8 @@
 
 import com.moral.api.entity.CityAqiDaily;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.moral.api.pojo.dto.dataDisplay.PollutionLevelProportionDTO;
+import com.moral.api.pojo.dto.dataDisplay.PieChartOfPollutionLevelDTO;
+import com.moral.api.pojo.form.aqi.QueryPieChartOfPollutionLevelForm;
 
 /**
  * <p>
@@ -15,12 +16,12 @@
 public interface CityAqiDailyService extends IService<CityAqiDaily> {
 
     /**
-    * @Description: ���������������������������������������������������
+    * @Description: ������������������������������������������������������
             * @Param: [regionCode]
             * @return: com.moral.api.pojo.dto.dataDisplay.PollutionLevelProportionDTO
             * @Author: ���������
             * @Date: 2021/11/9
             */
-    PollutionLevelProportionDTO queryPollutionLevelsForThisYear(Integer regionCode);
+    PieChartOfPollutionLevelDTO queryPieChartOfPollutionLevels(QueryPieChartOfPollutionLevelForm form);
 
 }
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 d4c1c90..da4ee3d 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
@@ -4,9 +4,11 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.moral.api.entity.CityAqiDaily;
 import com.moral.api.mapper.CityAqiDailyMapper;
-import com.moral.api.pojo.dto.dataDisplay.PollutionLevelProportionDTO;
+import com.moral.api.pojo.dto.dataDisplay.PieChartOfPollutionLevelDTO;
+import com.moral.api.pojo.form.aqi.QueryPieChartOfPollutionLevelForm;
 import com.moral.api.service.CityAqiDailyService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.constant.Constants;
 import com.moral.util.AQIUtils;
 import com.moral.util.DateUtils;
 import com.moral.util.MathUtils;
@@ -30,10 +32,11 @@
     CityAqiDailyMapper cityAqiDailyMapper;
 
     @Override
-    public PollutionLevelProportionDTO queryPollutionLevelsForThisYear(Integer regionCode) {
-        //������������  ��������������� ���
-        Date startDate = DateUtils.getFirstDayOfCurrYear();
-        Date endDate = DateUtils.getYesterdayDate();
+    public PieChartOfPollutionLevelDTO queryPieChartOfPollutionLevels(QueryPieChartOfPollutionLevelForm form) {
+        //������
+        Integer regionCode = form.getRegionCode();
+        Date startDate = form.getStartDate();
+        Date endDate = form.getEndDate();
         //������������
         QueryWrapper<CityAqiDaily> wrapper = new QueryWrapper<>();
         wrapper.eq("city_code",regionCode);
@@ -45,7 +48,7 @@
         String startTime = DateUtils.dateToDateString(cityAqiDailies.get(0).getTime(),"yyyy-MM-dd");
         String endTime = DateUtils.dateToDateString(cityAqiDailies.get(cityAqiDailies.size()-1).getTime(),"yyyy-MM-dd");
         String time = startTime+" ��� "+endTime;
-        //������������������������������
+        //���������������������������������������
         Map<String,CityAqiDaily> tmpMap = new HashMap<>();
         for (CityAqiDaily cityAqiDaily : cityAqiDailies) {
             String tmpTime = DateUtils.dateToDateString(cityAqiDaily.getTime(),"yyyy-MM-dd");
@@ -53,20 +56,22 @@
         }
         cityAqiDailies = new ArrayList<CityAqiDaily>(tmpMap.values());
         //������������������������������
-        Map<String,Integer> pollutionDaysMap = new HashMap<>();
+        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.classOfPollutionByAqi(aqi);
+            String pollutionClass = AQIUtils.classCodeOfPollutionByAqi(aqi);
             Integer days = pollutionDaysMap.get(pollutionClass);
-            if(days==null){
-                pollutionDaysMap.put(pollutionClass,1);
-            }else{
-                pollutionDaysMap.put(pollutionClass,days+1);
-            }
+            pollutionDaysMap.put(pollutionClass,days+1);
         }
         //������������
         List<Map<String,Object>> valueMap = new ArrayList<>();
@@ -78,15 +83,15 @@
             String pollution = entry.getKey();
             Integer days = entry.getValue();
             Double proportionTmp = MathUtils.division(Double.valueOf(days),Double.valueOf(cityAqiDailies.size()),3);
-            Double proprtionD = MathUtils.mul(proportionTmp,100);
-            String proportion = proprtionD.toString()+"%";
+            Double proportionD = MathUtils.mul(proportionTmp,100);
+            String proportion = proportionD.toString()+"%";
             pollutionMap.put("proportion",proportion);
             pollutionMap.put("pollution",pollution);
             pollutionMap.put("days",days);
             valueMap.add(pollutionMap);
         }
         //������������������
-        PollutionLevelProportionDTO dto = new PollutionLevelProportionDTO();
+        PieChartOfPollutionLevelDTO dto = new PieChartOfPollutionLevelDTO();
         dto.setTime(time);
         dto.setValues(valueMap);
         return dto;

--
Gitblit v1.8.0