From 62e7442abe2ad4b296d0211e6f0cd327865fe24f Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Mon, 22 Nov 2021 17:13:44 +0800
Subject: [PATCH] screen-api 完成柱状图数据和表格的逻辑代码
---
/dev/null | 53 ----
screen-api/src/main/java/com/moral/api/pojo/vo/cityAQI/BarChartOfPollutionLevelVO.java | 61 +++++
screen-api/src/main/java/com/moral/api/pojo/vo/cityAQI/BarChartTableOfPollutionLevelVO.java | 95 +++++++
screen-api/src/main/java/com/moral/api/service/CityAqiDailyService.java | 17 +
screen-api/src/main/java/com/moral/api/pojo/form/aqi/QueryChartOfPollutionLevelForm.java | 2
screen-api/src/main/java/com/moral/api/controller/AqiController.java | 233 ++-----------------
screen-api/src/main/java/com/moral/api/pojo/dto/cityAQI/PollutionDaysAndProportion.java | 29 ++
screen-api/src/main/java/com/moral/api/pojo/dto/cityAQI/MonthlyPollutionLevel.java | 26 ++
screen-api/src/main/java/com/moral/api/pojo/vo/cityAQI/PieChartOfPollutionLevelVO.java | 2
screen-api/src/main/java/com/moral/api/service/impl/CityAqiDailyServiceImpl.java | 151 +++++++++--
10 files changed, 373 insertions(+), 296 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 c3210a4..c248635 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,9 +1,10 @@
package com.moral.api.controller;
-import com.moral.api.pojo.dto.cityAQI.BarChartOfPollutionLevelVO;
-import com.moral.api.pojo.dto.cityAQI.BarChartTableOfPollutionLevelVO;
-import com.moral.api.pojo.dto.cityAQI.PieChartOfPollutionLevelVO;
-import com.moral.api.pojo.form.aqi.QueryPieChartOfPollutionLevelForm;
+import com.moral.api.pojo.dto.cityAQI.MonthlyPollutionLevel;
+import com.moral.api.pojo.vo.cityAQI.BarChartOfPollutionLevelVO;
+import com.moral.api.pojo.vo.cityAQI.BarChartTableOfPollutionLevelVO;
+import com.moral.api.pojo.vo.cityAQI.PieChartOfPollutionLevelVO;
+import com.moral.api.pojo.form.aqi.QueryChartOfPollutionLevelForm;
import com.moral.api.service.CityAqiDailyService;
import io.swagger.annotations.Api;
@@ -98,7 +99,7 @@
* @Date: 2021/11/11
*/
@GetMapping("queryPieChartOfPollutionLevel")
- public ResultMessage queryPieChartOfPollutionLevel(QueryPieChartOfPollutionLevelForm form) {
+ public ResultMessage queryPieChartOfPollutionLevel(QueryChartOfPollutionLevelForm form) {
//������������������������
if (!form.valid())
return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
@@ -108,213 +109,33 @@
return ResultMessage.ok(VO);
}
- @GetMapping("test1")
- public ResultMessage test1(){
- List<PieChartOfPollutionLevelVO> dtos = new ArrayList<>();
- PieChartOfPollutionLevelVO dto = new PieChartOfPollutionLevelVO();
- dto.setTime("2021-11");
- dto.setTotalDays(10);
- List<Map<String,Object>> list = new ArrayList<>();
- Map<String,Object> map = new HashMap<>();
- map.put("proportion","40%");
- map.put("days",4);
- map.put("pollution",0);
- list.add(map);
-
- Map<String,Object> map1 = new HashMap<>();
- map1.put("proportion","30%");
- map1.put("days",3);
- map1.put("pollution",1);
- list.add(map1);
-
- Map<String,Object> map2 = new HashMap<>();
- map2.put("proportion","30%");
- map2.put("days",3);
- map2.put("pollution",2);
- list.add(map2);
-
- Map<String,Object> map3 = new HashMap<>();
- map3.put("proportion","0%");
- map3.put("days",0);
- map3.put("pollution",3);
- list.add(map3);
-
- Map<String,Object> map4 = new HashMap<>();
- map4.put("proportion","0%");
- map4.put("days",0);
- map4.put("pollution",4);
- list.add(map4);
-
- Map<String,Object> map5 = new HashMap<>();
- map5.put("proportion","0%");
- map5.put("days",0);
- map5.put("pollution",5);
- list.add(map5);
- dto.setValues(list);
-
- PieChartOfPollutionLevelVO dto1 = new PieChartOfPollutionLevelVO();
- dto1.setTime("2021-11");
- List<Map<String,Object>> list1 = new ArrayList<>();
-
- Map<String,Object> map11 = new HashMap<>();
- map11.put("proportion","40%");
- map11.put("days",4);
- map11.put("pollution",0);
- list1.add(map11);
-
- Map<String,Object> map12 = new HashMap<>();
- map12.put("proportion","30%");
- map12.put("days",3);
- map12.put("pollution",1);
- list1.add(map12);
-
- Map<String,Object> map13 = new HashMap<>();
- map13.put("proportion","30%");
- map13.put("days",3);
- map13.put("pollution",2);
- list1.add(map13);
-
- Map<String,Object> map14 = new HashMap<>();
- map14.put("proportion","0%");
- map14.put("days",0);
- map14.put("pollution",3);
- list1.add(map14);
-
- Map<String,Object> map15 = new HashMap<>();
- map15.put("proportion","0%");
- map15.put("days",0);
- map15.put("pollution",4);
- list1.add(map15);
-
- Map<String,Object> map16 = new HashMap<>();
- map16.put("proportion","0%");
- map16.put("days",0);
- map16.put("pollution",5);
- list1.add(map16);
- dto1.setValues(list1);
- dto1.setTotalDays(10);
-
- dtos.add(dto);
- dtos.add(dto1);
- return ResultMessage.ok(dtos);
- }
-
@GetMapping("queryBarChartOfPollutionLevel")
- public ResultMessage queryBarChartOfPollutionLevel(){
- BarChartOfPollutionLevelVO dto = new BarChartOfPollutionLevelVO();
- List<String> time = new ArrayList<>();
- time.add("2021-10");
- time.add("2021-11");
- List<Map<String,Object>> values = new ArrayList<>();
-
- Map<String,Object> map1 = new HashMap<>();
- map1.put("pollution",0);
- List<Integer> days1 = new ArrayList<>();
- days1.add(4);
- days1.add(6);
- List<String> proportion1 = new ArrayList<>();
- proportion1.add("40%");
- proportion1.add("60%");
- map1.put("days",days1);
- map1.put("proportion",proportion1);
-
- Map<String,Object> map2 = new HashMap<>();
- map2.put("pollution",1);
- List<Integer> days2 = new ArrayList<>();
- days2.add(1);
- days2.add(0);
- List<String> proportion2 = new ArrayList<>();
- proportion2.add("10%");
- proportion2.add("0%");
- map2.put("days",days2);
- map2.put("proportion",proportion2);
-
- Map<String,Object> map3 = new HashMap<>();
- map3.put("pollution",2);
- List<Integer> days3 = new ArrayList<>();
- days3.add(1);
- days3.add(0);
- List<String> proportion3 = new ArrayList<>();
- proportion3.add("10%");
- proportion3.add("0%");
- map3.put("days",days3);
- map3.put("proportion",proportion3);
-
-
- Map<String,Object> map4 = new HashMap<>();
- map4.put("pollution",3);
- List<Integer> days4 = new ArrayList<>();
- days4.add(2);
- days4.add(2);
- List<String> proportion4 = new ArrayList<>();
- proportion4.add("20%");
- proportion4.add("20%");
- map4.put("days",days4);
- map4.put("proportion",proportion4);
-
-
- Map<String,Object> map5 = new HashMap<>();
- map5.put("pollution",4);
- List<Integer> days5 = new ArrayList<>();
- days5.add(2);
- days5.add(2);
- List<String> proportion5 = new ArrayList<>();
- proportion5.add("20%");
- proportion5.add("20%");
- map5.put("days",days5);
- map5.put("proportion",proportion5);
-
-
- Map<String,Object> map6 = new HashMap<>();
- map6.put("pollution",5);
- List<Integer> days6 = new ArrayList<>();
- days6.add(0);
- days6.add(0);
- List<String> proportion6 = new ArrayList<>();
- proportion6.add("0%");
- proportion6.add("0%");
- map6.put("days",days6);
- map6.put("proportion",proportion6);
-
- values.add(map1);
- values.add(map2);
- values.add(map3);
- values.add(map4);
- values.add(map5);
- values.add(map6);
-
- dto.setTime(time);
- dto.setValues(values);
- return ResultMessage.ok(dto);
+ public ResultMessage queryBarChartOfPollutionLevel(QueryChartOfPollutionLevelForm form){
+ //������������������������
+ if (!form.valid())
+ return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
+ ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+ //������������
+ List<MonthlyPollutionLevel> datas = cityAqiDailyService.queryBarChartOfPollutionLevels(form);
+ //������������������
+ BarChartOfPollutionLevelVO vo = BarChartOfPollutionLevelVO.convert(datas);
+ return ResultMessage.ok(vo);
}
@GetMapping("queryBarChatTableOfPollutionLevel")
- public ResultMessage queryBarChatTableOfPollutionLevel(){
+ public ResultMessage queryBarChatTableOfPollutionLevel(QueryChartOfPollutionLevelForm form){
+ //������������������������
+ if (!form.valid())
+ return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
+ ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+ //������������
+ List<MonthlyPollutionLevel> datas = cityAqiDailyService.queryBarChartOfPollutionLevels(form);
List<BarChartTableOfPollutionLevelVO> vos = new ArrayList<>();
-
- BarChartTableOfPollutionLevelVO vo1 = new BarChartTableOfPollutionLevelVO();
- BarChartTableOfPollutionLevelVO vo2 = new BarChartTableOfPollutionLevelVO();
- vo1.setExcellent("4(40%)");
- vo1.setGood("1(10%)");
- vo1.setMild("1(10%)");
- vo1.setMiddle("2(20%)");
- vo1.setSerious("2(20%)");
- vo1.setServer("0(0%)");
- vo1.setTotal("10(100%)");
- vo1.setTime("2021���10���");
-
- vo2.setExcellent("6(60%)");
- vo2.setGood("0(0%)");
- vo2.setMild("0(0%)");
- vo2.setMiddle("2(20%)");
- vo2.setSerious("2(20%)");
- vo2.setServer("0(0%)");
- vo2.setTotal("10(100%)");
- vo2.setTime("2021���11���");
-
- vos.add(vo1);
- vos.add(vo2);
+ for (MonthlyPollutionLevel data : datas) {
+ BarChartTableOfPollutionLevelVO vo = BarChartTableOfPollutionLevelVO.convert(data);
+ vos.add(vo);
+ }
return ResultMessage.ok(vos);
}
diff --git a/screen-api/src/main/java/com/moral/api/pojo/dto/cityAQI/BarChartOfPollutionLevelVO.java b/screen-api/src/main/java/com/moral/api/pojo/dto/cityAQI/BarChartOfPollutionLevelVO.java
deleted file mode 100644
index 33b8e5e..0000000
--- a/screen-api/src/main/java/com/moral/api/pojo/dto/cityAQI/BarChartOfPollutionLevelVO.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.moral.api.pojo.dto.cityAQI;
-
-import lombok.Data;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName BarChartOfPollutionLevelDTO
- * @Description ���������������DTO
- * @Author ���������
- * @Date 2021/11/19 8:31
- * @Version TODO
- **/
-@Data
-public class BarChartOfPollutionLevelVO {
- /*������������*/
- List<String> time;
-
- /*������������������������5���Map���������������������������������
- * Map������������������
- * pollution������������������
- * days������������������
- * proportion���������������������������*/
- List<Map<String,Object>> values;
-}
diff --git a/screen-api/src/main/java/com/moral/api/pojo/dto/cityAQI/BarChartTableOfPollutionLevelVO.java b/screen-api/src/main/java/com/moral/api/pojo/dto/cityAQI/BarChartTableOfPollutionLevelVO.java
deleted file mode 100644
index 3492c21..0000000
--- a/screen-api/src/main/java/com/moral/api/pojo/dto/cityAQI/BarChartTableOfPollutionLevelVO.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.moral.api.pojo.dto.cityAQI;
-
-import lombok.Data;
-
-/**
- * @ClassName BarChartTableOfPollutionLevelVO
- * @Description ������������������������VO
- * @Author ���������
- * @Date 2021/11/22 9:05
- * @Version TODO
- **/
-@Data
-public class BarChartTableOfPollutionLevelVO {
- /*
- * ������
- * */
- private String time;
-
- /*
- * ���
- * */
- private String excellent;
-
- /*
- * ���
- * */
- private String good;
-
- /*
- * ������������
- * */
- private String mild;
-
- /*
- * ������������
- * */
- private String middle;
-
- /*
- * ������������
- * */
- private String serious;
-
- /*
- * ������������
- * */
- private String server;
-
- /*
- * ������
- * */
- private String total;
-}
diff --git a/screen-api/src/main/java/com/moral/api/pojo/dto/cityAQI/MonthlyPollutionLevel.java b/screen-api/src/main/java/com/moral/api/pojo/dto/cityAQI/MonthlyPollutionLevel.java
new file mode 100644
index 0000000..e13644a
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/pojo/dto/cityAQI/MonthlyPollutionLevel.java
@@ -0,0 +1,26 @@
+package com.moral.api.pojo.dto.cityAQI;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @ClassName MonthlyPollutionLevel
+ * @Description ������������������������
+ * @Author ���������
+ * @Date 2021/11/22 9:52
+ * @Version TODO
+ **/
+@Data
+public class MonthlyPollutionLevel {
+
+ /*
+ * ������yyyy���MM���
+ * */
+ private String time;
+
+ /*
+ * ������������������������������������
+ * */
+ private List<PollutionDaysAndProportion> pollutionDaysAndProportions;
+}
diff --git a/screen-api/src/main/java/com/moral/api/pojo/dto/cityAQI/PollutionDaysAndProportion.java b/screen-api/src/main/java/com/moral/api/pojo/dto/cityAQI/PollutionDaysAndProportion.java
new file mode 100644
index 0000000..7ecfcbd
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/pojo/dto/cityAQI/PollutionDaysAndProportion.java
@@ -0,0 +1,29 @@
+package com.moral.api.pojo.dto.cityAQI;
+
+import lombok.Data;
+
+/**
+ * @ClassName PollutionDaysAndProportion
+ * @Description ������������������������
+ * @Author ���������
+ * @Date 2021/11/22 9:50
+ * @Version TODO
+ **/
+@Data
+public class PollutionDaysAndProportion {
+
+ /*
+ * ������������
+ * */
+ private String pollutionLevel;
+
+ /*
+ * ������������
+ * */
+ private Integer days;
+
+ /*
+ * ������
+ * */
+ private String proportion;
+}
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/QueryChartOfPollutionLevelForm.java
similarity index 97%
rename from screen-api/src/main/java/com/moral/api/pojo/form/aqi/QueryPieChartOfPollutionLevelForm.java
rename to screen-api/src/main/java/com/moral/api/pojo/form/aqi/QueryChartOfPollutionLevelForm.java
index 20da5e5..2fde5d9 100644
--- 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/QueryChartOfPollutionLevelForm.java
@@ -15,7 +15,7 @@
* @Version TODO
**/
@Data
-public class QueryPieChartOfPollutionLevelForm {
+public class QueryChartOfPollutionLevelForm {
/*
* ��������� ������
diff --git a/screen-api/src/main/java/com/moral/api/pojo/vo/cityAQI/BarChartOfPollutionLevelVO.java b/screen-api/src/main/java/com/moral/api/pojo/vo/cityAQI/BarChartOfPollutionLevelVO.java
new file mode 100644
index 0000000..3625912
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/pojo/vo/cityAQI/BarChartOfPollutionLevelVO.java
@@ -0,0 +1,61 @@
+package com.moral.api.pojo.vo.cityAQI;
+
+import com.moral.api.pojo.dto.cityAQI.MonthlyPollutionLevel;
+import com.moral.api.pojo.dto.cityAQI.PollutionDaysAndProportion;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName BarChartOfPollutionLevelDTO
+ * @Description ���������������DTO
+ * @Author ���������
+ * @Date 2021/11/19 8:31
+ * @Version TODO
+ **/
+@Data
+public class BarChartOfPollutionLevelVO {
+ /*������������*/
+ List<String> time;
+
+ /*������������������������5���Map���������������������������������
+ * Map������������������
+ * pollution������������������
+ * days������������������
+ * proportion���������������������������*/
+ List<Map<String, Object>> values;
+
+ public static BarChartOfPollutionLevelVO convert(List<MonthlyPollutionLevel> datas) {
+ BarChartOfPollutionLevelVO vo = new BarChartOfPollutionLevelVO();
+ List<String> time = new ArrayList<>();
+ List<Map<String, Object>> values= new ArrayList<>();
+ //6���������������������������������
+ for (int i = 0; i <= 5; i++) {
+ Map<String,Object> map = new HashMap<>();
+ List<String> proportion = new ArrayList<>();
+ List<Integer> days = new ArrayList<>();
+ String pollution = String.valueOf(i);
+ for (MonthlyPollutionLevel data : datas) {
+ if(!time.contains(data.getTime()))
+ time.add(data.getTime());
+ List<PollutionDaysAndProportion> pollutionDaysAndProportions = data.getPollutionDaysAndProportions();
+ for (PollutionDaysAndProportion pollutionDaysAndProportion : pollutionDaysAndProportions) {
+ if(pollutionDaysAndProportion.getPollutionLevel().equals(pollution)){
+ proportion.add(pollutionDaysAndProportion.getProportion());
+ days.add(pollutionDaysAndProportion.getDays());
+ }
+ }
+ }
+ map.put("proportion",proportion);
+ map.put("days",days);
+ map.put("pollution",pollution);
+ values.add(map);
+ }
+ vo.setTime(time);
+ vo.setValues(values);
+ return vo;
+ }
+}
diff --git a/screen-api/src/main/java/com/moral/api/pojo/vo/cityAQI/BarChartTableOfPollutionLevelVO.java b/screen-api/src/main/java/com/moral/api/pojo/vo/cityAQI/BarChartTableOfPollutionLevelVO.java
new file mode 100644
index 0000000..0c9a4b5
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/pojo/vo/cityAQI/BarChartTableOfPollutionLevelVO.java
@@ -0,0 +1,95 @@
+package com.moral.api.pojo.vo.cityAQI;
+
+import com.moral.api.pojo.dto.cityAQI.MonthlyPollutionLevel;
+import com.moral.api.pojo.dto.cityAQI.PollutionDaysAndProportion;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @ClassName BarChartTableOfPollutionLevelVO
+ * @Description ������������������������VO
+ * @Author ���������
+ * @Date 2021/11/22 9:05
+ * @Version TODO
+ **/
+@Data
+public class BarChartTableOfPollutionLevelVO {
+ /*
+ * ������
+ * */
+ private String time;
+
+ /*
+ * ���
+ * */
+ private String excellent;
+
+ /*
+ * ���
+ * */
+ private String good;
+
+ /*
+ * ������������
+ * */
+ private String mild;
+
+ /*
+ * ������������
+ * */
+ private String middle;
+
+ /*
+ * ������������
+ * */
+ private String serious;
+
+ /*
+ * ������������
+ * */
+ private String server;
+
+ /*
+ * ������
+ * */
+ private String total;
+
+ public static BarChartTableOfPollutionLevelVO convert(MonthlyPollutionLevel data){
+ BarChartTableOfPollutionLevelVO vo = new BarChartTableOfPollutionLevelVO();
+ vo.setTime(data.getTime().replaceAll("-","���")+"���");
+ List<PollutionDaysAndProportion> pollutionDaysAndProportions = data.getPollutionDaysAndProportions();
+ if(pollutionDaysAndProportions.size()!=6)
+ return null;
+ //������������������������������������������
+ PollutionDaysAndProportion excellentProportion = pollutionDaysAndProportions.get(0);
+ PollutionDaysAndProportion goodProportion = pollutionDaysAndProportions.get(1);
+ PollutionDaysAndProportion mildProportion = pollutionDaysAndProportions.get(2);
+ PollutionDaysAndProportion middleProportion = pollutionDaysAndProportions.get(3);
+ PollutionDaysAndProportion seriousProportion = pollutionDaysAndProportions.get(4);
+ PollutionDaysAndProportion serverProportion = pollutionDaysAndProportions.get(5);
+ String excellent = excellentProportion.getDays()+"("+excellentProportion.getProportion()+")";
+ String good = goodProportion.getDays()+"("+goodProportion.getProportion()+")";
+ String mild = mildProportion.getDays()+"("+mildProportion.getProportion()+")";
+ String middle = middleProportion.getDays()+"("+middleProportion.getProportion()+")";
+ String serious = seriousProportion.getDays()+"("+seriousProportion.getProportion()+")";
+ String server = serverProportion.getDays()+"("+serverProportion.getProportion()+")";
+ //������������������
+ Integer totalDays = excellentProportion.getDays()+
+ goodProportion.getDays()+
+ mildProportion.getDays()+
+ middleProportion.getDays()+
+ seriousProportion.getDays()+
+ serverProportion.getDays();
+ vo.setTotal(totalDays+"(100%)");
+ vo.setExcellent(excellent);
+ vo.setGood(good);
+ vo.setMild(mild);
+ vo.setMiddle(middle);
+ vo.setSerious(serious);
+ vo.setServer(server);
+
+
+ return vo;
+ }
+}
diff --git a/screen-api/src/main/java/com/moral/api/pojo/dto/cityAQI/PieChartOfPollutionLevelVO.java b/screen-api/src/main/java/com/moral/api/pojo/vo/cityAQI/PieChartOfPollutionLevelVO.java
similarity index 95%
rename from screen-api/src/main/java/com/moral/api/pojo/dto/cityAQI/PieChartOfPollutionLevelVO.java
rename to screen-api/src/main/java/com/moral/api/pojo/vo/cityAQI/PieChartOfPollutionLevelVO.java
index f08dea9..1d687a0 100644
--- a/screen-api/src/main/java/com/moral/api/pojo/dto/cityAQI/PieChartOfPollutionLevelVO.java
+++ b/screen-api/src/main/java/com/moral/api/pojo/vo/cityAQI/PieChartOfPollutionLevelVO.java
@@ -1,4 +1,4 @@
-package com.moral.api.pojo.dto.cityAQI;
+package com.moral.api.pojo.vo.cityAQI;
import lombok.Data;
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 046b3a7..aff00f4 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,8 +2,11 @@
import com.moral.api.entity.CityAqiDaily;
import com.baomidou.mybatisplus.extension.service.IService;
-import com.moral.api.pojo.dto.cityAQI.PieChartOfPollutionLevelVO;
-import com.moral.api.pojo.form.aqi.QueryPieChartOfPollutionLevelForm;
+import com.moral.api.pojo.dto.cityAQI.MonthlyPollutionLevel;
+import com.moral.api.pojo.vo.cityAQI.PieChartOfPollutionLevelVO;
+import com.moral.api.pojo.form.aqi.QueryChartOfPollutionLevelForm;
+
+import java.util.List;
/**
* <p>
@@ -22,6 +25,14 @@
* @Author: ���������
* @Date: 2021/11/9
*/
- PieChartOfPollutionLevelVO queryPieChartOfPollutionLevels(QueryPieChartOfPollutionLevelForm form);
+ PieChartOfPollutionLevelVO queryPieChartOfPollutionLevels(QueryChartOfPollutionLevelForm form);
+ /**
+ * @Description: ������������������������������������������������������������
+ * @Param: [form]
+ * @return: java.util.List<com.moral.api.pojo.dto.cityAQI.MonthlyPollutionLevel>
+ * @Author: ���������
+ * @Date: 2021/11/22
+ */
+ List<MonthlyPollutionLevel> queryBarChartOfPollutionLevels(QueryChartOfPollutionLevelForm 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 a360244..29c0706 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,8 +4,10 @@
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.cityAQI.PieChartOfPollutionLevelVO;
-import com.moral.api.pojo.form.aqi.QueryPieChartOfPollutionLevelForm;
+import com.moral.api.pojo.dto.cityAQI.MonthlyPollutionLevel;
+import com.moral.api.pojo.dto.cityAQI.PollutionDaysAndProportion;
+import com.moral.api.pojo.vo.cityAQI.PieChartOfPollutionLevelVO;
+import com.moral.api.pojo.form.aqi.QueryChartOfPollutionLevelForm;
import com.moral.api.service.CityAqiDailyService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.constant.Constants;
@@ -14,7 +16,9 @@
import com.moral.util.MathUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+import java.text.SimpleDateFormat;
import java.util.*;
/**
@@ -32,65 +36,65 @@
CityAqiDailyMapper cityAqiDailyMapper;
@Override
- public PieChartOfPollutionLevelVO queryPieChartOfPollutionLevels(QueryPieChartOfPollutionLevelForm form) {
+ public PieChartOfPollutionLevelVO queryPieChartOfPollutionLevels(QueryChartOfPollutionLevelForm form) {
//������
Integer regionCode = form.getRegionCode();
Date startDate = form.getStartDate();
Date endDate = form.getEndDate();
//������������
QueryWrapper<CityAqiDaily> wrapper = new QueryWrapper<>();
- wrapper.eq("city_code",regionCode);
- wrapper.between("time",startDate,endDate);
+ wrapper.eq("city_code", regionCode);
+ wrapper.between("time", startDate, endDate);
List<CityAqiDaily> cityAqiDailies = cityAqiDailyMapper.selectList(wrapper);
//���������������������,������������time
- if(cityAqiDailies.size()==0)
+ if (cityAqiDailies.size() == 0)
return null;
- 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;
+ 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<>();
+ Map<String, CityAqiDaily> tmpMap = new HashMap<>();
for (CityAqiDaily cityAqiDaily : cityAqiDailies) {
- String tmpTime = DateUtils.dateToDateString(cityAqiDaily.getTime(),"yyyy-MM-dd");
- tmpMap.put(tmpTime,cityAqiDaily);
+ 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);
+ 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)
+ 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);
+ pollutionDaysMap.put(pollutionClass, days + 1);
}
//������������
- List<Map<String,Object>> valueMap = new ArrayList<>();
+ List<Map<String, Object>> valueMap = new ArrayList<>();
Set<Map.Entry<String, Integer>> entries = pollutionDaysMap.entrySet();
Iterator<Map.Entry<String, Integer>> iterator = entries.iterator();
Integer totalDays = 0;
- while(iterator.hasNext()){
+ while (iterator.hasNext()) {
Map.Entry<String, Integer> entry = iterator.next();
- Map<String,Object> pollutionMap = new HashMap<>();
+ Map<String, Object> pollutionMap = new HashMap<>();
String pollution = entry.getKey();
Integer days = entry.getValue();
- Double proportionTmp = MathUtils.division(Double.valueOf(days),Double.valueOf(cityAqiDailies.size()),3);
- Double proportionD = MathUtils.mul(proportionTmp,100);
- String proportion = proportionD.toString()+"%";
- pollutionMap.put("proportion",proportion);
- pollutionMap.put("pollution",pollution);
- pollutionMap.put("days",days);
+ Double proportionTmp = MathUtils.division(Double.valueOf(days), Double.valueOf(cityAqiDailies.size()), 3);
+ 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);
- totalDays+=days;
+ totalDays += days;
}
//������������������
PieChartOfPollutionLevelVO VO = new PieChartOfPollutionLevelVO();
@@ -99,4 +103,87 @@
VO.setTotalDays(totalDays);
return VO;
}
+
+ @Override
+ public List<MonthlyPollutionLevel> queryBarChartOfPollutionLevels(QueryChartOfPollutionLevelForm form) {
+ //������
+ Integer regionCode = form.getRegionCode();
+ Date startDate = form.getStartDate();
+ Date endDate = form.getEndDate();
+ //������������
+ QueryWrapper<CityAqiDaily> wrapper = new QueryWrapper<>();
+ wrapper.eq("city_code", regionCode);
+ 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, List<CityAqiDaily>> monthlyDataMap = new LinkedHashMap<>();
+ cityAqiDailies.forEach(value -> {
+ String month = DateUtils.dateToDateString(value.getTime(), "yyyy-MM");
+ List<CityAqiDaily> dataList = monthlyDataMap.get(month);
+ if (ObjectUtils.isEmpty(dataList))
+ dataList = new ArrayList<>();
+ dataList.add(value);
+ monthlyDataMap.put(month, dataList);
+ });
+ //���������������������������
+ List<MonthlyPollutionLevel> monthlyPollutionLevels = new ArrayList<>();
+ Set<Map.Entry<String, List<CityAqiDaily>>> monthlyEntries = monthlyDataMap.entrySet();
+ Iterator<Map.Entry<String, List<CityAqiDaily>>> monthlyIterator = monthlyEntries.iterator();
+ while(monthlyIterator.hasNext()){
+ Map.Entry<String, List<CityAqiDaily>> monthlyEntry = monthlyIterator.next();
+ List<CityAqiDaily> monthlyValues = monthlyEntry.getValue();
+ //���������������������������������������
+ 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 : monthlyValues) {
+ 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);
+ }
+
+ //������������
+ List<PollutionDaysAndProportion> pollutionDaysAndProportions = new ArrayList<>();
+ Set<Map.Entry<String, Integer>> entries = pollutionDaysMap.entrySet();
+ Iterator<Map.Entry<String, Integer>> iterator = entries.iterator();
+ while (iterator.hasNext()) {
+ Map.Entry<String, Integer> entry = iterator.next();
+ String pollution = entry.getKey();
+ Integer days = entry.getValue();
+ Double proportionTmp = MathUtils.division(Double.valueOf(days), Double.valueOf(monthlyValues.size()), 3);
+ Double proportionD = MathUtils.mul(proportionTmp, 100);
+ String proportion = proportionD.toString() + "%";
+ PollutionDaysAndProportion pollutionDaysAndProportion = new PollutionDaysAndProportion();
+ pollutionDaysAndProportion.setDays(days);
+ pollutionDaysAndProportion.setPollutionLevel(pollution);
+ pollutionDaysAndProportion.setProportion(proportion);
+ pollutionDaysAndProportions.add(pollutionDaysAndProportion);
+ }
+ //������������������
+ MonthlyPollutionLevel monthlyPollutionLevel = new MonthlyPollutionLevel();
+ monthlyPollutionLevel.setPollutionDaysAndProportions(pollutionDaysAndProportions);
+ monthlyPollutionLevel.setTime(monthlyEntry.getKey());
+ monthlyPollutionLevels.add(monthlyPollutionLevel);
+ }
+ return monthlyPollutionLevels;
+ }
+
+
}
--
Gitblit v1.8.0