package com.moral.api.controller; import com.moral.api.pojo.dto.cityAQI.BarChartOfPollutionLevelDTO; import com.moral.api.pojo.dto.cityAQI.PieChartOfPollutionLevelDTO; import com.moral.api.pojo.form.aqi.QueryPieChartOfPollutionLevelForm; import com.moral.api.service.CityAqiDailyService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import com.moral.api.service.CityAqiService; import com.moral.constant.ResponseCodeEnum; import com.moral.constant.ResultMessage; import com.moral.util.WebUtils; @RestController @RequestMapping("/aqi") @CrossOrigin(origins = "*", maxAge = 3600) @Api(tags = {"aqi"}) public class AqiController { @Autowired private CityAqiService cityAqiService; @Autowired private CityAqiDailyService cityAqiDailyService; @GetMapping("compareO3") @ApiOperation(value = "预测和实测臭氧对比", notes = "预测和实测臭氧对比") @ApiImplicitParams(value = { @ApiImplicitParam(name = "regionCode", value = "区号", required = true, paramType = "query", dataType = "String") }) public ResultMessage measuredCompareForecast(HttpServletRequest request) { Map params = WebUtils.getParametersStartingWith(request, null); if (!params.containsKey("regionCode") || !params.containsKey("time")) { return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); } List> response = cityAqiService.measuredCompareForecastOfO3(params); return ResultMessage.ok(response); } /** * @Description: 查询最新的6参和aqi数据 * @Param: [regionCode] * @return: com.moral.constant.ResultMessage * @Author: 陈凯裕 * @Date: 2021/11/1 */ @GetMapping("queryByRegionCode") public ResultMessage queryByRegionCode(Integer regionCode) { Map value = cityAqiService.queryCityAqiByRegionCode(regionCode); return ResultMessage.ok(value); } /** * @Description: 查询最近24小时的aqi数据 * @Param: [regionCode] * @return: com.moral.constant.ResultMessage * @Author: 陈凯裕 * @Date: 2021/11/1 */ @GetMapping("query24HoursAQI") public ResultMessage query24HoursAQIByRegionCode(Integer regionCode) { Map datas = cityAqiService.query24HoursAqiByRegionCode(regionCode); return ResultMessage.ok(datas); } /** * @Description: 查询当天的累计aqi以及主要污染物 * @Param: [RegionCode] * @return: com.moral.constant.ResultMessage * @Author: 陈凯裕 * @Date: 2021/11/2 */ @GetMapping("queryTodayAqiAndPollutant") public ResultMessage queryTodayAqiAndPollutant(Integer regionCode) { Map datas = cityAqiService.queryTodayAqiAndPollutant(regionCode); return ResultMessage.ok(datas); } /** * @Description: 首页右下角,污染天数占比的饼状图 * @Param: [regionCode] * @return: com.moral.constant.ResultMessage * @Author: 陈凯裕 * @Date: 2021/11/11 */ @GetMapping("queryPieChartOfPollutionLevel") public ResultMessage queryPieChartOfPollutionLevel(QueryPieChartOfPollutionLevelForm form) { //判断是否缺少参数 if (!form.valid()) return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); PieChartOfPollutionLevelDTO dto = cityAqiDailyService.queryPieChartOfPollutionLevels(form); return ResultMessage.ok(dto); } @GetMapping("test1") public ResultMessage test1(){ List dtos = new ArrayList<>(); PieChartOfPollutionLevelDTO dto = new PieChartOfPollutionLevelDTO(); dto.setTime("2021-11"); dto.setTotalDays(10); List> list = new ArrayList<>(); Map map = new HashMap<>(); map.put("proportion","40%"); map.put("days",4); map.put("pollution",0); list.add(map); Map map1 = new HashMap<>(); map1.put("proportion","30%"); map1.put("days",3); map1.put("pollution",1); list.add(map1); Map map2 = new HashMap<>(); map2.put("proportion","30%"); map2.put("days",3); map2.put("pollution",2); list.add(map2); Map map3 = new HashMap<>(); map3.put("proportion","0%"); map3.put("days",0); map3.put("pollution",3); list.add(map3); Map map4 = new HashMap<>(); map4.put("proportion","0%"); map4.put("days",0); map4.put("pollution",4); list.add(map4); Map map5 = new HashMap<>(); map5.put("proportion","0%"); map5.put("days",0); map5.put("pollution",5); list.add(map5); dto.setValues(list); PieChartOfPollutionLevelDTO dto1 = new PieChartOfPollutionLevelDTO(); dto1.setTime("2021-11"); List> list1 = new ArrayList<>(); Map map11 = new HashMap<>(); map11.put("proportion","40%"); map11.put("days",4); map11.put("pollution",0); list1.add(map11); Map map12 = new HashMap<>(); map12.put("proportion","30%"); map12.put("days",3); map12.put("pollution",1); list1.add(map12); Map map13 = new HashMap<>(); map13.put("proportion","30%"); map13.put("days",3); map13.put("pollution",2); list1.add(map13); Map map14 = new HashMap<>(); map14.put("proportion","0%"); map14.put("days",0); map14.put("pollution",3); list1.add(map14); Map map15 = new HashMap<>(); map15.put("proportion","0%"); map15.put("days",0); map15.put("pollution",4); list1.add(map15); Map map16 = new HashMap<>(); map16.put("proportion","0%"); map16.put("days",0); map16.put("pollution",5); list1.add(map16); dto1.setValues(list1); dto1.setTotalDays(10); dtos.add(dto); dtos.add(dto1); return ResultMessage.ok(dtos); } @GetMapping("queryBarChartOfPollutionLevel") public ResultMessage queryBarChartOfPollutionLevel(){ BarChartOfPollutionLevelDTO dto = new BarChartOfPollutionLevelDTO(); List time = new ArrayList<>(); time.add("2021-10"); time.add("2021-11"); List> values = new ArrayList<>(); Map map1 = new HashMap<>(); map1.put("pollution",0); List days1 = new ArrayList<>(); days1.add(4); days1.add(6); List proportion1 = new ArrayList<>(); proportion1.add("40%"); proportion1.add("60%"); map1.put("days",days1); map1.put("proportion",proportion1); Map map2 = new HashMap<>(); map2.put("pollution",1); List days2 = new ArrayList<>(); days2.add(1); days2.add(0); List proportion2 = new ArrayList<>(); proportion2.add("10%"); proportion2.add("0%"); map2.put("days",days2); map2.put("proportion",proportion2); Map map3 = new HashMap<>(); map3.put("pollution",2); List days3 = new ArrayList<>(); days3.add(1); days3.add(0); List proportion3 = new ArrayList<>(); proportion3.add("10%"); proportion3.add("0%"); map3.put("days",days3); map3.put("proportion",proportion3); Map map4 = new HashMap<>(); map4.put("pollution",3); List days4 = new ArrayList<>(); days4.add(2); days4.add(2); List proportion4 = new ArrayList<>(); proportion4.add("20%"); proportion4.add("20%"); map4.put("days",days4); map4.put("proportion",proportion4); Map map5 = new HashMap<>(); map5.put("pollution",4); List days5 = new ArrayList<>(); days5.add(2); days5.add(2); List proportion5 = new ArrayList<>(); proportion5.add("20%"); proportion5.add("20%"); map5.put("days",days5); map5.put("proportion",proportion5); Map map6 = new HashMap<>(); map6.put("pollution",5); List days6 = new ArrayList<>(); days6.add(0); days6.add(0); List proportion6 = new ArrayList<>(); proportion6.add("20%"); proportion6.add("20%"); map6.put("days",days6); map6.put("proportion",proportion6); values.add(map1); values.add(map2); values.add(map3); values.add(map4); values.add(map5); values.add(map6); dto.setTime(time); dto.setValues(values); return ResultMessage.ok(dto); } @GetMapping("provincialRanking") @ApiOperation(value = "省内排名", notes = "省内排名") @ApiImplicitParams(value = { @ApiImplicitParam(name = "regionCode", value = "区号", required = true, paramType = "query", dataType = "Integer") }) public ResultMessage provincialRanking(Integer regionCode) { if (ObjectUtils.isEmpty(regionCode)) { return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); } Map response = cityAqiService.provincialRanking(regionCode); return ResultMessage.ok(response); } @GetMapping("rankingDetails") @ApiOperation(value = "排名详情", notes = "排名详情") @ApiImplicitParams(value = { @ApiImplicitParam(name = "regionCode", value = "区号", required = true, paramType = "query", dataType = "Integer"), @ApiImplicitParam(name = "type", value = "排名类型,今日累计:today,小时:hour,日:day,月:month,年:year,自定义:custom", required = true, paramType = "query", dataType = "String"), @ApiImplicitParam(name = "time", value = "时间,排名类型为day,month,year是需传此参", required = true, paramType = "query", dataType = "String"), @ApiImplicitParam(name = "start", value = "开始时间,排名类型为custom自定义是传此参,精确到日,如:2021-11-02", required = true, paramType = "query", dataType = "String"), @ApiImplicitParam(name = "end", value = "结束时间,排名类型为custom自定义是传此参,精确到日,如:2021-11-03", required = true, paramType = "query", dataType = "String"), @ApiImplicitParam(name = "cityType", value = "城市类型,省内城市:province,市区排名:city", required = true, paramType = "query", dataType = "String"), }) public ResultMessage rankingDetails(HttpServletRequest request) { Map params = WebUtils.getParametersStartingWith(request, null); if (!params.containsKey("type") || !params.containsKey("cityType") || !params.containsKey("regionCode")) { return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); } Object type = params.get("type"); if ("hour".equals(type) || "day".equals(type) || "month".equals(type) || "year".equals(type)) { if (!params.containsKey("time")) { return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); } } if ("custom".equals(type)) { if (!params.containsKey("start") || !params.containsKey("end")) { return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); } } List> response = cityAqiService.rankingDetails(params); return ResultMessage.ok(response); } }