From 4c4b97b0fc6b418254b8b7c29e55c7ee8f39997b Mon Sep 17 00:00:00 2001 From: jinpengyong <jpy123456> Date: Fri, 08 Oct 2021 10:05:56 +0800 Subject: [PATCH] 臭氧预测实测对比 --- screen-manage/src/main/java/com/moral/api/util/AdjustDataUtils.java | 1 screen-api/src/main/java/com/moral/api/service/ForecastService.java | 16 ++ screen-api/src/main/java/com/moral/api/service/CityAqiService.java | 21 +++ screen-api/src/main/java/com/moral/api/controller/AqiController.java | 45 +++++++ screen-api/src/main/java/com/moral/api/mapper/ForecastMapper.java | 16 ++ screen-api/src/main/resources/mapper/ForecastMapper.xml | 12 ++ screen-api/src/main/java/com/moral/api/service/impl/ForecastServiceImpl.java | 20 +++ screen-api/src/main/resources/mapper/CityAqiMapper.xml | 12 ++ screen-api/src/main/java/com/moral/api/entity/CityAqi.java | 45 +++++++ screen-api/src/main/java/com/moral/api/mapper/CityAqiMapper.java | 16 ++ screen-api/src/main/java/com/moral/api/service/impl/CityAqiServiceImpl.java | 95 +++++++++++++++ screen-api/src/main/java/com/moral/api/entity/Forecast.java | 45 +++++++ 12 files changed, 343 insertions(+), 1 deletions(-) diff --git a/screen-api/src/main/java/com/moral/api/controller/AqiController.java b/screen-api/src/main/java/com/moral/api/controller/AqiController.java new file mode 100644 index 0000000..0246729 --- /dev/null +++ b/screen-api/src/main/java/com/moral/api/controller/AqiController.java @@ -0,0 +1,45 @@ +package com.moral.api.controller; + +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.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.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; + + @GetMapping("compareO3") + @ApiOperation(value = "���������������������������", notes = "���������������������������") + @ApiImplicitParams(value = { + @ApiImplicitParam(name = "regionCode", value = "������", required = true, paramType = "query", dataType = "String") + }) + public ResultMessage MeasuredCompareForecast(HttpServletRequest request) { + Map<String, Object> 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<Map<String, Object>> response = cityAqiService.measuredCompareForecastOfO3(params); + return ResultMessage.ok(response); + } +} diff --git a/screen-api/src/main/java/com/moral/api/entity/CityAqi.java b/screen-api/src/main/java/com/moral/api/entity/CityAqi.java new file mode 100644 index 0000000..fc173c4 --- /dev/null +++ b/screen-api/src/main/java/com/moral/api/entity/CityAqi.java @@ -0,0 +1,45 @@ +package com.moral.api.entity; + +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.util.Date; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * <p> + * ������aqi��������������������� + * </p> + * + * @author moral + * @since 2021-09-28 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class CityAqi extends Model<CityAqi> { + + private static final long serialVersionUID = 1L; + + /** + * ������id + */ + private String cityCode; + + /** + * ������ + */ + private Date time; + + /** + * ������ + */ + private String value; + + + @Override + protected Serializable pkVal() { + return null; + } + +} diff --git a/screen-api/src/main/java/com/moral/api/entity/Forecast.java b/screen-api/src/main/java/com/moral/api/entity/Forecast.java new file mode 100644 index 0000000..b09b6aa --- /dev/null +++ b/screen-api/src/main/java/com/moral/api/entity/Forecast.java @@ -0,0 +1,45 @@ +package com.moral.api.entity; + +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.util.Date; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * <p> + * ������������������ + * </p> + * + * @author moral + * @since 2021-09-28 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class Forecast extends Model<Forecast> { + + private static final long serialVersionUID = 1L; + + /** + * ������id + */ + private String cityCode; + + /** + * ������ + */ + private Date time; + + /** + * ������ + */ + private String value; + + + @Override + protected Serializable pkVal() { + return null; + } + +} diff --git a/screen-api/src/main/java/com/moral/api/mapper/CityAqiMapper.java b/screen-api/src/main/java/com/moral/api/mapper/CityAqiMapper.java new file mode 100644 index 0000000..e1d19a7 --- /dev/null +++ b/screen-api/src/main/java/com/moral/api/mapper/CityAqiMapper.java @@ -0,0 +1,16 @@ +package com.moral.api.mapper; + +import com.moral.api.entity.CityAqi; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * <p> + * ������aqi��������������������� Mapper ������ + * </p> + * + * @author moral + * @since 2021-09-28 + */ +public interface CityAqiMapper extends BaseMapper<CityAqi> { + +} diff --git a/screen-api/src/main/java/com/moral/api/mapper/ForecastMapper.java b/screen-api/src/main/java/com/moral/api/mapper/ForecastMapper.java new file mode 100644 index 0000000..18c055a --- /dev/null +++ b/screen-api/src/main/java/com/moral/api/mapper/ForecastMapper.java @@ -0,0 +1,16 @@ +package com.moral.api.mapper; + +import com.moral.api.entity.Forecast; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * <p> + * ������������������ Mapper ������ + * </p> + * + * @author moral + * @since 2021-09-28 + */ +public interface ForecastMapper extends BaseMapper<Forecast> { + +} diff --git a/screen-api/src/main/java/com/moral/api/service/CityAqiService.java b/screen-api/src/main/java/com/moral/api/service/CityAqiService.java new file mode 100644 index 0000000..12e806e --- /dev/null +++ b/screen-api/src/main/java/com/moral/api/service/CityAqiService.java @@ -0,0 +1,21 @@ +package com.moral.api.service; + +import java.util.List; +import java.util.Map; + +import com.moral.api.entity.CityAqi; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * <p> + * ������aqi��������������������� ��������� + * </p> + * + * @author moral + * @since 2021-09-28 + */ +public interface CityAqiService extends IService<CityAqi> { + + //��������������������������� + List<Map<String, Object>> measuredCompareForecastOfO3(Map<String, Object> params); +} diff --git a/screen-api/src/main/java/com/moral/api/service/ForecastService.java b/screen-api/src/main/java/com/moral/api/service/ForecastService.java new file mode 100644 index 0000000..3068ab3 --- /dev/null +++ b/screen-api/src/main/java/com/moral/api/service/ForecastService.java @@ -0,0 +1,16 @@ +package com.moral.api.service; + +import com.moral.api.entity.Forecast; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * <p> + * ������������������ ��������� + * </p> + * + * @author moral + * @since 2021-09-28 + */ +public interface ForecastService extends IService<Forecast> { + +} diff --git a/screen-api/src/main/java/com/moral/api/service/impl/CityAqiServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/CityAqiServiceImpl.java new file mode 100644 index 0000000..be69027 --- /dev/null +++ b/screen-api/src/main/java/com/moral/api/service/impl/CityAqiServiceImpl.java @@ -0,0 +1,95 @@ +package com.moral.api.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.moral.api.entity.CityAqi; +import com.moral.api.entity.Forecast; +import com.moral.api.mapper.CityAqiMapper; +import com.moral.api.mapper.ForecastMapper; +import com.moral.api.service.CityAqiService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.moral.util.DateUtils; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; + +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * <p> + * ������aqi��������������������� ��������������� + * </p> + * + * @author moral + * @since 2021-09-28 + */ +@Service +public class CityAqiServiceImpl extends ServiceImpl<CityAqiMapper, CityAqi> implements CityAqiService { + + @Autowired + private CityAqiMapper cityAqiMapper; + + @Autowired + private ForecastMapper forecastMapper; + + @Override + public List<Map<String, Object>> measuredCompareForecastOfO3(Map<String, Object> params) { + String regionCode = params.get("regionCode").toString(); + String time = params.get("time").toString(); + //������������ + QueryWrapper<Forecast> forecastQueryWrapper = new QueryWrapper<>(); + forecastQueryWrapper.select("time", "value") + .eq("city_code", regionCode) + .likeRight("time", time); + List<Map<String, Object>> forecastData = forecastMapper.selectMaps(forecastQueryWrapper); + //������������ + QueryWrapper<CityAqi> cityAqiQueryWrapper = new QueryWrapper<>(); + cityAqiQueryWrapper.select("time", "value") + .eq("city_code", regionCode) + .likeRight("time", time); + List<Map<String, Object>> measuredData = cityAqiMapper.selectMaps(cityAqiQueryWrapper); + + List<Map<String, Object>> result = new ArrayList<>(); + for (int i = 0; i < 48; i++) { + Map<String, Object> map = new HashMap<>(); + if (i % 2 == 0) { + map.put("type", "������"); + Date d = DateUtils.addHours(DateUtils.getDate(time), i / 2); + map.put("time", DateUtils.dateToDateString(d, DateUtils.yyyy_MM_dd_HH_EN)); + for (Map<String, Object> forecastDatum : forecastData) { + Date date = (Date) forecastDatum.get("time"); + String value = forecastDatum.get("value").toString(); + Map<String, Object> data = JSONObject.parseObject(value, Map.class); + Object o3 = data.get("o3"); + if (i == DateUtils.getHour(date) * 2) { + if (!ObjectUtils.isEmpty(o3)) { + map.put("O3", o3); + } + } + } + } else { + map.put("type", "������"); + Date d = DateUtils.addHours(DateUtils.getDate(time), (i - 1) / 2); + map.put("time", DateUtils.dateToDateString(d, DateUtils.yyyy_MM_dd_HH_EN)); + for (Map<String, Object> measuredDatum : measuredData) { + Date date = (Date) measuredDatum.get("time"); + String value = measuredDatum.get("value").toString(); + Map<String, Object> data = JSONObject.parseObject(value, Map.class); + Object o3 = data.get("o3"); + if (i == (DateUtils.getHour(date) * 2 + 1)) { + if (!ObjectUtils.isEmpty(o3)) { + map.put("O3", o3); + } + } + } + } + result.add(map); + } + return result; + } +} diff --git a/screen-api/src/main/java/com/moral/api/service/impl/ForecastServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/ForecastServiceImpl.java new file mode 100644 index 0000000..95971f4 --- /dev/null +++ b/screen-api/src/main/java/com/moral/api/service/impl/ForecastServiceImpl.java @@ -0,0 +1,20 @@ +package com.moral.api.service.impl; + +import com.moral.api.entity.Forecast; +import com.moral.api.mapper.ForecastMapper; +import com.moral.api.service.ForecastService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * <p> + * ������������������ ��������������� + * </p> + * + * @author moral + * @since 2021-09-28 + */ +@Service +public class ForecastServiceImpl extends ServiceImpl<ForecastMapper, Forecast> implements ForecastService { + +} diff --git a/screen-api/src/main/resources/mapper/CityAqiMapper.xml b/screen-api/src/main/resources/mapper/CityAqiMapper.xml new file mode 100644 index 0000000..7e8763e --- /dev/null +++ b/screen-api/src/main/resources/mapper/CityAqiMapper.xml @@ -0,0 +1,12 @@ +<?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.api.mapper.CityAqiMapper"> + + <!-- ������������������������ --> + <resultMap id="BaseResultMap" type="com.moral.api.entity.CityAqi"> + <result column="city_code" property="cityCode"/> + <result column="time" property="time"/> + <result column="value" property="value"/> + </resultMap> + +</mapper> \ No newline at end of file diff --git a/screen-api/src/main/resources/mapper/ForecastMapper.xml b/screen-api/src/main/resources/mapper/ForecastMapper.xml new file mode 100644 index 0000000..311b519 --- /dev/null +++ b/screen-api/src/main/resources/mapper/ForecastMapper.xml @@ -0,0 +1,12 @@ +<?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.api.mapper.ForecastMapper"> + + <!-- ������������������������ --> + <resultMap id="BaseResultMap" type="com.moral.api.entity.Forecast"> + <result column="city_code" property="cityCode"/> + <result column="time" property="time"/> + <result column="value" property="value"/> + </resultMap> + +</mapper> \ No newline at end of file diff --git a/screen-manage/src/main/java/com/moral/api/util/AdjustDataUtils.java b/screen-manage/src/main/java/com/moral/api/util/AdjustDataUtils.java index 4406532..d1d059b 100644 --- a/screen-manage/src/main/java/com/moral/api/util/AdjustDataUtils.java +++ b/screen-manage/src/main/java/com/moral/api/util/AdjustDataUtils.java @@ -82,7 +82,6 @@ } } catch (Exception e) { log.error("param[0] deviceData:" + JSON.toJSONString(deviceData)); - log.error(e.getMessage()); } return deviceData; } -- Gitblit v1.8.0