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