From bb082ca3ada32bf46654aa5f0f35d00b504ffa0b Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Fri, 19 Feb 2021 17:40:40 +0800
Subject: [PATCH] 接入徐州黄河新村和淮塔国控数据

---
 src/main/java/com/moral/mapper/AQIMapper.java            |    3 +
 src/main/java/com/moral/service/AQIService.java          |    2 +
 src/main/resources/mapper/AQIMapper.xml                  |   13 ++++++
 src/main/java/com/moral/service/impl/AQIServiceImpl.java |   59 +++++++++++++++++++++++++++++
 src/main/java/com/moral/task/AQIDataInsertTask.java      |   35 ++++++++++++-----
 5 files changed, 101 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/moral/mapper/AQIMapper.java b/src/main/java/com/moral/mapper/AQIMapper.java
index 652e9c7..ec27c4e 100644
--- a/src/main/java/com/moral/mapper/AQIMapper.java
+++ b/src/main/java/com/moral/mapper/AQIMapper.java
@@ -17,4 +17,7 @@
 
     String getAqiFromHistory(Map<String, Object> params);
 
+    void insertStationData(List<Map<String,Object>> list);
+
+    List<Map<String,Object>> getStationConfig();
 }
diff --git a/src/main/java/com/moral/service/AQIService.java b/src/main/java/com/moral/service/AQIService.java
index 53cc9b6..3b5485e 100644
--- a/src/main/java/com/moral/service/AQIService.java
+++ b/src/main/java/com/moral/service/AQIService.java
@@ -7,4 +7,6 @@
     List<Map<String, Object>> getCityAqiConfig();
 
     int insertAQIData(Map<String, Object> parameters);
+
+    int insertStationData();
 }
diff --git a/src/main/java/com/moral/service/impl/AQIServiceImpl.java b/src/main/java/com/moral/service/impl/AQIServiceImpl.java
index 3ae2ebc..231f3f6 100644
--- a/src/main/java/com/moral/service/impl/AQIServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/AQIServiceImpl.java
@@ -1,16 +1,31 @@
 package com.moral.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.moral.mapper.AQIMapper;
 import com.moral.service.AQIService;
