From 1b92eb61fee576a51c58e34ede99fc199dcb3f13 Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Wed, 19 Oct 2022 14:40:46 +0800
Subject: [PATCH] 上传浑南区空气质量日报功能

---
 screen-api/src/main/java/com/moral/api/pojo/vo/excel/HnExcelVo.java         |   58 +++
 screen-api/src/main/java/com/moral/api/service/impl/HnExcelServiceImpl.java | 1000 ++++++++++++++++++++++++++++++++++++++++------------
 screen-api/src/main/java/com/moral/api/controller/ExcelController.java      |   21 +
 screen-api/src/main/java/com/moral/api/service/HnExcelService.java          |   10 
 4 files changed, 851 insertions(+), 238 deletions(-)

diff --git a/screen-api/src/main/java/com/moral/api/controller/ExcelController.java b/screen-api/src/main/java/com/moral/api/controller/ExcelController.java
index 3aa71db..a669f47 100644
--- a/screen-api/src/main/java/com/moral/api/controller/ExcelController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/ExcelController.java
@@ -19,6 +19,7 @@
 
 import com.moral.api.pojo.bo.ExcelBO;
 import com.moral.api.pojo.vo.excel.ExcelVo;
+import com.moral.api.pojo.vo.excel.HnExcelVo;
 import com.moral.api.pojo.vo.excel.SyExcelVo;
 import com.moral.api.service.ExcelService;
 import com.moral.api.service.HnExcelService;
@@ -129,4 +130,24 @@
         return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(),syExcelVo);
     }
 
+
+    /**
+     * ���������������������������
+     * @param id
+     * @return
+     */
+    @GetMapping("/hnExcelExport")
+    public ResultMessage hnExcelExport(Integer id) throws ParseException {
+        if (id==null){
+            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+        }
+
+        HnExcelVo hnExcelVo = hnExcelService.hnExport(id);
+        if (hnExcelVo==null){
+            return ResultMessage.fail(ResponseCodeEnum.TARGET_IS_NULL.getCode(), ResponseCodeEnum.TARGET_IS_NULL.getMsg());
+        }
+        return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(),hnExcelVo);
+    }
+
+
 }
diff --git a/screen-api/src/main/java/com/moral/api/pojo/vo/excel/HnExcelVo.java b/screen-api/src/main/java/com/moral/api/pojo/vo/excel/HnExcelVo.java
new file mode 100644
index 0000000..b2156cb
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/pojo/vo/excel/HnExcelVo.java
@@ -0,0 +1,58 @@
+package com.moral.api.pojo.vo.excel;
+
+
+import lombok.Data;
+
+import java.util.Map;
+
+@Data
+public class HnExcelVo {
+
+
+    private String time;
+
+    private String time2;
+
+    private Double hnO3;
+    private Double hnPM25;
+    private Double hnPM10;
+    private Double hnCO;
+    private Double hnSO2;
+    private Double hnNO2;
+    private Double xxjNO2;
+    private Double xxjPM25;
+    private Double xxjPM10;
+    private Double xxjCO;
+    private Double xxjSO2;
+    private Double xxjO3;
+
+    private String data1;
+    private String data2;
+    private String data3;
+    private String data4;
+    private String data5;
+    private String data6;
+    private String data7;
+    private String data8;
+
+
+
+    private String code1;
+    private String code2;
+    private String code3;
+    private String code4;
+    private String code5;
+    private String code6;
+    private String code7;
+
+    private Map<String,Map<String,Object>> hnd;
+    private Map<String,Map<String,Object>> xxj;
+
+    private Map<String,Object> list1;
+
+
+
+
+
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/service/HnExcelService.java b/screen-api/src/main/java/com/moral/api/service/HnExcelService.java
index 31b8088..26f7e68 100644
--- a/screen-api/src/main/java/com/moral/api/service/HnExcelService.java
+++ b/screen-api/src/main/java/com/moral/api/service/HnExcelService.java
@@ -8,6 +8,7 @@
 import java.util.Map;
 
 import com.moral.api.pojo.bo.ExcelBO;
+import com.moral.api.pojo.vo.excel.HnExcelVo;
 import com.moral.api.pojo.vo.excel.SyExcelVo;
 
 public interface HnExcelService {
@@ -30,4 +31,13 @@
      * @return
      */
     SyExcelVo SyExport(Integer id);
+
+
+    /**
+     * ���������������������������
+     * @param id
+     * @return
+     */
+    HnExcelVo hnExport(Integer id) throws ParseException;
+
 }
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 b411222..8572f44 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,6 +26,7 @@
 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;
@@ -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();
@@ -186,16 +206,19 @@
                         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);
