jinpengyong
2021-02-19 bb082ca3ada32bf46654aa5f0f35d00b504ffa0b
接入徐州黄河新村和淮塔国控数据
5 files modified
112 ■■■■■ changed files
src/main/java/com/moral/mapper/AQIMapper.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/AQIService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/impl/AQIServiceImpl.java 59 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/task/AQIDataInsertTask.java 35 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/AQIMapper.xml 13 ●●●●● patch | view | raw | blame | history
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();
}
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();
}
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;
    }
}
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, "无国控数据,插入失败,请查看接口");
        }
    }
}
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'