From d866a0c52c419156941801ea0008643d1c7f0e04 Mon Sep 17 00:00:00 2001
From: lizijie <lzjiiie@163.com>
Date: Wed, 05 Jan 2022 16:18:59 +0800
Subject: [PATCH] 新建污染警报小时表定时任务

---
 screen-api/src/main/java/com/moral/api/service/impl/CityAqiServiceImpl.java |   53 +++++++++++++++++++++++++++++++++--------------------
 1 files changed, 33 insertions(+), 20 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 eb93995..536f9f5 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
@@ -135,6 +135,21 @@
         Map<String, Object> value = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstants.CITY_AQI, String.valueOf(regionCode));
         if (value == null)
             value = queryCityAqiByRegionCodeFromDB(regionCode);
+        //������������������������������������������������������������
+        if (value == null) {
+            String regionCodeStr = String.valueOf(regionCode);
+            String end = regionCodeStr.substring(regionCodeStr.length() - 2, regionCodeStr.length());
+            if (!end.equals(00)) {
+                regionCodeStr = regionCodeStr.substring(0, regionCodeStr.length() - 2);
+                regionCodeStr += "00";
+                regionCode = Integer.parseInt(regionCodeStr);
+                value = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstants.CITY_AQI, String.valueOf(regionCode));
+                if (value == null)
+                    value = queryCityAqiByRegionCodeFromDB(regionCode);
+            }else{
+                return null;
+            }
+        }
         //������AQI������������������
         if (value == null || value.get("AQI") == null)
             return null;
@@ -152,6 +167,8 @@
         lastDataWrapper.orderByDesc("time");
         lastDataWrapper.last(true, "limit 1");
         CityAqi cityAqi = cityAqiMapper.selectOne(lastDataWrapper);
+        if(cityAqi==null)
+            return null;
         //���������24������������������
         Date endDate = cityAqi.getTime();
         Date startDate = DateUtils.addHours(endDate, -23);
@@ -176,10 +193,10 @@
             //������������������������
             cityAqis.sort(Comparator.comparing(CityAqi::getTime));
         }
-        //������������������,map���key���HH:mm������������������value���aqi���������
+        //������������������,map���key���yyyy-MM-dd HH:mm������������������value���aqi���������
         Map<String, Object> result = new LinkedHashMap<>();
         for (CityAqi aqi : cityAqis) {
-            String key = DateUtils.dateToDateString(aqi.getTime(), "HH:mm");
+            String key = DateUtils.dateToDateString(aqi.getTime(), "yyyy-MM-dd HH:mm");
             String allDataJson = aqi.getValue();
             if (allDataJson == null) {
                 result.put(key, "");
@@ -223,7 +240,7 @@
     @Override
     public List<Map<String, Object>> rankingDetails(Map<String, Object> params) {
         List<Map<String, Object>> result = new ArrayList<>();
-        int orgId = Integer.parseInt(params.get("organizationId").toString());
+        int regionCode = Integer.parseInt(params.get("regionCode").toString());
         String type = params.get("type").toString();
         String time = null;
         if (!ObjectUtils.isEmpty(params.get("time"))) {
@@ -237,10 +254,10 @@
         }
         String cityType = params.get("cityType").toString();
 
-        //���������,���code
-        Organization organization = organizationService.getById(orgId);
-        Integer curProvinceCode = organization.getProvinceCode();
-        Integer curCityCode = organization.getCityCode();
+        String s = String.valueOf(regionCode);
+        //���������������,���code
+        Integer curProvinceCode = Integer.parseInt(s.substring(0, 2) + "0000");
+        Integer curCityCode = Integer.parseInt(s.substring(0, 4) + "00");
 
         QueryWrapper<SysArea> areaWrapper = new QueryWrapper<>();
         if ("province".equals(cityType)) {
@@ -349,7 +366,7 @@
             List<String> primaryPollutantNames = aqi.getPrimaryPollutantNames();
             String primaryPollutant = "";
             if (!ObjectUtils.isEmpty(primaryPollutantNames)) {
-                primaryPollutant = primaryPollutantNames.toString().replace("[", "").replace("]", "");
+                primaryPollutant = primaryPollutantNames.stream().map(String::valueOf).collect(Collectors.joining(","));
             }
             dataMap.put("primaryPollutant", primaryPollutant);
 
@@ -387,7 +404,7 @@
             List<String> primaryPollutantNames = (List<String>) value.get("primaryPollutant");
             String primaryPollutant = "";
             if (!ObjectUtils.isEmpty(primaryPollutantNames)) {
-                primaryPollutant = primaryPollutantNames.toString().replace("[", "").replace("]", "");
+                primaryPollutant = primaryPollutantNames.stream().map(String::valueOf).collect(Collectors.joining(","));
             }
             value.put("primaryPollutant", primaryPollutant);
             value.remove("pubtime");
@@ -414,7 +431,7 @@
             List<String> primaryPollutantNames = (List<String>) value.get("primaryPollutant");
             String primaryPollutant = "";
             if (!ObjectUtils.isEmpty(primaryPollutantNames)) {
-                primaryPollutant = primaryPollutantNames.toString().replace("[", "").replace("]", "");
+                primaryPollutant = primaryPollutantNames.stream().map(String::valueOf).collect(Collectors.joining(","));
             }
             value.put("primaryPollutant", primaryPollutant);
             //���������
@@ -754,7 +771,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
@@ -808,7 +825,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
      */
@@ -826,7 +843,7 @@
     }
 
     @Override
-    public Map<String, Object> provincialRanking(Integer organizationId) {
+    public Map<String, Object> provincialRanking(Integer regionCode) {
         //���������
         Map<String, Object> result = new HashMap<>();
 
@@ -835,10 +852,10 @@
         Date yesterday = DateUtils.dataToTimeStampTime(DateUtils.getDateOfDay(now, -1), DateUtils.yyyy_MM_dd_EN);
         String dateString = DateUtils.dateToDateString(yesterday, DateUtils.yyyy_MM_dd_HH_mm_ss_EN);
 
+        String s = String.valueOf(regionCode);
         //���������,���code
-        Organization organization = organizationService.getById(organizationId);
-        Integer provinceCode = organization.getProvinceCode();
-        Integer cityCode = organization.getCityCode();
+        Integer provinceCode = Integer.parseInt(s.substring(0, 2) + "0000");
+        Integer cityCode = Integer.parseInt(s.substring(0, 4) + "00");
         //������������������city_code
         QueryWrapper<SysArea> wrapper = new QueryWrapper<>();
         wrapper.select("area_code").eq("parent_code", provinceCode);
@@ -921,8 +938,6 @@
 
         //������������������������������
         sortByField(ranks, "compositeIndexYear");
-        //���������������
-        sortByField(ranks, "compositeIndexYear");
         Map<String, Object> yearMap = rankByField(ranks, cityCode, "compositeIndexYear", cityCodes.size());
         if (ObjectUtils.isEmpty(yearMap)) {
             yearMap.put("rank", null);
@@ -966,6 +981,4 @@
         }
         return result;
     }
-
-
 }

--
Gitblit v1.8.0