@@ -206,6 +229,8 @@
                         }
 
                     }
+
+
                     if (s.equals("PM2_5")){
                         ArrayList<String> list1 = new ArrayList<>();
                         List<Integer> list = stringListMap.get(s);
@@ -223,10 +248,12 @@
 
                         double i1 = AmendUtils.sciCal((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);
@@ -237,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);
@@ -271,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);
@@ -301,16 +600,128 @@
         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();
+
+            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) {
+                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<>();
@@ -340,17 +751,17 @@
             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("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("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]);
@@ -358,7 +769,7 @@
                 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);
 
@@ -375,7 +786,7 @@
                     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);
                 }
@@ -389,7 +800,7 @@
                 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")
@@ -406,27 +817,30 @@
                     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("PM2_5", 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);
+                    }
                 }
+
             }
 
         }
@@ -443,13 +857,13 @@
     }
 
     /**
-     * ������PM2.5 ���������������
+     * ���������������PM2.5 ���������������
      *
      * @param 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<>();
@@ -466,7 +880,8 @@
         ArrayList<Integer> list = new ArrayList<>();
         ArrayList<Integer> listPM = new ArrayList<>();
         ArrayList<Double> AQI = new ArrayList<>();
-        ArrayList<Integer> integers = new ArrayList<>();
+        ArrayList<Double> pm10List = new ArrayList<>();
+
         int count1 = 0;
         int count2 = 0;
         int count3 = 0;
@@ -479,9 +894,30 @@
         int count10 = 0;
         int count11 = 0;
         int count12 = 0;
-        String rsTime = time.substring(0, 4);
-        integers.add(Integer.parseInt(rsTime));
+
+        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")) {
@@ -490,6 +926,8 @@
                 Map map = JSON.parseObject(s, Map.class);
                 String aqi = map.get("AQI").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));
                 AQI.add(Double.parseDouble(aqi));
@@ -503,6 +941,8 @@
                 Map map = JSON.parseObject(s, Map.class);
                 String aqi = map.get("AQI").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));
                 AQI.add(Double.parseDouble(aqi));
@@ -516,6 +956,8 @@
                 Map map = JSON.parseObject(s, Map.class);
                 String aqi = map.get("AQI").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));
                 AQI.add(Double.parseDouble(aqi));
@@ -529,6 +971,8 @@
                 Map map = JSON.parseObject(s, Map.class);
                 String aqi = map.get("AQI").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));
                 AQI.add(Double.parseDouble(aqi));
@@ -542,6 +986,8 @@
                 Map map = JSON.parseObject(s, Map.class);
                 String aqi = map.get("AQI").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));
                 AQI.add(Double.parseDouble(aqi));
@@ -555,6 +1001,8 @@
                 Map map = JSON.parseObject(s, Map.class);
                 String aqi = map.get("AQI").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));
                 AQI.add(Double.parseDouble(aqi));
@@ -568,6 +1016,8 @@
                 Map map = JSON.parseObject(s, Map.class);
                 String aqi = map.get("AQI").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));
                 AQI.add(Double.parseDouble(aqi));
@@ -581,6 +1031,8 @@
                 Map map = JSON.parseObject(s, Map.class);
                 String aqi = map.get("AQI").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));
                 AQI.add(Double.parseDouble(aqi));
@@ -594,6 +1046,8 @@
                 Map map = JSON.parseObject(s, Map.class);
                 String aqi = map.get("AQI").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));
                 AQI.add(Double.parseDouble(aqi));
@@ -607,6 +1061,8 @@
                 Map map = JSON.parseObject(s, Map.class);
                 String aqi = map.get("AQI").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));
                 AQI.add(Double.parseDouble(aqi));
@@ -620,6 +1076,8 @@
                 Map map = JSON.parseObject(s, Map.class);
                 String aqi = map.get("AQI").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));
                 AQI.add(Double.parseDouble(aqi));
@@ -633,6 +1091,8 @@
                 Map map = JSON.parseObject(s, Map.class);
                 String aqi = map.get("AQI").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));
                 AQI.add(Double.parseDouble(aqi));
@@ -642,7 +1102,6 @@
             }
 
         }
-
         //������������pm2.5
         String ju = time.substring(5, 7);
         int data = Integer.parseInt(ju);
@@ -670,6 +1129,125 @@
             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);
+        list.add(count4);
+        list.add(count5);
+        list.add(count6);
+        list.add(count7);
+        list.add(count8);
+        list.add(count9);
+        list.add(count10);
+        list.add(count11);
+        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 = (int) AmendUtils.sciCal(list1.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
+        }
+        Integer collect2 = 0;
+        if (list2.size() > 0) {
+
+            collect2= (int) AmendUtils.sciCal(list2.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
+        }
+        Integer collect3 = 0;
+        if (list3.size() > 0) {
+
+            collect3 = (int) AmendUtils.sciCal(list3.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
+        }
+        Integer collect4 = 0;
+        if (list4.size() > 0) {
+
+            collect4 = (int) AmendUtils.sciCal(list4.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
+        }
+        Integer collect5 = 0;
+        if (list5.size() > 0) {
+
+            collect5 = (int) AmendUtils.sciCal(list5.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
+        }
+        Integer collect6 = 0;
+        if (list6.size() > 0) {
+
+            collect6 = (int) AmendUtils.sciCal(list6.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
+        }
+
+        Integer collect7 = 0;
+        if (list7.size() > 0) {
+
+            collect7 = (int) AmendUtils.sciCal(list7.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
+        }
+        Integer collect8 = 0;
+        if (list8.size() > 0) {
+
+            collect8 = (int) AmendUtils.sciCal(list8.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
+        }
+        Integer collect9 = 0;
+        if (list9.size() > 0) {
+
+            collect9 = (int) AmendUtils.sciCal(list9.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
+        }
+        Integer collect10 = 0;
+        if (list10.size() > 0) {
+
+            collect10 = (int) AmendUtils.sciCal(list10.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
+        }
+        Integer collect11 = 0;
+        if (list11.size() > 0) {
+
+            collect11 = (int) AmendUtils.sciCal(list11.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
+        }
+        Integer collect12 = 0;
+        if (list12.size() > 0) {
+
+            collect12 = (int) AmendUtils.sciCal(list12.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
+        }
+        //���������pm2.5������
+        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);
+        listPM.add(collect4);
+        listPM.add(collect5);
+        listPM.add(collect6);
+        listPM.add(collect7);
+        listPM.add(collect8);
+        listPM.add(collect9);
+        listPM.add(collect10);
+        listPM.add(collect11);
+        listPM.add(collect12);
+        listPM.add(resPM25);
+        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;
@@ -699,9 +1277,6 @@
                 code6++;
             }
         }
-
-
-
         integers.add(code1+code2);
         integers.add(code1);
         integers.add(code2);
@@ -710,105 +1285,7 @@
         integers.add(code5);
         integers.add(code6);
 
-        list.add(count1);
-        list.add(count2);
-        list.add(count3);
-        list.add(count4);
-        list.add(count5);
-        list.add(count6);
-        list.add(count7);
-        list.add(count8);
-        list.add(count9);
-        list.add(count10);
-        list.add(count11);
-        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);
-        listPM.add(collect1);
-        listPM.add(collect2);
-        listPM.add(collect3);
-        listPM.add(collect4);
-        listPM.add(collect5);
-        listPM.add(collect6);
-        listPM.add(collect7);
-        listPM.add(collect8);
-        listPM.add(collect9);
-        listPM.add(collect10);
-        listPM.add(collect11);
-        listPM.add(collect12);
-        listPM.add(resPM25);
-        listMap.put("PM2_5",listPM);
-        listMap.put("������",integers);
-        listMap.put("������",pmList);
-        return listMap;
+        return integers;
     }
 
     /**
@@ -822,7 +1299,8 @@
         ArrayList<Integer> list2 = new ArrayList<>();
         ArrayList<Integer> list3 = new ArrayList<>();
         ArrayList<Double> AQI = new ArrayList<>();
-        ArrayList<Integer> rsAqi = 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));
@@ -844,6 +1322,8 @@
                 Map map = JSON.parseObject(s, Map.class);
                 String aqi = map.get("AQI").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));
                 AQI.add(Double.parseDouble(aqi));
                 if (Double.parseDouble(aqi) <= 100) {
@@ -852,51 +1332,18 @@
             }
         }
         list2.add(count);
-        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++;
-            }
-        }
+        ArrayList<Integer> rsAqi = getCode(AQI);
         rsAqi.add(Integer.parseInt(rsTime));
-        rsAqi.add(code1+code2);
-        rsAqi.add(code1);
-        rsAqi.add(code2);
-        rsAqi.add(code3);
-        rsAqi.add(code4);
-        rsAqi.add(code5);
-        rsAqi.add(code6);
 
         //���������pm2.5������
-//        int PM2_5 = Math.toIntExact(Math.round(list.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
         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;
     }
@@ -966,15 +1413,17 @@
 
                 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]);
 
-                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);
 
-                rsMap2.put(objects[19].toString(), map2);
+                }
 
             }
 
@@ -1026,21 +1475,22 @@
                 map1.put("NO2", objects[14]);
                 map1.put("CO", objects[15]);
                 map1.put("O3", objects[16]);
-
                 rsMap3.put(objects[10].toString(), map1);
 
-
-                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);
+                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);
@@ -1063,7 +1513,6 @@
                     }else if(s3.contains("H") && s2.contains("H")){
                         break;
                     }else {
-//                        hs.put(set,new BigDecimal((Double.parseDouble(s3)+Double.parseDouble(s2))/2).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue());
                         hs.put(set, AmendUtils.sciCal((Double.parseDouble(s3)+Double.parseDouble(s2))/2,1));
                     }
                     continue;
@@ -1077,7 +1526,6 @@
                 }else if(s3.contains("H") && s2.contains("H")){
                     break;
                 }else {
-//                    hs.put(set,Math.round((Double.parseDouble(s3)+Double.parseDouble(s2))/2));
                     hs.put(set, AmendUtils.sciCal((Double.parseDouble(s3)+Double.parseDouble(s2))/2,0));
                 }
             }
@@ -1087,8 +1535,7 @@
 
         }
 
-
-
+        //���������������������
         Set<String> strings1 = rsMap2.keySet();
         for (String s : strings1) {
             Object o = rsMap2.get(s);
@@ -1138,22 +1585,98 @@
         getHnMap(hnMap2);
         //���������������aqi
         getHnMap(hnMap1);
-        //
+
+        //���������������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").get(0));
         List<Integer> list1 = map.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);
+                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);
+                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) {
@@ -1169,4 +1692,5 @@
         }
     }
 
+
 }

--
Gitblit v1.8.0