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