From eaadd850bf0b3a6b3d598fb63c4e87b14fba2663 Mon Sep 17 00:00:00 2001
From: cjl <276999030@qq.com>
Date: Fri, 11 Aug 2023 16:51:22 +0800
Subject: [PATCH] improvement:臭氧预测修改

---
 screen-api/src/main/java/com/moral/api/mapper/CityConfigAqiMapper.java             |   16 ++
 screen-common/src/main/java/com/moral/util/DateUtils.java                          |    8 +
 screen-api/src/main/java/com/moral/api/exception/consumer/SecondDataConsumer.java  |    6 
 screen-api/src/main/java/com/moral/api/controller/AqiController.java               |   32 ++++-
 screen-api/src/main/java/com/moral/api/service/impl/CityAqiServiceImpl.java        |   65 ++++++++++
 screen-api/src/main/java/com/moral/api/service/CityConfigAqiService.java           |   19 +++
 screen-api/src/main/resources/mapper/CityConfigAqiMapper.xml                       |   14 ++
 screen-api/src/main/java/com/moral/api/exception/consumer/CruiserDataConsumer.java |    6 
 screen-api/src/main/java/com/moral/api/controller/pubController.java               |   40 ++++++
 screen-api/src/main/java/com/moral/api/service/impl/CityConfigAqiServiceImpl.java  |   33 +++++
 screen-api/src/main/java/com/moral/api/service/CityAqiService.java                 |    2 
 myBatisPlusGenerator/src/main/java/com/moral/CodeGenerator.java                    |    4 
 screen-api/src/main/java/com/moral/api/entity/CityConfigAqi.java                   |   56 +++++++++
 13 files changed, 289 insertions(+), 12 deletions(-)

diff --git a/myBatisPlusGenerator/src/main/java/com/moral/CodeGenerator.java b/myBatisPlusGenerator/src/main/java/com/moral/CodeGenerator.java
index 10e56d0..a64c9bf 100644
--- a/myBatisPlusGenerator/src/main/java/com/moral/CodeGenerator.java
+++ b/myBatisPlusGenerator/src/main/java/com/moral/CodeGenerator.java
@@ -43,7 +43,7 @@
         // ������������
         GlobalConfig gc = new GlobalConfig();
         //String projectPath = System.getProperty("user.dir");
-        String projectPath="C:\\Users\\cdl\\Desktop\\comProject\\newProject\\moral\\screen-api";
+        String projectPath="D:\\gitproject\\newmoral\\screen-api";
         gc.setOutputDir(projectPath + "/src/main/java");
         gc.setAuthor("moral");
         gc.setOpen(false);
@@ -67,7 +67,7 @@
 
         // ���������������
         DataSourceConfig dsc = new DataSourceConfig();
-        dsc.setUrl("jdbc:mysql://rm-bp1pr3rx9m3fnkwsk8o.mysql.rds.aliyuncs.com:3306/moral?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC");
+        dsc.setUrl("jdbc:mysql://121.199.44.85:3306/moral?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC");
         //dsc.setUrl("jdbc:mysql://rm-bp1pr3rx9m3fnkwsk8o.mysql.rds.aliyuncs.com:3306/moral?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai");
         dsc.setDriverName("com.mysql.cj.jdbc.Driver");
         dsc.setUsername("root");
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
index 2cc538b..c5180e8 100644
--- a/screen-api/src/main/java/com/moral/api/controller/AqiController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/AqiController.java
@@ -8,18 +8,12 @@
 import com.moral.api.service.CityAqiDailyService;
 
 import com.moral.api.service.CityAqiYearlyService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Required;
 import org.springframework.format.annotation.DateTimeFormat;
 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 org.springframework.web.bind.annotation.*;
 
 import java.util.*;
 
@@ -60,6 +54,28 @@
         return ResultMessage.ok(response);
     }
 
