From 8ea6bcb91b4a8b50dfac568b0d0b52cd543b9f8c Mon Sep 17 00:00:00 2001
From: whyclxw <810412026@qq.com>
Date: 星期四, 12 十二月 2024 11:39:05 +0800
Subject: [PATCH] 电源历史告警

---
 src/main/java/com/whyc/pojo/db_alarm/BattAlarmHistory.java        |    2 
 src/main/java/com/whyc/service/SubTableService.java               |   68 +++++++++++++++++++++-
 src/main/java/com/whyc/service/PowerAlarmHistoryService.java      |   17 +++++
 src/main/java/com/whyc/pojo/db_power_alarm/PowerAlarmHistory.java |   12 ++++
 src/main/java/com/whyc/util/DateUtil.java                         |   33 +++++++++++
 src/main/java/com/whyc/util/SubTablePageInfoUtil.java             |   42 +++++++++----
 6 files changed, 155 insertions(+), 19 deletions(-)

diff --git a/src/main/java/com/whyc/pojo/db_alarm/BattAlarmHistory.java b/src/main/java/com/whyc/pojo/db_alarm/BattAlarmHistory.java
index ea85046..65a31e0 100644
--- a/src/main/java/com/whyc/pojo/db_alarm/BattAlarmHistory.java
+++ b/src/main/java/com/whyc/pojo/db_alarm/BattAlarmHistory.java
@@ -47,7 +47,7 @@
 
     @TableField("alm_value")
     @ApiModelProperty("鍛婅鍊�")
-    private Float almValue;
+    private Integer almValue;
 
 
     @TableField(exist = false)
diff --git a/src/main/java/com/whyc/pojo/db_power_alarm/PowerAlarmHistory.java b/src/main/java/com/whyc/pojo/db_power_alarm/PowerAlarmHistory.java
index 17d9378..f742d15 100644
--- a/src/main/java/com/whyc/pojo/db_power_alarm/PowerAlarmHistory.java
+++ b/src/main/java/com/whyc/pojo/db_power_alarm/PowerAlarmHistory.java
@@ -57,4 +57,16 @@
     @TableField("alm_level")
     @ApiModelProperty("鍛婅绛夌骇[1-绱ф�� 2-閲嶅ぇ -3-涓�鑸琞")
     private Integer almLevel;
+
+    @TableField(exist = false)
+    @ApiModelProperty("琛ㄥ悕瀛楁嫾鎺�")
+    private String recordYear;
+
+    @TableField(exist = false)
+    @ApiModelProperty("鍒嗛〉寮�濮嬩綅缃�")
+    private Integer limitStart;
+
+    @TableField(exist = false)
+    @ApiModelProperty("鍒嗛〉缁撴潫浣嶇疆")
+    private Integer limitEnd;
 }
\ No newline at end of file
diff --git a/src/main/java/com/whyc/service/PowerAlarmHistoryService.java b/src/main/java/com/whyc/service/PowerAlarmHistoryService.java
index 881429b..4a0e2d0 100644
--- a/src/main/java/com/whyc/service/PowerAlarmHistoryService.java
+++ b/src/main/java/com/whyc/service/PowerAlarmHistoryService.java
@@ -1,13 +1,26 @@
 package com.whyc.service;
 
+import com.github.pagehelper.PageInfo;
 import com.whyc.dto.Response;
