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