+import com.moral.util.HttpUtils;
+
+import org.apache.http.HttpResponse;
+import org.apache.http.util.EntityUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
 
 import javax.annotation.Resource;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+
 @Service
 public class AQIServiceImpl implements AQIService {
     @Resource
     private AQIMapper aqiMapper;
+
     @Override
     public List<Map<String, Object>> getCityAqiConfig() {
         return aqiMapper.getCityAqiConfig();
@@ -20,4 +35,48 @@
     public int insertAQIData(Map<String, Object> parameters) {
         return aqiMapper.insertAQIData(parameters);
     }
+
+    @Override
+    public int insertStationData() {
+        int state = 500;
+        List<Map<String, Object>> stationCodes = aqiMapper.getStationConfig();
+        String host = "https://api.epmap.org";
+        String path = "/api/v1/air/station";
+        String method = "GET";
+        String appcode = "31b6ea8f804a4472be3b633cfee44849";
+        Map<String, String> headers = new HashMap<String, String>();
+        headers.put("Authorization", "APPCODE " + appcode);
+        Map<String, String> querys = new HashMap<String, String>();
+        Date date = new Date();
+        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH");
+        String pubtime = df.format(date) + ":00:00";
+        querys.put("pubtime", pubtime);
+        List<Map<String, Object>> insertList = new ArrayList<>();
+        for (Map<String, Object> stationMap : stationCodes) {
+            String stationCode = stationMap.get("station_code").toString();
+            String cityCode = stationMap.get("city_code").toString();
+            Map<String, Object> map = new HashMap<>();
+            querys.put("station_code", stationCode);
+            try {
+                HttpResponse response = HttpUtils.doGet(host, path, method, headers, querys);
+                JSONObject json = JSON.parseObject(EntityUtils.toString(response.getEntity()));
+                Map<String, Object> data = (Map<String, Object>) json.get("data");
+                if (!ObjectUtils.isEmpty(data)) {
+                    pubtime = data.get("pubtime").toString();
+                    map.put("time", pubtime);
+                    map.put("json", JSON.toJSONString(data));
+                    map.put("stationCode", stationCode);
+                    map.put("cityCode", cityCode);
+                    insertList.add(map);
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        if (!insertList.isEmpty()) {
+            aqiMapper.insertStationData(insertList);
+            state = 200;
+        }
+        return state;
+    }
 }
diff --git a/src/main/java/com/moral/task/AQIDataInsertTask.java b/src/main/java/com/moral/task/AQIDataInsertTask.java
index dbc332b..17325d8 100644
--- a/src/main/java/com/moral/task/AQIDataInsertTask.java
+++ b/src/main/java/com/moral/task/AQIDataInsertTask.java
@@ -1,4 +1,5 @@
 package com.moral.task;
+
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.Collection;
@@ -27,21 +28,24 @@
 
 @Component
 public class AQIDataInsertTask {
+
     @Resource
     private AQIService aqiService;
+
     @Resource
     private RedisTemplate redisTemplate;
+
     @XxlJob("insertData")
-    public ReturnT insertData(String param){
+    public ReturnT insertData(String param) {
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         RestTemplate restTemplate = new RestTemplate();
         restTemplate.getMessageConverters().add(new WxMappingJackson2HttpMessageConverter());
-        Date pubtime = DateUtils.truncate(new Date(),Calendar.HOUR);
-        List<Map<String,Object>> CityAqiConfigs =aqiService.getCityAqiConfig();
+        Date pubtime = DateUtils.truncate(new Date(), Calendar.HOUR);
+        List<Map<String, Object>> CityAqiConfigs = aqiService.getCityAqiConfig();
         ReturnT returnT = null;
 
         for (Map<String, Object> cityAqiConfig : CityAqiConfigs) {
-            String entity = null ;
+            String entity = null;
             Collection<Object> values = null;
             Map<String, Object> data = null;
          /*   try {
@@ -80,15 +84,15 @@
                 }
             }
             Map<String, Object> parameters = new HashMap<>();
-            parameters.put("time",pubtime);
-            parameters.put("data",data.toString());
-            parameters.put("code",cityAqiConfig.get("city_code"));
+            parameters.put("time", pubtime);
+            parameters.put("data", data.toString());
+            parameters.put("code", cityAqiConfig.get("city_code"));
             if (!ObjectUtils.isEmpty(data)) {
                 try {
-                    int i=aqiService.insertAQIData(parameters);
-                    if (i>0){
+                    int i = aqiService.insertAQIData(parameters);
+                    if (i > 0) {
                         returnT = new ReturnT(200, " ���������������������");
-                    }else {
+                    } else {
                         returnT = new ReturnT(500, " ���������������������");
                     }
                 } catch (Exception e) {
@@ -102,11 +106,20 @@
                     map.put("e11", data.containsKey("SO2C") ? data.get("SO2C").toString() : data.get("SO2").toString());
                     map.put("e15", data.containsKey("O3C") ? data.get("O3C").toString() : data.get("O3").toString());
                     map.put("e16", data.containsKey("NO2C") ? data.get("NO2C").toString() : data.get("NO2").toString());
-                    redisTemplate.opsForHash().putAll("aqi_" + cityAqiConfig.get("city_code"),map);
+                    redisTemplate.opsForHash().putAll("aqi_" + cityAqiConfig.get("city_code"), map);
                 }
             }
         }
         return returnT;
     }
 
+    @XxlJob("insertStationData")
+    public ReturnT insertStationData(String param) {
+        int state = aqiService.insertStationData();
+        if (state == 200) {
+            return new ReturnT(200, "������������");
+        } else {
+            return new ReturnT(500, "������������������������������������������������");
+        }
+    }
 }
diff --git a/src/main/resources/mapper/AQIMapper.xml b/src/main/resources/mapper/AQIMapper.xml
index 34beeb3..2e80b9d 100644
--- a/src/main/resources/mapper/AQIMapper.xml
+++ b/src/main/resources/mapper/AQIMapper.xml
@@ -13,6 +13,19 @@
         )
     </insert>
 
+    <select id="getStationConfig" resultType="java.util.Map">
+        select station_code,city_code from aqi_station_config
+    </select>
+
+    <insert id="insertStationData">
+        insert into
+        history_aqi_station
+        values
+        <foreach collection="list" item="item" separator=",">
+            (#{item.time},#{item.json},#{item.stationCode},#{item.cityCode})
+        </foreach>
+    </insert>
+
     <select id="getO3" resultType="java.util.Map">
         select DATE_FORMAT(time, #{typeFormat}) time,
         ifnull(aqi_json->'$.O3C',aqi_json->'$.O3') 'O3'

--
Gitblit v1.8.0