From e20989d3c8f87c1831e608999c4c859cf4970012 Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Fri, 11 Dec 2020 17:29:59 +0800
Subject: [PATCH] update

---
 src/main/java/com/moral/controller/ScreenController.java |  232 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 220 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java
index 9532034..65924e7 100644
--- a/src/main/java/com/moral/controller/ScreenController.java
+++ b/src/main/java/com/moral/controller/ScreenController.java
@@ -727,7 +727,7 @@
              */
             /*������������start-------------------------------------------------------------------------*/
             list.remove(0);
-            if (list.size() == 23) {
+            //if (list.size() == 23) {
                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                 SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
                 //���������������������yyyy-MM-dd HH:mm:ss
@@ -745,7 +745,7 @@
                     datas.put("time",time1);
                     list.add(datas);
                 }
-            }
+            //}
             /*������������end-------------------------------------------------------------------------*/
 
 
@@ -2108,9 +2108,28 @@
     @ApiOperation(value = "���������������������������", notes = "���������������������������")
     @ApiImplicitParams(value = {
             @ApiImplicitParam(name = "monitorPointId", defaultValue = "1", value = "���������id", required = true, paramType = "query", dataType = "String"),
-            @ApiImplicitParam(name = "time", value = "���6���(���������2020-03-19)", required = true, paramType = "query", dataType = "String")})
+            @ApiImplicitParam(name = "time", value = "������(���������2020-03-19)", required = true, paramType = "query", dataType = "String")})
     public ResultBean<List<Map<String, Object>>> getWeatherNextDayDataByRegion(HttpServletRequest request) throws Exception {
         Map<String, Object> parameters = getParametersStartingWith(request, null);
+        List<String> sensorKeys=new ArrayList<>();
+        sensorKeys.add("e15");
+        parameters.put("sensorKeys",sensorKeys);
+        List<Map<String, Object>> resultList = weatherService.getForecastAndReal(parameters);
+        return new ResultBean<List<Map<String, Object>>>(resultList);
+    }
+
+
+    @GetMapping("forecastPM")
+    @ApiOperation(value = "������������������������������", notes = "������������������������������")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "monitorPointId", defaultValue = "1", value = "���������id", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "time", value = "������(���������2020-03-19)", required = true, paramType = "query", dataType = "String")})
+    public ResultBean<List<Map<String, Object>>> getForecastAndRealPM(HttpServletRequest request) throws Exception {
+        Map<String, Object> parameters = getParametersStartingWith(request, null);
+        List<String> sensorKeys=new ArrayList<>();
+        sensorKeys.add("e1");
+        sensorKeys.add("e2");
+        parameters.put("sensorKeys",sensorKeys);
         List<Map<String, Object>> resultList = weatherService.getForecastAndReal(parameters);
         return new ResultBean<List<Map<String, Object>>>(resultList);
     }
@@ -2699,7 +2718,7 @@
     @ApiImplicitParams(value = {
             @ApiImplicitParam(name = "monitorPointIds", value = "������monitorid", required = true, paramType = "query", dataType = "String"),
             @ApiImplicitParam(name = "time", value = "������(���������2020-03-19)", required = true, paramType = "query", dataType = "String")})
