jinpengyong
2020-07-29 bc6aaea416da40038dee2df1b3de4a1581da2a48
臭氧预测update,根据城市名查询预测和实际数据
6 files added
13 files modified
511 ■■■■ changed files
src/main/java/com/moral/controller/ScreenController.java 24 ●●●● patch | view | raw | blame | history
src/main/java/com/moral/entity/ForecastWeather.java 19 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/entity/RealTimeWeather.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/mapper/AreaMapper.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/mapper/CityMapper.java 4 ●●●● patch | view | raw | blame | history
src/main/java/com/moral/mapper/ForecastWeatherMapper.java 11 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/mapper/HangzhouAqiMapper.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/mapper/MonitorPointMapper.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/mapper/ProvinceMapper.java 4 ●●●● patch | view | raw | blame | history
src/main/java/com/moral/mapper/RealTimeWeatherMapper.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/WeatherService.java 4 ●●● patch | view | raw | blame | history
src/main/java/com/moral/service/impl/WeatherServiceImpl.java 305 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/AreaMapper.xml 5 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/CityMapper.xml 5 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/ForecastWeatherMapper.xml 25 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/HangzhouAqiMapper.xml 28 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/MonitorPointMapper.xml 11 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/ProvinceMapper.xml 5 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/RealTimeWeatherMapper.xml 20 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/controller/ScreenController.java
@@ -77,11 +77,13 @@
import com.moral.util.TempAllocationUtils;
import com.moral.util.mapUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import net.sf.json.JSONString;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.net.ftp.FTPClient;
@@ -1964,15 +1966,27 @@
        return params;
    }
    @GetMapping("weather_nextDay")
    @ApiOperation(value = "未来一天臭氧预测", notes = "未来一天臭氧预测")
    @GetMapping("forecastO3")
    @ApiOperation(value = "预测和实际臭氧对比", notes = "预测和实际臭氧对比")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "monitorPointId", defaultValue = "6", value = "监控站id", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "monitorPointId", defaultValue = "1", value = "监控站id", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "time", value = "时间(格式:2020-03-19)", required = true, paramType = "query", dataType = "String")})
    public ResultBean<List<Map<String, Object>>> getWeatherNextDayDataByRegion(HttpServletRequest request) throws Exception {
        Map<String, Object> parameters = getParametersStartingWith(request, null);
        parameters.put("typeFormat", "%Y-%m-%d %H");
        List<Map<String, Object>> resultList = weatherService.getNextDayWeatherDataByRegion(parameters);
        parameters.put("typeFormat", "%Y-%m-%d %H:%i:%s");
        List<Map<String, Object>> resultList = weatherService.getForecastAndReal(parameters);
        return new ResultBean<List<Map<String, Object>>>(resultList);
    }
    @GetMapping("weatherData")
    @ApiOperation(value = "根据city查询预测和实际数据", notes = "根据city查询预测和实际数据")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "city", value = "城市名", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "time", value = "时间(格式:2020-03-19)", required = true, paramType = "query", dataType = "String")})
    public ResultBean<List<Map<String, Object>>> getWeatherData(HttpServletRequest request) throws Exception {
        Map<String, Object> parameters = getParametersStartingWith(request, null);
        parameters.put("typeFormat", "%Y-%m-%d %H:%i:%s");
        List<Map<String, Object>> weatherList = weatherService.getWeatherData(parameters);
        return new ResultBean<List<Map<String, Object>>>(weatherList);
    }
}
src/main/java/com/moral/entity/ForecastWeather.java
New file
@@ -0,0 +1,19 @@
package com.moral.entity;
import lombok.Data;
import java.util.Date;
import javax.persistence.Id;
@Data
public class ForecastWeather {
    @Id
    private Integer monitorPointId;
    private Date time;
    private String json;
    private String result;
}
src/main/java/com/moral/entity/RealTimeWeather.java
New file
@@ -0,0 +1,17 @@
package com.moral.entity;
import lombok.Data;
import java.util.Date;
import javax.persistence.Id;
@Data
public class RealTimeWeather {
    @Id
    private Integer monitorPointId;
    private Date time;
    private String json;
}
src/main/java/com/moral/mapper/AreaMapper.java
@@ -1,7 +1,12 @@
package com.moral.mapper;
import org.apache.ibatis.annotations.Param;
import com.moral.common.mapper.BaseMapper;
import com.moral.entity.Area;
public interface AreaMapper extends BaseMapper<Area> {
    Area getAreaByName(@Param(value="name") String name);
}
src/main/java/com/moral/mapper/CityMapper.java
@@ -1,7 +1,11 @@
package com.moral.mapper;
import org.apache.ibatis.annotations.Param;
import com.moral.common.mapper.BaseMapper;
import com.moral.entity.City;
public interface CityMapper extends BaseMapper<City> {
    City getCityByName(@Param(value="name") String name);
}
src/main/java/com/moral/mapper/ForecastWeatherMapper.java
New file
@@ -0,0 +1,11 @@
package com.moral.mapper;
import java.util.List;
import java.util.Map;
public interface ForecastWeatherMapper {
   List<Map<String,Object>> getForecastHour(Map<String, Object> parameters);
   List<Map<String,Object>> getForecast(Map<String, Object> parameters);
}
src/main/java/com/moral/mapper/HangzhouAqiMapper.java
@@ -18,4 +18,7 @@
  List<Map<String, Object>> getAreaAvgDataByAreaCode(Map<String, Object> parameters);
  List<Map<String, Object>> getAqiDataByAreaCode(Map<String, Object> parameters);
  List<Map<String, Object>> getAqi(Map<String, Object> parameters);
}
src/main/java/com/moral/mapper/MonitorPointMapper.java
@@ -24,4 +24,11 @@
    MonitorPoint getMonitorPointById(@Param("id") int id);
    List<MonitorPoint> getMonitorPointListByAccountId(@Param("id") int id);
    MonitorPoint getFirstMonitorPointByAreaCode(@Param("areaCode") int areaCode);
    MonitorPoint getFirstMonitorPointByCityCode(@Param("cityCode") int cityCode);
    MonitorPoint getFirstMonitorPointByProvinceCode(@Param("provinceCode") int provinceCode);
}
src/main/java/com/moral/mapper/ProvinceMapper.java
@@ -1,7 +1,11 @@
package com.moral.mapper;
import org.apache.ibatis.annotations.Param;
import com.moral.common.mapper.BaseMapper;
import com.moral.entity.Province;
public interface ProvinceMapper extends BaseMapper<Province> {
    Province getProvinceByName(@Param(value="name") String name);
}
src/main/java/com/moral/mapper/RealTimeWeatherMapper.java
New file
@@ -0,0 +1,9 @@
package com.moral.mapper;
import java.util.List;
import java.util.Map;
public interface RealTimeWeatherMapper {
    List<Map<String,Object>> getRealTimeWeather(Map<String, Object> parameters);
}
src/main/java/com/moral/service/WeatherService.java
@@ -10,6 +10,8 @@
    
    Map<String, Object> get15DayWeatherDataByRegion(Map<String, Object> parameters);
    List<Map<String, Object>> getNextDayWeatherDataByRegion(Map<String, Object> parameters) throws ParseException;
    List<Map<String, Object>> getForecastAndReal(Map<String, Object> parameters) throws ParseException;
    List<Map<String, Object>> getWeatherData(Map<String, Object> parameters) throws ParseException;
}
src/main/java/com/moral/service/impl/WeatherServiceImpl.java
@@ -7,7 +7,6 @@
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -18,6 +17,7 @@
import org.springframework.util.ObjectUtils;
import org.springframework.web.client.RestTemplate;
import com.alibaba.fastjson.JSONObject;
import com.moral.common.util.Dom4jUtils;
import com.moral.common.util.ValidateUtil;
import com.moral.entity.Area;
@@ -25,11 +25,14 @@
import com.moral.entity.City;
import com.moral.entity.MonitorPoint;
import com.moral.entity.Organization;
import com.moral.entity.Province;
import com.moral.mapper.AreaMapper;
import com.moral.mapper.CityMapper;
import com.moral.mapper.ForecastWeatherMapper;
import com.moral.mapper.HangzhouAqiMapper;
import com.moral.mapper.MonitorPointMapper;
import com.moral.mapper.ProvinceMapper;
import com.moral.mapper.RealTimeWeatherMapper;
import com.moral.service.OrganizationService;
import com.moral.service.WeatherService;
@@ -46,6 +49,9 @@
    private MonitorPointMapper monitorPointMapper;
    @Resource
    private ForecastWeatherMapper forecastWeatherMapper;
    @Resource
    private AreaMapper areaMapper;
    @Resource
