From aafe57b555359e4a5ff347ce5e495d9d40d7dd42 Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Wed, 19 Aug 2020 17:20:58 +0800
Subject: [PATCH] update

---
 src/main/java/com/moral/service/impl/ForecastWeatherServiceImpl.java |   89 ++++++++++++++++++++++++++------------------
 1 files changed, 52 insertions(+), 37 deletions(-)

diff --git a/src/main/java/com/moral/service/impl/ForecastWeatherServiceImpl.java b/src/main/java/com/moral/service/impl/ForecastWeatherServiceImpl.java
index 949895d..52a8dd6 100644
--- a/src/main/java/com/moral/service/impl/ForecastWeatherServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/ForecastWeatherServiceImpl.java
@@ -21,6 +21,7 @@
 import com.moral.entity.Area;
 import com.moral.entity.City;
 import com.moral.entity.MonitorPoint;
+import com.moral.entity.Province;
 import com.moral.mapper.AQIMapper;
 import com.moral.mapper.AreaMapper;
 import com.moral.mapper.CityMapper;
@@ -78,22 +79,28 @@
             String parentName = "";
             String name1 = "";
             Integer code = 0;
+            Integer parentCode = 0;
             if (areaCode != null) {
                 Area area = areaMapper.getAreaByAreaCode(areaCode);
                 City city = cityMapper.getCityByCityCode(cityCode);
                 name1 = area.getAreaName();
                 parentName = city.getCityName();
+                parentCode = city.getCityCode();
                 code = areaCode;
                 if ("���������".equals(name1)) {
                     name1 = parentName;
-                    parentName = provinceMapper.getProvinceByProvinceCode(provinceCode).getProvinceName();
+                    Province province = provinceMapper.getProvinceByProvinceCode(provinceCode);
+                    parentName = province.getProvinceName();
+                    parentCode = province.getProvinceCode();
                     code = cityCode;
                 }
             } else {
                 City city = cityMapper.getCityByCityCode(cityCode);
                 name1 = city.getCityName();
-                parentName = provinceMapper.getProvinceByProvinceCode(provinceCode).getProvinceName();
+                Province province = provinceMapper.getProvinceByProvinceCode(provinceCode);
+                parentName = province.getProvinceName();
                 code = cityCode;
+                parentCode = province.getProvinceCode();
                 if ("���������".equals(name1)) {
                     name1 = parentName;
                     parentName = "";
@@ -103,6 +110,7 @@
             hashMap.put("name1", name1);
             hashMap.put("parentName", parentName);
             hashMap.put("cityCode", code);
+            hashMap.put("parentCode", parentCode);
             hashSet.add(hashMap);
         }
         List<Element> elements = Dom4jUtils.readDocument();
@@ -136,9 +144,11 @@
         Date startTime = sdf.parse(sdf.format(c.getTime()));
 
         for (Map<String, Object> hashmap : hashSet) {
-            hashmap.put("typeFormat", "%Y-%m-%d %H:%i:%s");
-            hashmap.put("startTime", startTime);
-            hashmap.put("endTime", endTime);
+            Map<String, Object> map1 = new HashMap<>();
+            map1.put("typeFormat", "%Y-%m-%d %H:%i:%s");
+            map1.put("startTime", startTime);
+            map1.put("endTime", endTime);
+            map1.put("cityCode", Integer.valueOf(hashmap.get("cityCode").toString()));
             List<List<Map<String, Object>>> list1 = new ArrayList<>();
             List<List<Map<String, Object>>> list2 = new ArrayList<>();
 
@@ -146,18 +156,21 @@
                 List<Map<String, Object>> list3 = new ArrayList<>();
                 List<Map<String, Object>> list4 = new ArrayList<>();
                 if (i < 10) {
-                    hashmap.put("time", "0" + i + ":00:00");
+                    map1.put("time", "0" + i + ":00:00");
                 } else {
-                    hashmap.put("time", i + ":00:00");
+                    map1.put("time", i + ":00:00");
                 }
-                List<Map<String, Object>> tempList = realWeatherMapper.getTemp(hashmap);
-                List<Map<String, Object>> O3List = aqiMapper.getO3(hashmap);
+                List<Map<String, Object>> tempList = realWeatherMapper.getTemp(map1);
+                List<Map<String, Object>> O3List = aqiMapper.getO3(map1);
+                if (O3List.size() == 0) {
+                    map1.put("cityCode", Integer.valueOf(hashmap.get("parentCode").toString()));
+                    O3List = aqiMapper.getO3(map1);
+                }
                 list3.addAll(tempList);
                 list4.addAll(O3List);
                 list1.add(list3);
                 list2.add(list4);
             }
-
             List<List<Map<String, Object>>> list = new ArrayList<>();
             if (list2.get(0).size() == 0) {
                 list = list1;
@@ -183,34 +196,37 @@
                 }
             }
 
