From 7a91aabda4de1590f26e4ee02ffd1cd5b3ffc6f3 Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Fri, 31 Jul 2020 10:12:08 +0800
Subject: [PATCH] 天气预测和实测数据和风接口调入,存入数据库

---
 src/main/java/com/moral/service/impl/RealWeatherServiceImpl.java |   89 +++++++++++++++++++++++++-------------------
 1 files changed, 50 insertions(+), 39 deletions(-)

diff --git a/src/main/java/com/moral/service/impl/RealTimeWeatherServiceImpl.java b/src/main/java/com/moral/service/impl/RealWeatherServiceImpl.java
similarity index 60%
rename from src/main/java/com/moral/service/impl/RealTimeWeatherServiceImpl.java
rename to src/main/java/com/moral/service/impl/RealWeatherServiceImpl.java
index 9f8ed53..7becf4b 100644
--- a/src/main/java/com/moral/service/impl/RealTimeWeatherServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/RealWeatherServiceImpl.java
@@ -4,6 +4,7 @@
 import java.text.SimpleDateFormat;
 
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -26,15 +27,15 @@
 import com.moral.mapper.CityMapper;
 import com.moral.mapper.MonitorPointMapper;
 import com.moral.mapper.ProvinceMapper;
-import com.moral.mapper.RealTimeWeatherMapper;
-import com.moral.service.RealTimeWeatherService;
+import com.moral.mapper.RealWeatherMapper;
+import com.moral.service.RealWeatherService;
 import com.moral.util.Dom4jUtils;
 
 @Service
-public class RealTimeWeatherServiceImpl implements RealTimeWeatherService {
+public class RealWeatherServiceImpl implements RealWeatherService {
 
     @Resource
-    private RealTimeWeatherMapper realTimeWeatherMapper;
+    private RealWeatherMapper realWeatherMapper;
 
     @Resource
     private MonitorPointMapper monitorPointMapper;
@@ -49,10 +50,13 @@
     private ProvinceMapper provinceMapper;
 
     @Override
-    public void insertRealTimeWeather() throws ParseException {
+    public void insertRealWeather() throws ParseException {
+        Calendar c = Calendar.getInstance();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH");
+        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Date now=sdf1.parse(sdf.format(c.getTime())+":00:00");
         RestTemplate restTemplate = new RestTemplate();
         List<MonitorPoint> monitorPointList = monitorPointMapper.getMonitorPointList();
-        List<Map<String, Object>> list = new ArrayList<>();
         Set<Map<String, Object>> hashSet = new HashSet<>();
         List<Map<String, Object>> resultList = new ArrayList<>();
         for (MonitorPoint monitorPoint : monitorPointList) {
@@ -76,6 +80,10 @@
                 City city = cityMapper.getCityByCityCode(cityCode);
                 name1 = city.getCityName();
                 parentName = provinceMapper.getProvinceByProvinceCode(provinceCode).getProvinceName();
+                if ("���������".equals(name1)) {
+                    name1 = parentName;
+                    parentName = "";
+                }
             }
             hashMap.put("name1", name1);
             hashMap.put("parentName", parentName);
@@ -91,50 +99,53 @@
             for (Element element : elements) {
                 String name2 = element.element("name").getText();
                 String parentName = map.get("parentName").toString();
+                if (name2.equals("���������")) {
+                    name2 = "���������";
+                }
                 if (name1.equals(name2)) {
-                    cityID = element.element("Fid").getText();
+                    cityID = element.element("Fweathercn").getText();
+                    map.put("cityID", cityID);
                     break;
                 }
                 if (name2.endsWith(name1)) {
                     if (name2.startsWith(parentName)) {
-                        cityID = element.element("Fid").getText();
+                        cityID = element.element("Fweathercn").getText();
+                        map.put("cityID", cityID);
                         break;
                     }
                 }
             }
-            Map<String, Object> map1 = restTemplate.getForObject("http://sapi.7drlb.com/api/mj?cityID={1}&apiKey=condition", Map.class, cityID);
-            Map<String, Object> dateMap = (Map<String, Object>) map1.get("data");
-            Map<String, Object> conditionMap = (Map<String, Object>) dateMap.get("condition");
-            conditionMap.put("name", name1);
-            list.add(conditionMap);
-        }
-        List<Map<String, Object>> insertList = new ArrayList<>();
-        for (Map<String, Object> resultMap : resultList) {
-            Map<String, Object> map = new HashMap<>();
-            String monitorPointId = resultMap.get("monitorPointId").toString();
-            map.put("monitorPointId", Integer.valueOf(monitorPointId));
-            for (Map<String, Object> listMap : list) {
-                if (resultMap.get("name").equals(listMap.get("name"))) {
-                    String json = JSONObject.toJSONString(listMap);
-                    String[] strings = listMap.get("updatetime").toString().split(" ");
-                    String time = strings[0] + " " + strings[1].split(":")[0] + ":00:00";
-                    Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(time);
-                    map.put("json", json);
-                    map.put("time", date);
-                }
-            }
-            insertList.add(map);
         }
 
-        for (Map<String, Object> map : insertList) {
-            String json = map.get("json").toString();
-            Map<String, Object> parse = (Map<String, Object>) JSONObject.parse(json);
-            parse.remove("name");
-            parse.remove("icon");
-            parse.remove("conditionId");
-            parse.remove("tips");
-            map.put("json", JSONObject.toJSONString(parse));
+        for (Map<String, Object> map : hashSet) {
+            String id = map.get("cityID").toString();
+            Map<String, Object> dataMap = restTemplate.getForObject("https://api.heweather.net/v7/weather/now?key=da05c6c4852d4f7aa3364a9236ee9e26&gzip=n&location={1}", Map.class, id);
+            if (dataMap == null) {
+                dataMap = new HashMap<>();
+            }
+            String json = JSONObject.toJSONString(dataMap);
+            dataMap = (Map<String, Object>) JSONObject.parse(json);
+            Map<String, Object> nowMap = (Map<String, Object>) dataMap.get("now");
+            map.put("data",nowMap);
         }
-        realTimeWeatherMapper.insertRealTimeWeather(insertList);
+
+        for (Map<String, Object> resultMap : resultList) {
+            Map<String,Object> jsonMap=new HashMap<>();
+            for (Map<String, Object> hashMap : hashSet) {
+                if(hashMap.get("name1").equals(resultMap.get("name"))){
+                    Map<String, Object> map = (Map<String, Object>) hashMap.get("data");
+                    map.remove("obsTime");
+                    map.remove("icon");
+                    resultMap.put("time",now);
+                    jsonMap.putAll(map);
+                    resultMap.put("json",JSONObject.toJSONString(jsonMap));
+                }
+            }
+        }
+
+        for (Map<String, Object> map : resultList) {
+            map.remove("name");
+        }
+        realWeatherMapper.insertRealWeather(resultList);
     }
 }

--
Gitblit v1.8.0