From e113aed7f3413cac840dbcbe3fe12ad33d3c63d2 Mon Sep 17 00:00:00 2001
From: yuzixiang <yzx123456>
Date: Tue, 19 May 2020 16:36:35 +0800
Subject: [PATCH] 删除7天前数据以及分区任务;AQI数据插入任务;创建history_minutely_年月分表任务
---
src/main/java/com/moral/service/AQIService.java | 10 +
src/main/java/com/moral/util/WxMappingJackson2HttpMessageConverter.java | 16 +
src/main/java/com/moral/service/HistoryMinutelyService.java | 3
src/main/java/com/moral/mapper/HistoryMapper.java | 4
src/main/resources/mapper/AQIMapper.xml | 15 +
src/main/java/com/moral/task/AQIDataInsertTask.java | 83 ++++++++
src/main/java/com/moral/task/HistoryMinutelySubTableTask.java | 28 ++
src/main/java/com/moral/util/HttpUtils.java | 310 +++++++++++++++++++++++++++++++
src/main/java/com/moral/mapper/AQIMapper.java | 10 +
src/main/java/com/moral/mapper/HistoryMinutelyMapper.java | 1
src/main/java/com/moral/service/HistoryService.java | 4
src/main/java/com/moral/util/DateUtil.java | 16 +
src/main/resources/mapper/HistoryMinutelyMapper.xml | 10 +
src/main/java/com/moral/service/impl/HistoryServiceImpl.java | 10 +
src/main/resources/mapper/HistoryMapper.xml | 7
src/main/java/com/moral/task/HistoryTableDeleteTask.java | 39 +++
src/main/java/com/moral/service/impl/AQIServiceImpl.java | 23 ++
src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java | 5
18 files changed, 594 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/moral/mapper/AQIMapper.java b/src/main/java/com/moral/mapper/AQIMapper.java
new file mode 100644
index 0000000..583d0fe
--- /dev/null
+++ b/src/main/java/com/moral/mapper/AQIMapper.java
@@ -0,0 +1,10 @@
+package com.moral.mapper;
+
+import java.util.List;
+import java.util.Map;
+
+public interface AQIMapper {
+ List<Map<String, Object>> getCityAqiConfig();
+
+ int insertAQIData(Map<String, Object> parameters);
+}
diff --git a/src/main/java/com/moral/mapper/HistoryMapper.java b/src/main/java/com/moral/mapper/HistoryMapper.java
index e635f18..94d535e 100644
--- a/src/main/java/com/moral/mapper/HistoryMapper.java
+++ b/src/main/java/com/moral/mapper/HistoryMapper.java
@@ -4,6 +4,7 @@
import java.util.Map;
import com.moral.entity.History;
+import org.apache.ibatis.annotations.Param;
public interface HistoryMapper {
int insert(History record);
@@ -28,4 +29,7 @@
int insertHistorySpecialTable(Map<String, Object> parameters);
+ int deleteHistoryData(String oldTime);
+
+ void deletePartition(@Param("p") String p);
}
\ No newline at end of file
diff --git a/src/main/java/com/moral/mapper/HistoryMinutelyMapper.java b/src/main/java/com/moral/mapper/HistoryMinutelyMapper.java
index 48c42c9..9f7da41 100644
--- a/src/main/java/com/moral/mapper/HistoryMinutelyMapper.java
+++ b/src/main/java/com/moral/mapper/HistoryMinutelyMapper.java
@@ -11,4 +11,5 @@
List<Map<String, Object>> getMinutelySensorData(Map<String, Object> parameters);
+ void createHistoryMinutelyTable(@Param("yearAndMonth") String yearAndMonth);
}
diff --git a/src/main/java/com/moral/service/AQIService.java b/src/main/java/com/moral/service/AQIService.java
new file mode 100644
index 0000000..53cc9b6
--- /dev/null
+++ b/src/main/java/com/moral/service/AQIService.java
@@ -0,0 +1,10 @@
+package com.moral.service;
+
+import java.util.List;
+import java.util.Map;
+
+public interface AQIService {
+ List<Map<String, Object>> getCityAqiConfig();
+
+ int insertAQIData(Map<String, Object> parameters);
+}
diff --git a/src/main/java/com/moral/service/HistoryMinutelyService.java b/src/main/java/com/moral/service/HistoryMinutelyService.java
index 8f804d2..69d13fa 100644
--- a/src/main/java/com/moral/service/HistoryMinutelyService.java
+++ b/src/main/java/com/moral/service/HistoryMinutelyService.java
@@ -9,4 +9,7 @@
List<Map<String, Object>> getMinutelySensorData(Map<String, Object> parameters);
+ //������������������
+ void createHistoryMinutelyTable(String yearAndMonth);
+
}
diff --git a/src/main/java/com/moral/service/HistoryService.java b/src/main/java/com/moral/service/HistoryService.java
index 8472db8..d56b7a6 100644
--- a/src/main/java/com/moral/service/HistoryService.java
+++ b/src/main/java/com/moral/service/HistoryService.java
@@ -10,4 +10,8 @@
List<History> selectByMacAndTime(Map<String, Object> parameters);
int insertHistorySpecialTable(Map<String, Object> parameters);
+
+ int deleteHistoryData(String oldTime);
+
+ void deletePartition(String p);
}
diff --git a/src/main/java/com/moral/service/impl/AQIServiceImpl.java b/src/main/java/com/moral/service/impl/AQIServiceImpl.java
new file mode 100644
index 0000000..3ae2ebc
--- /dev/null
+++ b/src/main/java/com/moral/service/impl/AQIServiceImpl.java
@@ -0,0 +1,23 @@
+package com.moral.service.impl;
+
+import com.moral.mapper.AQIMapper;
+import com.moral.service.AQIService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+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();
+ }
+
+ @Override
+ public int insertAQIData(Map<String, Object> parameters) {
+ return aqiMapper.insertAQIData(parameters);
+ }
+}
diff --git a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
index 63f4f9f..d81c5ea 100644
--- a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
@@ -26,4 +26,9 @@
return historyMinutelyMapper.getMinutelySensorData(parameters);
}
+ @Override
+ public void createHistoryMinutelyTable(String yearAndMonth) {
+ historyMinutelyMapper.createHistoryMinutelyTable(yearAndMonth);
+ }
+
}
diff --git a/src/main/java/com/moral/service/impl/HistoryServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryServiceImpl.java
index a10debc..ab676cd 100644
--- a/src/main/java/com/moral/service/impl/HistoryServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/HistoryServiceImpl.java
@@ -26,4 +26,14 @@
public int insertHistorySpecialTable(Map<String, Object> parameters) {
return historyMapper.insertHistorySpecialTable(parameters);
}
+
+ @Override
+ public int deleteHistoryData(String oldTime) {
+ return historyMapper.deleteHistoryData(oldTime);
+ }
+
+ @Override
+ public void deletePartition(String p) {
+ historyMapper.deletePartition(p);
+ }
}
diff --git a/src/main/java/com/moral/task/AQIDataInsertTask.java b/src/main/java/com/moral/task/AQIDataInsertTask.java
new file mode 100644
index 0000000..8ebb73d
--- /dev/null
+++ b/src/main/java/com/moral/task/AQIDataInsertTask.java
@@ -0,0 +1,83 @@
+package com.moral.task;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.moral.service.AQIService;
+import com.moral.util.HttpUtils;
+import com.moral.util.WxMappingJackson2HttpMessageConverter;
+
+import org.apache.commons.lang3.time.DateUtils;
+import org.apache.http.HttpResponse;
+import org.apache.http.util.EntityUtils;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.client.RestTemplate;
+import redis.clients.jedis.Jedis;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+@Component
+public class AQIDataInsertTask {
+
+
+
+ @Resource
+ private AQIService aqiService;
+
+ public void insertData(){
+ 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);
+
+ Jedis jedis = new Jedis("r-bp1672d21a422a14161.redis.rds.aliyuncs.com", 6379);
+ jedis.auth("KtElFcI1sYm9NP3");
+ jedis.select(1);
+
+ List<Map<String,Object>> CityAqiConfigs =aqiService.getCityAqiConfig();
+ for (Map<String, Object> cityAqiConfig : CityAqiConfigs) {
+ String entity = null ;
+ Collection<Object> values = null;
+ Map<String, Object> data = null;
+ try {
+ HttpResponse response = HttpUtils.doGet("https://api.epmap.org", "/api/v1/air/city", "GET",
+ new HashMap<String, String>() {{put("Authorization", "APPCODE " + "31b6ea8f804a4472be3b633cfee44849");}},
+ new HashMap<String, String>() {{put("city", cityAqiConfig.get("city_name").toString());}}
+ );
+ entity = EntityUtils.toString(response.getEntity());
+ JSONObject json = JSON.parseObject(entity);
+ data = (Map<String, Object>) json.get("data");
+ if (!ObjectUtils.isEmpty(data)) {
+ values = data.values();
+ pubtime = format.parse(data.get("pubtime").toString());
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ Map<String, Object> parameters = new HashMap<>();
+ parameters.put("time",pubtime);
+ parameters.put("data",data.toString());
+ parameters.put("code",cityAqiConfig.get("city_code"));
+ if (!ObjectUtils.isEmpty(data)) {
+ try {
+ aqiService.insertAQIData(parameters);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ if ("1".equals(cityAqiConfig.get("is_compensate"))) {
+ Map<String, String> map = new HashMap<String, String>();
+ map.put("e1", data.containsKey("PM25C") ? data.get("PM25C").toString() : data.get("PM2_5").toString());
+ map.put("e2", data.containsKey("PM10C") ? data.get("PM10C").toString() : data.get("PM10").toString());
+ map.put("e10", data.containsKey("COC") ? data.get("COC").toString() : data.get("CO").toString());
+ 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());
+ jedis.hmset("aqi_" + cityAqiConfig.get("city_code"), map);
+ }
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/com/moral/task/HistoryMinutelySubTableTask.java b/src/main/java/com/moral/task/HistoryMinutelySubTableTask.java
new file mode 100644
index 0000000..1a3589a
--- /dev/null
+++ b/src/main/java/com/moral/task/HistoryMinutelySubTableTask.java
@@ -0,0 +1,28 @@
+package com.moral.task;
+
+import com.moral.service.HistoryMinutelyService;
+import com.xxl.job.core.biz.model.ReturnT;
+import org.springframework.format.datetime.joda.LocalDateTimeParser;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+
+@Component
+public class HistoryMinutelySubTableTask {
+ @Resource
+ private HistoryMinutelyService historyMinutelyService;
+ public ReturnT createHistoryMinutelyTb(){
+ LocalDateTime time=LocalDateTime.now();
+ LocalDateTime time1 = time.plusMonths(1);
+ String year = String.valueOf(time1.getYear());
+ String month = String.valueOf(time1.getMonthValue());
+ if (month.length()<2){
+ month="0"+month;
+ }
+ String yearAndMonth=year+month;
+ historyMinutelyService.createHistoryMinutelyTable(yearAndMonth);
+ ReturnT returnT = new ReturnT();
+ return returnT;
+ }
+}
diff --git a/src/main/java/com/moral/task/HistoryTableDeleteTask.java b/src/main/java/com/moral/task/HistoryTableDeleteTask.java
new file mode 100644
index 0000000..fccf421
--- /dev/null
+++ b/src/main/java/com/moral/task/HistoryTableDeleteTask.java
@@ -0,0 +1,39 @@
+package com.moral.task;
+
+import com.moral.service.HistoryService;
+
+import com.moral.util.DateUtil;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+
+import java.util.Date;
+
+@Component
+public class HistoryTableDeleteTask {
+ private static transient Logger logger = LoggerFactory.getLogger(HistoryTableInsertTask.class);
+ @Resource
+ private HistoryService historyService;
+
+ @XxlJob("deleteOldDate")
+ public ReturnT deleteOldData() {
+ String p=DateUtil.getOldTime(8);
+ String s=DateUtil.getOldTime(7);
+ String[] ss=p.split("-");
+ p="p"+ss[0]+ss[1]+ss[2];
+ int i=historyService.deleteHistoryData(s);
+ if (i>0){
+ ReturnT returnT = new ReturnT(200, s+"������������������������");
+ historyService.deletePartition(p);
+ return returnT;
+ }else{
+ ReturnT returnT = new ReturnT(500, "������������������");
+ return returnT;
+ }
+ }
+}
diff --git a/src/main/java/com/moral/util/DateUtil.java b/src/main/java/com/moral/util/DateUtil.java
new file mode 100644
index 0000000..24b3a2a
--- /dev/null
+++ b/src/main/java/com/moral/util/DateUtil.java
@@ -0,0 +1,16 @@
+package com.moral.util;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class DateUtil {
+ //������������i���������������
+ public static String getOldTime(int i){
+ Long time=System.currentTimeMillis();
+ Long time1=time-(1000 * 60 * 60 * 24 * i);
+ SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ String sd = sdf.format(new Date(Long.parseLong(String.valueOf(time1))));
+ String s=sd.substring(0,10);
+ return s;
+ }
+}
diff --git a/src/main/java/com/moral/util/HttpUtils.java b/src/main/java/com/moral/util/HttpUtils.java
new file mode 100644
index 0000000..b756fbf
--- /dev/null
+++ b/src/main/java/com/moral/util/HttpUtils.java
@@ -0,0 +1,310 @@
+package com.moral.util;
+import org.apache.commons.lang.StringUtils;
+import org.apache.http.HttpResponse;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.HttpDelete;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.methods.HttpPut;
+import org.apache.http.conn.ClientConnectionManager;
+import org.apache.http.conn.scheme.Scheme;
+import org.apache.http.conn.scheme.SchemeRegistry;
+import org.apache.http.conn.ssl.SSLSocketFactory;
+import org.apache.http.entity.ByteArrayEntity;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.message.BasicNameValuePair;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.X509Certificate;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class HttpUtils {
+
+ /**
+ * get
+ *
+ * @param host
+ * @param path
+ * @param method
+ * @param headers
+ * @param querys
+ * @return
+ * @throws Exception
+ */
+ public static HttpResponse doGet(String host, String path, String method,
+ Map<String, String> headers,
+ Map<String, String> querys)
+ throws Exception {
+ HttpClient httpClient = wrapClient(host);
+
+ HttpGet request = new HttpGet(buildUrl(host, path, querys));
+ for (Map.Entry<String, String> e : headers.entrySet()) {
+ request.addHeader(e.getKey(), e.getValue());
+ }
+
+ return httpClient.execute(request);
+ }
+
+ /**
+ * post form
+ *
+ * @param host
+ * @param path
+ * @param method
+ * @param headers
+ * @param querys
+ * @param bodys
+ * @return
+ * @throws Exception
+ */
+ public static HttpResponse doPost(String host, String path, String method,
+ Map<String, String> headers,
+ Map<String, String> querys,
+ Map<String, String> bodys)
+ throws Exception {
+ HttpClient httpClient = wrapClient(host);
+
+ HttpPost request = new HttpPost(buildUrl(host, path, querys));
+ for (Map.Entry<String, String> e : headers.entrySet()) {
+ request.addHeader(e.getKey(), e.getValue());
+ }
+
+ if (bodys != null) {
+ List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
+
+ for (String key : bodys.keySet()) {
+ nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key)));
+ }
+ UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8");
+ formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8");
+ request.setEntity(formEntity);
+ }
+
+ return httpClient.execute(request);
+ }
+
+ /**
+ * Post String
+ *
+ * @param host
+ * @param path
+ * @param method
+ * @param headers
+ * @param querys
+ * @param body
+ * @return
+ * @throws Exception
+ */
+ public static HttpResponse doPost(String host, String path, String method,
+ Map<String, String> headers,
+ Map<String, String> querys,
+ String body)
+ throws Exception {
+ HttpClient httpClient = wrapClient(host);
+
+ HttpPost request = new HttpPost(buildUrl(host, path, querys));
+ for (Map.Entry<String, String> e : headers.entrySet()) {
+ request.addHeader(e.getKey(), e.getValue());
+ }
+
+ if (StringUtils.isNotBlank(body)) {
+ request.setEntity(new StringEntity(body, "utf-8"));
+ }
+
+ return httpClient.execute(request);
+ }
+
+ /**
+ * Post stream
+ *
+ * @param host
+ * @param path
+ * @param method
+ * @param headers
+ * @param querys
+ * @param body
+ * @return
+ * @throws Exception
+ */
+ public static HttpResponse doPost(String host, String path, String method,
+ Map<String, String> headers,
+ Map<String, String> querys,
+ byte[] body)
+ throws Exception {
+ HttpClient httpClient = wrapClient(host);
+
+ HttpPost request = new HttpPost(buildUrl(host, path, querys));
+ for (Map.Entry<String, String> e : headers.entrySet()) {
+ request.addHeader(e.getKey(), e.getValue());
+ }
+
+ if (body != null) {
+ request.setEntity(new ByteArrayEntity(body));
+ }
+
+ return httpClient.execute(request);
+ }
+
+ /**
+ * Put String
+ * @param host
+ * @param path
+ * @param method
+ * @param headers
+ * @param querys
+ * @param body
+ * @return
+ * @throws Exception
+ */
+ public static HttpResponse doPut(String host, String path, String method,
+ Map<String, String> headers,
+ Map<String, String> querys,
+ String body)
+ throws Exception {
+ HttpClient httpClient = wrapClient(host);
+
+ HttpPut request = new HttpPut(buildUrl(host, path, querys));
+ for (Map.Entry<String, String> e : headers.entrySet()) {
+ request.addHeader(e.getKey(), e.getValue());
+ }
+
+ if (StringUtils.isNotBlank(body)) {
+ request.setEntity(new StringEntity(body, "utf-8"));
+ }
+
+ return httpClient.execute(request);
+ }
+
+ /**
+ * Put stream
+ * @param host
+ * @param path
+ * @param method
+ * @param headers
+ * @param querys
+ * @param body
+ * @return
+ * @throws Exception
+ */
+ public static HttpResponse doPut(String host, String path, String method,
+ Map<String, String> headers,
+ Map<String, String> querys,
+ byte[] body)
+ throws Exception {
+ HttpClient httpClient = wrapClient(host);
+
+ HttpPut request = new HttpPut(buildUrl(host, path, querys));
+ for (Map.Entry<String, String> e : headers.entrySet()) {
+ request.addHeader(e.getKey(), e.getValue());
+ }
+
+ if (body != null) {
+ request.setEntity(new ByteArrayEntity(body));
+ }
+
+ return httpClient.execute(request);
+ }
+
+ /**
+ * Delete
+ *
+ * @param host
+ * @param path
+ * @param method
+ * @param headers
+ * @param querys
+ * @return
+ * @throws Exception
+ */
+ public static HttpResponse doDelete(String host, String path, String method,
+ Map<String, String> headers,
+ Map<String, String> querys)
+ throws Exception {
+ HttpClient httpClient = wrapClient(host);
+
+ HttpDelete request = new HttpDelete(buildUrl(host, path, querys));
+ for (Map.Entry<String, String> e : headers.entrySet()) {
+ request.addHeader(e.getKey(), e.getValue());
+ }
+
+ return httpClient.execute(request);
+ }
+
+ private static String buildUrl(String host, String path, Map<String, String> querys) throws UnsupportedEncodingException {
+ StringBuilder sbUrl = new StringBuilder();
+ sbUrl.append(host);
+ if (!StringUtils.isBlank(path)) {
+ sbUrl.append(path);
+ }
+ if (null != querys) {
+ StringBuilder sbQuery = new StringBuilder();
+ for (Map.Entry<String, String> query : querys.entrySet()) {
+ if (0 < sbQuery.length()) {
+ sbQuery.append("&");
+ }
+ if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) {
+ sbQuery.append(query.getValue());
+ }
+ if (!StringUtils.isBlank(query.getKey())) {
+ sbQuery.append(query.getKey());
+ if (!StringUtils.isBlank(query.getValue())) {
+ sbQuery.append("=");
+ sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8"));
+ }
+ }
+ }
+ if (0 < sbQuery.length()) {
+ sbUrl.append("?").append(sbQuery);
+ }
+ }
+
+ return sbUrl.toString();
+ }
+
+ private static HttpClient wrapClient(String host) {
+ HttpClient httpClient = new DefaultHttpClient();
+ if (host.startsWith("https://")) {
+ sslClient(httpClient);
+ }
+
+ return httpClient;
+ }
+
+ private static void sslClient(HttpClient httpClient) {
+ try {
+ SSLContext ctx = SSLContext.getInstance("TLS");
+ X509TrustManager tm = new X509TrustManager() {
+ public X509Certificate[] getAcceptedIssuers() {
+ return null;
+ }
+ public void checkClientTrusted(X509Certificate[] xcs, String str) {
+
+ }
+ public void checkServerTrusted(X509Certificate[] xcs, String str) {
+
+ }
+ };
+ ctx.init(null, new TrustManager[] { tm }, null);
+ SSLSocketFactory ssf = new SSLSocketFactory(ctx);
+ ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
+ ClientConnectionManager ccm = httpClient.getConnectionManager();
+ SchemeRegistry registry = ccm.getSchemeRegistry();
+ registry.register(new Scheme("https", 443, ssf));
+ } catch (KeyManagementException ex) {
+ throw new RuntimeException(ex);
+ } catch (NoSuchAlgorithmException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/moral/util/WxMappingJackson2HttpMessageConverter.java b/src/main/java/com/moral/util/WxMappingJackson2HttpMessageConverter.java
new file mode 100644
index 0000000..46cbd37
--- /dev/null
+++ b/src/main/java/com/moral/util/WxMappingJackson2HttpMessageConverter.java
@@ -0,0 +1,16 @@
+package com.moral.util;
+
+import org.springframework.http.MediaType;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class WxMappingJackson2HttpMessageConverter extends MappingJackson2HttpMessageConverter {
+ public WxMappingJackson2HttpMessageConverter(){
+ List<MediaType> mediaTypes = new ArrayList<>();
+ mediaTypes.add(MediaType.TEXT_PLAIN);
+ mediaTypes.add(MediaType.TEXT_HTML); //������text/html���������������
+ setSupportedMediaTypes(mediaTypes);// tag6
+ }
+}
diff --git a/src/main/resources/mapper/AQIMapper.xml b/src/main/resources/mapper/AQIMapper.xml
new file mode 100644
index 0000000..766dd54
--- /dev/null
+++ b/src/main/resources/mapper/AQIMapper.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.moral.mapper.AQIMapper">
+ <select id="getCityAqiConfig" resultType="java.util.LinkedHashMap">
+ select * from city_aqi_config;
+ </select>
+
+ <insert id="insertAQIData">
+ INSERT INTO hangzhou_aqi (time, aqi_json,city_code) values(
+ #{time},
+ #{data},
+ #{code}
+ )
+ </insert>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/HistoryMapper.xml b/src/main/resources/mapper/HistoryMapper.xml
index 19bf540..044b959 100644
--- a/src/main/resources/mapper/HistoryMapper.xml
+++ b/src/main/resources/mapper/HistoryMapper.xml
@@ -176,4 +176,11 @@
</foreach>
</insert>
+ <delete id="deleteHistoryData" parameterType="java.lang.String">
+ delete from history3 where time < #{oldTime};
+ </delete>
+ <update id="deletePartition">
+ ALTER table history3 drop PARTITION ${p};
+ </update>
+
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/HistoryMinutelyMapper.xml b/src/main/resources/mapper/HistoryMinutelyMapper.xml
index 4702517..79f0172 100644
--- a/src/main/resources/mapper/HistoryMinutelyMapper.xml
+++ b/src/main/resources/mapper/HistoryMinutelyMapper.xml
@@ -10,6 +10,16 @@
(#{map.mac},#{map.time},#{map.json})
</foreach>
</insert>
+ <update id="createHistoryMinutelyTable">
+ CREATE TABLE `history_minutely_${yearAndMonth}` (
+ `mac` varchar(20) CHARACTER SET latin1 DEFAULT NULL,
+ `time` datetime DEFAULT NULL,
+ `json` json DEFAULT NULL,
+ KEY `_idx_mac` (`mac`) USING BTREE,
+ KEY `_idx_time` (`time`) USING BTREE,
+ KEY `_idx_mac_time` (`mac`,`time`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+ </update>
<select id="getMinutelySensorData" resultType="java.util.LinkedHashMap">
SELECT
--
Gitblit v1.8.0