-            if (list.get(0).get(0).size() > 2) {
-                List<Map<String, Object>> constantList = new ArrayList<>();
-                for (int i = 0; i < list.size(); i++) {
-                    List<Map<String, Object>> mapList = list.get(i);
-                    double tempSum = 0;//���������
-                    double O3Sum = 0;//O3���
-                    double sum = 0;//
-                    double sum1 = 0;
-                    int length = mapList.size();
-                    Map<String, Object> cmap = new HashMap<>();
-                    cmap.put("time", i);
-                    for (Map<String, Object> map : mapList) {
-                        double temp = Double.valueOf(map.get("temp").toString().replace("\"", "").split("\\.")[0]);
-                        double O3 = Double.valueOf(map.get("O3").toString().replace("\"", "").split("\\.")[0]);
-                        tempSum = tempSum + temp;
-                        O3Sum = O3Sum + O3;
-                        sum = sum + temp * O3;
-                        sum1 = sum1 + temp * temp;
+            if (list.get(0).size()!=0) {
+
+                if (list.get(0).get(0).size() > 2) {
+                    List<Map<String, Object>> constantList = new ArrayList<>();
+                    for (int i = 0; i < list.size(); i++) {
+                        List<Map<String, Object>> mapList = list.get(i);
+                        double tempSum = 0;//���������
+                        double O3Sum = 0;//O3���
+                        double sum = 0;//
+                        double sum1 = 0;
+                        int length = mapList.size();
+                        Map<String, Object> cmap = new HashMap<>();
+                        cmap.put("time", i);
+                        for (Map<String, Object> map : mapList) {
+                            double temp = Double.valueOf(map.get("temp").toString().replace("\"", "").split("\\.")[0]);
+                            double O3 = Double.valueOf(map.get("O3").toString().replace("\"", "").split("\\.")[0]);
+                            tempSum = tempSum + temp;
+                            O3Sum = O3Sum + O3;
+                            sum = sum + temp * O3;
+                            sum1 = sum1 + temp * temp;
+                        }
+                        double tempAvg = tempSum / length;
+                        double O3Avg = O3Sum / length;
+                        double b = (sum - length * tempAvg * O3Avg) / (sum1 - length * tempAvg * tempAvg);
+                        double a = O3Avg - (b * tempAvg);
+                        cmap.put("a", a);
+                        cmap.put("b", b);
+                        constantList.add(cmap);
                     }
-                    double tempAvg = tempSum / length;
-                    double O3Avg = O3Sum / length;
-                    double b = (sum - length * tempAvg * O3Avg) / (sum1 - length * tempAvg * tempAvg);
-                    double a = O3Avg - (b * tempAvg);
-                    cmap.put("a", a);
-                    cmap.put("b", b);
-                    constantList.add(cmap);
+                    hashmap.put("constants", constantList);
                 }
-                hashmap.put("constants", constantList);
             }
         }
 
@@ -236,7 +252,6 @@
                 if (hour1.equals(nextNextDay)) {
                     nextDayList.add(hourlyMap);
                 }
-
                 map.put("data", nextDayList);
             }
         }

--
Gitblit v1.8.0