+    @GetMapping("compareO3New")
+    @ApiOperation(value = "���������������������������New", notes = "���������������������������New")
+    public ResultMessage compareO3New(@RequestParam @ApiParam(value = "regionCode",name = "������code") String regionCode,
+                                      @RequestParam @ApiParam(value = "time",name = "������") String time) {
+        Map<String, Object> params = new HashMap<>();
+        params.put("regionCode",regionCode);
+        params.put("time",time);
+        List<Map<String, Object>> response = cityAqiService.measuredCompareForecastOfO3(params);
+        return ResultMessage.ok(response);
+    }
+
+    @GetMapping("getO38H")
+    @ApiOperation(value = "���������������������������New", notes = "���������������������������New")
+    public ResultMessage getO38H(@RequestParam @ApiParam(value = "regionCode",name = "������code") String regionCode,
+                                      @RequestParam @ApiParam(value = "time",name = "������") String time) {
+        Map<String, Object> params = new HashMap<>();
+        params.put("regionCode",regionCode);
+        params.put("time",time);
+        List<Map<String, Object>> response = cityAqiService.measuredCompareForecastOfO3_8H(params);
+        return ResultMessage.ok(response);
+    }
+
     /**
      * @Description: ���������������6������aqi������
      * @Param: [regionCode]
diff --git a/screen-api/src/main/java/com/moral/api/controller/pubController.java b/screen-api/src/main/java/com/moral/api/controller/pubController.java
new file mode 100644
index 0000000..82ea0ea
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/controller/pubController.java
@@ -0,0 +1,40 @@
+package com.moral.api.controller;
+
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.moral.api.entity.CityConfigAqi;
+import com.moral.api.service.CityConfigAqiService;
+import com.moral.constant.ResultMessage;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @ClassName pubController
+ * @Description TODO
+ * @Author @lizijie
+ * @Date 2023-08-11 14:35
+ * @Version 1.0
+ */
+@RestController
+@RequestMapping("/pub")
+@CrossOrigin(origins = "*", maxAge = 3600)
+@Api(tags = {"������"})
+public class pubController {
+    @Autowired
+    private CityConfigAqiService cityConfigAqiService;
+
+    @GetMapping("cityAll")
+    public ResultMessage airQualityBulletin(@RequestParam(required = false) @ApiParam(value = "regionCode",name = "������code") String regionCode,
+                                            @RequestParam(required = false)  @ApiParam(value = "regionName",name = "������������") String regionName) {
+
+        List<CityConfigAqi> list = cityConfigAqiService.listAll(regionCode,regionName);
+        return ResultMessage.ok(list);
+    }
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/entity/CityConfigAqi.java b/screen-api/src/main/java/com/moral/api/entity/CityConfigAqi.java
new file mode 100644
index 0000000..d312396
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/entity/CityConfigAqi.java
@@ -0,0 +1,56 @@
+package com.moral.api.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * ������������������������������������������������������
+ * </p>
+ *
+ * @author moral
+ * @since 2023-08-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class CityConfigAqi extends Model<CityConfigAqi> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ������id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * ������code
+     */
+    private Integer cityCode;
+
+    /**
+     * ������������
+     */
+    private String cityName;
+
+    /**
+     * ���������������������
+     */
+    private Integer cityId;
+
+    /**
+     * ������������,0���������������1���������
+     */
+    private String isDelete;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/exception/consumer/CruiserDataConsumer.java b/screen-api/src/main/java/com/moral/api/exception/consumer/CruiserDataConsumer.java
index 5f392d9..c2be6d5 100644
--- a/screen-api/src/main/java/com/moral/api/exception/consumer/CruiserDataConsumer.java
+++ b/screen-api/src/main/java/com/moral/api/exception/consumer/CruiserDataConsumer.java
@@ -1,3 +1,4 @@
+/*
 
 package com.moral.api.exception.consumer;
 
@@ -27,9 +28,11 @@
 import com.moral.constant.KafkaConstants;
 
 
+*/
 /*
  * ������������������������
- * */
+ * *//*
+
 
 @Component
 @Slf4j
@@ -118,3 +121,4 @@
     }
 }
 
+*/
diff --git a/screen-api/src/main/java/com/moral/api/exception/consumer/SecondDataConsumer.java b/screen-api/src/main/java/com/moral/api/exception/consumer/SecondDataConsumer.java
index d266d21..536c6f0 100644
--- a/screen-api/src/main/java/com/moral/api/exception/consumer/SecondDataConsumer.java
+++ b/screen-api/src/main/java/com/moral/api/exception/consumer/SecondDataConsumer.java
@@ -1,3 +1,4 @@
+/*
 
 package com.moral.api.exception.consumer;
 
@@ -24,13 +25,15 @@
 import java.util.concurrent.CopyOnWriteArraySet;
 
 
+*/
 /**
  * @ClassName SecondsDataConsumer1
  * @Description TODO
  * @Author ���������
  * @Date 2021/6/15 14:49
  * @Version TODO
- **/
+ **//*
+
 
 @Component
 @Slf4j