@@ -53,6 +59,9 @@
    @Resource
    private ProvinceMapper provinceMapper;
    @Resource
    private RealTimeWeatherMapper realTimeWeatherMapper;
    @Override
    public Map<String, Object> getWeatherDataByRegion(Map<String, Object> parameters) {
@@ -156,125 +165,209 @@
    }
    @Override
    public List<Map<String, Object>> getNextDayWeatherDataByRegion(Map<String, Object> parameters) throws ParseException {
    public List<Map<String, Object>> getForecastAndReal(Map<String, Object> parameters) throws ParseException {
        String monitorPointId = parameters.get("monitorPointId").toString();
        MonitorPoint monitorPoint = monitorPointMapper.selectByPrimaryKey(Integer.valueOf(monitorPointId));
        Integer cityCode = monitorPoint.getCityCode();
        Integer areaCode = monitorPoint.getAreaCode();
        String name1 = "";
        String parentName = "";
        if (areaCode != null) {
            Area area = areaMapper.selectByPrimaryKey(areaCode);
            name1 = area.getAreaName();
            City city = cityMapper.selectByPrimaryKey(area.getCityCode());
            parentName = city.getCityName();
            if ("市辖区".equals(area.getAreaName())) {
                name1 = parentName;
                parentName = provinceMapper.selectByPrimaryKey(city.getProvinceCode()).getProvinceName();
            }
        } else {
            City city = cityMapper.selectByPrimaryKey(cityCode);
            name1 = city.getCityName();
            parentName = provinceMapper.selectByPrimaryKey(city.getProvinceCode()).getProvinceName();
        }
        List<Element> elements = Dom4jUtils.readDocument();
        String cityID = "101190404";
        for (Element element : elements) {
            String name2 = element.element("name").getText();
            if (name1.equals(name2)) {
                cityID = element.element("Fweathercn").getText();
                break;
            }
            if (name2.endsWith(name1)) {
                if (name2.startsWith(parentName)) {
                    cityID = element.element("Fweathercn").getText();
                    break;
                }
            }
        }
        RestTemplate restTemplate = new RestTemplate();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String time = parameters.get("time").toString() + " 00:00:00";
        Calendar c = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH");
        String now = sdf.format(c.getTime());
        String selectTime = parameters.get("time").toString();
        Date t1 = sdf.parse(selectTime);
        Date t2 = sdf.parse(now);
        c.setTime(sdf.parse(time));
        c.add(Calendar.HOUR_OF_DAY, 1);
        time = sdf.format(c.getTime());
        c.add(Calendar.DAY_OF_MONTH, 1);
        String nextDay = sdf.format(c.getTime());
        parameters.put("start", sdf.parse(time));
        parameters.put("end", sdf.parse(nextDay));
        List<Map<String, Object>> forecastList = forecastWeatherMapper.getForecastHour(parameters);
        MonitorPoint monitorPoint = monitorPointMapper.selectByPrimaryKey(Integer.valueOf(monitorPointId));
        parameters.put("areaCode", monitorPoint.getAreaCode());
        String sensors = "O3C";
        String sensor1 = "O3";
        parameters.put("sensors", sensors);
        parameters.put("sensors1", sensor1);
        parameters.put("sensors2", sensor1);
        List<Map<String, Object>> aqiList = hangzhouAqiMapper.getAqiDataByAreaCode(parameters);
        if (aqiList.size() == 0) {
            parameters.put("areaCode", monitorPoint.getCityCode());
            aqiList = hangzhouAqiMapper.getAqiDataByAreaCode(parameters);
        }
        for (Map<String, Object> map : aqiList) {
            String O3 = map.get("O3").toString().replace("\"", "");
            map.put("O3", O3);
        }
        List<Map<String, Object>> resultList = new ArrayList<>();
        if (t1.getTime() > t2.getTime()) {
            parameters.put("now", now);
            Map<String, Object> map = restTemplate.getForObject("https://yiketianqi.com/api?version=v9&appid=68884517&appsecret=St9sFnvi&cityid={1}", Map.class, cityID);
            ArrayList<Map<String, Object>> dataList = (ArrayList<Map<String, Object>>) map.get("data");
            ArrayList<Map<String, Object>> arrayList = new ArrayList<>();
            String start = parameters.get("now").toString();
            String end = parameters.get("time").toString();
            for (Map<String, Object> dataMap : dataList) {
                String date = dataMap.get("date").toString();
                ArrayList<Map<String, Object>> list = (ArrayList<Map<String, Object>>) dataMap.get("hours");
                if (date.equals(start)) {
                    for (int i = list.size() - 7; i < list.size(); i++) {
                        Map<String, Object> resultMap = list.get(i);
                        arrayList.add(resultMap);
                    }
        if (forecastList.size() == 0 && aqiList.size() == 0) {
            return new ArrayList<>();
        } else if (forecastList.size() == 0) {
            for (Map<String, Object> aqiMap : aqiList) {
                Map<String, Object> map = new HashMap<>();
                List<String> values = new ArrayList<>();
                String hour = aqiMap.get("time").toString().split(" ")[1].split(":")[0];
                if (hour.equals("00")) {
                    hour = "24";
                }
                if (date.equals(end)) {
                    for (int i = 0; i < 17; i++) {
                        Map<String, Object> resultMap = list.get(i);
                        arrayList.add(resultMap);
                    }
                }
                map.put("time", Integer.valueOf(hour));
                values.add("");
                values.add(aqiMap.get(sensor1).toString());
                map.put("values", values);
                resultList.add(map);
            }
            for (Map<String, Object> resultMap : arrayList) {
                Map<String, Object> hashMap = new LinkedHashMap<>();
        } else if (aqiList.size() == 0) {
            for (Map<String, Object> forecastMap : forecastList) {
                Map<String, Object> map = new HashMap<>();
                List<String> values = new ArrayList<>();
                String hour = resultMap.get("hours").toString().replaceAll("[\u4e00-\u9fa5]+", "");
                values.add(resultMap.get("tem").toString());
                values.add("");
                hashMap.put("values", values);
                hashMap.put("time", Integer.valueOf(hour));
                if (Integer.valueOf(hour) == 0) {
                    hashMap.put("time", 24);
                String hour = forecastMap.get("time").toString().split(" ")[1].split(":")[0];
                if (hour.equals("00")) {
                    hour = "24";
                }
                resultList.add(hashMap);
                map.put("time", Integer.valueOf(hour));
                values.add(forecastMap.get("result").toString().replace("\"", ""));
                values.add("");
                map.put("values", values);
                resultList.add(map);
            }
        } else {
            parameters.put("start", selectTime);
            c.setTime(sdf.parse(selectTime));
            c.add(Calendar.DAY_OF_MONTH, 1);
            c.add(Calendar.HOUR_OF_DAY, 1);
            String end = sdf1.format(c.getTime());
            parameters.put("end", end);
            parameters.put("sensors", "O3C");
            parameters.put("sensors1", "O3");
            parameters.put("sensors2", parameters.get("sensors1").toString());
            List<Map<String, Object>> areaList = new ArrayList<>();
            if (areaCode == null) {
                parameters.put("areaCode", cityCode);
                areaList = hangzhouAqiMapper.getAreaAvgDataByAreaCode(parameters);
            } else {
                parameters.put("areaCode", areaCode);
                areaList = hangzhouAqiMapper.getAreaAvgDataByAreaCode(parameters);
                if (areaList.size() == 0) {
                    parameters.put("areaCode", cityCode);
                    areaList = hangzhouAqiMapper.getAreaAvgDataByAreaCode(parameters);
                }
            }
            areaList.remove(0);
            for (Map<String, Object> areaMap : areaList) {
                Map<String, Object> hashMap = new LinkedHashMap<>();
            for (Map<String, Object> forecastMap : forecastList) {
                Map<String, Object> map = new HashMap<>();
                List<String> values = new ArrayList<>();
                values.add("");
                values.add(areaMap.get("O3").toString());
                hashMap.put("values", values);
                String hour = areaMap.get("time").toString().split(" ")[1];
                hashMap.put("time", Integer.valueOf(hour));
                if (Integer.valueOf(hour) == 0) {
                    hashMap.put("time", 24);
                String hour = forecastMap.get("time").toString().split(" ")[1].split(":")[0];
                if (hour.equals("00")) {
                    hour = "24";
                }
                resultList.add(hashMap);
                map.put("time", Integer.valueOf(hour));
                values.add(forecastMap.get("result").toString().replace("\"", ""));
                for (Map<String, Object> aqiMap : aqiList) {
                    if (forecastMap.get("time").equals(aqiMap.get("time"))) {
                        values.add(aqiMap.get(sensor1).toString());
                    }
                }
                map.put("values", values);
                resultList.add(map);
            }
        }
        for (Map<String, Object> resultMap : resultList) {
            ArrayList<String> values = (ArrayList<String>) resultMap.get("values");
            if (values.size() == 1) {
                values.add("");
            }
        }
        return resultList;
    }
    @Override
    public List<Map<String, Object>> getWeatherData(Map<String, Object> parameters) throws ParseException {
        String cityName = parameters.get("city").toString();
        Area area = areaMapper.getAreaByName(cityName);
        MonitorPoint monitorPoint;
        Integer areaCode = 0;
        Integer cityCode = 0;
        if (area == null) {
            City city = cityMapper.getCityByName(cityName);
            if (city == null) {
                Province province = provinceMapper.getProvinceByName(cityName);
                Integer provinceCode = province.getProvinceCode();
                monitorPoint = monitorPointMapper.getFirstMonitorPointByProvinceCode(provinceCode);
                parameters.put("areaCode", provinceCode);
                parameters.put("city", province.getProvinceName());
            } else {
                cityCode = city.getCityCode();
                monitorPoint = monitorPointMapper.getFirstMonitorPointByCityCode(cityCode);
                parameters.put("areaCode", cityCode);
                parameters.put("city", city.getCityName());
            }
        } else {
            areaCode = area.getAreaCode();
            monitorPoint = monitorPointMapper.getFirstMonitorPointByAreaCode(areaCode);
            cityCode = area.getCityCode();
            parameters.put("areaCode", areaCode);
            parameters.put("city", area.getAreaName());
        }
        if (monitorPoint == null) {
            return new ArrayList<>();
        }
        parameters.put("monitorPointId", monitorPoint.getId());
        String time = parameters.get("time").toString();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar c = Calendar.getInstance();
        c.setTime(sdf.parse(time));
        c.add(Calendar.HOUR_OF_DAY, 1);
        Date start = c.getTime();
        c.add(Calendar.DAY_OF_MONTH, 1);
        Date end = c.getTime();
        parameters.put("start", start);
        parameters.put("end", end);
        List<Map<String, Object>> forecastList = forecastWeatherMapper.getForecast(parameters);
        List<Map<String, Object>> aqiList = hangzhouAqiMapper.getAqi(parameters);
        if (aqiList.size() == 0) {
            parameters.put("areaCode", cityCode);
            aqiList = hangzhouAqiMapper.getAqi(parameters);
        }
        List<Map<String, Object>> list1 = new ArrayList<>();
        for (Map<String, Object> map : aqiList) {
            Map<String, Object> hashMap = new HashMap<>();
            hashMap.put("time", map.get("time"));
            Map<String, Object> jsonMap = (Map<String, Object>) JSONObject.parse(map.get("json").toString());
            hashMap.putAll(jsonMap);
            hashMap.put("city", parameters.get("city").toString());
            list1.add(hashMap);
        }
        List<Map<String, Object>> realTimeList = realTimeWeatherMapper.getRealTimeWeather(parameters);
        List<Map<String, Object>> realList = new ArrayList<>();
        for (Map<String, Object> map : realTimeList) {
            Map<String, Object> hashMap = new HashMap<>();
            hashMap.put("time", map.get("time"));
            hashMap.put("type", "实际");
            hashMap.put("city", parameters.get("city").toString());
            Map<String, Object> jsonMap = (Map<String, Object>) JSONObject.parse(map.get("json").toString());
            hashMap.putAll(jsonMap);
            realList.add(hashMap);
        }
        for (Map<String, Object> realTimeMap : realList) {
            for (Map<String, Object> aqiMap : list1) {
                if (aqiMap.get("time").equals(realTimeMap.get("time"))) {
                    realTimeMap.putAll(aqiMap);
                }
            }
        }
        List<Map<String, Object>> foreList = new ArrayList<>();
        for (Map<String, Object> forecastMap : forecastList) {
            Map<String, Object> jsonMap = (Map<String, Object>) JSONObject.parse(forecastMap.get("json").toString());
            Map<String, Object> hashMap = new HashMap<>();
            hashMap.put("temp", jsonMap.get("tem"));
            hashMap.put("windDir", jsonMap.get("win"));
            hashMap.put("windLevel", jsonMap.get("win_speed"));
            hashMap.put("condition", jsonMap.get("wea"));
            hashMap.put("time", forecastMap.get("time").toString());
            hashMap.put("type", "预测");
            hashMap.put("city", parameters.get("city").toString());
            foreList.add(hashMap);
        }
        List<Map<String, Object>> resultList = new ArrayList<>();
        for (Map<String, Object> foreMap : foreList) {
            for (Map<String, Object> realMap : realList) {
                if (foreMap.get("time").equals(realMap.get("time"))) {
                    resultList.add(foreMap);
                    resultList.add(realMap);
                }
            }
        }
        for (int i = realList.size(); i < forecastList.size(); i++) {
            Map<String, Object> map = foreList.get(i);
            resultList.add(map);
            Map<String, Object> hashMap = new HashMap<>();
            hashMap.put("time", map.get("time").toString());
            hashMap.put("type", "实际");
            hashMap.put("city", parameters.get("city").toString());
            resultList.add(hashMap);
        }
        return resultList;
    }
}
src/main/resources/mapper/AreaMapper.xml
@@ -6,4 +6,9 @@
    <result column="area_name" property="areaName" jdbcType="VARCHAR" />
    <result column="city_code" property="cityCode" jdbcType="INTEGER" />
  </resultMap>
  <select id="getAreaByName" resultType="com.moral.entity.Area" resultMap="BaseResultMap">
    select * from area
    where area_name like '%${name}%' limit 0,1
  </select>
</mapper>
src/main/resources/mapper/CityMapper.xml
@@ -6,4 +6,9 @@
    <result column="city_name" property="cityName" jdbcType="VARCHAR" />
    <result column="province_code" property="provinceCode" jdbcType="INTEGER" />
  </resultMap>
  <select id="getCityByName" resultType="com.moral.entity.City" resultMap="BaseResultMap">
    select * from city
    where city_name like '%${name}%' limit 0,1
  </select>
</mapper>
src/main/resources/mapper/ForecastWeatherMapper.xml
New file
@@ -0,0 +1,25 @@
<?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.ForecastWeatherMapper">
    <resultMap id="BaseResultMap" type="com.moral.entity.ForecastWeather">
        <id column="monitor_point_id" property="monitorPointId" jdbcType="INTEGER"/>
    </resultMap>
    <select id="getForecastHour" resultType="java.util.Map">
        SELECT
        DATE_FORMAT(time, #{typeFormat}) time,
        (case when result is null then json->'$.tem' else result end) result
        from forecast_weather
        where time >= #{start}
        AND time <![CDATA[<]]> #{end}
        AND monitor_point_id=#{monitorPointId}
    </select>
    <select id="getForecast" resultType="java.util.Map">
        SELECT DATE_FORMAT(time, #{typeFormat}) time,
        json
        from forecast_weather
        where time >= #{start}
        AND time <![CDATA[<]]> #{end}
        AND monitor_point_id=#{monitorPointId}
    </select>
</mapper>
src/main/resources/mapper/HangzhouAqiMapper.xml
@@ -67,4 +67,32 @@
    ORDER BY
    time
  </select>
    <select id="getAqiDataByAreaCode" resultType="java.util.Map">
    SELECT
    DATE_FORMAT(time, #{typeFormat}) time,
    ifnull(aqi_json->'$.${sensors}',"") as '${sensors2}'
    FROM
    hangzhou_aqi ha
    WHERE
    ha.time >= #{start}
    AND ha.time <![CDATA[<]]> #{end}
    AND ha.city_code = #{areaCode}
    ORDER BY
    time
  </select>
    <select id="getAqi" resultType="java.util.Map">
    select
    DATE_FORMAT(time, #{typeFormat}) time,
    aqi_json json
    FROM
    hangzhou_aqi
    WHERE
    time >= #{start}
    AND time <![CDATA[<]]> #{end}
    AND city_code = #{areaCode}
    ORDER BY
    time
    </select>
</mapper>
src/main/resources/mapper/MonitorPointMapper.xml
@@ -172,4 +172,15 @@
        and a.id=#{id};
    </select>
    <select id="getFirstMonitorPointByAreaCode" resultType="com.moral.entity.MonitorPoint" resultMap="BaseResultMap">
        select * from monitor_point where area_code=#{areaCode} limit 0,1
    </select>
    <select id="getFirstMonitorPointByCityCode" resultType="com.moral.entity.MonitorPoint" resultMap="BaseResultMap">
        select * from monitor_point where city_code=#{cityCode} limit 0,1
    </select>
    <select id="getFirstMonitorPointByProvinceCode" resultType="com.moral.entity.MonitorPoint" resultMap="BaseResultMap">
        select * from monitor_point where province_code=#{provinceCode} limit 0,1
    </select>
</mapper>
src/main/resources/mapper/ProvinceMapper.xml
@@ -5,4 +5,9 @@
    <id column="province_code" property="provinceCode" jdbcType="INTEGER" />
    <result column="province_name" property="provinceName" jdbcType="VARCHAR" />
  </resultMap>
  <select id="getProvinceByName" resultType="com.moral.entity.Province" resultMap="BaseResultMap">
    select * from province
    where province_name like '%${name}%' limit 0,1
  </select>
</mapper>
src/main/resources/mapper/RealTimeWeatherMapper.xml
New file
@@ -0,0 +1,20 @@
<?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.RealTimeWeatherMapper">
    <resultMap id="BaseResultMap" type="com.moral.entity.RealTimeWeather">
        <id column="monitor_point_id" property="monitorPointId" jdbcType="INTEGER"/>
    </resultMap>
    <select id="getRealTimeWeather" resultType="java.util.Map">
    select
    DATE_FORMAT(time, #{typeFormat}) time,
    json
    FROM
    realtime_weather
    WHERE
    time >= #{start}
    AND time <![CDATA[<]]> #{end}
    AND monitor_point_id = #{monitorPointId}
    ORDER BY
    time
   </select>
</mapper>