From fc8fe626f222e024c1c4b45759ef0102174e5b9c Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Wed, 12 Apr 2023 09:11:58 +0800
Subject: [PATCH] 添加风场历史小时数据显示

---
 screen-api/src/main/java/com/moral/api/service/impl/CityAqiServiceImpl.java |  143 ++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 134 insertions(+), 9 deletions(-)

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 8c87541..68f32c2 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
@@ -9,10 +9,12 @@
 import com.moral.api.mapper.CityAqiMapper;
 import com.moral.api.mapper.DeviceMapper;
 import com.moral.api.mapper.ForecastMapper;
+import com.moral.api.mapper.SysAreaMapper;
 import com.moral.api.pojo.dto.cityAQI.CityPollutionLevel;
 import com.moral.api.pojo.dto.cityAQI.ConcentrationAndPercent;
 import com.moral.api.pojo.form.aqi.AirQualityComparisonForm;
 import com.moral.api.pojo.vo.cityAQI.AirQualityComparisonVO;
+import com.moral.api.pojo.vo.cityAQI.CityAreaRangeVO;
 import com.moral.api.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.moral.constant.Constants;
@@ -30,6 +32,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
 
+import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -81,6 +84,12 @@
 
     @Autowired
     private HistoryHourlyService historyHourlyService;
+
+    @Autowired
+    SpecialCitiesProperties citiesProperties;
+
+    @Autowired
+    private SysAreaMapper sysAreaMapper;
 
     @Override
     public List<Map<String, Object>> measuredCompareForecastOfO3(Map<String, Object> params) {
@@ -367,7 +376,7 @@
                 }
             });
 
-            //������������O3_8H������,������������O3_8H���������
+            //������������O3_8H������,������������O3������8H���������
             if (!ObjectUtils.isEmpty(doubles)) {
                 dataMap.put("O3_8H", Collections.max(doubles));
             }
@@ -629,7 +638,7 @@
     /**
      * @Description: ������������������������
      * @Param: [regionCode]
-     * @return: java.util.Map<java.lang.String, java.lang.Object>
+     * @return: java.util.Map<java.lang.String                                                               ,                                                                                                                               java.lang.Object>
      * @Author: ���������
      * @Date: 2021/10/28
      */
@@ -1041,6 +1050,123 @@
         return result;
     }
 