@@ -120,3 +123,4 @@
 }
 
 
+*/
diff --git a/screen-api/src/main/java/com/moral/api/mapper/CityConfigAqiMapper.java b/screen-api/src/main/java/com/moral/api/mapper/CityConfigAqiMapper.java
new file mode 100644
index 0000000..ddd8c03
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/mapper/CityConfigAqiMapper.java
@@ -0,0 +1,16 @@
+package com.moral.api.mapper;
+
+import com.moral.api.entity.CityConfigAqi;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * ������������������������������������������������������ Mapper ������
+ * </p>
+ *
+ * @author moral
+ * @since 2023-08-11
+ */
+public interface CityConfigAqiMapper extends BaseMapper<CityConfigAqi> {
+
+}
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
index 9b3d460..a79a893 100644
--- a/screen-api/src/main/java/com/moral/api/service/CityAqiService.java
+++ b/screen-api/src/main/java/com/moral/api/service/CityAqiService.java
@@ -22,6 +22,8 @@
     //���������������������������
     List<Map<String, Object>> measuredCompareForecastOfO3(Map<String, Object> params);
 
+
+    List<Map<String, Object>> measuredCompareForecastOfO3_8H(Map<String, Object> params);
     /**
      * @Description: ���������������������aqi������6���
      * @Param: [regionCode]
diff --git a/screen-api/src/main/java/com/moral/api/service/CityConfigAqiService.java b/screen-api/src/main/java/com/moral/api/service/CityConfigAqiService.java
new file mode 100644
index 0000000..1bdc933
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/service/CityConfigAqiService.java
@@ -0,0 +1,19 @@
+package com.moral.api.service;
+
+import com.moral.api.entity.CityConfigAqi;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * ������������������������������������������������������ ���������
+ * </p>
+ *
+ * @author moral
+ * @since 2023-08-11
+ */
+public interface CityConfigAqiService extends IService<CityConfigAqi> {
+
+    List<CityConfigAqi> listAll(String regionCode,String regionName);
+}
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
index 68f32c2..10d5f6d 100644
--- 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
@@ -1,5 +1,6 @@
 package com.moral.api.service.impl;
 
+import com.alibaba.excel.util.StringUtils;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -146,6 +147,34 @@
         }
         return result;
     }
+
+
+    @Override
+    public List<Map<String, Object>> measuredCompareForecastOfO3_8H(Map<String, Object> params) {
+        String regionCode = params.get("regionCode").toString();
+        String time = params.get("time").toString();
+        Date endTime = DateUtils.getDate(time+" "+"23:00:00",DateUtils.yyyy_MM_dd_HH_mm_ss_EN);
+        Date startDate = DateUtils.getDate(time+" "+"00:00:00",DateUtils.yyyy_MM_dd_HH_mm_ss_EN);
+        Date startTime = DateUtils.addHours(startDate,-7);
+        //������������
+        QueryWrapper<Forecast> forecastQueryWrapper = new QueryWrapper<>();
+        forecastQueryWrapper.select("time", "value")
+                .eq("city_code", regionCode)
+        .between("time",startTime,endTime)
+                .orderByAsc("time");
+        List<Map<String, Object>> forecastData = forecastMapper.selectMaps(forecastQueryWrapper);
+        //������������
+        QueryWrapper<CityAqi> cityAqiQueryWrapper = new QueryWrapper<>();
+        cityAqiQueryWrapper.select("time", "value")
+                .eq("city_code", regionCode)
+                .between("time",startTime,endTime).orderByAsc("time");
+        List<Map<String, Object>> measuredData = cityAqiMapper.selectMaps(cityAqiQueryWrapper);
+
+        List<Map<String, Object>> result = getO3_8H(forecastData,0,time);
+        result.addAll(getO3_8H(measuredData,1,time));
+        return result;
+    }
+
 
     @Override
     public Map<String, Object> queryCityAqiByRegionCode(Integer regionCode) {
@@ -1386,4 +1415,40 @@
         }
         return s;
     }
