From 62b3ae5384422b63f098c6fb02f390f429d02522 Mon Sep 17 00:00:00 2001
From: whycxzp <glperry@163.com>
Date: 星期四, 07 十二月 2023 14:16:39 +0800
Subject: [PATCH] 告警分页

---
 src/main/java/com/whyc/util/DateUtil.java |  138 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 136 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/whyc/util/DateUtil.java b/src/main/java/com/whyc/util/DateUtil.java
index 90317c1..35f2df0 100644
--- a/src/main/java/com/whyc/util/DateUtil.java
+++ b/src/main/java/com/whyc/util/DateUtil.java
@@ -1,8 +1,8 @@
 package com.whyc.util;
 
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
+import java.util.*;
 
 /**
  * 鏃ユ湡澶勭悊宸ュ叿绫�
@@ -133,4 +133,138 @@
         return c.getTime();
     }
 
+    /*==========鏃堕棿鍒囧壊,鎸夊勾==========*/
+    /**
+     * 鍦ㄥ垎琛ㄧ殑鎯呭喌涓嬩娇鐢�,鎸夊勾鍒嗚〃,鏌ヨ闇�瑕佸垏鍓叉煡璇娇鐢� 鏃堕棿鍊掑簭
+     * <p>
+     * 鏍规嵁浼犲叆鐨勮捣姝㈡椂闂�,鎸夌収骞村垏鍓叉垚涓嶅悓鏃堕棿娈�
+     *
+     * @param startTime 2021-01-01 10:00:00
+     * @param endTime   2023-05-01 10:10:10
+     * @return 绀轰緥
+     * 浣跨敤鏂规硶:
+     * 鏍规嵁杩斿洖鐨勭涓�涓暟鎹�,濡傛灉瀛樺湪琛�,鍒欐煡璇㈢瓫閫夋潯浠朵负>=杈撳叆鐨勮捣濮嬫椂闂�;涓嶅瓨鍦ㄥ垯寮冪敤杈撳叆鐨勮捣濮嬫椂闂�
+     * 鏍规嵁杩斿洖鐨勬渶鍚庝釜鏁版嵁,濡傛灉琛ㄥ瓨鍦�,鍒欐煡璇㈢瓫閫夋潯浠朵负<=杈撳叆鐨勭粓姝㈡椂闂�;涓嶅瓨鍦ㄥ垯寮冪敤杈撳叆鐨勭粓姝㈡椂闂�
+     * 杩斿洖鐨勯潪绗竴鏈�鍚庢暟鎹�,鏌ヨ鍏ㄨ〃
+     */
+    public static Map<String, List<Date>> getYearListDesc(Date startTime, Date endTime) throws ParseException {
+        Map<String,List<Date>> result = new LinkedHashMap<>();
+        Calendar startTimeC = Calendar.getInstance();
+        startTimeC.setTime(startTime);
+        int startYear = startTimeC.get(Calendar.YEAR);
+
+        Calendar endTimeC = Calendar.getInstance();
+        endTimeC.setTime(endTime);
+        int endYear = endTimeC.get(Calendar.YEAR);
+        int yearSize = endYear - startYear + 1;
+        for (int i = endYear; i >= startYear; i--) {
+            List<Date> dateList = new LinkedList<>();
+            if(yearSize == 1){ //璧锋鏃堕棿娌℃湁璺ㄥ勾
+                dateList.add(startTime);
+                dateList.add(endTime);
+            }
+            else if(i==startYear){ //绗竴骞�
+                dateList.add(startTime);
+
+                Calendar instance = Calendar.getInstance();
+                instance.set(Calendar.YEAR,i);
+                instance.set(Calendar.MONTH,instance.getActualMaximum(Calendar.MONTH));
+                instance.set(Calendar.DAY_OF_MONTH,instance.getActualMaximum(Calendar.DAY_OF_MONTH));
+                instance.set(Calendar.HOUR_OF_DAY,instance.getActualMaximum(Calendar.HOUR_OF_DAY));
+                instance.set(Calendar.MINUTE,instance.getActualMaximum(Calendar.MINUTE));
+                instance.set(Calendar.SECOND,instance.getActualMaximum(Calendar.SECOND));
+                dateList.add(instance.getTime());
+            }
+            else if(i== endYear){ //灏惧勾
+                Calendar instance = Calendar.getInstance();
+                instance.set(Calendar.YEAR,i);
+                instance.set(Calendar.MONTH,instance.getActualMinimum(Calendar.MONTH));
+                instance.set(Calendar.DAY_OF_MONTH,instance.getActualMinimum(Calendar.DAY_OF_MONTH));
+                instance.set(Calendar.HOUR_OF_DAY,instance.getActualMinimum(Calendar.HOUR_OF_DAY));
+                instance.set(Calendar.MINUTE,instance.getActualMinimum(Calendar.MINUTE));
+                instance.set(Calendar.SECOND,instance.getActualMinimum(Calendar.SECOND));
+                dateList.add(instance.getTime());
+
+                dateList.add(endTime);
+            }else{
+                Calendar instance = Calendar.getInstance();
+                instance.set(Calendar.YEAR,i);
+                instance.set(Calendar.MONTH,instance.getActualMinimum(Calendar.MONTH));
+                instance.set(Calendar.DAY_OF_MONTH,instance.getActualMinimum(Calendar.DAY_OF_MONTH));
+                instance.set(Calendar.HOUR_OF_DAY,instance.getActualMinimum(Calendar.HOUR_OF_DAY));
+                instance.set(Calendar.MINUTE,instance.getActualMinimum(Calendar.MINUTE));
+                instance.set(Calendar.SECOND,instance.getActualMinimum(Calendar.SECOND));
+                dateList.add(instance.getTime());
+
+                Calendar instance2 = Calendar.getInstance();
+                instance2.set(Calendar.YEAR,i);
+                instance2.set(Calendar.MONTH,instance2.getActualMaximum(Calendar.MONTH));
+                instance2.set(Calendar.DAY_OF_MONTH,instance2.getActualMaximum(Calendar.DAY_OF_MONTH));
+                instance2.set(Calendar.HOUR_OF_DAY,instance2.getActualMaximum(Calendar.HOUR_OF_DAY));
+                instance2.set(Calendar.MINUTE,instance2.getActualMaximum(Calendar.MINUTE));
+                instance2.set(Calendar.SECOND,instance2.getActualMaximum(Calendar.SECOND));
+                dateList.add(instance2.getTime());
+
+            }
+            result.put(String.valueOf(i),dateList);
+        }
+        return result;
+    }
+
+    /**
+     *  鏌ヨ浣跨敤鏃�,闇�瑕佸鐞� 榛樿琛ㄦ煡璇㈢殑闂 鍊掑簭
+     *  绀轰緥:
+     *  <p>
+     * {2020=[Fri Dec 25 14:12:22 CST 2020, Thu Dec 31 23:59:59 CST 2020]}
+     * {2021=[Fri Jan 01 00:00:00 CST 2021, Fri Dec 31 23:59:59 CST 2021]}
+     * {2022=[Sat Jan 01 00:00:00 CST 2022, Tue Nov 29 09:12:22 CST 2022]}
+     * 鎴�
+     * {2020=[Fri Dec 25 14:12:22 CST 2020, Thu Dec 31 23:59:59 CST 2020]}
+     * {2021=[Fri Jan 01 00:00:00 CST 2021, Fri Dec 31 23:59:59 CST 2021]}
+     * {2022=[Sat Jan 01 00:00:00 CST 2022, Thu Dec 29 09:12:22 CST 2022]}
+     * {default=[Wed Dec 14 15:27:13 CST 2022, Thu Dec 29 09:12:22 CST 2022]}
+     * </p>
+     * key涓烘暟瀛�,琛ㄧず骞村害鍒嗚〃;default涓洪粯璁よ〃
+     * @param startTimeDate 璧峰鏃堕棿
+     * @param endTimeDate 缁堟鏃堕棿
+     * @return 闇�瑕佹煡璇㈢殑琛ㄥ強鏌ヨ鏃堕棿
+     * @throws ParseException
+     */
+    public static Map<String,List<Date>> getQueryTimeForSubTablesDesc(Date startTimeDate,Date endTimeDate) throws ParseException {
+        //鏍规嵁绛涢�夌殑鏃堕棿娈�,鏌ヨ鍑虹鍚堣姹傜殑鍚勫垎琛ㄨ褰曟暟
+        //棣栧厛,濡傛灉褰撳墠鏃堕棿瓒呰繃7鏈�,榛樿琛ㄤ腑鍙湁鏈勾搴︾殑;濡傛灉娌¤秴杩�7鏈�,榛樿琛ㄨ繕瀛樺湪涓婁竴骞村害鐨勮褰�
+        Calendar now = Calendar.getInstance();
+        if(endTimeDate.compareTo(now.getTime())>0){ //鏍¢獙浼樺寲鏈�澶ф煡璇㈡椂闂�
+            endTimeDate = now.getTime();
+        }
+        Calendar timeBefore7Month = Calendar.getInstance();
+        timeBefore7Month.add(Calendar.MONTH,-7);
+
+        LinkedHashMap<String,List<Date>> yearTimeMap = (LinkedHashMap<String, List<Date>>) DateUtil.getYearListDesc(startTimeDate, endTimeDate);
+        Map<String,List<Date>> yearTimeDescMap = new LinkedHashMap<>();
+        boolean existDefaultYear = false;
+        if(startTimeDate.before(now.getTime()) || endTimeDate.after(timeBefore7Month.getTime())){
+            List<Date> defaultDateList = new LinkedList<>();
+            defaultDateList.add(startTimeDate);
+            defaultDateList.add(endTimeDate);
+
+            yearTimeMap.put("default",defaultDateList);
+            existDefaultYear = true;
+        }
+        //璋冩暣涓嬮『搴�,灏哾efault璋冩暣鍒伴浣�
+        if(existDefaultYear){
+            List<Date> defaultTimeList = yearTimeMap.get("default");
+            yearTimeDescMap.put("default",defaultTimeList);
+        }
+        Set<String> yearSet = yearTimeMap.keySet();
+        for (String year : yearSet) {
+            if(!year.equals("default")){
+                yearTimeDescMap.put(year,yearTimeMap.get(year));
+            }
+        }
+
+        return yearTimeDescMap;
+    }
+
+
 }

--
Gitblit v1.9.1