kaiyu
2022-01-07 81aeffc830a9c9b551c1acdf1126257d8c3c2c53
screen-api
增加获取省内城市优良天气接口
1 files added
3 files modified
170 ■■■■ changed files
screen-api/src/main/java/com/moral/api/controller/AqiController.java 76 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/pojo/form/aqi/ProvinceCitiesPollutionLevelForm.java 65 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/CityAqiDailyService.java 10 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/impl/CityAqiDailyServiceImpl.java 19 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/controller/AqiController.java
@@ -3,6 +3,7 @@
import com.moral.api.pojo.dto.cityAQI.CityPollutionLevel;
import com.moral.api.pojo.dto.cityAQI.MonthlyPollutionLevel;
import com.moral.api.pojo.form.aqi.AreaPollutionLevelForm;
import com.moral.api.pojo.form.aqi.ProvinceCitiesPollutionLevelForm;
import com.moral.api.pojo.form.aqi.SpecialCitiesPollutionLevelForm;
import com.moral.api.pojo.vo.cityAQI.BarChartOfPollutionLevelVO;
import com.moral.api.pojo.vo.cityAQI.BarChartTableOfPollutionLevelVO;
@@ -113,14 +114,14 @@
    }
    /**
    * @Description: 获取城市优良天气占比的柱状图数据
            * @Param: [form]
            * @return: com.moral.constant.ResultMessage
            * @Author: 陈凯裕
            * @Date: 2021/11/22
            */
     * @Description: 获取城市优良天气占比的柱状图数据
     * @Param: [form]
     * @return: com.moral.constant.ResultMessage
     * @Author: 陈凯裕
     * @Date: 2021/11/22
     */
    @GetMapping("queryBarChartOfPollutionLevel")
    public ResultMessage queryBarChartOfPollutionLevel(ChartOfPollutionLevelForm form){
    public ResultMessage queryBarChartOfPollutionLevel(ChartOfPollutionLevelForm form) {
        //判断是否缺少参数
        if (!form.valid())
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
@@ -134,14 +135,14 @@
    }
    /**
    * @Description: 获取城市优良天气占比的柱状图下的表格数据
            * @Param: [form]
            * @return: com.moral.constant.ResultMessage
            * @Author: 陈凯裕
            * @Date: 2021/11/22
            */
     * @Description: 获取城市优良天气占比的柱状图下的表格数据
     * @Param: [form]
     * @return: com.moral.constant.ResultMessage
     * @Author: 陈凯裕
     * @Date: 2021/11/22
     */
    @GetMapping("queryBarChatTableOfPollutionLevel")
    public ResultMessage queryBarChatTableOfPollutionLevel(ChartOfPollutionLevelForm form){
    public ResultMessage queryBarChatTableOfPollutionLevel(ChartOfPollutionLevelForm form) {
        //判断是否缺少参数
        if (!form.valid())
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
@@ -200,14 +201,14 @@
    }
    /**
    * @Description: 查询一个城市所有县级市的优良天气
            * @Param: [regionCode]
            * @return: com.moral.constant.ResultMessage
            * @Author: 陈凯裕
            * @Date: 2021/12/30
            */
     * @Description: 查询一个城市所有县级市的优良天气
     * @Param: [regionCode]
     * @return: com.moral.constant.ResultMessage
     * @Author: 陈凯裕
     * @Date: 2021/12/30
     */
    @GetMapping("queryAreaPollutionLevel")
    public ResultMessage queryAreaPollutionLevel(AreaPollutionLevelForm form){
    public ResultMessage queryAreaPollutionLevel(AreaPollutionLevelForm form) {
        //判断是否缺少参数
        if (!form.valid())
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
@@ -219,14 +220,14 @@
    }
    /**
    * @Description: 查询26+2城市优良天气数据
            * @Param: [form]
            * @return: com.moral.constant.ResultMessage
            * @Author: 陈凯裕
            * @Date: 2021/12/31
            */
     * @Description: 查询26+2城市优良天气数据
     * @Param: [form]
     * @return: com.moral.constant.ResultMessage
     * @Author: 陈凯裕
     * @Date: 2021/12/31
     */
    @GetMapping("qeury28CitiesPollutionLevel")
    public ResultMessage qeury28CitiesPollutionLevel(SpecialCitiesPollutionLevelForm form){
    public ResultMessage query28CitiesPollutionLevel(SpecialCitiesPollutionLevelForm form) {
        //判断是否缺少参数
        if (!form.valid())
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
@@ -237,4 +238,23 @@
        return ResultMessage.ok(datas);
    }
    /**
    * @Description: 查询一个省内所有城市的优良天数
            * @Param: [form]
            * @return: com.moral.constant.ResultMessage
            * @Author: 陈凯裕
            * @Date: 2022/1/7
            */
    @GetMapping("queryProvinceCitiesPollutionLevel")
    public ResultMessage queryProvinceCitiesPollutionLevel(ProvinceCitiesPollutionLevelForm form) {
        //判断是否缺少参数
        if (!form.valid())
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        //查询业务数据
        List<CityPollutionLevel> datas = cityAqiDailyService.queryProvinceCitiesPollutionLevel(form);
        //返回数据
        return ResultMessage.ok(datas);
    }
}
screen-api/src/main/java/com/moral/api/pojo/form/aqi/ProvinceCitiesPollutionLevelForm.java
New file
@@ -0,0 +1,65 @@
package com.moral.api.pojo.form.aqi;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.moral.util.DateUtils;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
 * @ClassName ProvinceCitiesPollutionLevelForm
 * @Description TODO
 * @Author 陈凯裕
 * @Date 2022/1/7 11:20
 * @Version TODO
 **/
@Data
public class ProvinceCitiesPollutionLevelForm {
    /*
     * 地区码
     * */
    private Integer regionCode;
    /*
     * 如果是查年数据则该参数不能为空
     * */
    @DateTimeFormat(pattern = "yyyy")
    @JsonFormat(pattern = "yyyy", timezone = "GMT+8")
    private Date year;
    /*
     * 如果是查月数据则该参数不能为空
     * */
    @DateTimeFormat(pattern = "yyyy-MM")
    @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
    private Date month;
    /*
     * 用于查询数据的开始时间,由form自行转换
     * */
    private Date startDate;
    /*
     * 用于查询数据的结束时间,由form自行转换
     * */
    private Date endDate;
    public boolean valid() {
        if (regionCode == null || (year == null && month == null)||(year != null && month != null))
            return false;
        //检查regionCode格式
        String regionCodeStr = regionCode.toString();
        if (!regionCodeStr.substring(regionCodeStr.length() - 4, regionCodeStr.length()).equals("0000"))
            return false;
        //时间转换
        if (year != null) {
            startDate = DateUtils.getFirstDayOfYear(year);
            endDate = DateUtils.getLastDayOfYear(year);
            return true;
        }
        startDate = DateUtils.getFirstDayOfMonth(month);
        endDate = DateUtils.getLastDayOfMonth(month);
        return true;
    }
}
screen-api/src/main/java/com/moral/api/service/CityAqiDailyService.java
@@ -5,6 +5,7 @@
import com.moral.api.pojo.dto.cityAQI.CityPollutionLevel;
import com.moral.api.pojo.dto.cityAQI.MonthlyPollutionLevel;
import com.moral.api.pojo.form.aqi.AreaPollutionLevelForm;
import com.moral.api.pojo.form.aqi.ProvinceCitiesPollutionLevelForm;
import com.moral.api.pojo.form.aqi.SpecialCitiesPollutionLevelForm;
import com.moral.api.pojo.vo.cityAQI.PieChartOfPollutionLevelVO;
import com.moral.api.pojo.form.aqi.ChartOfPollutionLevelForm;
@@ -66,4 +67,13 @@
            * @Date: 2021/12/31
            */
    List<CityPollutionLevel> querySpecialCitiesPollutionLevel(SpecialCitiesPollutionLevelForm form);
    /**
    * @Description: 查询一个省内所有市的优良天数
            * @Param: [from]
            * @return: java.util.List<com.moral.api.pojo.dto.cityAQI.CityPollutionLevel>
            * @Author: 陈凯裕
            * @Date: 2022/1/7
            */
    List<CityPollutionLevel> queryProvinceCitiesPollutionLevel(ProvinceCitiesPollutionLevelForm form);
}
screen-api/src/main/java/com/moral/api/service/impl/CityAqiDailyServiceImpl.java
@@ -11,6 +11,7 @@
import com.moral.api.pojo.dto.cityAQI.MonthlyPollutionLevel;
import com.moral.api.pojo.dto.cityAQI.PollutionDaysAndProportion;
import com.moral.api.pojo.form.aqi.AreaPollutionLevelForm;
import com.moral.api.pojo.form.aqi.ProvinceCitiesPollutionLevelForm;
import com.moral.api.pojo.form.aqi.SpecialCitiesPollutionLevelForm;
import com.moral.api.pojo.vo.cityAQI.PieChartOfPollutionLevelVO;
import com.moral.api.pojo.form.aqi.ChartOfPollutionLevelForm;
@@ -322,6 +323,24 @@
        return datas;
    }
    @Override
    public List<CityPollutionLevel> queryProvinceCitiesPollutionLevel(ProvinceCitiesPollutionLevelForm form) {
        //取参
        Date startDate = form.getStartDate();
        Date endDate = form.getEndDate();
        Integer regionCode = form.getRegionCode();
        //查询省下所有的市
        List<SysArea> allCities = sysAreaService.getChildren(regionCode);
        //创建返回数据对象
        List<CityPollutionLevel> datas = new ArrayList<>();
        //遍历每个县级市 查询数据
        for (SysArea city : allCities) {
            CityPollutionLevel cityPollutionLevel = calculateDaysByTimeAndCityCode(city,startDate,endDate);
            datas.add(cityPollutionLevel);
        }
        return datas;
    }
    /**
    * @Description: 根据地区对象和开始结束时间计算污染天气
            * @Param: [area, startDate, endDate]