-    public ResultBean<List<List<Map<String,Object>>>> monitorAVGData(HttpServletRequest request) throws Exception {
+    public ResultBean<List<Map<String,Object>>> monitorAVGData(HttpServletRequest request) throws Exception {
         Map<String, Object> parameters = getParametersStartingWith(request, null);
         String monitorPointIds = (String) parameters.get("monitorPointIds");
         String time = (String) parameters.get("time");
@@ -2720,10 +2739,20 @@
             Map<String,Object> dailyAvgData =new HashMap<>();
             if (dataAvbByMIdAndTime.get(dataAvbByMIdAndTime.size() - 2).get("data")!=""){
                 dailyAvgData = (Map<String, Object>) dataAvbByMIdAndTime.get(dataAvbByMIdAndTime.size() - 2).get("data");
-                dailyAvgData.put("maxO3_8h",new BigDecimal(maxO3).setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue());
+                dailyAvgData.put("maxO3_8h",new BigDecimal(maxO3).setScale(0,BigDecimal.ROUND_HALF_UP).doubleValue());
             }else {
                 dailyAvgData= historyHourlyService.getAvgDataByMId(mId, date1, date2);
-                dailyAvgData.put("maxO3_8h",new BigDecimal(maxO3).setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue());
+                if (dailyAvgData!=null){
+                    dailyAvgData.put("maxO3_8h",new BigDecimal(maxO3).setScale(0,BigDecimal.ROUND_HALF_UP).doubleValue());
+                }else {
+                    dailyAvgData = new HashMap<>();
+                    dailyAvgData.put("PM2_5","");
+                    dailyAvgData.put("NO2","");
+                    dailyAvgData.put("SO2","");
+                    dailyAvgData.put("PM10","");
+                    dailyAvgData.put("O3_day","");
+                    dailyAvgData.put("CO","");
+                }
             }
             dataAvbByMIdAndTime.remove(dataAvbByMIdAndTime.size() - 1);
             dataAvbByMIdAndTime.remove(dataAvbByMIdAndTime.size() - 1);
@@ -2734,7 +2763,7 @@
             for (int i = 0; i <dataAvbByMIdAndTime.size() ; i++) {
                 if (i!=dataAvbByMIdAndTime.size()-1){
                     Map<String, Object> map1 = AQICalculation2.hourlyAQI((Map<String, Object>) dataAvbByMIdAndTime.get(i).get("data"));
-                    if (Double.parseDouble(map1.get("AQI").toString())>=50.0){
+                    if (Double.parseDouble(map1.get("AQI").toString())>50.0){
                         ((Map<String, Object>) dataAvbByMIdAndTime.get(i).get("data")).put("primary_pollutants",map1.get("maxSensor"));
                         ((Map<String, Object>) dataAvbByMIdAndTime.get(i).get("data")).put("AQI",map1.get("AQI"));
                     }else {
@@ -2743,7 +2772,10 @@
                     }
                 }else {
                     Map<String, Object> map1 = AQICalculation2.dayAQI((Map<String, Object>) dataAvbByMIdAndTime.get(i).get("data"));
-                        if (Double.parseDouble(map1.get("AQI").toString())>=50.0){
+                    if (map1.get("AQI").toString().equals("")){
+                        break;
+                    }
+                        if (Double.parseDouble(map1.get("AQI").toString())>50.0){
                             ((Map<String, Object>) dataAvbByMIdAndTime.get(i).get("data")).put("primary_pollutants",map1.get("maxSensor"));
                             ((Map<String, Object>) dataAvbByMIdAndTime.get(i).get("data")).put("AQI",map1.get("AQI"));
                         }else {
@@ -2751,6 +2783,74 @@
                             ((Map<String, Object>) dataAvbByMIdAndTime.get(i).get("data")).put("AQI",map1.get("AQI"));
                         }
                 }
+            }
+            List timeList = new ArrayList();
+            for (int q = 0; q < dataAvbByMIdAndTime.size(); q++) {
+                timeList.add(dataAvbByMIdAndTime.get(q).get("time"));
+            }
+            if (dataAvbByMIdAndTime.size()<25){
+                for (int j = 1; j < 25; j++) {
+                    Map<String,Object> map = null;
+                    for (int q = 0; q < dataAvbByMIdAndTime.size(); q++) {
+                        if (dataAvbByMIdAndTime.get(q).get("time").toString().length() > 2){
+                            continue;
+                        }else {
+                            // System.out.println(Integer.parseInt(dataAvbByMIdAndTime.get(q).get("time").toString())+"==="+j);
+                            String sj="";
+                            if (j<10){
+                                sj="0"+j;
+                            }else {
+                                if (j==24){
+                                    sj="00";
+                                }else {
+                                    sj=""+j;
+                                }
+                            }
+                            if (!timeList.contains(sj)){
+                                map = new HashMap<>();
+                                map.put("time",sj);
+                                Map map1 = new HashMap();
+                                map1.put("PM2_5","");
+                                map1.put("NO2","");
+                                map1.put("primary_pollutants","-");
+                                map1.put("SO2","");
+                                map1.put("O3","");
+                                map1.put("PM10","");
+                                map1.put("O3_8h","");
+                                map1.put("CO","");
+                                map1.put("AQI","");
+                                map.put("data",map1);
+                                dataAvbByMIdAndTime.add(map);
+                                break;
+                            }else {
+                                break;
+                            }
+                        }
+                    }
+                }
+            }
+             /* for (int i1 = 0; i1 < dataAvbByMIdAndTime.size(); i1++) {
+                    System.out.println(dataAvbByMIdAndTime.get(i1));
+                }*/
+            Collections.sort(dataAvbByMIdAndTime, new Comparator<Map<String, Object>>(){
+                public int compare(Map<String, Object> o1, Map<String, Object> o2) {
+                    String name1 =(String)o1.get("time");//name1���������list������������������������
+                    String name2= (String)o2.get("time"); //name1���������list���������������������������name
+                    return name1.compareTo(name2);
+                }
+            });
+            Map map1 = dataAvbByMIdAndTime.get(0);
+            dataAvbByMIdAndTime.remove(0);
+            dataAvbByMIdAndTime.add(map1);
+            for (int j = 0; j <dataAvbByMIdAndTime.size() ; j++) {
+                if (dataAvbByMIdAndTime.get(j).get("time").toString().length()>2){
+                    Map map2 = dataAvbByMIdAndTime.get(j);
+                    dataAvbByMIdAndTime.remove(j);
+                    dataAvbByMIdAndTime.add(map2);
+                }
+            }
+            if (dataAvbByMIdAndTime.size()==1){
+                dataAvbByMIdAndTime=null;
             }
             lists.add(dataAvbByMIdAndTime);
             //List<Device> devicesByMonitorPointId = deviceService.getDevicesByMonitorPointId(Integer.valueOf(mId));
@@ -2761,10 +2861,20 @@
                 Map<String,Object> dailyAvgData =new HashMap<>();
                 if (dataAvbByMIdAndTime.get(dataAvbByMIdAndTime.size() - 2).get("data")!=""){
                     dailyAvgData = (Map<String, Object>) dataAvbByMIdAndTime.get(dataAvbByMIdAndTime.size() - 2).get("data");
-                    dailyAvgData.put("maxO3_8h",new BigDecimal(maxO3).setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue());
+                    dailyAvgData.put("maxO3_8h",new BigDecimal(maxO3).setScale(0,BigDecimal.ROUND_HALF_UP).doubleValue());
                 }else {
                     dailyAvgData= historyHourlyService.getAvgDataByMId(mIds[i], date1, date2);
-                    dailyAvgData.put("maxO3_8h",new BigDecimal(maxO3).setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue());
+                    if (dailyAvgData!=null){
+                        dailyAvgData.put("maxO3_8h",new BigDecimal(maxO3).setScale(0,BigDecimal.ROUND_HALF_UP).doubleValue());
+                    }else {
+                        dailyAvgData = new HashMap<>();
+                        dailyAvgData.put("PM2_5","");
+                        dailyAvgData.put("NO2","");
+                        dailyAvgData.put("SO2","");
+                        dailyAvgData.put("PM10","");
+                        dailyAvgData.put("O3_day","");
+                        dailyAvgData.put("CO","");
+                    }
                 }
                 dataAvbByMIdAndTime.remove(dataAvbByMIdAndTime.size() - 1);
                 dataAvbByMIdAndTime.remove(dataAvbByMIdAndTime.size() - 1);
@@ -2772,11 +2882,109 @@
                 dayMap.put("data",dailyAvgData);
                 dayMap.put("time",date1.substring(0,11));
                 dataAvbByMIdAndTime.add(dayMap);
+                List timeList = new ArrayList();
+                for (int q = 0; q < dataAvbByMIdAndTime.size(); q++) {
+                    timeList.add(dataAvbByMIdAndTime.get(q).get("time"));
+                }
+                  if (dataAvbByMIdAndTime.size()<25){
+                    for (int j = 1; j < 25; j++) {
+                        Map<String,Object> map = null;
+                        for (int q = 0; q < dataAvbByMIdAndTime.size(); q++) {
+                            if (dataAvbByMIdAndTime.get(q).get("time").toString().length() > 2){
+                                continue;
+                            }else {
+                               // System.out.println(Integer.parseInt(dataAvbByMIdAndTime.get(q).get("time").toString())+"==="+j);
+                                String sj="";
+                                if (j<10){
+                                    sj="0"+j;
+                                }else {
+                                    if (j==24){
+                                        sj="00";
+                                    }else {
+                                        sj=""+j;
+                                    }
+                                }
+                                if (!timeList.contains(sj)){
+                                    map = new HashMap<>();
+                                    map.put("time",sj);
+                                    Map map1 = new HashMap();
+                                    map1.put("PM2_5","");
+                                    map1.put("NO2","");
+                                    map1.put("SO2","");
+                                    map1.put("O3","");
+                                    map1.put("PM10","");
+                                    map1.put("O3_8h","");
+                                    map1.put("CO","");
+                                    map.put("data",map1);
+                                    dataAvbByMIdAndTime.add(map);
+                                    break;
+                                }else {
+                                    break;
+                                }
+                            }
+                        }
+
+                    }
+                }
+                Collections.sort(dataAvbByMIdAndTime, new Comparator<Map<String, Object>>(){
+                    public int compare(Map<String, Object> o1, Map<String, Object> o2) {
+                        String name1 =(String)o1.get("time");//name1���������list������������������������
+                        String name2= (String)o2.get("time"); //name1���������list���������������������������name
+                        return name1.compareTo(name2);
+                    }
+                });
+                Map map1 = dataAvbByMIdAndTime.get(0);
+                dataAvbByMIdAndTime.remove(0);
+                dataAvbByMIdAndTime.add(map1);
+                for (int j = 0; j <dataAvbByMIdAndTime.size() ; j++) {
+                    if (dataAvbByMIdAndTime.get(j).get("time").toString().length()>2){
+                        Map map2 = dataAvbByMIdAndTime.get(j);
+                        dataAvbByMIdAndTime.remove(j);
+                        dataAvbByMIdAndTime.add(map2);
+                    }
+                }
                 lists.add(dataAvbByMIdAndTime);
             }
             List<Map<String, Object>> dataByMonitorPoints = historyHourlyService.getDataByMonitorPoints(mIds, date1, date2);
             lists.add(dataByMonitorPoints);
         }
-        return new ResultBean<List<List<Map<String,Object>>>>(lists);
+        List<Map<String, Object>> rList =new ArrayList<>();
+        if (lists.size()==1 && lists.get(0)!=null){
+            for (int i = 0; i < lists.get(0).size(); i++) {
+                List list = new ArrayList();
+                list.add(lists.get(0).get(i).get("data"));
+                Map map = new HashMap();
+                map.put("data",list);
+                map.put("time",lists.get(0).get(i).get("time"));
+                rList.add(map);
+            }
+
+        } else if (lists.size()==1 && lists.get(0)==null){
+            rList.add(null);
+        }else {
+            for (int j = 0; j < lists.get(0).size(); j++) {
+                Map<String, Object> listMap = new HashMap();
+                List<Map> mapList = new ArrayList<>();
+                if (lists.get(0).size() == 1) {
+                    mapList.add(null);
+                } else {
+                    mapList.add((Map) lists.get(0).get(j).get("data"));
+                }
+                for (int i = 1; i < lists.size(); i++) {
+                    if (lists.get(i).size() == 1) {
+                        mapList.add(null);
+                        listMap.put("data", mapList);
+                    } else {
+                        if (lists.get(0).get(j).get("time").equals(lists.get(i).get(j).get("time"))) {
+                            mapList.add((Map) lists.get(i).get(j).get("data"));
+                        }
+                        listMap.put("time", lists.get(0).get(j).get("time"));
+                        listMap.put("data", mapList);
+                    }
+                }
+                rList.add(listMap);
+            }
+        }
+        return new ResultBean<List<Map<String,Object>>>(rList);
     }
-}
+}
\ No newline at end of file

--
Gitblit v1.8.0