+import com.whyc.pojo.db_power_alarm.PowerAlarmHistory;
+import com.whyc.util.SubTablePageInfoUtil;
+import com.whyc.util.ThreadLocalUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import java.text.ParseException;
 
 @Service
 public class PowerAlarmHistoryService {
+    @Autowired
+    private SubTablePageInfoUtil util;
 
     //鏌ヨ鐢垫簮鍘嗗彶鏃堕棿鍛婅
-    public Response getHisAlarm(int pinfId, String startTime, String endTime, int pageNum, int pageSize) {
-        return new Response().set(1);
+    public Response getHisAlarm(int pinfId, String startTime, String endTime, int pageNum, int pageSize) throws ParseException {
+        PowerAlarmHistory his=new PowerAlarmHistory();
+        his.setPowerId(pinfId);
+        PageInfo pageInfo=util.getPageInfo(pageNum,pageSize, ThreadLocalUtil.parse(startTime,1),ThreadLocalUtil.parse(endTime,1)
+                ,"db_power_alarm","power_alarm_history",his);
+        return new Response().setII(1,pageInfo.getList()!=null,pageInfo,"鏌ヨ鐢垫簮鍘嗗彶鏃堕棿鍛婅");
     }
 }
\ No newline at end of file
diff --git a/src/main/java/com/whyc/service/SubTableService.java b/src/main/java/com/whyc/service/SubTableService.java
index 6cb66dd..8202027 100644
--- a/src/main/java/com/whyc/service/SubTableService.java
+++ b/src/main/java/com/whyc/service/SubTableService.java
@@ -3,6 +3,7 @@
 import com.whyc.mapper.CallBack;
 import com.whyc.pojo.db_alarm.BattAlarmHistory;
 import com.whyc.pojo.db_dis_batt.BattTestInfData;
+import com.whyc.pojo.db_power_alarm.PowerAlarmHistory;
 import com.whyc.util.ActionUtil;
 import com.whyc.util.ThreadLocalUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -52,7 +53,7 @@
         });
         return list;
     }
-    //鍛婅鍘嗗彶瀹炴椂璁$畻姣忓紶琛ㄦ煡璇㈡�绘暟
+    //鐢垫睜鍛婅鍘嗗彶瀹炴椂璁$畻姣忓紶琛ㄦ煡璇㈡�绘暟
     public int getBattHisCount(BattAlarmHistory battAlarmHistory) {
         String sql="SELECT  count(*) as number FROM db_alarm."+ battAlarmHistory.getRecordYear()+" history " +
                 " where history.binf_id="+ battAlarmHistory.getBinfId() ;
@@ -81,7 +82,7 @@
         }
         return num;
     }
