From 0e098bc8867700017407c7954d8e03d9dd1b8cb4 Mon Sep 17 00:00:00 2001
From: whyclxw <810412026@qq.com>
Date: 星期六, 07 六月 2025 14:50:19 +0800
Subject: [PATCH] 电池组历史实时数据

---
 src/main/java/com/whyc/service/SubTablePageInfoService.java |   45 ++++++++++++++++++++++++++++-----------------
 src/main/java/com/whyc/dto/Real/RealDateDTO.java            |    2 ++
 src/main/java/com/whyc/service/BattRealdataIdService.java   |   11 +++++++++--
 3 files changed, 39 insertions(+), 19 deletions(-)

diff --git a/src/main/java/com/whyc/dto/Real/RealDateDTO.java b/src/main/java/com/whyc/dto/Real/RealDateDTO.java
index be0cb5a..d97ba68 100644
--- a/src/main/java/com/whyc/dto/Real/RealDateDTO.java
+++ b/src/main/java/com/whyc/dto/Real/RealDateDTO.java
@@ -27,4 +27,6 @@
     private Float monRes;
     @ApiModelProperty(value = "鍗曚綋缂栧彿")
     private Integer monNum;
+    @ApiModelProperty(value = "鍗曚綋缂栧彿")
+    private Integer recordNum;
 }
diff --git a/src/main/java/com/whyc/service/BattRealdataIdService.java b/src/main/java/com/whyc/service/BattRealdataIdService.java
index cf13d1a..fe934ed 100644
--- a/src/main/java/com/whyc/service/BattRealdataIdService.java
+++ b/src/main/java/com/whyc/service/BattRealdataIdService.java
@@ -175,7 +175,6 @@
     public Response getBattRealDataHis(Integer battgroupId, Integer granularity,String startTime,String endTime) throws ParseException, InterruptedException {
         List<RealDateDTO> dataList = new LinkedList<>();
         List<List<Date>> monthTimeList = DateUtil.getMonthTime(ThreadLocalUtil.parse(startTime,1), ThreadLocalUtil.parse(endTime,1));
-
         ThreadPoolExecutor pool = ThreadPoolExecutorFactory.getPoolExecutor();
         CountDownLatch latch = new CountDownLatch(monthTimeList.size());
         for (int i = 0; i < monthTimeList.size(); i++) {
@@ -191,7 +190,15 @@
                 int tableNum = subTablePageInfoService.judgeTable_realdata(table);
                 List<RealDateDTO> list = new ArrayList();
                 if (tableNum > 0) {
-                    list = subTablePageInfoService.serchByCondition2(realdata,granularity);
+                    //鑾峰彇鎸囧畾鏃堕棿娈靛唴鏈�澶ф渶灏弐ecordNum纭繚鏁版嵁鐨勫畬鏁�
+                    List recordNums= subTablePageInfoService.getMaxAndMinRecordNum(realdata);
+                    Integer maxRecordNum= 0;
+                    Integer minRecordNum= 0;
+                    if(recordNums.size()>0){
+                        maxRecordNum=(Integer)recordNums.get(0);
+                        minRecordNum=(Integer)recordNums.get(1);
+                    }
+                    list = subTablePageInfoService.getBattRealDataHis(realdata,granularity,maxRecordNum,minRecordNum);
                 }
                 dataList.addAll(list);
                 latch.countDown();
diff --git a/src/main/java/com/whyc/service/SubTablePageInfoService.java b/src/main/java/com/whyc/service/SubTablePageInfoService.java
index d429abb..21d38c5 100644
--- a/src/main/java/com/whyc/service/SubTablePageInfoService.java
+++ b/src/main/java/com/whyc/service/SubTablePageInfoService.java
@@ -741,23 +741,13 @@
         return tableNum;
     }
 
-
-    public List<RealDateDTO> serchByCondition2(BattRealdataId realdata, int granularity) {
-        String sql=" select record_time, " +
-                "               group_vol, " +
-                "               online_vol, " +
-                "               group_curr, " +
-                "               mon_vol, " +
-                "               mon_tmp, " +
-                "               mon_res, " +
-                "               mon_num " +
-                "        from (select a.*, (@i:= @i+1) as number " +
-                "              from (select * " +
-                "                    from db_data_history.tb_batt_realdata_"+realdata.getTableName()+" " +
-                "                    where record_time >= '"+ThreadLocalUtil.format(realdata.getRecordTime(),1)+"' " +
-                "                      and record_time <= '"+ThreadLocalUtil.format(realdata.getRecordTime1(),1)+"' ) a, " +
-                "                   (select @i:=0) b) c " +
-                "        where c.number%"+granularity+"=0";
+    //鐢垫睜鏁版嵁鍘嗗彶瀹炴椂澶勭悊
+    public List<RealDateDTO> getBattRealDataHis(BattRealdataId realdata, int granularity,Integer maxRecordNum,Integer minRecordNum) {
+        String sql=" select record_time, group_vol, online_vol,group_curr, mon_vol, mon_tmp, mon_res, mon_num,record_num  " +
+                "               from db_data_history.tb_batt_realdata_"+realdata.getTableName()+" " +
+                "               where record_time >= '"+ThreadLocalUtil.format(realdata.getRecordTime(),1)+"' " +
+                "               and record_time <= '"+ThreadLocalUtil.format(realdata.getRecordTime1(),1)+"' "+
+                "               and (record_num-"+minRecordNum+")%"+granularity+"=0 or record_num="+maxRecordNum+" or record_num="+minRecordNum ;
         List<RealDateDTO> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
             @Override
             public List getResults(ResultSet rs) throws SQLException {
@@ -772,6 +762,7 @@
                     ph.setMonTmp(rs.getFloat("mon_tmp"));
                     ph.setMonRes(rs.getFloat("mon_res"));
                     ph.setMonNum(rs.getInt("mon_num"));
+                    ph.setRecordNum(rs.getInt("record_num"));
                     list.add(ph);
                 }
                 return list;
@@ -779,4 +770,24 @@
         });
         return list;
     }
+    //鑾峰彇鎸囧畾鏃堕棿娈靛唴鏈�澶ф渶灏弐ecordNum纭繚鏁版嵁鐨勫畬鏁�
+    public List getMaxAndMinRecordNum(BattRealdataId realdata) {
+        String sql="select max(record_num) as maxRecordNum,min(record_num) as minRecordNum " +
+                " from db_data_history.tb_batt_realdata_" + realdata.getTableName()+" " +
+                " where record_time >= '"+ThreadLocalUtil.format(realdata.getRecordTime(),1)+"' " +
+                " and record_time <= '"+ThreadLocalUtil.format(realdata.getRecordTime1(),1)+"'  " +
+                " limit 1";
+        List list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
+            @Override
+            public List getResults(ResultSet rs) throws SQLException {
+                List list = new ArrayList<>();
+                while (rs.next()) {
+                    list.add(rs.getInt("maxRecordNum"));
+                    list.add(rs.getInt("minRecordNum"));
+                }
+                return list;
+            }
+           });
+         return list;
+    }
 }

--
Gitblit v1.9.1