From e5b3e3492a7d5f079cad2ca5958a724cabfec401 Mon Sep 17 00:00:00 2001
From: whycxzp <glperry@163.com>
Date: 星期六, 28 六月 2025 21:22:42 +0800
Subject: [PATCH] 文档类型管理更新

---
 src/main/java/com/whyc/service/SubTablePageInfoService.java |  978 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 971 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/whyc/service/SubTablePageInfoService.java b/src/main/java/com/whyc/service/SubTablePageInfoService.java
index 99d43ed..21adb88 100644
--- a/src/main/java/com/whyc/service/SubTablePageInfoService.java
+++ b/src/main/java/com/whyc/service/SubTablePageInfoService.java
@@ -1,22 +1,34 @@
 package com.whyc.service;
 
-import com.whyc.dto.AlmHis.BattAlarmRes;
 import com.whyc.dto.AlmHis.BattAlmPar;
 import com.whyc.dto.AlmHis.DevAlmPar;
 import com.whyc.dto.AlmHis.PwrAlmPar;
-import com.whyc.dto.Real.QuarterData;
+import com.whyc.dto.AnalysisAlm.ResAnalysis;
+import com.whyc.dto.Real.*;
+import com.whyc.dto.RealDataStatic.MonDataDto;
+import com.whyc.dto.RealDataStatic.ResRealDataAc;
+import com.whyc.dto.RealDataStatic.ResRealDataHr;
+import com.whyc.dto.RealDataStatic.ResRealDataMon;
+import com.whyc.dto.Statistic.ComPareChangeCurve;
+import com.whyc.dto.Statistic.ComPareChart;
+import com.whyc.dto.Statistic.QuarterPwr7Res;
 import com.whyc.mapper.CallBack;
 import com.whyc.pojo.db_alarm.BattalarmDataHistory;
 import com.whyc.pojo.db_alarm.DevalarmDataHistory;
+import com.whyc.pojo.db_batt_testdata.BatttestdataId;
 import com.whyc.pojo.db_data_history.BattRealdataId;
+import com.whyc.pojo.db_data_history.PwrdevHistorydataId;
 import com.whyc.pojo.db_pwrdev_alarm.PwrdevAlarmHistory;
+import com.whyc.util.ActionUtil;
 import com.whyc.util.ThreadLocalUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.lang.reflect.Field;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class SubTablePageInfoService {
@@ -198,7 +210,7 @@
                     data.setProvice(rs.getString("provice"));
                     data.setCity(rs.getString("city"));
                     data.setCountry(rs.getString("country"));
-                    data.setBattGroupName(rs.getString("battgroup_name"));
+                    data.setBattgroupName(rs.getString("battgroup_name"));
                     list.add(data);
                 }
                 return list;
@@ -316,6 +328,7 @@
                     ph.setNum(rs.getLong("num"));
                     ph.setDevId(rs.getInt("dev_id"));
                     ph.setDevIp(rs.getString("dev_ip"));
+                    ph.setAlmId(rs.getInt("alm_id"));
                     ph.setAlmLevel(rs.getInt("alm_level"));
                     ph.setAlmStartTime(rs.getTimestamp("alm_start_time"));
                     ph.setAlmEndTime(rs.getTimestamp("alm_end_time"));
@@ -468,14 +481,14 @@
         return  list;
     }
     //鑾峰彇鐢垫睜缁勬煇涓�骞存湀鐨勬暟鎹�
-    public List<QuarterData> getBattRealHis(String tableName,String columnName) {
+    public List<QuarterDto> getBattRealHis(String tableName, String columnName) {
         String sql="select  distinct mon_num,record_time,"+columnName+"  from "+tableName+" order by record_time asc";
-        List<QuarterData> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
+        List<QuarterDto> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
             @Override
             public List getResults(ResultSet rs) throws SQLException {
-                List<QuarterData> list=new ArrayList<>();
+                List<QuarterDto> list=new ArrayList<>();
                 while (rs.next()){
-                    QuarterData data=new QuarterData();
+                    QuarterDto data=new QuarterDto();
                     data.setRecordTime(rs.getTimestamp("record_time"));
                     data.setNumValue(rs.getFloat(columnName));
                     data.setMonNum(rs.getInt("mon_num"));
@@ -486,4 +499,955 @@
         });
         return list;
     }
+    //鑾峰彇琛ㄤ腑鏈�澶э紝鏈�灏忥紝骞冲潎鏁版嵁鍊�
+    public CompareDto getBattCompareHis(String tableName, String columnName) {
+        String sql="select  max("+columnName+") as maxData,min("+columnName+") as minData,avg("+columnName+") as avgData"+"  from "+tableName;
+        List<CompareDto> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
+            @Override
+            public List getResults(ResultSet rs) throws SQLException {
+                List<CompareDto> list=new ArrayList<>();
+                while (rs.next()){
+                    CompareDto data=new CompareDto();
+                    data.setMaxData(rs.getFloat("maxData"));
+                    data.setMinData(rs.getFloat("minData"));
+                    data.setAvgData(rs.getFloat("avgData"));
+                    list.add(data);
+                }
+                return list;
+            }
+        });
+        if(list!=null&&list.size()>0){
+            return list.get(0);
+        }else {
+            return null;
+        }
+    }
+    //鑾峰彇鍐呴樆鏁版嵁
+    public  List<QuarterDto> getBattResInfData(Integer battgroupId,Integer testRecordCount) {
+        String sql="select   distinct mon_num,test_starttime,mon_res from db_batt_testdata.tb_battresdata_"+battgroupId
+                +" where test_record_count="+testRecordCount+" order by mon_num asc";
+        List<QuarterDto> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
+            @Override
+            public List getResults(ResultSet rs) throws SQLException {
+                List<QuarterDto> list=new ArrayList<>();
+                while (rs.next()){
+                    QuarterDto data=new QuarterDto();
+                    data.setMonNum(rs.getInt("mon_num"));
+                    data.setNumValue(rs.getFloat("mon_res"));
+                    data.setRecordTime(rs.getTimestamp("test_starttime"));
+                    list.add(data);
+                }
+                return list;
+            }
+        });
+       return list;
+    }
+    //鍙栧唴闃绘祴璇曠殑鏈�澶у唴闃诲拰鍗曚綋缂栧彿
+    public List<QuarterDto> getMaxResInInfData(Integer battgroupId, Integer testRecordCount) {
+        String sql="select   distinct mon_num,test_starttime,mon_res from db_batt_testdata.tb_battresdata_"+battgroupId
+                +" where test_record_count="+testRecordCount+" order by mon_num asc";
+        List<QuarterDto> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
+            @Override
+            public List getResults(ResultSet rs) throws SQLException {
+                List<QuarterDto> list=new ArrayList<>();
+                while (rs.next()){
+                    QuarterDto data=new QuarterDto();
+                    data.setMonNum(rs.getInt("mon_num"));
+                    data.setNumValue(rs.getFloat("mon_res"));
+                    data.setRecordTime(rs.getTimestamp("test_starttime"));
+                    list.add(data);
+                }
+                return list;
+            }
+        });
+        return list;
+    }
+    //鍙栧唴闃绘祴璇曟寚瀹氬崟浣撶殑鍗曚綋鐢靛帇
+    public ComPareChangeCurve getMonResChangeByBattgroupId(Integer battgroupId, Integer testRecordCount, Integer monNum) {
+        String sql="select   distinct battgroup_id,mon_num,test_starttime,mon_res from db_batt_testdata.tb_battresdata_"+battgroupId
+                +" where test_record_count="+testRecordCount+" and monNum="+monNum;
+        List<ComPareChangeCurve> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
+            @Override
+            public List getResults(ResultSet rs) throws SQLException {
+                List<ComPareChangeCurve> list=new ArrayList<>();
+                while (rs.next()){
+                    ComPareChangeCurve data=new ComPareChangeCurve();
+                    data.setMonNum(rs.getInt("mon_num"));
+                    data.setCurveValue(rs.getFloat("mon_res"));
+                    data.setStartTime(rs.getTimestamp("test_starttime"));
+                    data.setBattgroupId(rs.getInt("battgroup_id"));
+                    list.add(data);
+                }
+                return list;
+            }
+        });
+        if(list!=null&&list.size()>0){
+            return list.get(0);
+        }
+        return null;
+    }
+    //鎵捐繖娆℃斁鐢电殑鎸囧畾涓�绗旀暟鎹�
+    public List<BatttestdataId> getLastDataByBattgroupId(Integer battgroupId, Integer testRecordCount, Integer recordNum) {
+        String sql="select   distinct * from db_batt_testdata.tb_batttestdata_"+battgroupId
+                +" where test_record_count="+testRecordCount+" and record_num="+recordNum+ " order by mon_num asc";
+        List<BatttestdataId> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
+            @Override
+            public List getResults(ResultSet rs) throws SQLException {
+                List<BatttestdataId> list=new ArrayList<>();
+                while (rs.next()){
+                    BatttestdataId data=new BatttestdataId();
+                    data.setBattgroupId(rs.getInt("battgroup_id"));
+                    data.setTestRecordCount(rs.getInt("test_record_count"));
+                    data.setTestStarttime(rs.getTimestamp("test_starttime"));
+                    data.setOnlineVol(rs.getFloat("online_vol"));
+                    data.setGroupVol(rs.getFloat("group_vol"));
+                    data.setTestCurr(rs.getFloat("test_curr"));
+                    data.setTestCap(rs.getFloat("test_cap"));
+                    data.setMonNum(rs.getInt("mon_num"));
+                    data.setMonVol(rs.getFloat("mon_vol"));
+                    data.setMonRes(rs.getFloat("mon_res"));
+                    data.setMonTmp(rs.getFloat("mon_tmp"));
+                    list.add(data);
+                }
+                return list;
+            }
+        });
+        return list;
+    }
+    //绯荤粺姒傝鑾峰彇鍗婂皬鏃朵氦娴佽緭鍏ョ粺璁�
+    public List<PwrHisRealAcInDto> getHalfHourPwrHisAcinData(String tableName,Integer granularity,Date recordDatetime,Date recordDatetime1,Integer maxRecordNum,Integer minRecordNum) {
+        String sql=" select  distinct record_datetime,acin1_vola,acin1_volb,acin1_volc,acin2_vola,acin2_volb,acin2_volc " +
+                " ,acin1_curra,acin1_currb,acin1_currc,acin2_curra,acin2_currb,acin2_currc  " +
+                " from "+tableName+" where record_datetime>='"+ActionUtil.sdf.format(recordDatetime)+"'" +
+                "                    and record_datetime<='"+ActionUtil.sdf.format(recordDatetime1)+
+                "' and (record_num-"+minRecordNum+")%"+granularity+"=0  or record_num="+minRecordNum+" or record_num="+maxRecordNum;
+        sql+="  order by record_datetime asc";
+        List<PwrHisRealAcInDto> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
+            @Override
+            public List getResults(ResultSet rs) throws SQLException {
+                List<PwrHisRealAcInDto> list=new ArrayList<>();
+                while (rs.next()){
+                    PwrHisRealAcInDto data=new PwrHisRealAcInDto();
+                    data.setRecordDatetime(rs.getTimestamp("record_datetime"));
+                    data.setAcin1Vola(rs.getFloat("acin1_vola"));
+                    data.setAcin1Volb(rs.getFloat("acin1_volb"));
+                    data.setAcin1Volc(rs.getFloat("acin1_volc"));
+                    data.setAcin2Vola(rs.getFloat("acin2_vola"));
+                    data.setAcin2Volb(rs.getFloat("acin2_volb"));
+                    data.setAcin2Volc(rs.getFloat("acin2_volc"));
+                    data.setAcin1Curra(rs.getFloat("acin1_curra"));
+                    data.setAcin1Currb(rs.getFloat("acin1_currb"));
+                    data.setAcin1Currc(rs.getFloat("acin1_currc"));
+                    data.setAcin2Curra(rs.getFloat("acin2_curra"));
+                    data.setAcin2Currb(rs.getFloat("acin2_currb"));
+                    data.setAcin2Currc(rs.getFloat("acin2_currc"));
+                    list.add(data);
+                }
+                return list;
+            }
+        });
+        return list;
+    }
+    //绯荤粺姒傝鑾峰彇鍗婂皬鏃朵氦娴佽緭鍑虹粺璁�
+    public List<PwrHisRealDcoutInDto> getHalfHourPwrHisDcoutData(String tableName,Integer granularity,Date recordDatetime,Date recordDatetime1,Integer maxRecordNum,Integer minRecordNum) {
+        String sql="select  distinct * " +
+                " from "+tableName+" where record_datetime>='"+ActionUtil.sdf.format(recordDatetime)+"'" +
+                "                    and record_datetime<='"+ActionUtil.sdf.format(recordDatetime1)+
+                "' and (record_num-"+minRecordNum+")%"+granularity+"=0 or record_num="+minRecordNum+" or record_num="+maxRecordNum;
+        sql+=" order by record_datetime asc";
+        List<PwrHisRealDcoutInDto> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
+            @Override
+            public List getResults(ResultSet rs) throws SQLException {
+                List<PwrHisRealDcoutInDto> list=new ArrayList<>();
+                while (rs.next()){
+                    PwrHisRealDcoutInDto data=new PwrHisRealDcoutInDto();
+                    data.setRecordDatetime(rs.getTimestamp("record_datetime"));
+                    data.setMOutputvol(rs.getFloat("m_outputvol"));
+                    data.setM1Outcurr(rs.getFloat("m1_outcurr"));
+                    data.setM2Outcurr(rs.getFloat("m2_outcurr"));
+                    data.setM3Outcurr(rs.getFloat("m3_outcurr"));
+                    data.setM4Outcurr(rs.getFloat("m4_outcurr"));
+                    data.setM5Outcurr(rs.getFloat("m5_outcurr"));
+                    data.setM6Outcurr(rs.getFloat("m6_outcurr"));
+                    data.setM7Outcurr(rs.getFloat("m7_outcurr"));
+                    data.setM8Outcurr(rs.getFloat("m8_outcurr"));
+                    data.setM9Outcurr(rs.getFloat("m9_outcurr"));
+                    data.setM10Outcurr(rs.getFloat("m10_outcurr"));
+                    data.setM11Outcurr(rs.getFloat("m11_outcurr"));
+                    data.setM12Outcurr(rs.getFloat("m12_outcurr"));
+                    data.setM13Outcurr(rs.getFloat("m13_outcurr"));
+                    data.setM14Outcurr(rs.getFloat("m14_outcurr"));
+                    data.setM15Outcurr(rs.getFloat("m15_outcurr"));
+                    data.setM16Outcurr(rs.getFloat("m16_outcurr"));
+                    data.setM1OutVol(rs.getFloat("m1_out_vol"));
+                    data.setM2OutVol(rs.getFloat("m2_out_vol"));
+                    data.setM3OutVol(rs.getFloat("m3_out_vol"));
+                    data.setM4OutVol(rs.getFloat("m4_out_vol"));
+                    data.setM5OutVol(rs.getFloat("m5_out_vol"));
+                    data.setM6OutVol(rs.getFloat("m6_out_vol"));
+                    data.setM7OutVol(rs.getFloat("m7_out_vol"));
+                    data.setM8OutVol(rs.getFloat("m8_out_vol"));
+                    data.setM9OutVol(rs.getFloat("m9_out_vol"));
+                    data.setM10OutVol(rs.getFloat("m10_out_vol"));
+                    data.setM11OutVol(rs.getFloat("m11_out_vol"));
+                    data.setM12OutVol(rs.getFloat("m12_out_vol"));
+                    data.setM13OutVol(rs.getFloat("m13_out_vol"));
+                    data.setM14OutVol(rs.getFloat("m14_out_vol"));
+                    data.setM15OutVol(rs.getFloat("m15_out_vol"));
+                    data.setM16OutVol(rs.getFloat("m16_out_vol"));
+                    list.add(data);
+                }
+                return list;
+            }
+        });
+        return list;
+    }
+    //鏌ヨ鐢垫簮瀛楁鐨勫紓鍔ㄧ殑璁板綍
+    public List<Object> getPwrChangesRecordNum(String tableName, Date recordDatetime, Date recordDatetime1, String value, float upperLimit, float lowerLimit) {
+        String sql=" select  distinct record_datetime,record_num "+
+                " from "+tableName+" where record_datetime>='"+ActionUtil.sdf.format(recordDatetime)+"'" +
+                "                    and record_datetime<='"+ActionUtil.sdf.format(recordDatetime1)+"'" +
+                " and "+value+">"+upperLimit+" or "+value+"<"+lowerLimit+" ";
+        sql+="  order by record_num asc";
+        List<Object> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
+            @Override
+            public List getResults(ResultSet rs) throws SQLException {
+                List list=new ArrayList<>();
+                List numList=new ArrayList<>();
+                List timeList=new ArrayList<>();
+                while (rs.next()){
+                    numList.add(rs.getInt("record_num"));
+                    timeList.add(rs.getString("record_datetime"));
+                }
+                list.add(numList);
+                list.add(timeList);
+                return list;
+            }
+        });
+        return list;
+    }
+    //鏌ヨ鐢垫簮瀛楁鐨勫紓鍔�
+    public List<ResRealDataAc> getPwrPropertyChangesByRecordNum(String tableName, Date recordDatetime, Date recordDatetime1, List<Integer> allChangeNums, Map<String, List<String>> propertyInfo) {
+        String  propertyStr = propertyInfo.values().stream()
+                .flatMap(List::stream)
+                .collect(Collectors.joining(","));
+        String sql=" select  distinct record_datetime,record_num, "+propertyStr+
+                " from "+tableName+" where record_datetime>='"+ActionUtil.sdf.format(recordDatetime)+"'" +
+                "                    and record_datetime<='"+ActionUtil.sdf.format(recordDatetime1)+"'";
+        if (allChangeNums.size() > 0) {
+            //鍘婚櫎閲嶅椤�
+            List<Integer> uniqueList = allChangeNums.stream()
+                    .distinct()
+                    .collect(Collectors.toList());
+            //鎷兼帴鐢熸垚sql
+            String changeNumsStr = uniqueList.stream()
+                    .map(String::valueOf)
+                    .collect(Collectors.joining(","));
+            sql += " and record_num in (" + changeNumsStr + ")";
+        }
+        sql += " order by record_datetime asc";
+        List<ResRealDataAc> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
+            @Override
+            public List getResults(ResultSet rs) throws SQLException {
+                List<ResRealDataAc> list=new ArrayList<>();
+                while (rs.next()){
+                    ResRealDataAc data=new ResRealDataAc();
+                    data.setRecordNum(rs.getInt("record_num"));
+                    data.setRecordDatetime(rs.getTimestamp("record_datetime"));
+                    Map<String,Map<String,Float>>dataMap=new HashMap<>();
+                    for (Map.Entry<String, List<String>> entry : propertyInfo.entrySet()) {
+                        String key = entry.getKey();
+                        List<String> valueList = entry.getValue();
+                        Map<String,Float> propertyMap=new HashMap<>();
+                        for (String value : valueList) {
+                            Float propertyValue = rs.getFloat(value);
+                            propertyMap.put(value,propertyValue);
+                        }
+                        dataMap.put(key,propertyMap);
+                    }
+                    data.setPropertyInfo(dataMap);
+                    list.add(data);
+                }
+                return list;
+            }
+        });
+        return list;
+    }
+    //瀹炴椂鏁版嵁鏁版嵁鏇茬嚎缁熻-浜ゆ祦鍗曞厓
+    public List<ResRealDataAc> getSticRealAcData(String tableName, Integer granularity, Date recordDatetime, Date recordDatetime1
+            , Integer maxRecordNum, Integer minRecordNum, Map<String, List<String>> propertyInfo) {
+        String  propertyStr = propertyInfo.values().stream()
+                .flatMap(List::stream)
+                .collect(Collectors.joining(","));
+        String sql=" select  distinct record_datetime,record_num,"+propertyStr+" "+
+                " from "+tableName+" where record_datetime>='"+ActionUtil.sdf.format(recordDatetime)+"'" +
+                "                    and record_datetime<='"+ActionUtil.sdf.format(recordDatetime1)+
+                "' and (record_num-"+minRecordNum+")%"+granularity+"=0  or record_num="+minRecordNum+" or record_num="+maxRecordNum;
+        sql+="  order by record_datetime asc";
+        List<ResRealDataAc> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
+            @Override
+            public List getResults(ResultSet rs) throws SQLException {
+                List<ResRealDataAc> list=new ArrayList<>();
+                while (rs.next()){
+                    ResRealDataAc data=new ResRealDataAc();
+                    data.setRecordNum(rs.getInt("record_num"));
+                    data.setRecordDatetime(rs.getTimestamp("record_datetime"));
+                    Map<String,Map<String,Float>>dataMap=new HashMap<>();
+                    for (Map.Entry<String, List<String>> entry : propertyInfo.entrySet()) {
+                        String key = entry.getKey();
+                        List<String> valueList = entry.getValue();
+                        Map<String,Float> propertyMap=new HashMap<>();
+                        for (String value : valueList) {
+                            Float propertyValue = rs.getFloat(value);
+                            propertyMap.put(value,propertyValue);
+                        }
+                        dataMap.put(key,propertyMap);
+                    }
+                    data.setPropertyInfo(dataMap);
+                    list.add(data);
+                }
+                return list;
+            }
+        });
+        return list;
+    }
+    //鐢垫簮鍘嗗彶瀹炴椂
+    public List<PwrHisRealDcoutInDto> getPwrRealDataHis(String tableName,Integer granularity,Date recordDatetime,Date recordDatetime1,Integer maxRecordNum,Integer minRecordNum) {
+        String sql="select  distinct * " +
+                " from "+tableName+" where record_datetime>='"+ActionUtil.sdf.format(recordDatetime)+"'" +
+                "                    and record_datetime<='"+ActionUtil.sdf.format(recordDatetime1)+
+                "' and (record_num-"+minRecordNum+")%"+granularity+"=0 or record_num="+minRecordNum+" or record_num="+maxRecordNum;
+        sql+=" order by record_datetime asc";
+        List<PwrHisRealDcoutInDto> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
+            @Override
+            public List getResults(ResultSet rs) throws SQLException {
+                List<PwrHisRealDcoutInDto> list=new ArrayList<>();
+                while (rs.next()){
+                    PwrHisRealDcoutInDto data=new PwrHisRealDcoutInDto();
+                    data.setRecordDatetime(rs.getTimestamp("record_datetime"));
+                    data.setMOutputvol(rs.getFloat("m_outputvol"));
+                    data.setM1Outcurr(rs.getFloat("m1_outcurr"));
+                    data.setM2Outcurr(rs.getFloat("m2_outcurr"));
+                    data.setM3Outcurr(rs.getFloat("m3_outcurr"));
+                    data.setM4Outcurr(rs.getFloat("m4_outcurr"));
+                    data.setM5Outcurr(rs.getFloat("m5_outcurr"));
+                    data.setM6Outcurr(rs.getFloat("m6_outcurr"));
+                    data.setM7Outcurr(rs.getFloat("m7_outcurr"));
+                    data.setM8Outcurr(rs.getFloat("m8_outcurr"));
+                    data.setM9Outcurr(rs.getFloat("m9_outcurr"));
+                    data.setM10Outcurr(rs.getFloat("m10_outcurr"));
+                    data.setM11Outcurr(rs.getFloat("m11_outcurr"));
+                    data.setM12Outcurr(rs.getFloat("m12_outcurr"));
+                    data.setM13Outcurr(rs.getFloat("m13_outcurr"));
+                    data.setM14Outcurr(rs.getFloat("m14_outcurr"));
+                    data.setM15Outcurr(rs.getFloat("m15_outcurr"));
+                    data.setM16Outcurr(rs.getFloat("m16_outcurr"));
+                    data.setM1OutVol(rs.getFloat("m1_out_vol"));
+                    data.setM2OutVol(rs.getFloat("m2_out_vol"));
+                    data.setM3OutVol(rs.getFloat("m3_out_vol"));
+                    data.setM4OutVol(rs.getFloat("m4_out_vol"));
+                    data.setM5OutVol(rs.getFloat("m5_out_vol"));
+                    data.setM6OutVol(rs.getFloat("m6_out_vol"));
+                    data.setM7OutVol(rs.getFloat("m7_out_vol"));
+                    data.setM8OutVol(rs.getFloat("m8_out_vol"));
+                    data.setM9OutVol(rs.getFloat("m9_out_vol"));
+                    data.setM10OutVol(rs.getFloat("m10_out_vol"));
+                    data.setM11OutVol(rs.getFloat("m11_out_vol"));
+                    data.setM12OutVol(rs.getFloat("m12_out_vol"));
+                    data.setM13OutVol(rs.getFloat("m13_out_vol"));
+                    data.setM14OutVol(rs.getFloat("m14_out_vol"));
+                    data.setM15OutVol(rs.getFloat("m15_out_vol"));
+                    data.setM16OutVol(rs.getFloat("m16_out_vol"));
+                    list.add(data);
+                }
+                return list;
+            }
+        });
+        return list;
+    }
+    //鍘嗗彶娴嬭瘯璁板綍鍏蜂綋鏌愪竴娆℃斁鐢垫暟鎹鎯�
+    public List<BatttestdataId> getTinfDataWithTestRecordCount(String tableName, Integer testRecordCount, Integer recordNum, Integer granularity) {
+        String sql="select distinct * from "+tableName+" "+
+                " where test_record_count="+testRecordCount+" " +
+                " and  record_num%"+granularity+"=0 or record_num=1 or record_num="+recordNum;
+        sql+=" order by record_time asc";
+        List<BatttestdataId> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
+            @Override
+            public List getResults(ResultSet rs) throws SQLException {
+                List<BatttestdataId> list=new ArrayList<>();
+                while (rs.next()){
+                    BatttestdataId data=new BatttestdataId();
+                    data.setNum(rs.getInt("num"));
+                    data.setBattgroupId(rs.getInt("battgroup_id"));
+                    data.setTestRecordCount(rs.getInt("test_record_count"));
+                    data.setTestType(rs.getInt("test_type"));
+                    data.setRecordNum(rs.getInt("record_num"));
+                    data.setDataNew(rs.getInt("data_new"));
+                    data.setDataAvailable(rs.getInt("data_available"));
+                    data.setTestTimelong(rs.getInt("test_timelong"));
+                    data.setTestCurr(rs.getFloat("test_curr"));
+                    data.setTestCap(rs.getFloat("test_cap"));
+                    data.setMonNum(rs.getInt("mon_num"));
+                    data.setMonVol(rs.getFloat("mon_vol"));
+                    data.setMonTmp(rs.getFloat("mon_tmp"));
+                    data.setMonRes(rs.getFloat("mon_res"));
+                    data.setTestStarttime(rs.getTimestamp("test_starttime"));
+                    data.setRecordTime(rs.getTimestamp("record_time"));
+                    data.setGroupVol(rs.getFloat("group_vol"));
+                    data.setOnlineVol(rs.getFloat("online_vol"));
+                    list.add(data);
+                }
+                return list;
+            }
+        });
+        return list;
+    }
+    //鍒ゆ柇鐢垫睜缁勫巻鍙插疄鏃惰〃鏄惁瀛樺湪
+    public int judgeTable_realdata( String table){
+        String sql="select count(*) as tableNum " +
+                "        from INFORMATION_SCHEMA.TABLES " +
+                "        where TABLE_SCHEMA = 'db_data_history' " +
+                "          and TABLE_NAME = 'tb_batt_realdata_"+table+"'";
+        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("tableNum"));
+                } catch (SQLException e) {
+                    e.printStackTrace();
+                }
+                return temp;
+            }
+        });
+        int tableNum =0;
+        if(list!=null){
+            tableNum= (int) list.get(0);
+        }
+        return tableNum;
+    }
+    //鍒ゆ柇鐢垫簮鍘嗗彶瀹炴椂琛ㄦ槸鍚﹀瓨鍦�
+    public int judgeTable_pwrhis( String table){
+        String sql="select count(*) as tableNum " +
+                "        from INFORMATION_SCHEMA.TABLES " +
+                "        where TABLE_SCHEMA = 'db_data_history' " +
+                "          and TABLE_NAME = 'tb_pwrdev_historydata_"+table+"'";
+        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("tableNum"));
+                } catch (SQLException e) {
+                    e.printStackTrace();
+                }
+                return temp;
+            }
+        });
+        int tableNum =0;
+        if(list!=null){
+            tableNum= (int) list.get(0);
+        }
+        return tableNum;
+    }
+    //鐢垫睜鏁版嵁鍘嗗彶瀹炴椂澶勭悊
+    public List<RealDateDTO> getBattRealDataHis(BattRealdataId realdata, int granularity,Integer maxRecordNum,Integer minRecordNum) {
+        String sql=" select distinct record_time, group_vol, online_vol,group_curr,load_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 {
+                List<RealDateDTO> list=new ArrayList<>();
+                while (rs.next()){
+                    RealDateDTO ph=new RealDateDTO();
+                    ph.setRecordTime(rs.getTimestamp("record_time"));
+                    ph.setGroupVol(rs.getFloat("group_vol"));
+                    ph.setOnlineVol(rs.getFloat("online_vol"));
+                    ph.setGroupCurr(rs.getFloat("group_curr"));
+                    ph.setMonVol(rs.getFloat("mon_vol"));
+                    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;
+            }
+        });
+        return list;
+    }
+    //瀹炴椂鏁版嵁缁熻鏇茬嚎--鏍稿璁惧
+    public List<ResRealDataHr> getSticRealHrData(String tableName, Integer granularity, Date recordDatetime, Date recordDatetime1, Integer maxRecordNum, Integer minRecordNum) {
+        String sql=" select distinct record_time,record_num,online_vol,group_vol,group_curr,group_tmp,hjq_tmp,dev_conresist,dev_condvoldp "+
+                "               from "+tableName+" " +
+                "               where record_time >= '"+ThreadLocalUtil.format(recordDatetime,1)+"' " +
+                "               and record_time <= '"+ThreadLocalUtil.format(recordDatetime1,1)+"' "+
+                "               and (record_num-"+minRecordNum+")%"+granularity+"=0 or record_num="+maxRecordNum+" or record_num="+minRecordNum ;
+        sql+=" order by record_num asc";
+        List<ResRealDataHr> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
+            @Override
+            public List getResults(ResultSet rs) throws SQLException {
+                List<ResRealDataHr> list=new ArrayList<>();
+                while (rs.next()){
+                    ResRealDataHr data=new ResRealDataHr();
+                    data.setRecordTime(rs.getTimestamp("record_time"));
+                    data.setRecordNum(rs.getInt("record_num"));
+                    data.setOnlineVol(rs.getFloat("online_vol"));
+                    data.setGroupVol(rs.getFloat("group_vol"));
+                    data.setGroupCurr(rs.getFloat("group_curr"));
+                    data.setGroupTmp(rs.getFloat("group_tmp"));
+                    data.setHjqTmp(rs.getFloat("hjq_tmp"));
+                    data.setDevConresist(rs.getFloat("dev_conresist"));
+                    data.setDevCondvoldp(rs.getFloat("dev_condvoldp"));
+                    list.add(data);
+                }
+                return list;
+            }
+        });
+        return list;
+    }
+    //鏌ヨ鏍稿璁惧瀛楁鐨勫紓鍔�
+    public List<ResRealDataHr> getHrPropertyChangesByRecordNum(String tableName, Date recordDatetime, Date recordDatetime1, List<Integer> allChangeNums) {
+        String sql=" select  distinct record_time,record_num,online_vol,group_vol,group_curr,group_tmp,hjq_tmp,dev_conresist,dev_condvoldp "+
+                " from "+tableName+" where record_time>='"+ActionUtil.sdf.format(recordDatetime)+"'" +
+                "                    and record_time<='"+ActionUtil.sdf.format(recordDatetime1)+"'";
+        if (allChangeNums.size() > 0) {
+            //鍘婚櫎閲嶅椤�
+            List<Integer> uniqueList = allChangeNums.stream()
+                    .distinct()
+                    .collect(Collectors.toList());
+            //鎷兼帴鐢熸垚sql
+            String changeNumsStr = uniqueList.stream()
+                    .map(String::valueOf)
+                    .collect(Collectors.joining(","));
+            sql += " and record_num in (" + changeNumsStr + ")";
+        }
+        sql += " order by record_num asc  ";
+        List<ResRealDataHr> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
+            @Override
+            public List getResults(ResultSet rs) throws SQLException {
+                List<ResRealDataHr> list=new ArrayList<>();
+                while (rs.next()){
+                    ResRealDataHr data=new ResRealDataHr();
+                    data.setRecordTime(rs.getTimestamp("record_time"));
+                    data.setRecordNum(rs.getInt("record_num"));
+                    data.setOnlineVol(rs.getFloat("online_vol"));
+                    data.setGroupVol(rs.getFloat("group_vol"));
+                    data.setGroupCurr(rs.getFloat("group_curr"));
+                    data.setGroupTmp(rs.getFloat("group_tmp"));
+                    data.setHjqTmp(rs.getFloat("hjq_tmp"));
+                    data.setDevConresist(rs.getFloat("dev_conresist"));
+                    data.setDevCondvoldp(rs.getFloat("dev_condvoldp"));
+                    list.add(data);
+                }
+                return list;
+            }
+        });
+        return list;
+    }
+    //瀹炴椂鏁版嵁缁熻鏇茬嚎--钃勭數姹犵粍
+    public List<ResRealDataMon> getSticRealMonData(String tableName, Integer granularity, Date recordDatetime, Date recordDatetime1, Integer maxRecordNum, Integer minRecordNum) {
+        String sql=" select distinct battgroup_id,record_time,record_num,mon_num,mon_vol,mon_tmp,mon_res,mon_jh_curr "+
+                "               from "+tableName+" " +
+                "               where record_time >= '"+ThreadLocalUtil.format(recordDatetime,1)+"' " +
+                "               and record_time <= '"+ThreadLocalUtil.format(recordDatetime1,1)+"' "+
+                "               and (record_num-"+minRecordNum+")%"+granularity+"=0 or record_num="+maxRecordNum+" or record_num="+minRecordNum ;
+        sql+=" order by record_num,mon_num asc ";
+        List<ResRealDataMon> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
+            @Override
+            public List getResults(ResultSet rs) throws SQLException {
+                List<ResRealDataMon> result = new ArrayList<>();
+                Map<String, ResRealDataMon> map = new HashMap<>();
+                while (rs.next()) {
+                    Integer battgroupId = rs.getInt("battgroup_id");
+                    Date recordTime = rs.getTimestamp("record_time");
+                    Integer recordNum = rs.getInt("record_num");
+                    // 鏋勫缓鍞竴閿紙battgroupId + recordNum锛�
+                    String key = battgroupId + "_" + recordNum;
+                    ResRealDataMon data = map.get(key);
+                    if (data == null) {
+                        data = new ResRealDataMon();
+                        data.setRecordTime(recordTime);
+                        data.setRecordNum(recordNum);
+                        data.setMonList(new ArrayList<>());
+                        map.put(key, data);
+                        result.add(data);
+                    }
+                    // 灏嗗崟浣撴暟鎹皝瑁呭埌 monList 涓�
+                    MonDataDto monData = new MonDataDto();
+                    monData.setMonNum(rs.getInt("mon_num"));
+                    monData.setMonVol(rs.getFloat("mon_vol"));
+                    monData.setMonTmp(rs.getFloat("mon_tmp"));
+                    monData.setMonRes(rs.getFloat("mon_res"));
+                    monData.setMonJhCurr(rs.getFloat("mon_jh_curr"));
+                    data.getMonList().add(monData);
+                }
+                return result;
+            }
+        });
+        return list;
+    }
+
+    //鏌ヨ鏍稿璁惧/鍗曚綋瀛楁鐨勫紓鍔ㄧ殑璁板綍
+    public List<Object> getBattChangesRecordNum(String tableName, Date recordDatetime, Date recordDatetime1, String value, float upperLimit, float lowerLimit) {
+        String sql=" select  distinct record_time,record_num "+
+                " from "+tableName+" where record_time>='"+ActionUtil.sdf.format(recordDatetime)+"'" +
+                "                    and record_time<='"+ActionUtil.sdf.format(recordDatetime1)+"'" +
+                " and "+value+">"+upperLimit+" or "+value+"<"+lowerLimit+" ";
+        sql+="  order by record_num asc";
+        List<Object> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
+            @Override
+            public List getResults(ResultSet rs) throws SQLException {
+                List list=new ArrayList<>();
+                List numList=new ArrayList<>();
+                List timeList=new ArrayList<>();
+                while (rs.next()){
+                    numList.add(rs.getInt("record_num"));
+                    timeList.add(rs.getString("record_time"));
+                }
+                list.add(numList);
+                list.add(timeList);
+                return list;
+            }
+        });
+        return list;
+    }
+    //鏌ヨ鐢垫睜缁勫崟浣撳瓧娈电殑寮傚姩
+    public List<ResRealDataMon> getMonPropertyChangesByRecordNum(String tableName, Date recordDatetime, Date recordDatetime1, List<Integer> allChangeNums) {
+        String sql=" select  distinct battgroup_id,record_time,record_num,mon_num,mon_vol,mon_tmp,mon_res,mon_jh_curr "+
+                " from "+tableName+" where record_time>='"+ActionUtil.sdf.format(recordDatetime)+"'" +
+                "                    and record_time<='"+ActionUtil.sdf.format(recordDatetime1)+"'";
+        if (allChangeNums.size() > 0) {
+            //鍘婚櫎閲嶅椤�
+            List<Integer> uniqueList = allChangeNums.stream()
+                    .distinct()
+                    .collect(Collectors.toList());
+            //鎷兼帴鐢熸垚sql
+            String changeNumsStr = uniqueList.stream()
+                    .map(String::valueOf)
+                    .collect(Collectors.joining(","));
+            sql += " and record_num in (" + changeNumsStr + ")";
+        }
+        sql += " order by record_num,mon_num asc  ";
+        List<ResRealDataMon> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
+            @Override
+            public List getResults(ResultSet rs) throws SQLException {
+                List<ResRealDataMon> result = new ArrayList<>();
+                Map<String, ResRealDataMon> map = new HashMap<>();
+                while (rs.next()) {
+                    Integer battgroupId = rs.getInt("battgroup_id");
+                    Date recordTime = rs.getTimestamp("record_time");
+                    Integer recordNum = rs.getInt("record_num");
+                    // 鏋勫缓鍞竴閿紙battgroupId + recordNum锛�
+                    String key = battgroupId + "_" + recordNum;
+                    ResRealDataMon data = map.get(key);
+                    if (data == null) {
+                        data = new ResRealDataMon();
+                        data.setRecordTime(recordTime);
+                        data.setRecordNum(recordNum);
+                        data.setMonList(new ArrayList<>());
+                        map.put(key, data);
+                        result.add(data);
+                    }
+                    // 灏嗗崟浣撴暟鎹皝瑁呭埌 monList 涓�
+                    MonDataDto monData = new MonDataDto();
+                    monData.setMonNum(rs.getInt("mon_num"));
+                    monData.setMonVol(rs.getFloat("mon_vol"));
+                    monData.setMonTmp(rs.getFloat("mon_tmp"));
+                    monData.setMonRes(rs.getFloat("mon_res"));
+                    monData.setMonJhCurr(rs.getFloat("mon_jh_curr"));
+                    data.getMonList().add(monData);
+                }
+                return result;
+            }
+        });
+        return list;
+    }
+    //鏌ヨ鐢垫睜缁勫瓧娈电殑寮傚姩
+    public List<ResRealDataAc> getBattPropertyChangesByRecordNum(String tableName, Date recordDatetime, Date recordDatetime1, List<Integer> allChangeNums, Map<String, List<String>> propertyInfo) {
+        String  propertyStr = propertyInfo.values().stream()
+                .flatMap(List::stream)
+                .collect(Collectors.joining(","));
+        String sql=" select  distinct record_time,record_num, "+propertyStr+
+                " from "+tableName+" where record_time>='"+ActionUtil.sdf.format(recordDatetime)+"'" +
+                "                    and record_time<='"+ActionUtil.sdf.format(recordDatetime1)+"'";
+        if (allChangeNums.size() > 0) {
+            //鍘婚櫎閲嶅椤�
+            List<Integer> uniqueList = allChangeNums.stream()
+                    .distinct()
+                    .collect(Collectors.toList());
+            //鎷兼帴鐢熸垚sql
+            String changeNumsStr = uniqueList.stream()
+                    .map(String::valueOf)
+                    .collect(Collectors.joining(","));
+            sql += " and record_num in (" + changeNumsStr + ")";
+        }
+        sql += " order by record_time asc";
+        List<ResRealDataAc> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
+            @Override
+            public List getResults(ResultSet rs) throws SQLException {
+                List<ResRealDataAc> list=new ArrayList<>();
+                while (rs.next()){
+                    ResRealDataAc data=new ResRealDataAc();
+                    data.setRecordNum(rs.getInt("record_num"));
+                    data.setRecordDatetime(rs.getTimestamp("record_time"));
+                    Map<String,Map<String,Float>>dataMap=new HashMap<>();
+                    for (Map.Entry<String, List<String>> entry : propertyInfo.entrySet()) {
+                        String key = entry.getKey();
+                        List<String> valueList = entry.getValue();
+                        Map<String,Float> propertyMap=new HashMap<>();
+                        for (String value : valueList) {
+                            Float propertyValue = rs.getFloat(value);
+                            propertyMap.put(value,propertyValue);
+                        }
+                        dataMap.put(key,propertyMap);
+                    }
+                    data.setPropertyInfo(dataMap);
+                    list.add(data);
+                }
+                return list;
+            }
+        });
+        return list;
+    }
+
+
+    //绯荤粺姒傝鑾峰彇鍓峃绗旀牳瀹硅澶囦俊鎭�
+    public List<RealDateDTO> getBattDevData100(String tableName, Integer granularity, Date recordDatetime, Date recordDatetime1,Integer maxRecordNum,Integer minRecordNum) {
+        String sql=" select record_time, group_vol, online_vol,group_curr, load_curr,record_num  " +
+                "               from "+tableName+" " +
+                "               where record_time >= '"+ThreadLocalUtil.format(recordDatetime,1)+"' " +
+                "               and record_time <= '"+ThreadLocalUtil.format(recordDatetime1,1)+"' "+
+                "               and (record_num-"+minRecordNum+")%"+granularity+"=0 or record_num="+minRecordNum+" or record_num="+maxRecordNum ;
+        List<RealDateDTO> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
+            @Override
+            public List getResults(ResultSet rs) throws SQLException {
+                List<RealDateDTO> list=new ArrayList<>();
+                while (rs.next()){
+                    RealDateDTO ph=new RealDateDTO();
+                    ph.setRecordTime(rs.getTimestamp("record_time"));
+                    ph.setGroupVol(rs.getFloat("group_vol"));
+                    ph.setOnlineVol(rs.getFloat("online_vol"));
+                    ph.setGroupCurr(rs.getFloat("group_curr"));
+                    ph.setLoadCurr(rs.getFloat("load_curr"));
+                    ph.setRecordNum(rs.getInt("record_num"));
+                    list.add(ph);
+                }
+                return list;
+            }
+        });
+        return list;
+    }
+    //鐢垫睜鏁版嵁鍘嗗彶瀹炴椂澶勭悊(棰勮鍒嗘瀽)
+    public List<ResAnalysis> getBattHisRealInAlm(BattRealdataId realdata, Map<String,Object> battMap) {
+        String result = String.join(",", battMap.keySet());
+        String sql=" select record_time,"+result+" " +
+                "               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)+"' " +
+                "               order by record_time asc,mon_num asc";
+        List<ResAnalysis> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
+            @Override
+            public List getResults(ResultSet rs) throws SQLException {
+                List<ResAnalysis> list=new ArrayList<>();
+                while (rs.next()){
+                    ResAnalysis ph=new ResAnalysis();
+                    ph.setRecordTime(rs.getTimestamp("record_time"));
+                    int i=1;
+                    for (String key : battMap.keySet()) {
+                        Integer dataType = (Integer) battMap.get(key);
+                        try {
+                            String propertyType = "dataType"+(i);
+                            Field fieldType = ResAnalysis.class.getDeclaredField(propertyType);
+                            fieldType.setAccessible(true);
+                            fieldType.set(ph,dataType);
+
+                            Float value = rs.getFloat(key);
+                            String propertyName = "dataName"+(i);
+                            Field fieldName = ResAnalysis.class.getDeclaredField(propertyName);
+                            fieldName.setAccessible(true); // 濡傛灉瀛楁鏄鏈夌殑锛岄渶瑕佽缃负鍙闂�
+                            fieldName.set(ph,key);
+
+                            String propertyValue = "dataValue"+(i);
+                            Field fieldValue = ResAnalysis.class.getDeclaredField(propertyValue);
+                            fieldValue.setAccessible(true);
+                            fieldValue.set(ph,value);
+                        } catch (NoSuchFieldException e) {
+                            e.printStackTrace();
+                        } catch (IllegalAccessException e) {
+                            e.printStackTrace();
+                        }
+                        i++;
+                    }
+                    list.add(ph);
+                }
+                return list;
+            }
+        });
+        return list;
+    }
+
+    //鐢垫簮鏁版嵁鍘嗗彶瀹炴椂澶勭悊(棰勮鍒嗘瀽)
+    public List<ResAnalysis> getPwrHisRealInAlm(PwrdevHistorydataId pwrHis, Map<String,Object> pwrMap) {
+        String result = String.join(",", pwrMap.keySet());
+        String sql=" select record_datetime,"+result+"  " +
+                "               from db_data_history.tb_pwrdev_historydata_"+pwrHis.getTableName()+" " +
+                "               where record_datetime >= '"+ThreadLocalUtil.format(pwrHis.getRecordDatetime(),1)+"' " +
+                "               and record_datetime <= '"+ThreadLocalUtil.format(pwrHis.getRecordDatetime1(),1)+"' " +
+                "               order by record_datetime asc ";
+        List<ResAnalysis> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
+            @Override
+            public List getResults(ResultSet rs) throws SQLException {
+                List<ResAnalysis> list=new ArrayList<>();
+                while (rs.next()){
+                    ResAnalysis ph=new ResAnalysis();
+                    ph.setRecordTime(rs.getTimestamp("record_datetime"));
+                    int i=1;
+                    for (String key : pwrMap.keySet()) {
+                        Integer dataType = (Integer) pwrMap.get(key);
+                        try {
+                            String propertyType = "dataType"+(i);
+                            Field fieldType = ResAnalysis.class.getDeclaredField(propertyType);
+                            fieldType.setAccessible(true);
+                            fieldType.set(ph,dataType);
+
+                            Float value = rs.getFloat(key);
+                            String propertyName = "dataName"+(i);
+                            Field fieldName = ResAnalysis.class.getDeclaredField(propertyName);
+                            fieldName.setAccessible(true); // 濡傛灉瀛楁鏄鏈夌殑锛岄渶瑕佽缃负鍙闂�
+                            fieldName.set(ph,key);
+
+                            String propertyValue = "dataValue"+(i);
+                            Field fieldValue = ResAnalysis.class.getDeclaredField(propertyValue);
+                            fieldValue.setAccessible(true);
+                            fieldValue.set(ph,value);
+                        } catch (NoSuchFieldException e) {
+                            e.printStackTrace();
+                        } catch (IllegalAccessException e) {
+                            e.printStackTrace();
+                        }
+                        i++;
+                    }
+                    list.add(ph);
+                }
+                return list;
+            }
+        });
+        return list;
+    }
+    //鑾峰彇鐢垫睜缁勬寚瀹氭椂闂存鍐呮渶澶ф渶灏弐ecordNum纭繚鏁版嵁鐨勫畬鏁�
+    public List getBattMaxAndMinRecordNum(String tableName,  Date recordDatetime, Date recordDatetime1) {
+        String sql="select max(record_num) as maxRecordNum,min(record_num) as minRecordNum " +
+                " from " + tableName+" " +
+                " where record_time >= '"+ThreadLocalUtil.format(recordDatetime,1)+"' " +
+                " and record_time <= '"+ThreadLocalUtil.format(recordDatetime1,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;
+    }
+    //鑾峰彇鐢垫簮鎸囧畾鏃堕棿娈靛唴鏈�澶ф渶灏弐ecordNum纭繚鏁版嵁鐨勫畬鏁�
+    public List getPwrMaxAndMinRecordNum(String tableName,  Date recordDatetime, Date recordDatetime1) {
+        String sql="select max(record_num) as maxRecordNum,min(record_num) as minRecordNum " +
+                " from " + tableName+" " +
+                " where record_datetime >= '"+ThreadLocalUtil.format(recordDatetime,1)+"' " +
+                " and record_datetime <= '"+ThreadLocalUtil.format(recordDatetime1,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;
+    }
+    //1.2.7浼樿壇鐢垫簮缁熻涓婁竴瀛e害鐨勭數婧愭煇涓�灞炴�у拰鍙傛暟闃堝�艰秴杩囩殑娆℃暟
+    public List<PwrdevHistorydataId> getPwrQuarter7(String tableName,List<String> propertyNameList) {
+        String result = propertyNameList.stream().collect(Collectors.joining(","));
+        String sql=" select  distinct record_datetime,"+result+" " +
+                " from "+tableName+" " ;
+        sql+=" order by record_datetime asc";
+        List<PwrdevHistorydataId> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
+            @Override
+            public List getResults(ResultSet rs) throws SQLException {
+                List<PwrdevHistorydataId> list=new ArrayList<>();
+                while (rs.next()){
+                    PwrdevHistorydataId data=new PwrdevHistorydataId();
+                    data.setRecordDatetime(rs.getTimestamp("record_datetime"));
+                    for (int i=0;i<propertyNameList.size();i++){
+                        try {
+                            Float value = rs.getFloat(propertyNameList.get(i));
+                            String propertyName = ActionUtil.toCamelCase(propertyNameList.get(i));
+                            Field fieldValue = PwrdevHistorydataId.class.getDeclaredField(propertyName);
+                            fieldValue.setAccessible(true);
+                            fieldValue.set(data,value);
+                        } catch (NoSuchFieldException e) {
+                            e.printStackTrace();
+                        } catch (IllegalAccessException e) {
+                            e.printStackTrace();
+                        }
+                    }
+                    list.add(data);
+                }
+                return list;
+            }
+        });
+        return list;
+    }
+    //鑾峰彇鍏蜂綋鐨勬斁鐢垫暟鎹�
+    public List<BatttestdataId> exportTinfDataByTestRecordCount(Integer battgroupId, Integer testRecordCount, String tableName) {
+        String sql="select distinct * from "+tableName+" "+
+                " where test_record_count="+testRecordCount;
+        sql+=" order by record_time asc";
+        List<BatttestdataId> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
+            @Override
+            public List getResults(ResultSet rs) throws SQLException {
+                List<BatttestdataId> list=new ArrayList<>();
+                while (rs.next()){
+                    BatttestdataId data=new BatttestdataId();
+                    data.setNum(rs.getInt("num"));
+                    data.setBattgroupId(rs.getInt("battgroup_id"));
+                    data.setTestRecordCount(rs.getInt("test_record_count"));
+                    data.setTestType(rs.getInt("test_type"));
+                    data.setRecordNum(rs.getInt("record_num"));
+                    data.setDataNew(rs.getInt("data_new"));
+                    data.setDataAvailable(rs.getInt("data_available"));
+                    data.setTestTimelong(rs.getInt("test_timelong"));
+                    data.setTestCurr(rs.getFloat("test_curr"));
+                    data.setTestCap(rs.getFloat("test_cap"));
+                    data.setMonNum(rs.getInt("mon_num"));
+                    data.setMonVol(rs.getFloat("mon_vol"));
+                    data.setMonTmp(rs.getFloat("mon_tmp"));
+                    data.setMonRes(rs.getFloat("mon_res"));
+                    data.setTestStarttime(rs.getTimestamp("test_starttime"));
+                    data.setRecordTime(rs.getTimestamp("record_time"));
+                    data.setGroupVol(rs.getFloat("group_vol"));
+                    data.setOnlineVol(rs.getFloat("online_vol"));
+                    list.add(data);
+                }
+                return list;
+            }
+        });
+        return list;
+    }
+
 }

--
Gitblit v1.9.1