-    //鍛婅鍘嗗彶瀹炴椂
+    //鐢垫睜鍛婅鍘嗗彶瀹炴椂
     public List<BattAlarmHistory> getBattHisList(BattAlarmHistory battAlarmHistory) {
         String sql="SELECT * FROM db_alarm."+ battAlarmHistory.getRecordYear()+" history " +
                 " where history.binf_id="+ battAlarmHistory.getBinfId() ;
@@ -105,7 +106,68 @@
                     data.setMonNum(rs.getInt("mon_num"));
                     data.setAlmId(rs.getInt("alm_id"));
                     data.setAlmLevel(rs.getInt("alm_level"));
-                    data.setAlmValue(rs.getFloat("alm_value"));
+                    data.setAlmValue(rs.getInt("alm_value"));
+                    list.add(data);
+                }
+                return list;
+            }
+        });
+        return list;
+    }
+
+    //鐢垫簮鍛婅鍘嗗彶瀹炴椂璁$畻姣忓紶琛ㄦ煡璇㈡�绘暟
+    public int getPowerHisCount(PowerAlarmHistory powerAlarmHistory) {
+        String sql="SELECT  count(*) as number FROM db_power_alarm."+ powerAlarmHistory.getRecordYear()+" history " +
+                " where history.power_id="+ powerAlarmHistory.getPowerId() ;
+        if(powerAlarmHistory.getAlmStartTime()!=null){
+            sql+=" and alm_start_time  >='"+ ThreadLocalUtil.format(powerAlarmHistory.getAlmStartTime(),1)+"' ";
+        }
+        if(powerAlarmHistory.getAlmEndTime()!=null){
+            sql+=" and alm_start_time  <='"+ThreadLocalUtil.format(powerAlarmHistory.getAlmEndTime(),1)+"' ";
+        }
+        List list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
+            @Override
+            public List getResults(ResultSet rs) throws SQLException {
+                LinkedList<Object> temp = new LinkedList<>();
+                try {
+                    while (rs.next())
+                        temp.add(rs.getInt("number"));
+                } catch (SQLException e) {
+                    e.printStackTrace();
+                }
+                return temp;
+            }
+        });
+        int num =0;
+        if(list!=null){
+            num= (int) list.get(0);
+        }
+        return num;
+    }
+    //鐢垫簮鍛婅鍘嗗彶瀹炴椂
+    public List<PowerAlarmHistory> getPowerHisList(PowerAlarmHistory powerAlarmHistory) {
+        String sql="SELECT * FROM db_power_alarm."+ powerAlarmHistory.getRecordYear()+" history " +
+                " where history.power_id="+ powerAlarmHistory.getPowerId() ;
+        if(powerAlarmHistory.getAlmStartTime()!=null){
+            sql+=" and alm_start_time  >='"+ ThreadLocalUtil.format(powerAlarmHistory.getAlmStartTime(),1)+"' ";
+        }
+        if(powerAlarmHistory.getAlmEndTime()!=null){
+            sql+=" and alm_start_time  <='"+ThreadLocalUtil.format(powerAlarmHistory.getAlmEndTime(),1)+"' ";
+        }
+        sql+="  ORDER BY alm_start_time asc  limit "+ powerAlarmHistory.getLimitStart()+","+ powerAlarmHistory.getLimitEnd()+" ";
+        List<PowerAlarmHistory> list=sqlExecuteService.executeQuery_call(sql, new CallBack() {
+            @Override
+            public List getResults(ResultSet rs) throws SQLException {
+                List list=new ArrayList();
+                while (rs.next()){
+                    PowerAlarmHistory data=new PowerAlarmHistory();
+                    data.setNum(rs.getInt("num"));
+                    data.setPowerId(rs.getInt("power_id"));
+                    data.setAlmStartTime(rs.getTimestamp("alm_start_time"));
+                    data.setAlmEndTime(rs.getTimestamp("alm_end_time"));
+                    data.setAlmId(rs.getInt("alm_id"));
+                    data.setAlmLevel(rs.getInt("alm_level"));
+                    data.setAlmValue(rs.getInt("alm_value"));
                     list.add(data);
                 }
                 return list;
diff --git a/src/main/java/com/whyc/util/DateUtil.java b/src/main/java/com/whyc/util/DateUtil.java
index aef26cb..e8afed1 100644
--- a/src/main/java/com/whyc/util/DateUtil.java
+++ b/src/main/java/com/whyc/util/DateUtil.java
@@ -545,6 +545,39 @@
     }
 
     /**
+     *  鏌ヨ浣跨敤鏃�,闇�瑕佸鐞� 榛樿琛ㄦ煡璇㈢殑闂 鍊掑簭
+     *  绀轰緥:
+     *  <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>> getQueryTimeForSubTablesDescWithOutDefault(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);
+        return yearTimeMap;
+    }
+
+    /**
      * 鎸夊勾鍒掑垎
      * 浼樺寲getQueryTimeForSubTablesDesc,寰呮祴璇�
      * 鏇存柊default琛ㄦ槸鍚︽煡璇㈢殑閫昏緫,鏀箌|涓�&&
diff --git a/src/main/java/com/whyc/util/SubTablePageInfoUtil.java b/src/main/java/com/whyc/util/SubTablePageInfoUtil.java
index 3ed199d..82a70d7 100644
--- a/src/main/java/com/whyc/util/SubTablePageInfoUtil.java
+++ b/src/main/java/com/whyc/util/SubTablePageInfoUtil.java
@@ -4,6 +4,8 @@
 import com.whyc.factory.ThreadPoolExecutorFactory;
 import com.whyc.mapper.CommonMapper;
 import com.whyc.pojo.db_alarm.BattAlarmHistory;
+import com.whyc.pojo.db_power_alarm.PowerAlarm;
+import com.whyc.pojo.db_power_alarm.PowerAlarmHistory;
 import com.whyc.service.SubTableService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -32,24 +34,17 @@
                                         Date startTime,Date endTime,
                                         String dbName,String tablePrefix,
                                         Object pojo) throws ParseException {
-        Map<String, List<Date>> queryTimeForSubTables = DateUtil.getQueryTimeForSubTablesDesc(startTime, endTime);
+        Map<String, List<Date>> queryTimeForSubTables = DateUtil.getQueryTimeForSubTablesDescWithOutDefault(startTime, endTime);
         //鏌ヨ鍒嗚〃鏄惁瀛樺湪,瀛樺湪鍒欐煡璇㈢粨鏋�
         Map<String,Integer> queryCountMap = new LinkedHashMap<>();
         Set<String> tableYearKeySet = queryTimeForSubTables.keySet();
         for (String tableYear : tableYearKeySet) {
             List<Date> queryTime = queryTimeForSubTables.get(tableYear);
 
-            String tableName;
-            if(!tableYear.equals("default")){
-                //鏁板��
-                tableName = tablePrefix+"_"+tableYear;
-                String existTableName = commonMapper.existTable(dbName, tableName);
-                if(existTableName == null){
-                    continue;
-                }
-            }else{
-                //涓嶅瓨鍦╠efault
-                //tableName = tablePrefix;
+            //鏁板��
+            String tableName = tablePrefix+"_"+tableYear;
+            String existTableName = commonMapper.existTable(dbName, tableName);
+            if(existTableName == null){
                 continue;
             }
             //====== 鏍规嵁涓嶅悓绫诲瀷绫诲瀷瀵硅薄瀵瑰簲璋冩暣 ======
@@ -60,6 +55,15 @@
                 battAlarmHistory.setAlmEndTime(queryTime.get(1));
                 battAlarmHistory.setRecordYear(tableName);
                 int currentCount = service.getBattHisCount(battAlarmHistory);
+                queryCountMap.put(tableYear, currentCount);
+            }
+            else if(pojo instanceof PowerAlarmHistory) {
+                PowerAlarmHistory powerAlarmHistory = new PowerAlarmHistory();
+                BeanUtils.copyProperties(pojo, powerAlarmHistory);
+                powerAlarmHistory.setAlmStartTime(queryTime.get(0));
+                powerAlarmHistory.setAlmEndTime(queryTime.get(1));
+                powerAlarmHistory.setRecordYear(tableName);
+                int currentCount = service.getPowerHisCount(powerAlarmHistory);
                 queryCountMap.put(tableYear, currentCount);
             }
 
@@ -92,7 +96,7 @@
         for (String key : keySet) {
             List<Date> queryTime = queryTimeForSubTables.get(key);
             //====== 鏍规嵁涓嶅悓绫诲瀷绫诲瀷瀵硅薄瀵瑰簲璋冩暣 ======
-            String recordYear = key.equals("default") ? tablePrefix : tablePrefix + "_" + key;
+            String recordYear = tablePrefix + "_" + key;
             if(pojo instanceof BattAlarmHistory) {
                 BattAlarmHistory battAlarmHistory = new BattAlarmHistory();
                 BeanUtils.copyProperties(pojo, battAlarmHistory);
@@ -105,6 +109,18 @@
                 List<BattAlarmHistory> list =  service.getBattHisList(battAlarmHistory);
                 dataList.addAll(list);
             }
+            else if(pojo instanceof PowerAlarmHistory) {
+                PowerAlarmHistory powerAlarmHistory = new PowerAlarmHistory();
+                BeanUtils.copyProperties(pojo, powerAlarmHistory);
+                powerAlarmHistory.setAlmStartTime(queryTime.get(0));
+                powerAlarmHistory.setAlmEndTime(queryTime.get(1));
+                powerAlarmHistory.setRecordYear(recordYear);
+                List<Integer> limitList = tableAndLimitMap.get(key);
+                powerAlarmHistory.setLimitStart(limitList.get(0));
+                powerAlarmHistory.setLimitEnd(limitList.get(1));
+                List<PowerAlarmHistory> list =  service.getPowerHisList(powerAlarmHistory);
+                dataList.addAll(list);
+            }
         }
         pageInfo.setList(dataList);
         return pageInfo;

--
Gitblit v1.9.1