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