+    @Override
+    public Map<String, Object> countyData(Integer regionCode) {
+        Map<String,Object> resultMap = new HashMap<>();
+        //������������
+        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH");
+        Calendar calendar = Calendar.getInstance();
+        int minute = calendar.get(Calendar.MINUTE);
+        if (minute >= 45){
+            calendar.set(Calendar.HOUR_OF_DAY,calendar.get(Calendar.HOUR_OF_DAY)-1);
+        }else {
+            calendar.set(Calendar.HOUR_OF_DAY,calendar.get(Calendar.HOUR_OF_DAY)-2);
+        }
+        String time = df.format(calendar.getTime())+":00:00";
+        QueryWrapper<CityAqi> cityAqiQueryWrapper = new QueryWrapper<>();
+        cityAqiQueryWrapper.likeRight("city_code",regionCode.toString().substring(0,4));
+        cityAqiQueryWrapper.ne("city_code",regionCode);
+        cityAqiQueryWrapper.eq("time",time);
+        List<CityAqi> cityAqis = cityAqiMapper.selectList(cityAqiQueryWrapper);
+        QueryWrapper<SysArea> sysAreaQueryWrapper = new QueryWrapper<>();
+        sysAreaQueryWrapper.eq("parent_code",regionCode);
+        List<SysArea> sysAreas = sysAreaMapper.selectList(sysAreaQueryWrapper);
+        Map<Integer, Object> sysAreaMap = new HashMap<>();
+        for (SysArea sysarea:sysAreas) {
+            sysAreaMap.put(sysarea.getAreaCode(),sysarea.getAreaName());
+        }
+        List<Map<String,Object>> resultList = new ArrayList<>();
+        for (CityAqi cityAqi:cityAqis) {
+            if (!ObjectUtils.isEmpty(cityAqi.getValue())){
+                Map<String, Object> cityAqiMap = new HashMap<>();
+                String cityAqiValue = cityAqi.getValue();
+                JSONObject jsonObject = JSONObject.parseObject(cityAqiValue);
+                String AQI = "--";
+                String PM10 = "--";
+                String PM2_5 = "--";
+                String SO2 = "--";
+                String NO2 = "--";
+                String CO = "--";
+                String O3 = "--";
+                String thirty = "--";
+                String forty = "--";
+                String fifty = "--";
+                String city_name = "--";
+                if (!ObjectUtils.isEmpty(jsonObject.get("AQI"))){
+                    AQI = jsonObject.get("AQI").toString();
+                    BigDecimal AQI_base = BigDecimal.valueOf(Double.parseDouble(AQI));
+                    BigDecimal thirty_percent = BigDecimal.valueOf(1.3);
+                    BigDecimal forty_percent = BigDecimal.valueOf(1.4);
+                    BigDecimal fifty_percent = BigDecimal.valueOf(1.5);
+                    Double AQI_thirty = AQI_base.multiply(thirty_percent).doubleValue();
+                    Double AQI_forty = AQI_base.multiply(forty_percent).doubleValue();
+                    Double AQI_fifty = AQI_base.multiply(fifty_percent).doubleValue();
+                    thirty = String.valueOf(Math.round(AQI_thirty));
+                    forty = String.valueOf(Math.round(AQI_forty));
+                    fifty = String.valueOf(Math.round(AQI_fifty));
+                }
+                if (!ObjectUtils.isEmpty(jsonObject.get("PM10"))){
+                    PM10 = String.valueOf(Math.round(Double.parseDouble(jsonObject.get("PM10").toString())));
+                }
+                if (!ObjectUtils.isEmpty(jsonObject.get("PM2_5"))){
+                    PM2_5 = String.valueOf(Math.round(Double.parseDouble(jsonObject.get("PM2_5").toString())));
+                }
+                if (!ObjectUtils.isEmpty(jsonObject.get("SO2"))){
+                    SO2 = String.valueOf(Math.round(Double.parseDouble(jsonObject.get("SO2").toString())));
+                }
+                if (!ObjectUtils.isEmpty(jsonObject.get("NO2"))){
+                    NO2 = String.valueOf(Math.round(Double.parseDouble(jsonObject.get("NO2").toString())));
+                }
+                if (!ObjectUtils.isEmpty(jsonObject.get("CO"))){
+                    CO = String.valueOf(Math.round(Double.parseDouble(jsonObject.get("CO").toString())));
+                }
+                if (!ObjectUtils.isEmpty(jsonObject.get("O3"))){
+                    O3 = String.valueOf(Math.round(Double.parseDouble(jsonObject.get("O3").toString())));
+                }
+                if (!ObjectUtils.isEmpty(jsonObject.get("cityName"))){
+                    city_name = jsonObject.get("cityName").toString();
+                }
+                cityAqiMap.put("AQI",AQI);
+                cityAqiMap.put("PM10",PM10);
+                cityAqiMap.put("PM2_5",PM2_5);
+                cityAqiMap.put("SO2",SO2);
+                cityAqiMap.put("NO2",NO2);
+                cityAqiMap.put("CO",CO);
+                cityAqiMap.put("O3",O3);
+                cityAqiMap.put("thirty",thirty);
+                cityAqiMap.put("forty",forty);
+                cityAqiMap.put("fifty",fifty);
+                cityAqiMap.put("city_name",city_name);
+                resultList.add(cityAqiMap);
+            }
+            sysAreaMap.remove(cityAqi.getCityCode());
+        }
+        if (sysAreaMap.size()>0){
+            for(Integer key:sysAreaMap.keySet()){
+                Map<String,Object> nullMap = new HashMap<>();
+                nullMap.put("AQI","--");
+                nullMap.put("PM10","--");
+                nullMap.put("PM2_5","--");
+                nullMap.put("SO2","--");
+                nullMap.put("NO2","--");
+                nullMap.put("CO","--");
+                nullMap.put("O3","--");
+                nullMap.put("thirty","--");
+                nullMap.put("forty","--");
+                nullMap.put("fifty","--");
+                nullMap.put("city_name",sysAreaMap.get(key));
+                resultList.add(nullMap);
+            }
+        }
+        resultMap.put("resultList",resultList);
+        resultMap.put("time",time);
+        QueryWrapper<SysArea> areaQueryWrapper = new QueryWrapper<>();
+        areaQueryWrapper.eq("area_code",regionCode);
+        SysArea sysArea = sysAreaMapper.selectOne(areaQueryWrapper);
+        resultMap.put("areaName",sysArea.getAreaName());
+        return resultMap;
+    }
+
     /**
      * @Description: ������6������������������������������������
      * @Param: [data, comparisonData]
@@ -1069,15 +1195,15 @@
      */
     private ConcentrationAndPercent contrastParam(Double data, Double comparisonData, String sensor) {
         double percentD = MathUtils.division(data - comparisonData, comparisonData, 4);
-        String percent = MathUtils.mul(percentD, 100d) + "%";
+        String percent = MathUtils.mul(percentD,100d) + "%";
         ConcentrationAndPercent concentrationAndPercent = new ConcentrationAndPercent();
         concentrationAndPercent.setPercent(percent);
         if (sensor.equals("CO")) {//CO���������������������
             Double CO = AmendUtils.sciCal(data, 1);
             concentrationAndPercent.setConcentration(CO.toString());
-        } else if (sensor.equals("compositeIndex")) {
+        }else if (sensor.equals("compositeIndex")){
             concentrationAndPercent.setConcentration(data.toString());
-        } else {
+        }else{
             Double sensorD = AmendUtils.sciCal(data, 0);
             Integer sensorI = new Double(sensorD).intValue();
             concentrationAndPercent.setConcentration(sensorI.toString());
@@ -1103,7 +1229,7 @@
     /**
      * @Description: ���������������������������������6������������������������������������������������������������������������
      * @Param: [comparisonType, startDate, endDate, regionCode]
-     * @return: java.util.Map<java.lang.String, java.lang.Object>
+     * @return: java.util.Map<java.lang.String                                                               ,                                                               java.lang.Object>
      * @Author: ���������
      * @Date: 2022/1/17
      */
@@ -1187,8 +1313,7 @@
     private List<SysArea> getSysAreasByRegionType(String regionType, Integer regionCode) {
         List<SysArea> areas;
         if (regionType.equals(Constants.TWENTY_EIGHT_CITIES)) {
-            SpecialCitiesProperties properties = new SpecialCitiesProperties();
-            areas = properties.getTwentyEightCities();
+            areas = citiesProperties.getTwentyEightCities();
         } else {
             areas = sysAreaService.getChildren(regionCode);
         }
@@ -1198,7 +1323,7 @@
     /**
      * @Description: ������6������������
      * @Param: [cityAqiList]
-     * @return: java.util.Map<java.lang.String, java.lang.Double>
+     * @return: java.util.Map<java.lang.String                                                               ,                                                                                                                               java.lang.Double>
      * ���������key���sensorCode,value������
      * @Author: ���������
      * @Date: 2021/11/2

--
Gitblit v1.8.0