From 239927b057f65a040594f7a4cb08c8881b303797 Mon Sep 17 00:00:00 2001
From: cjl <276999030@qq.com>
Date: Fri, 18 Aug 2023 14:52:16 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/cjl-230812' into cjl-230812
---
screen-api/src/main/java/com/moral/api/service/impl/HnExcelServiceImpl.java | 1220 ++++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 939 insertions(+), 281 deletions(-)
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/HnExcelServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/HnExcelServiceImpl.java
index b7490fe..d742c7e 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/HnExcelServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/HnExcelServiceImpl.java
@@ -9,7 +9,6 @@
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
-import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@@ -27,10 +26,11 @@
import com.moral.api.entity.TbExcel;
import com.moral.api.mapper.ExcelMapper;
import com.moral.api.pojo.bo.ExcelBO;
+import com.moral.api.pojo.vo.excel.HnExcelVo;
import com.moral.api.pojo.vo.excel.SyExcelVo;
import com.moral.api.service.HnExcelService;
+import com.moral.api.utils.AqiUtils;
import com.moral.api.utils.ExcelUtils;
-import com.moral.pojo.AQI;
import com.moral.util.AQIUtils;
import com.moral.util.AmendUtils;
import com.moral.util.DateUtils;
@@ -43,12 +43,9 @@
private ExcelMapper excelMapper;
/**
- * ���������������
+ * ���������������
+ *
* @param files
- * @param params
- * @return
- * @throws IOException
- * @throws ParseException
*/
@Override
public ExcelBO getExcelImport(List<MultipartFile> files, Map<String, Object> params) throws IOException, ParseException {
@@ -71,6 +68,8 @@
map.put("���������",map2);
Map<String, List<Integer>> map3 = getTo(file1,time);
map.put("���������",map3);
+ Map<String, List<Integer>> map4 = getSys(file1, 2, time);
+ map.put("���������",map4);
String s = JSON.toJSONString(map);
excel1.setValue(s);
excel1.setTime(date);
@@ -81,6 +80,7 @@
excelBO.setTime(excel1.getTime());
excelBO.setDate(excel1.getDate());
}else {
+ Date date2 = new Date();
HashMap<String, Map<String, List<Integer>>> map = new HashMap<>();
MultipartFile file1 = files.get(0);
Map<String, List<Integer>> map1 = getMap1(file1, 0,time);
@@ -89,25 +89,30 @@
map.put("���������",map2);
Map<String, List<Integer>> map3 = getTo(file1,time);
map.put("���������",map3);
+ Map<String, List<Integer>> map4 = getSys(file1, 2, time);
+ map.put("���������",map4);
String s = JSON.toJSONString(map);
excel.setValue(s);
+ excel.setDate(date2);
excelMapper.updateById(excel);
excelBO.setId(excel.getId());
excelBO.setTime(excel.getTime());
- excelBO.setDate(excel.getDate());
+ excelBO.setDate(date2);
}
return excelBO;
+
}
/**
- * ���������������
+ * ������������������
* @param id
* @return
*/
@Override
public SyExcelVo SyExport(Integer id) {
+
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
HashMap<String, ArrayList<String>> rsMap = new HashMap<>();
SyExcelVo syExcelVo = new SyExcelVo();
@@ -150,6 +155,21 @@
}
}
}
+ if (string.equals("���������")){
+ Map<String, List<Integer>> stringListMap = map.get(string);
+ Set<String> strings1 = stringListMap.keySet();
+ for (String s : strings1) {
+
+ if (s.equals("count")){
+ ArrayList<String> list1 = getList(stringListMap, s);
+ rsMap.put("sy1",list1);
+ }
+ if (s.equals("PM2_5")){
+ ArrayList<String> list1 = getArrayList(stringListMap, s);
+ rsMap.put("sy2",list1);
+ }
+ }
+ }
if (string.equals("���������")){
Map<String, List<Integer>> stringListMap = map.get(string);
Set<String> strings1 = stringListMap.keySet();
@@ -157,17 +177,23 @@
if (s.equals("count")){
ArrayList<String> list1 = new ArrayList<>();
List<Integer> list = stringListMap.get(s);
+ String season;
Integer sum =0;
if (data>=1 && data<=3){
sum = list.get(0) + list.get(1) + list.get(2);
+ season = "���";
}else if (data>=4 &&data<=6){
sum = list.get(3) + list.get(4) + list.get(5);
+ season = "���";
}else if (data>=7 &&data<=9){
sum = list.get(6) + list.get(7) + list.get(8);
+ season = "���";
}else {
sum = list.get(9) + list.get(10) + list.get(11);
+ season = "���";
}
syExcelVo.setCode5(sum.toString());
+ syExcelVo.setSeason(season);
for (int i = 0; i < list.size()-1; i++) {
if (list.get(i)==0){
list1.add("");
@@ -180,32 +206,34 @@
Integer integer1 = list.get(13);
int i = integer - integer1;
String code ="";
- if (i<=0){
+ if (i<0){
code = "������"+i+"���";
- }else {
+ }else if (i>0){
code = "������"+i+"���";
+ }else {
+ code = "������";
}
list1.add(code);
syExcelVo.setCode2(code);
list1.add(0,"������������");
rsMap.put("hnq1",list1);
}
+
+
+ if (s.equals("������")){
+ List<Integer> list = stringListMap.get(s);
+ if (list.size()>0){
+ syExcelVo.setCode6(list.get(0).toString());
+ }else {
+ syExcelVo.setCode6("");
+ }
+
+ }
+
+
if (s.equals("PM2_5")){
ArrayList<String> list1 = new ArrayList<>();
List<Integer> list = stringListMap.get(s);
- Integer sum =0;
- if (data>=1 && data<=3){
- sum = list.get(0) + list.get(1) + list.get(2);
- }else if (data>=4 &&data<=6){
- sum = list.get(3) + list.get(4) + list.get(5);
- }else if (data>=7 &&data<=9){
- sum = list.get(6) + list.get(7) + list.get(8);
- }else {
- sum = list.get(9) + list.get(10) + list.get(11);
- }
-
- Integer round = Math.round(sum / 3);
- syExcelVo.setCode6(round.toString());
for (int i = 0; i < list.size()-1; i++) {
if (list.get(i)==0){
list1.add("");
@@ -218,12 +246,14 @@
Integer integer1 = list.get(13);
double i = integer - integer1;
- double i1 = AmendUtils.sciCal((i / integer1)*100,1);
+ double i1 = AmendUtils.sciCal((Math.abs(i) / integer1)*100,1);
String code = "";
- if (i1<=0){
- code = "������"+i1+"%";
+ if (i<0){
+ code = "������"+i1+"%";
+ }else if (i>0){
+ code = "������-"+i1+"%";
}else {
- code = "������"+i1+"%";
+ code ="������";
}
list1.add(code);
@@ -234,27 +264,291 @@
}
}
}
-
- ArrayList<String> list1 = new ArrayList<>();
- ArrayList<String> list2 = new ArrayList<>();
- for (int i = 0; i < 15; i++) {
- if (i==0){
- list1.add("������������");
- continue;
+ if (map.size()==3){
+ ArrayList<String> list1 = new ArrayList<>();
+ ArrayList<String> list2 = new ArrayList<>();
+ for (int i = 0; i <14 ; i++) {
+ list1.add("");
+ list2.add("");
}
- list1.add("");
+ list1.add(0,"������������");
+ list2.add(0,"PM2.5������������/������");
+ rsMap.put("sy1",list1);
+ rsMap.put("sy2",list2);
}
- list2.addAll(list1);
- list2.remove(0);
- list2.add(0,"PM2.5������������/������");
- rsMap.put("sy1",list1);
- rsMap.put("sy2",list2);
syExcelVo.setList(rsMap);
return syExcelVo;
}
+ /**
+ * ���������������������������
+ * @param id
+ * @return
+ */
+ @Override
+ public HnExcelVo hnExport(Integer id) throws ParseException {
- //������pm2.5������
+ HashMap<String, Object> rsMap = new HashMap<>();
+
+ HnExcelVo hnExcelVo = new HnExcelVo();
+
+ ArrayList<String> syList = new ArrayList<>();
+ TbExcel excel = excelMapper.selectById(id);
+ //���������������������
+ Date time = excel.getTime();
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ String format = sdf.format(time);
+ hnExcelVo.setTime(format.substring(5));
+ //������������������������������
+ Calendar instance = Calendar.getInstance();
+ instance.setTime(sdf.parse(format));
+ instance.add(Calendar.DAY_OF_MONTH, 1);
+ Date date = instance.getTime();
+
+ hnExcelVo.setTime2(sdf.format(date));
+
+
+ String value = excel.getValue();
+ Map<String, Map<String, List<Integer>>> map = JSON.parseObject(value, Map.class);
+ Set<String> strings = map.keySet();
+
+ Map<String, List<Integer>> listMap = map.get("���������");
+ List<Integer> listSy = listMap.get("day");
+ //pm25
+ syList.add(listSy.get(0).toString());
+ //pm10
+ syList.add(listSy.get(1).toString());
+ //so2
+ syList.add(listSy.get(2).toString());
+ //no2
+ syList.add(listSy.get(3).toString());
+ //O3
+ syList.add(listSy.get(4).toString());
+ //CO
+ syList.add(listSy.get(5).toString()+"."+listSy.get(6));
+ Map<String, Object> mapSy = getCityMap(listSy);
+ rsMap.put("sy",mapSy);
+
+
+ for (String string : strings) {
+ if (string.equals("������������")){
+ Map<String, List<Integer>> stringListMap = map.get(string);
+ List<Integer> list = stringListMap.get("day");
+ Map<String, Object> cityMap = getCityMap(list);
+ rsMap.put("hnd",cityMap);
+ ArrayList<Double> list1 = new ArrayList<>();
+ for (int i = 0; i < list.size()-2; i++) {
+ Integer code1 = list.get(i);
+ int code2 = Integer.parseInt(syList.get(i));
+ double data = getData(code1, code2);
+ list1.add(data);
+ }
+ //������CO
+ String s = list.get(5) + "." + list.get(6);
+ double v = Double.parseDouble(s) - Double.parseDouble(syList.get(5));
+ double i1 =0.0;
+ if (Double.parseDouble(syList.get(5))!=0.0){
+ i1 = AmendUtils.sciCal((v / Double.parseDouble(syList.get(5)))*100,1);
+ }
+ hnExcelVo.setHnCO(i1);
+ hnExcelVo.setHnPM25(list1.get(0));
+ hnExcelVo.setHnPM10(list1.get(1));
+ hnExcelVo.setHnSO2(list1.get(2));
+ hnExcelVo.setHnNO2(list1.get(3));
+ hnExcelVo.setHnO3(list1.get(4));
+
+
+
+ HashMap<String, Map<String, Object>> years = getYears(stringListMap,"hnd");
+ hnExcelVo.setHnd(years);
+ }
+ if (string.equals("���������")){
+ Map<String, List<Integer>> stringListMap = map.get(string);
+ HashMap<String, Map<String, Object>> years = getYears(stringListMap,"xxj");
+ hnExcelVo.setXxj(years);
+ List<Integer> list = stringListMap.get("day");
+ Map<String, Object> map1 = getCityMap(list);
+ rsMap.put("xxj",map1);
+
+ ArrayList<Double> list2 = new ArrayList<>();
+ for (int i = 0; i < list.size()-2; i++) {
+ Integer code1 = list.get(i);
+ int code2 = Integer.parseInt(syList.get(i));
+ double data = getData(code1, code2);
+ list2.add(data);
+ }
+ //������CO
+ String s = list.get(5) + "." + list.get(6);
+ double v = Double.parseDouble(s) - Double.parseDouble(syList.get(5));
+ double i1 =0.0;
+ if (Double.parseDouble(syList.get(5))!=0.0){
+ i1 = AmendUtils.sciCal((v / Double.parseDouble(syList.get(5)))*100,1);
+ }
+ hnExcelVo.setXxjCO(i1);
+ hnExcelVo.setXxjPM25(list2.get(0));
+ hnExcelVo.setXxjPM10(list2.get(1));
+ hnExcelVo.setXxjSO2(list2.get(2));
+ hnExcelVo.setXxjNO2(list2.get(3));
+ hnExcelVo.setXxjO3(list2.get(4));
+
+
+
+
+ }
+ if (string.equals("���������")){
+ Map<String, List<Integer>> stringListMap = map.get(string);
+ List<Integer> list = stringListMap.get("count");
+ Integer integer = list.get(12);
+ Integer integer1 = list.get(13);
+ int i = integer - integer1;
+ String code = "";
+ if (i<0){
+ code = "������"+i+"���";
+ }else if (i>0){
+ code = "������"+i+"���";
+ }else {
+ code= "������";
+ }
+ hnExcelVo.setCode1(integer.toString());
+ hnExcelVo.setCode2(integer1.toString());
+ hnExcelVo.setCode3(code);
+ List<Integer> list1 = stringListMap.get("PM2_5");
+ Integer integer2 = list1.get(12);
+ Integer integer3 = list1.get(13);
+ String code1 = getString(integer2, integer3);
+ hnExcelVo.setCode4(integer2.toString());
+ hnExcelVo.setCode5(code1);
+
+ List<Integer> list2 = stringListMap.get("PM10");
+ Integer integer4 = list2.get(0);
+ Integer integer5 = list2.get(1);
+ String code2 = getString(integer4, integer5);
+ hnExcelVo.setCode6(integer4.toString());
+ hnExcelVo.setCode7(code2);
+
+
+ HashMap<String, Object> hnqMap = new HashMap<>();
+ List<Integer> list3 = stringListMap.get("day");
+ hnqMap.put("PM2_5",list3.get(0));
+ hnqMap.put("PM10",list3.get(1));
+ hnqMap.put("SO2",list3.get(2));
+ hnqMap.put("NO2",list3.get(3));
+ hnqMap.put("O3",list3.get(4));
+ hnqMap.put("CO",list3.get(5)+"."+list3.get(6));
+ Map<String, Object> aqi = AqiUtils.getAqi(hnqMap);
+ String aqi1 = aqi.get("AQI").toString();
+ String su = aqi.get("SU").toString();
+ String s = AQIUtils.classOfPollutionByAqi(Integer.parseInt(aqi1));
+ hnExcelVo.setData1(s);
+ hnExcelVo.setData2(su);
+ hnExcelVo.setData3(list3.get(1).toString());
+ hnExcelVo.setData4(list3.get(0).toString());
+ hnExcelVo.setData5(list3.get(2).toString());
+ hnExcelVo.setData6(list3.get(3).toString());
+ hnExcelVo.setData7(hnqMap.get("CO").toString());
+ hnExcelVo.setData8(list3.get(4).toString());
+ }
+
+ }
+ hnExcelVo.setList1(rsMap);
+ return hnExcelVo;
+ }
+
+ private String getString(Integer integer2, Integer integer3) {
+ double i2 = integer2 - integer3;
+ double i1 = 0.0;
+ if (integer3 !=0){
+ i1 = AmendUtils.sciCal((Math.abs(i2) / integer3)*100,1);
+ }
+ String code1 = "";
+ if (i2==0){
+ code1 = "������";
+ }else if (i2>0){
+ code1 = "������-"+i1+"%";
+ }else {
+ code1 = "������"+i1+"%";
+ }
+ return code1;
+ }
+
+ //���������������
+ private double getData(int code1,int code2) {
+
+ double i = code1 - code2;
+ double i1 =0.0;
+ if (code2!=0){
+ i1 = AmendUtils.sciCal((i / code2)*100,1);
+ }
+ return i1;
+ }
+
+ //������aqi���������
+ private Map<String, Object> getCityMap(List<Integer> list) {
+ HashMap<String, Object> map1 = new HashMap<>();
+ map1.put("PM2_5", list.get(0));
+ map1.put("PM10", list.get(1));
+ map1.put("SO2", list.get(2));
+ map1.put("NO2", list.get(3));
+ map1.put("O3", list.get(4));
+ map1.put("CO", list.get(5)+"."+ list.get(6));
+ map1.put("ZH","");
+ map1.put("PaiM","");
+ Map<String, Object> aqi = AqiUtils.getAqi(map1);
+ map1.put("AQI",aqi.get("AQI"));
+ return map1;
+ }
+
+ /**
+ * ������������������
+ * @param stringListMap
+ * @return
+ */
+ private HashMap<String, Map<String, Object>> getYears(Map<String, List<Integer>> stringListMap,String data) {
+ HashMap<String, Map<String, Object>> map = new HashMap<>();
+ List<Integer> list1 = stringListMap.get("������");
+ HashMap<String, Object> hudMap1 = new HashMap<>();
+ HashMap<String, Object> hudMap2 = new HashMap<>();
+ HashMap<String, Object> hudMap3 = new HashMap<>();
+ hudMap1.put("nd",list1.get(7));
+ hudMap1.put("yl",list1.get(0));
+ hudMap1.put("excellent",list1.get(1));
+ hudMap1.put("good",list1.get(2));
+ hudMap1.put("slightPol",list1.get(3));
+ hudMap1.put("moderatePol",list1.get(4));
+ hudMap1.put("heavyPol",list1.get(5));
+ hudMap1.put("seriousPol",list1.get(6));
+ map.put(data+"1",hudMap1);
+ List<Integer> list2 = stringListMap.get("������");
+ hudMap2.put("nd",list2.get(7));
+ hudMap2.put("yl",list2.get(0));
+ hudMap2.put("excellent",list2.get(1));
+ hudMap2.put("good",list2.get(2));
+ hudMap2.put("slightPol",list2.get(3));
+ hudMap2.put("moderatePol",list2.get(4));
+ hudMap2.put("heavyPol",list2.get(5));
+ hudMap2.put("seriousPol",list2.get(6));
+
+ hudMap3.put("nd","������������");
+ hudMap3.put("yl",list1.get(0)-list2.get(0));
+ hudMap3.put("excellent",list1.get(1)-list2.get(1));
+ hudMap3.put("good",list1.get(2)-list2.get(2));
+ hudMap3.put("slightPol",list1.get(3)-list2.get(3));
+ hudMap3.put("moderatePol",list1.get(4)-list2.get(4));
+ hudMap3.put("heavyPol",list1.get(5)-list2.get(5));
+ hudMap3.put("seriousPol",list1.get(6)-list2.get(6));
+
+ map.put(data+2,hudMap2);
+ map.put(data+3,hudMap3);
+
+ return map;
+ }
+
+ /**
+ * ������pm2.5������
+ * @param stringListMap
+ * @param s
+ * @return
+ */
private ArrayList<String> getArrayList(Map<String, List<Integer>> stringListMap, String s) {
ArrayList<String> list1 = new ArrayList<>();
List<Integer> list = stringListMap.get(s);
@@ -268,22 +562,30 @@
Integer integer = list.get(12);
Integer integer1 = list.get(13);
double i1 = 0.0;
+ double i = integer - integer1;
if (integer1!=0){
- double i = integer - integer1;
- i1 = AmendUtils.sciCal((i / integer1)*100,1);
+
+ i1 = AmendUtils.sciCal((Math.abs(i) / integer1)*100,1);
}
String code = "";
- if (i1<=0){
- code = "������"+i1+"%";
+ if (i<0){
+ code = "������"+i1+"%";
+ }else if (i>0){
+ code = "������-"+i1+"%";
}else {
- code = "������"+i1+"%";
+ code = "������";
}
list1.add(code);
list1.add(0,"PM2.5������������/������");
return list1;
}
- //������������������
+ /**
+ * ������������������
+ * @param stringListMap
+ * @param s
+ * @return
+ */
private ArrayList<String> getList(Map<String, List<Integer>> stringListMap, String s) {
ArrayList<String> list1 = new ArrayList<>();
List<Integer> list = stringListMap.get(s);
@@ -298,16 +600,131 @@
Integer integer1 = list.get(13);
int i = integer - integer1;
String code = "";
- if (i<=0){
+ if (i<0){
code = "������"+i+"���";
- }else {
+ }else if (i>0){
code = "������"+i+"���";
+ }else {
+ code = "������";
}
list1.add(code);
list1.add(0,"������������");
return list1;
}
- //������������
+
+
+ private Map<String, List<Integer>> getSys(MultipartFile file, int code,String time) throws IOException, ParseException {
+ XSSFWorkbook workbook = new XSSFWorkbook(file.getInputStream());
+
+ HashMap<String, Object> rsMap1 = new HashMap<>();
+ HashMap<String, Object> rsMap2 = new HashMap<>();
+ XSSFSheet sheetAt = workbook.getSheetAt(code);
+ String sheetName = sheetAt.getSheetName();
+ if (!sheetName.equals("���������")){
+ return null;
+ }
+ //������������������
+ int lastRowNum = sheetAt.getLastRowNum();
+ for (int i = 2; i <= lastRowNum; i++) {
+ XSSFRow row = sheetAt.getRow(i);
+ if (row == null) {
+ continue;
+ }
+ short lastCellNum = row.getLastCellNum();
+ if (lastCellNum<=0){
+ continue;
+ }
+
+ Object[] objects = new Object[lastCellNum];
+ for (int j = 0; j < lastCellNum; j++) {
+ Cell cell = row.getCell(j);
+ if (cell != null) {
+ Object value = ExcelUtils.getValue(cell);
+ objects[j] = value;
+ }
+
+ }
+
+ HashMap<String, Object> map1 = new HashMap<>();
+ HashMap<String, Object> map2 = new HashMap<>();
+ if (objects.length == 8 || objects.length == 9) {
+ if (objects[0]!=null){
+ if (!objects[1].toString().contains("H")
+ && !objects[2].toString().contains("H")
+ && !objects[3].toString().contains("H")
+ && !objects[4].toString().contains("H")
+ && !objects[5].toString().contains("H")
+ && !objects[6].toString().contains("H"))
+ {
+ map1.put("time", objects[0]);
+ map1.put("PM10", objects[1]);
+ map1.put("PM2_5", objects[2]);
+ map1.put("SO2", objects[3]);
+ map1.put("NO2", objects[4]);
+ map1.put("CO", objects[5]);
+ map1.put("O3", objects[6]);
+ map1.put("AQI", objects[7]);
+ rsMap1.put(objects[0].toString(), map1);
+ }
+ }
+
+
+ }
+ if (objects.length == 17) {
+
+ if (!objects[1].toString().contains("H")
+ && !objects[2].toString().contains("H")
+ && !objects[3].toString().contains("H")
+ && !objects[4].toString().contains("H")
+ && !objects[5].toString().contains("H")
+ && !objects[6].toString().contains("H"))
+ {
+ map1.put("time", objects[0]);
+ map1.put("PM10", objects[1]);
+ map1.put("PM2_5", objects[2]);
+ map1.put("SO2", objects[3]);
+ map1.put("NO2", objects[4]);
+ map1.put("CO", objects[5]);
+ map1.put("O3", objects[6]);
+ map1.put("AQI", objects[7]);
+ rsMap1.put(objects[0].toString(), map1);
+ }
+
+ if (objects[9]!=null){
+ if (!objects[10].toString().contains("H")
+ && !objects[11].toString().contains("H")
+ && !objects[12].toString().contains("H")
+ && !objects[13].toString().contains("H")
+ && !objects[14].toString().contains("H")
+ && !objects[15].toString().contains("H"))
+ {
+ map2.put("time", objects[9]);
+ map2.put("PM10", objects[10]);
+ map2.put("PM2_5", objects[11]);
+ map2.put("SO2", objects[12]);
+ map2.put("NO2", objects[13]);
+ map2.put("CO", objects[14]);
+ map2.put("O3", objects[15]);
+ map2.put("AQI", objects[16]);
+ rsMap2.put(objects[9].toString(), map2);
+ }
+ }
+
+ }
+
+
+ }
+ //���������������pm2.5���������������
+ Map<String, List<Integer>> map = getMap(rsMap2,time);
+ //������������PM2.5���������������
+ Map<String, List<Integer>> map2 = getResult(rsMap1, time);
+ List<Integer> list = map.get("count");
+ list.add(map2.get("count").get(0));
+ List<Integer> list1 = map.get("PM2_5");
+ list1.add(map2.get("PM2_5").get(0));
+ return map;
+ }
+
private Map<String, List<Integer>> getMap1(MultipartFile file, int code,String time) throws IOException, ParseException {
XSSFWorkbook workbook = new XSSFWorkbook(file.getInputStream());
HashMap<String, Object> rsMap1 = new HashMap<>();
@@ -337,25 +754,25 @@
HashMap<String, Object> map = new HashMap<>();
HashMap<String, Object> map1 = new HashMap<>();
HashMap<String, Object> map2 = new HashMap<>();
- if (objects.length == 9) {
- map.put("time", objects[0]);
- map.put("PM10", objects[1]);
- map.put("a34004", objects[2]);
- map.put("SO2", objects[3]);
- map.put("NO2", objects[4]);
- map.put("CO", objects[5]);
- map.put("O3_8H", objects[6]);
- map.put("AQI", objects[7]);
- rsMap1.put(objects[0].toString(), map);
- }
+// if (objects.length == 9) {
+// map.put("time", objects[0]);
+// map.put("PM10", objects[1]);
+// map.put("PM2_5", objects[2]);
+// map.put("SO2", objects[3]);
+// map.put("NO2", objects[4]);
+// map.put("CO", objects[5]);
+// map.put("O3", objects[6]);
+// map.put("AQI", objects[7]);
+// rsMap1.put(objects[0].toString(), map);
+// }
if (objects.length == 18) {
map.put("time", objects[0]);
map.put("PM10", objects[1]);
- map.put("a34004", objects[2]);
+ map.put("PM2_5", objects[2]);
map.put("SO2", objects[3]);
map.put("NO2", objects[4]);
map.put("CO", objects[5]);
- map.put("O3_8H", objects[6]);
+ map.put("O3", objects[6]);
map.put("AQI", objects[7]);
rsMap1.put(objects[0].toString(), map);
@@ -368,11 +785,11 @@
{
map1.put("time", objects[10]);
map1.put("PM10", objects[11]);
- map1.put("a34004", objects[12]);
+ map1.put("PM2_5", objects[12]);
map1.put("SO2", objects[13]);
map1.put("NO2", objects[14]);
map1.put("CO", objects[15]);
- map1.put("O3_8H", objects[16]);
+ map1.put("O3", objects[16]);
map1.put("AQI", objects[17]);
rsMap2.put(objects[10].toString(), map1);
}
@@ -382,11 +799,11 @@
if (objects.length == 27) {
map.put("time", objects[0]);
map.put("PM10", objects[1]);
- map.put("a34004", objects[2]);
+ map.put("PM2_5", objects[2]);
map.put("SO2", objects[3]);
map.put("NO2", objects[4]);
map.put("CO", objects[5]);
- map.put("O3_8H", objects[6]);
+ map.put("O3", objects[6]);
map.put("AQI", objects[7]);
rsMap1.put(objects[0].toString(), map);
if ( !objects[11].toString().contains("H")
@@ -399,53 +816,57 @@
map1.put("time", objects[10]);
map1.put("PM10", objects[11]);
- map1.put("a34004", objects[12]);
+ map1.put("PM2_5", objects[12]);
map1.put("SO2", objects[13]);
map1.put("NO2", objects[14]);
map1.put("CO", objects[15]);
- map1.put("O3_8H", objects[16]);
+ map1.put("O3", objects[16]);
map1.put("AQI", objects[17]);
rsMap2.put(objects[10].toString(), map1);
}
- if ( !objects[20].toString().contains("H")
- && !objects[21].toString().contains("H")
- && !objects[22].toString().contains("H")
- && !objects[23].toString().contains("H")
- && !objects[24].toString().contains("H")
- && !objects[25].toString().contains("H")
- ) {
- map2.put("time", objects[19]);
- map2.put("PM10", objects[20]);
- map2.put("a34004", objects[21]);
- map2.put("SO2", objects[22]);
- map2.put("NO2", objects[23]);
- map2.put("CO", objects[24]);
- map2.put("O3_8H", objects[25]);
- map2.put("AQI", objects[26]);
- rsMap3.put(objects[19].toString(), map2);
+ if (objects[19]!=null){
+ if ( !objects[20].toString().contains("H")
+ && !objects[21].toString().contains("H")
+ && !objects[22].toString().contains("H")
+ && !objects[23].toString().contains("H")
+ && !objects[24].toString().contains("H")
+ && !objects[25].toString().contains("H")
+ ) {
+ map2.put("time", objects[19]);
+ map2.put("PM10", objects[20]);
+ map2.put("PM2_5", objects[21]);
+ map2.put("SO2", objects[22]);
+ map2.put("NO2", objects[23]);
+ map2.put("CO", objects[24]);
+ map2.put("O3", objects[25]);
+ map2.put("AQI", objects[26]);
+ rsMap3.put(objects[19].toString(), map2);
+ }
}
+
}
}
//���������������pm2.5���������������
- Map<String, List<Integer>> map = getMap(rsMap3);
+ Map<String, List<Integer>> map = getMap(rsMap3,time);
//������������PM2.5���������������
- Map<String, Integer> map2 = getResult(rsMap2, time);
+ Map<String, List<Integer>> map2 = getResult(rsMap2, time);
List<Integer> list = map.get("count");
- list.add(map2.get("count"));
+ list.add(map2.get("count").get(0));
List<Integer> list1 = map.get("PM2_5");
- list1.add(map2.get("PM2_5"));
+ list1.add(map2.get("PM2_5").get(0));
+ map.put("������",map2.get("������"));
return map;
}
/**
- * ������PM2.5 ���������������
+ * ���������������PM2.5 ���������������
*
* @param rsMap3
*/
- private Map<String, List<Integer>> getMap(HashMap<String, Object> rsMap3) {
+ private Map<String, List<Integer>> getMap(HashMap<String, Object> rsMap3,String time) {
HashMap<String, List<Integer>> listMap = new HashMap<>();
- Set<String> strings = rsMap3.keySet();
+ ArrayList<Integer> dayList = new ArrayList<>();
ArrayList<Double> list1 = new ArrayList<>();
ArrayList<Double> list2 = new ArrayList<>();
ArrayList<Double> list3 = new ArrayList<>();
@@ -461,6 +882,9 @@
ArrayList<Double> resList = new ArrayList<>();
ArrayList<Integer> list = new ArrayList<>();
ArrayList<Integer> listPM = new ArrayList<>();
+ ArrayList<Double> AQI = new ArrayList<>();
+ ArrayList<Double> pm10List = new ArrayList<>();
+
int count1 = 0;
int count2 = 0;
int count3 = 0;
@@ -473,7 +897,30 @@
int count10 = 0;
int count11 = 0;
int count12 = 0;
+
+ Set<String> strings = rsMap3.keySet();
for (String string : strings) {
+ if (string.equals(time)){
+ Object o = rsMap3.get(string);
+ String s = JSON.toJSONString(o);
+ JSONObject jsonObject = JSON.parseObject(s);
+ Object pm25 = jsonObject.get("PM2_5");
+ String co = jsonObject.getString("CO");
+ String[] split = co.split("\\.");
+ int PM2_5 = (int) Double.parseDouble(pm25.toString());
+ int PM10 = (int) Double.parseDouble(jsonObject.getString("PM10"));
+ int SO2 = (int) Double.parseDouble(jsonObject.getString("SO2"));
+ int NO2 = (int) Double.parseDouble(jsonObject.getString("NO2"));
+ int O3 = (int) Double.parseDouble(jsonObject.getString("O3"));
+ dayList.add(PM2_5);
+ dayList.add(PM10);
+ dayList.add(SO2);
+ dayList.add(NO2);
+ dayList.add(O3);
+ dayList.add(Integer.parseInt(split[0]));
+ dayList.add(Integer.parseInt(split[1]));
+ }
+
String substring = string.substring(5, 7);
if (substring.equals("01")) {
@@ -481,10 +928,13 @@
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
String aqi = map.get("AQI").toString();
- String pm2_5 = map.get("a34004").toString();
+ String pm2_5 = map.get("PM2_5").toString();
+ String pm10 = map.get("PM10").toString();
+ pm10List.add(Double.parseDouble(pm10));
list1.add(Double.parseDouble(pm2_5));
resList.add(Double.parseDouble(pm2_5));
- if (Double.parseDouble(aqi) < 100) {
+ AQI.add(Double.parseDouble(aqi));
+ if (Double.parseDouble(aqi) <= 100) {
count1++;
}
}
@@ -493,10 +943,13 @@
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
String aqi = map.get("AQI").toString();
- String pm2_5 = map.get("a34004").toString();
+ String pm2_5 = map.get("PM2_5").toString();
+ String pm10 = map.get("PM10").toString();
+ pm10List.add(Double.parseDouble(pm10));
list2.add(Double.parseDouble(pm2_5));
resList.add(Double.parseDouble(pm2_5));
- if (Double.parseDouble(aqi) < 100) {
+ AQI.add(Double.parseDouble(aqi));
+ if (Double.parseDouble(aqi) <= 100) {
count2++;
}
}
@@ -505,10 +958,13 @@
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
String aqi = map.get("AQI").toString();
- String pm2_5 = map.get("a34004").toString();
+ String pm2_5 = map.get("PM2_5").toString();
+ String pm10 = map.get("PM10").toString();
+ pm10List.add(Double.parseDouble(pm10));
list3.add(Double.parseDouble(pm2_5));
resList.add(Double.parseDouble(pm2_5));
- if (Double.parseDouble(aqi) < 100) {
+ AQI.add(Double.parseDouble(aqi));
+ if (Double.parseDouble(aqi) <= 100) {
count3++;
}
}
@@ -516,13 +972,14 @@
Object o = rsMap3.get(string);
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
-
String aqi = map.get("AQI").toString();
-
- String pm2_5 = map.get("a34004").toString();
+ String pm2_5 = map.get("PM2_5").toString();
+ String pm10 = map.get("PM10").toString();
+ pm10List.add(Double.parseDouble(pm10));
list4.add(Double.parseDouble(pm2_5));
resList.add(Double.parseDouble(pm2_5));
- if (Double.parseDouble(aqi) < 100) {
+ AQI.add(Double.parseDouble(aqi));
+ if (Double.parseDouble(aqi) <= 100) {
count4++;
}
}
@@ -531,10 +988,13 @@
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
String aqi = map.get("AQI").toString();
- String pm2_5 = map.get("a34004").toString();
+ String pm2_5 = map.get("PM2_5").toString();
+ String pm10 = map.get("PM10").toString();
+ pm10List.add(Double.parseDouble(pm10));
list5.add(Double.parseDouble(pm2_5));
resList.add(Double.parseDouble(pm2_5));
- if (Double.parseDouble(aqi) < 100) {
+ AQI.add(Double.parseDouble(aqi));
+ if (Double.parseDouble(aqi) <= 100) {
count5++;
}
}
@@ -543,10 +1003,13 @@
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
String aqi = map.get("AQI").toString();
- String pm2_5 = map.get("a34004").toString();
+ String pm2_5 = map.get("PM2_5").toString();
+ String pm10 = map.get("PM10").toString();
+ pm10List.add(Double.parseDouble(pm10));
list6.add(Double.parseDouble(pm2_5));
resList.add(Double.parseDouble(pm2_5));
- if (Double.parseDouble(aqi) < 100) {
+ AQI.add(Double.parseDouble(aqi));
+ if (Double.parseDouble(aqi) <= 100) {
count6++;
}
}
@@ -555,10 +1018,13 @@
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
String aqi = map.get("AQI").toString();
- String pm2_5 = map.get("a34004").toString();
+ String pm2_5 = map.get("PM2_5").toString();
+ String pm10 = map.get("PM10").toString();
+ pm10List.add(Double.parseDouble(pm10));
list7.add(Double.parseDouble(pm2_5));
resList.add(Double.parseDouble(pm2_5));
- if (Double.parseDouble(aqi) < 100) {
+ AQI.add(Double.parseDouble(aqi));
+ if (Double.parseDouble(aqi) <= 100) {
count7++;
}
}
@@ -567,10 +1033,13 @@
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
String aqi = map.get("AQI").toString();
- String pm2_5 = map.get("a34004").toString();
+ String pm2_5 = map.get("PM2_5").toString();
+ String pm10 = map.get("PM10").toString();
+ pm10List.add(Double.parseDouble(pm10));
list8.add(Double.parseDouble(pm2_5));
resList.add(Double.parseDouble(pm2_5));
- if (Double.parseDouble(aqi) < 100) {
+ AQI.add(Double.parseDouble(aqi));
+ if (Double.parseDouble(aqi) <= 100) {
count8++;
}
}
@@ -579,10 +1048,13 @@
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
String aqi = map.get("AQI").toString();
- String pm2_5 = map.get("a34004").toString();
+ String pm2_5 = map.get("PM2_5").toString();
+ String pm10 = map.get("PM10").toString();
+ pm10List.add(Double.parseDouble(pm10));
list9.add(Double.parseDouble(pm2_5));
resList.add(Double.parseDouble(pm2_5));
- if (Double.parseDouble(aqi) < 100) {
+ AQI.add(Double.parseDouble(aqi));
+ if (Double.parseDouble(aqi) <= 100) {
count9++;
}
}
@@ -591,10 +1063,13 @@
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
String aqi = map.get("AQI").toString();
- String pm2_5 = map.get("a34004").toString();
+ String pm2_5 = map.get("PM2_5").toString();
+ String pm10 = map.get("PM10").toString();
+ pm10List.add(Double.parseDouble(pm10));
list10.add(Double.parseDouble(pm2_5));
resList.add(Double.parseDouble(pm2_5));
- if (Double.parseDouble(aqi) < 100) {
+ AQI.add(Double.parseDouble(aqi));
+ if (Double.parseDouble(aqi) <= 100) {
count10++;
}
}
@@ -603,10 +1078,13 @@
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
String aqi = map.get("AQI").toString();
- String pm2_5 = map.get("a34004").toString();
+ String pm2_5 = map.get("PM2_5").toString();
+ String pm10 = map.get("PM10").toString();
+ pm10List.add(Double.parseDouble(pm10));
list11.add(Double.parseDouble(pm2_5));
resList.add(Double.parseDouble(pm2_5));
- if (Double.parseDouble(aqi) < 100) {
+ AQI.add(Double.parseDouble(aqi));
+ if (Double.parseDouble(aqi) <= 100) {
count11++;
}
}
@@ -615,15 +1093,52 @@
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
String aqi = map.get("AQI").toString();
- String pm2_5 = map.get("a34004").toString();
+ String pm2_5 = map.get("PM2_5").toString();
+ String pm10 = map.get("PM10").toString();
+ pm10List.add(Double.parseDouble(pm10));
list12.add(Double.parseDouble(pm2_5));
resList.add(Double.parseDouble(pm2_5));
- if (Double.parseDouble(aqi) < 100) {
+ AQI.add(Double.parseDouble(aqi));
+ if (Double.parseDouble(aqi) <= 100) {
count12++;
}
}
}
+ //������������pm2.5
+ String ju = time.substring(5, 7);
+ int data = Integer.parseInt(ju);
+ ArrayList<Double> rsData = new ArrayList<>();
+ if (data>=1 && data<=3){
+ rsData.addAll(list1);
+ rsData.addAll(list2);
+ rsData.addAll(list3);
+ }else if (data>=4 &&data<=6){
+ rsData.addAll(list4);
+ rsData.addAll(list5);
+ rsData.addAll(list6);
+ }else if (data>=7 &&data<=9){
+ rsData.addAll(list7);
+ rsData.addAll(list8);
+ rsData.addAll(list9);
+ }else {
+ rsData.addAll(list10);
+ rsData.addAll(list11);
+ rsData.addAll(list12);
+ }
+ ArrayList<Integer> pmList = new ArrayList<>();
+ if (rsData.size()>0){
+ int pm = (int) AmendUtils.sciCal(rsData.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
+ pmList.add(pm);
+ }
+
+
+ //������������������
+ ArrayList<Integer> integers = getCode(AQI);
+ String rsTime = time.substring(0, 4);
+ integers.add(Integer.parseInt(rsTime));
+
+
list.add(count1);
list.add(count2);
list.add(count3);
@@ -638,59 +1153,76 @@
list.add(count12);
Integer sum = list.stream().reduce(Integer::sum).orElse(0);
+
list.add(sum);
listMap.put("count", list);
Integer collect1 = 0;
if (list1.size() > 0) {
- collect1 = Math.toIntExact(Math.round(list1.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+
+ collect1 = (int) AmendUtils.sciCal(list1.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
}
Integer collect2 = 0;
if (list2.size() > 0) {
- collect2 = Math.toIntExact(Math.round(list2.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+
+ collect2= (int) AmendUtils.sciCal(list2.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
}
Integer collect3 = 0;
if (list3.size() > 0) {
- collect3 = Math.toIntExact(Math.round(list3.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+
+ collect3 = (int) AmendUtils.sciCal(list3.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
}
Integer collect4 = 0;
if (list4.size() > 0) {
- collect4 = Math.toIntExact(Math.round(list4.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+
+ collect4 = (int) AmendUtils.sciCal(list4.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
}
Integer collect5 = 0;
if (list5.size() > 0) {
- collect5 = Math.toIntExact(Math.round(list5.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+
+ collect5 = (int) AmendUtils.sciCal(list5.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
}
Integer collect6 = 0;
if (list6.size() > 0) {
- collect6 = Math.toIntExact(Math.round(list6.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+
+ collect6 = (int) AmendUtils.sciCal(list6.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
}
+
Integer collect7 = 0;
if (list7.size() > 0) {
- collect7 = Math.toIntExact(Math.round(list7.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+
+ collect7 = (int) AmendUtils.sciCal(list7.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
}
Integer collect8 = 0;
if (list8.size() > 0) {
- collect8 = Math.toIntExact(Math.round(list8.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+
+ collect8 = (int) AmendUtils.sciCal(list8.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
}
Integer collect9 = 0;
if (list9.size() > 0) {
- collect9 = Math.toIntExact(Math.round(list9.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+
+ collect9 = (int) AmendUtils.sciCal(list9.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
}
Integer collect10 = 0;
if (list10.size() > 0) {
- collect10 = Math.toIntExact(Math.round(list10.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+
+ collect10 = (int) AmendUtils.sciCal(list10.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
}
Integer collect11 = 0;
if (list11.size() > 0) {
- collect11 = Math.toIntExact(Math.round(list11.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+
+ collect11 = (int) AmendUtils.sciCal(list11.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
}
Integer collect12 = 0;
if (list12.size() > 0) {
- collect12 = Math.toIntExact(Math.round(list12.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+
+ collect12 = (int) AmendUtils.sciCal(list12.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
}
//���������pm2.5������
- int resPM25 = Math.toIntExact(Math.round(resList.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ int resPM25 = (int) AmendUtils.sciCal(resList.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
+ ArrayList<Integer> list13 = new ArrayList<>();
+ int rsPM10 = (int) AmendUtils.sciCal(pm10List.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
+ list13.add(rsPM10);
listPM.add(collect1);
listPM.add(collect2);
listPM.add(collect3);
@@ -704,8 +1236,59 @@
listPM.add(collect11);
listPM.add(collect12);
listPM.add(resPM25);
- listMap.put("PM2_5", listPM);
+ listMap.put("PM2_5",listPM);
+ listMap.put("������",integers);
+ listMap.put("day",dayList);
+ listMap.put("������",pmList);
+ listMap.put("PM10",list13);
return listMap;
+ }
+
+ /**
+ * ������������������
+ * @param AQI
+ * @return
+ */
+ private ArrayList<Integer> getCode(ArrayList<Double> AQI) {
+ ArrayList<Integer> integers = new ArrayList<>();
+ int code1 =0;
+ int code2 =0;
+ int code3 =0;
+ int code4 =0;
+ int code5 =0;
+ int code6 =0;
+ int i;
+ for (double aDouble : AQI) {
+ i=(int)aDouble;
+ String s = AQIUtils.classOfPollutionByAqi(i);
+ if (s.equals("���")){
+ code1++;
+ }
+ if (s.equals("���")){
+ code2++;
+ }
+ if (s.equals("������������")){
+ code3++;
+ }
+ if (s.equals("������������")){
+ code4++;
+ }
+ if (s.equals("������������")){
+ code5++;
+ }
+ if (s.equals("������������")){
+ code6++;
+ }
+ }
+ integers.add(code1+code2);
+ integers.add(code1);
+ integers.add(code2);
+ integers.add(code3);
+ integers.add(code4);
+ integers.add(code5);
+ integers.add(code6);
+
+ return integers;
}
/**
@@ -713,14 +1296,22 @@
*
* @param rsMap2
*/
- private Map<String, Integer> getResult(HashMap<String, Object> rsMap2, String time) throws ParseException {
- HashMap<String, Integer> rsMap = new HashMap<>();
+ private Map<String, List<Integer>> getResult(HashMap<String, Object> rsMap2, String time) throws ParseException {
+ HashMap<String, List<Integer>> rsMap = new HashMap<>();
ArrayList<Double> list = new ArrayList<>();
+ ArrayList<Integer> list2 = new ArrayList<>();
+ ArrayList<Integer> list3 = new ArrayList<>();
+ ArrayList<Double> AQI = new ArrayList<>();
+ ArrayList<Double> list4 = new ArrayList<>();
+ ArrayList<Integer> pm10List = new ArrayList<>();
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
Calendar instance = Calendar.getInstance();
instance.setTime(sdf1.parse(time));
instance.add(Calendar.YEAR, -1);
Date date = instance.getTime();
+ //���������
+ String format = sdf1.format(date);
+ String rsTime = format.substring(0, 4);
//���������
long time1 = date.getTime();
int count = 0;
@@ -733,17 +1324,29 @@
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
String aqi = map.get("AQI").toString();
- String pm2_5 = map.get("a34004").toString();
+ String pm2_5 = map.get("PM2_5").toString();
+ String pm10 = map.get("PM10").toString();
+ list4.add(Double.parseDouble(pm10));
list.add(Double.parseDouble(pm2_5));
- if (Double.parseDouble(aqi) < 100) {
+ AQI.add(Double.parseDouble(aqi));
+ if (Double.parseDouble(aqi) <= 100) {
count++;
}
}
}
+ list2.add(count);
+ ArrayList<Integer> rsAqi = getCode(AQI);
+ rsAqi.add(Integer.parseInt(rsTime));
+
//���������pm2.5������
- int PM2_5 = Math.toIntExact(Math.round(list.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
- rsMap.put("count", count);
- rsMap.put("PM2_5", PM2_5);
+ int PM2_5 = (int) AmendUtils.sciCal(list.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
+ int PM10 = (int) AmendUtils.sciCal(list4.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
+ list3.add(PM2_5);
+ pm10List.add(PM10);
+ rsMap.put("count", list2);
+ rsMap.put("PM2_5", list3);
+ rsMap.put("������",rsAqi);
+ rsMap.put("PM10",pm10List);
return rsMap;
}
@@ -790,67 +1393,41 @@
HashMap<String, Object> map1 = new HashMap<>();
HashMap<String, Object> map2 = new HashMap<>();
if (objects.length == 18) {
- if ( !objects[11].toString().contains("H")
- && !objects[12].toString().contains("H")
- && !objects[13].toString().contains("H")
- && !objects[14].toString().contains("H")
- && !objects[15].toString().contains("H")
- && !objects[16].toString().contains("H")
- ) {
-// map1.put("time", objects[10]);
- //PM10
- map1.put("a34002", objects[11]);
- //PM2_5
- map1.put("a34004", objects[12]);
- //SO2
- map1.put("a21026", objects[13]);
- //NO2
- map1.put("a21004", objects[14]);
- //CO
- map1.put("a21005", objects[15]);
- //O3_8H
- map1.put("a05024", objects[16]);
- rsMap1.put(objects[10].toString(), map1);
- }
+ map1.put("PM10", objects[11]);
+ map1.put("PM2_5", objects[12]);
+ map1.put("SO2", objects[13]);
+ map1.put("NO2", objects[14]);
+ map1.put("CO", objects[15]);
+ map1.put("O3", objects[16]);
+
+ rsMap1.put(objects[10].toString(), map1);
}
if (objects.length == 27) {
- if ( !objects[11].toString().contains("H")
- && !objects[12].toString().contains("H")
- && !objects[13].toString().contains("H")
- && !objects[14].toString().contains("H")
- && !objects[15].toString().contains("H")
- && !objects[16].toString().contains("H")
- ) {
- map1.put("a34002", objects[11]);
- map1.put("a34004", objects[12]);
- map1.put("a21026", objects[13]);
- map1.put("a21004", objects[14]);
- map1.put("a21005", objects[15]);
- map1.put("a05024", objects[16]);
+ map1.put("PM10", objects[11]);
+ map1.put("PM2_5", objects[12]);
+ map1.put("SO2", objects[13]);
+ map1.put("NO2", objects[14]);
+ map1.put("CO", objects[15]);
+ map1.put("O3", objects[16]);
- rsMap1.put(objects[10].toString(), map1);
- }
- if (
- !objects[20].toString().contains("H")
- && !objects[21].toString().contains("H")
- && !objects[22].toString().contains("H")
- && !objects[23].toString().contains("H")
- && !objects[24].toString().contains("H")
- && !objects[25].toString().contains("H"))
- {
- map2.put("a34002", objects[20]);
- map2.put("a34004", objects[21]);
- map2.put("a21026", objects[22]);
- map2.put("a21004", objects[23]);
- map2.put("a21005", objects[24]);
- map2.put("a05024", objects[25]);
+ rsMap1.put(objects[10].toString(), map1);
+
+ if (objects[19]!=null){
+ map2.put("PM10", objects[20]);
+ map2.put("PM2_5", objects[21]);
+ map2.put("SO2", objects[22]);
+ map2.put("NO2", objects[23]);
+ map2.put("CO", objects[24]);
+ map2.put("O3", objects[25]);
rsMap2.put(objects[19].toString(), map2);
+
}
+
}
}
@@ -880,170 +1457,251 @@
HashMap<String, Object> map1 = new HashMap<>();
HashMap<String, Object> map2 = new HashMap<>();
if (objects.length == 18) {
- if ( !objects[11].toString().contains("H")
- && !objects[12].toString().contains("H")
- && !objects[13].toString().contains("H")
- && !objects[14].toString().contains("H")
- && !objects[15].toString().contains("H")
- && !objects[16].toString().contains("H")
- ) {
-// map1.put("time", objects[10]);
- map1.put("a34002", objects[11]);
- map1.put("a34004", objects[12]);
- map1.put("a21026", objects[13]);
- map1.put("a21004", objects[14]);
- map1.put("a21005", objects[15]);
- map1.put("a05024", objects[16]);
- rsMap3.put(objects[10].toString(), map1);
- }
+ map1.put("PM10", objects[11]);
+ map1.put("PM2_5", objects[12]);
+ map1.put("SO2", objects[13]);
+ map1.put("NO2", objects[14]);
+ map1.put("CO", objects[15]);
+ map1.put("O3", objects[16]);
+
+ rsMap3.put(objects[10].toString(), map1);
+
}
if (objects.length == 27) {
- if ( !objects[11].toString().contains("H")
- && !objects[12].toString().contains("H")
- && !objects[13].toString().contains("H")
- && !objects[14].toString().contains("H")
- && !objects[15].toString().contains("H")
- && !objects[16].toString().contains("H"))
- {
- map1.put("a34002", objects[11]);
- map1.put("a34004", objects[12]);
- map1.put("a21026", objects[13]);
- map1.put("a21004", objects[14]);
- map1.put("a21005", objects[15]);
- map1.put("a05024", objects[16]);
- rsMap3.put(objects[10].toString(), map1);
- }
- if ( !objects[20].toString().contains("H")
- && !objects[21].toString().contains("H")
- && !objects[22].toString().contains("H")
- && !objects[23].toString().contains("H")
- && !objects[24].toString().contains("H")
- && !objects[25].toString().contains("H")
- ) {
-// map2.put("time", objects[19]);
- map2.put("a34002", objects[20]);
- map2.put("a34004", objects[21]);
- map2.put("a21026", objects[22]);
- map2.put("a21004", objects[23]);
- map2.put("a21005", objects[24]);
- map2.put("a05024", objects[25]);
+ map1.put("PM10", objects[11]);
+ map1.put("PM2_5", objects[12]);
+ map1.put("SO2", objects[13]);
+ map1.put("NO2", objects[14]);
+ map1.put("CO", objects[15]);
+ map1.put("O3", objects[16]);
+ rsMap3.put(objects[10].toString(), map1);
+
+ if (objects[19]!=null){
+ map2.put("PM10", objects[20]);
+ map2.put("PM2_5", objects[21]);
+ map2.put("SO2", objects[22]);
+ map2.put("NO2", objects[23]);
+ map2.put("CO", objects[24]);
+ map2.put("O3", objects[25]);
rsMap4.put(objects[19].toString(), map2);
}
+
}
}
+ //���������������������
Set<String> strings = rsMap1.keySet();
for (String string : strings) {
Object o = rsMap1.get(string);
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
- if (!rsMap3.containsKey(string)){
- hnMap1.put(string,map);
- continue;
- }
+
Object o1 = rsMap3.get(string);
String s1 = JSON.toJSONString(o1);
Map map1 = JSON.parseObject(s1, Map.class);
Set sets = map1.keySet();
HashMap<Object, Object> hs = new HashMap<>();
for (Object set : sets) {
- if (set.toString().equals("a21005")){
+ if (set.toString().equals("CO")){
String s3 = map1.get(set).toString();
String s2 = map.get(set).toString();
- hs.put(set,new BigDecimal((Double.parseDouble(s3)+Double.parseDouble(s2))/2).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue());
+ if (s3.contains("H") && !s2.contains("H")){
+ hs.put(set,Double.parseDouble(s2));
+ }else if(!s3.contains("H") && s2.contains("H")){
+ hs.put(set,Double.parseDouble(s3));
+ }else if(s3.contains("H") && s2.contains("H")){
+ break;
+ }else {
+ hs.put(set, AmendUtils.sciCal((Double.parseDouble(s3)+Double.parseDouble(s2))/2,1));
+ }
continue;
}
String s3 = map1.get(set).toString();
String s2 = map.get(set).toString();
- hs.put(set,Math.round((Double.parseDouble(s3)+Double.parseDouble(s2))/2));
+ if (s3.contains("H") && !s2.contains("H")){
+ hs.put(set,Double.parseDouble(s2));
+ }else if(!s3.contains("H") && s2.contains("H")){
+ hs.put(set,Double.parseDouble(s3));
+ }else if(s3.contains("H") && s2.contains("H")){
+ break;
+ }else {
+ hs.put(set, AmendUtils.sciCal((Double.parseDouble(s3)+Double.parseDouble(s2))/2,0));
+ }
}
- hnMap1.put(string,hs);
+ if (hs.size()==6){
+ hnMap1.put(string,hs);
+ }
+
}
- Set<String> strings2 = rsMap3.keySet();
- for (String s : strings2) {
- Object o = rsMap3.get(s);
- String s1 = JSON.toJSONString(o);
- Map map = JSON.parseObject(s1, Map.class);
- if (!hnMap1.containsKey(s)){
- hnMap1.put(s,map);
- }
- }
-
+ //���������������������
Set<String> strings1 = rsMap2.keySet();
for (String s : strings1) {
Object o = rsMap2.get(s);
String s1 = JSON.toJSONString(o);
Map map = JSON.parseObject(s1, Map.class);
- if (!rsMap4.containsKey(s)){
- hnMap2.put(s,map);
- continue;
- }
Object o1 = rsMap4.get(s);
String s2 = JSON.toJSONString(o1);
Map map1 = JSON.parseObject(s2, Map.class);
Set sets = map1.keySet();
HashMap<Object, Object> hs = new HashMap<>();
for (Object set : sets) {
- if (set.toString().equals("a21005")){
+ if (set.toString().equals("CO")){
String s3 = map1.get(set).toString();
String s4 = map.get(set).toString();
- hs.put(set,new BigDecimal((Double.parseDouble(s3)+Double.parseDouble(s4))/2).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue());
+ if (s3.contains("H") && !s4.contains("H")){
+ hs.put(set,Double.parseDouble(s4));
+ }else if(!s3.contains("H") && s4.contains("H")){
+ hs.put(set,Double.parseDouble(s3));
+ }else if(s3.contains("H") && s4.contains("H")){
+ break;
+ }else {
+ hs.put(set, AmendUtils.sciCal((Double.parseDouble(s3)+Double.parseDouble(s4))/2,1));
+ }
continue;
}
String s3 = map1.get(set).toString();
String s4 = map.get(set).toString();
- hs.put(set,Math.round((Double.parseDouble(s3)+Double.parseDouble(s4))/2));
+ if (s3.contains("H") && !s4.contains("H")){
+ hs.put(set,Double.parseDouble(s4));
+ }else if(!s3.contains("H") && s4.contains("H")){
+ hs.put(set,Double.parseDouble(s3));
+ }else if(s3.contains("H") && s4.contains("H")){
+ break;
+ }else {
+ hs.put(set, AmendUtils.sciCal((Double.parseDouble(s3)+Double.parseDouble(s4))/2,0));
+ }
}
- hnMap2.put(s,hs);
+ if (hs.size()==6){
+ hnMap2.put(s,hs);
+ }
+
}
- Set<String> strings3 = rsMap4.keySet();
- for (String s : strings3) {
- Object o = rsMap4.get(s);
- String s1 = JSON.toJSONString(o);
- Map map = JSON.parseObject(s1, Map.class);
- if (!rsMap2.containsKey(s1)){
- hnMap2.put(s,map);
- }
- }
+
//���������������aqi
getHnMap(hnMap2);
//���������������aqi
getHnMap(hnMap1);
- //
- Map<String, List<Integer>> map = getMap(hnMap2);
-
- Map<String, Integer> map2 = getResult(hnMap1, time);
-
+ //���������������pm2.5
+ Map<String, List<Integer>> map = getMap(hnMap2,time);
+ //���������������pm2.5
+ Map<String, List<Integer>> map2 = getResult(hnMap1, time);
List<Integer> list = map.get("count");
- list.add(map2.get("count"));
+ list.add(map2.get("count").get(0));
List<Integer> list1 = map.get("PM2_5");
- list1.add(map2.get("PM2_5"));
+ list1.add(map2.get("PM2_5").get(0));
+ List<Integer> list2 = map.get("PM10");
+ list2.add(map2.get("PM10").get(0));
+
+ //���������������������������������������PM2.5
+ List<Integer> month = getMonth1(time, hnMap2);
+ int month2 = getMonth2(time, hnMap1);
+ month.add(month2);
+ map.put("month",month);
return map;
}
- //������aqi
+
+
+ /**
+ * ���������������������������������
+ * @param time
+ * @param hnMap1
+ * @return
+ */
+ private int getMonth2(String time, HashMap<String, Object> hnMap1) {
+ String years = time.substring(0, 4);
+ int s = Integer.parseInt(years) - 1;
+ String month = time.substring(5, 7);
+ String day = time.substring(8, 10);
+ ArrayList<Double> list2 = new ArrayList<>();
+ for (int i = 1; i <= Integer.parseInt(day); i++) {
+ if (i < 10) {
+ Object o = hnMap1.get(s + "-" + month + "-0" + i);
+ String s1 = JSON.toJSONString(o);
+ if (s1.equals("null")){
+ list2.add(0.0);
+ continue;
+ }
+ Map map1 = JSON.parseObject(s1, Map.class);
+ String pm2_5 = map1.get("PM2_5").toString();
+ list2.add(Double.parseDouble(pm2_5));
+ } else {
+ Object o = hnMap1.get(s + "-" + month + "-" + i);
+ String s1 = JSON.toJSONString(o);
+ if (s1.equals("null")){
+ list2.add(0.0);
+ continue;
+ }
+ Map map1 = JSON.parseObject(s1, Map.class);
+ String pm2_5 = map1.get("PM2_5").toString();
+ list2.add(Double.parseDouble(pm2_5));
+ }
+ }
+ int rsMonth = (int) AmendUtils.sciCal(list2.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
+ return rsMonth;
+ }
+
+ /**
+ * ���������������������������������������
+ * @param time
+ * @param hnMap2
+ * @return
+ */
+ private List<Integer> getMonth1(String time, HashMap<String, Object> hnMap2) {
+ String years = time.substring(0, 4);
+ String month = time.substring(5, 7);
+ String day = time.substring(8, 10);
+ ArrayList<Double> list2 = new ArrayList<>();
+ ArrayList<Double> aqiList = new ArrayList<>();
+ for (int i = 1; i <=Integer.parseInt(day) ; i++) {
+ if (i<10){
+ Object o = hnMap2.get(years + "-" + month + "-0" + i);
+ String s1 = JSON.toJSONString(o);
+ Map map1 = JSON.parseObject(s1, Map.class);
+ String pm2_5 = map1.get("PM2_5").toString();
+ String aqi = map1.get("AQI").toString();
+ aqiList.add(Double.parseDouble(aqi));
+ list2.add(Double.parseDouble(pm2_5));
+ }else {
+ Object o = hnMap2.get(years + "-" + month + "-" + i);
+ String s1 = JSON.toJSONString(o);
+ Map map1 = JSON.parseObject(s1, Map.class);
+ String pm2_5 = map1.get("PM2_5").toString();
+ String aqi = map1.get("AQI").toString();
+ aqiList.add(Double.parseDouble(aqi));
+ list2.add(Double.parseDouble(pm2_5));
+ }
+
+ }
+ int rsMonth = (int) AmendUtils.sciCal(list2.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
+ List<Integer> code = getCode(aqiList);
+ code.add(rsMonth);
+ return code;
+ }
+
private void getHnMap(HashMap<String, Object> hnMap2) {
Set<String> strings4 = hnMap2.keySet();
for (String s : strings4) {
Object o = hnMap2.get(s);
String s1 = JSON.toJSONString(o);
Map rs = JSON.parseObject(s1, Map.class);
- AQI aqi = AQIUtils.dailyAQI(rs);
+ Map aqi1 = AqiUtils.getAqi(rs);
JSONObject jsonObject = JSON.parseObject(s1);
- jsonObject.put("AQI",aqi.getAQIValue());
+ jsonObject.put("AQI",aqi1.get("AQI"));
String s2 = JSON.toJSONString(jsonObject);
Map map = JSON.parseObject(s2, Map.class);
hnMap2.put(s,map);
}
}
+
}
--
Gitblit v1.8.0