+
+    public  List<Map<String, Object>> getO3_8H(List<Map<String, Object>> data , int type,String day) {
+        List<Map<String, Object>> list = new ArrayList<>();
+        for(int i = 0 ;i<=23;i++){
+            Map<String, Object> map = new HashMap<>();
+            if(type == 0){
+                map.put("type","������");
+            }else {
+                map.put("type","������");
+            }
+            String times = day+" "+i;
+            Date endDate = DateUtils.getDate(times,DateUtils.yyyy_MM_dd_HH_EN);
+            Date startDate = DateUtils.addHours(DateUtils.getDate(day+" "+i,DateUtils.yyyy_MM_dd_HH_EN),-7);
+            List<Double> value = new ArrayList<>();
+            for(Map<String, Object> m : data){
+                Date time = (Date) m.get("time");
+                if(DateUtils.isTimeBeforE(time,startDate) && DateUtils.isTimeBeforE(endDate,time)){
+                    Map<String, Object> sensorValue = JSONObject.parseObject((String) m.get("value"), Map.class);
+                    Double o3 = Double.parseDouble(sensorValue.get("O3").toString());
+                    value.add(o3);
+
+                }
+            }
+            if (value.size() < 6) {
+                continue;
+            }
+            double average = value.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage();
+            map.put("O3", new BigDecimal(average).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue());
+            map.put("time",times);
+            list.add(map);
+        }
+
+        return list;
+
+    }
+
 }
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/CityConfigAqiServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/CityConfigAqiServiceImpl.java
new file mode 100644
index 0000000..2eea048
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/service/impl/CityConfigAqiServiceImpl.java
@@ -0,0 +1,33 @@
+package com.moral.api.service.impl;
+
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.moral.api.entity.CityConfigAqi;
+import com.moral.api.mapper.CityConfigAqiMapper;
+import com.moral.api.service.CityConfigAqiService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ * ������������������������������������������������������ ���������������
+ * </p>
+ *
+ * @author moral
+ * @since 2023-08-11
+ */
+@Service
+public class CityConfigAqiServiceImpl extends ServiceImpl<CityConfigAqiMapper, CityConfigAqi> implements CityConfigAqiService {
+
+    @Override
+    public List<CityConfigAqi> listAll(String regionCode, String regionName) {
+        LambdaQueryChainWrapper<CityConfigAqi> wrapper = lambdaQuery();
+        wrapper.eq(StringUtils.isNotEmpty(regionCode),CityConfigAqi::getCityCode,regionCode);
+        wrapper.like(StringUtils.isNotEmpty(regionName),CityConfigAqi::getCityName,regionName);
+        wrapper.eq(CityConfigAqi::getIsDelete,0);
+        wrapper.orderByAsc(CityConfigAqi::getCityCode,CityConfigAqi::getCityId);
+        return wrapper.list();
+    }
+}
diff --git a/screen-api/src/main/resources/mapper/CityConfigAqiMapper.xml b/screen-api/src/main/resources/mapper/CityConfigAqiMapper.xml
new file mode 100644
index 0000000..6fa2eab
--- /dev/null
+++ b/screen-api/src/main/resources/mapper/CityConfigAqiMapper.xml
@@ -0,0 +1,14 @@
+<?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.CityConfigAqiMapper">
+
+        <!-- ������������������������ -->
+        <resultMap id="BaseResultMap" type="com.moral.api.entity.CityConfigAqi">
+                    <id column="id" property="id" />
+                    <result column="city_code" property="cityCode" />
+                    <result column="city_name" property="cityName" />
+                    <result column="city_id" property="cityId" />
+                    <result column="is_delete" property="isDelete" />
+        </resultMap>
+
+</mapper>
\ No newline at end of file
diff --git a/screen-common/src/main/java/com/moral/util/DateUtils.java b/screen-common/src/main/java/com/moral/util/DateUtils.java
index b86ee1c..e725576 100644
--- a/screen-common/src/main/java/com/moral/util/DateUtils.java
+++ b/screen-common/src/main/java/com/moral/util/DateUtils.java
@@ -507,6 +507,14 @@
         }
     }
 
+    public static boolean isTimeBeforE(Date nows, Date date) {
+        long hous = nows.getTime() - date.getTime();
+        if (hous >= 0) {
+            return true;
+        } else {
+            return false;
+        }
+    }
     /**
      * ������������������������������������������������������
      *

--
Gitblit v1.8.0