whyclxw
2025-05-28 e16302f9d475c7cc4dd18c5abf1a23cb5502e362
src/main/java/com/whyc/service/SubTablePageInfoService.java
@@ -1,10 +1,8 @@
package com.whyc.service;
import com.whyc.dto.InterfaceParam;
import com.whyc.dto.ReportBattDTO;
import com.whyc.dto.StandardFeatureCurve;
import com.whyc.dto.UpsAlarmDTO;
import com.whyc.dto.*;
import com.whyc.dto.paramter.AlarmPar;
import com.whyc.dto.paramter.AnalysisDto;
import com.whyc.dto.paramter.DevAlarmPar;
import com.whyc.dto.result.AlarmRes;
import com.whyc.dto.result.RealDateDTO;
@@ -1231,7 +1229,7 @@
                "            db_user.tb_user_battgroup_baojigroup_usr.baoji_group_id=db_user.tb_user_battgroup_baojigroup_battgroup.baoji_group_id  " +
                "            and db_user.tb_user_inf.uid=db_user.tb_user_battgroup_baojigroup_usr.uid and db_user.tb_user_inf.uid="+param.getUId()+"  " +
                "            )";
        sql+="   order by history.BattGroupId asc,history.alm_start_time desc,history.monnum asc limit "+param.getLimitStart()+","+param.getLimitEnd()+" ";
        sql+="   order by history.alm_start_time desc,history.BattGroupId asc,history.monnum asc limit "+param.getLimitStart()+","+param.getLimitEnd()+" ";
        List<AlarmRes> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
            @Override
@@ -3696,6 +3694,7 @@
                            data.setGroupVol(rs.getFloat("group_vol"));
                            data.setTestCap(rs.getFloat("test_cap"));
                            data.setGroupCurr(rs.getFloat("test_curr"));
                            data.setRecordNum(recordNum);
                            num=recordNum;
                        }
                        monVols.add(monvol);
@@ -3724,7 +3723,8 @@
                    + "record_num,"
                    + "record_time,"
                    + "mon_num,"
                    + "mon_vol"
                    + "mon_vol,"
                    + "flag"
                    + ") "
                    + " values ";
            for (int i=0;i<idList.size();i++) {
@@ -3738,7 +3738,8 @@
                        + ays.getRecordNum()+","
                        + "'"+ays.getRecordTime()+"',"
                        + ays.getMonNum()+","
                        + ays.getMonVol()+""
                        + ays.getMonVol()+","
                        + 1+""
                        + ")";//如果对应是字符几个带上单引号
            }
            sql_str.add(insertSql);
@@ -3806,6 +3807,54 @@
        }
        return sum;
    }
    //检测书否存在补充的数据
    public int getAnaysisSupplement(int battGroupId, int testRecordCount) {
        String sql="  SELECT  count(*) as supple FROM db_analysis.tb_analysis_"+battGroupId+
                "        WHERE flag=0 and test_record_count = " +testRecordCount;
        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("supple"));
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                return temp;
            }
        });
        int supple =0;
        if(list!=null){
            supple= (int) list.get(0);
        }
        return supple;
    }
    //检测书否存在补充的数据
    public int getAnaysisNum(int battGroupId, int testRecordCount) {
        String sql="  SELECT  count(DISTINCT mon_num) as anaNum FROM db_analysis.tb_analysis_"+battGroupId+
                "        WHERE flag=1 and test_record_count = " +testRecordCount;
        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("anaNum"));
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                return temp;
            }
        });
        int anaNum =0;
        if(list!=null){
            anaNum= (int) list.get(0);
        }
        return anaNum;
    }
    //创建clear
    public void creatAnasys(int battGroupId) {
@@ -3817,13 +3866,14 @@
                "  `group_vol` float not NULL DEFAULT 0," +
                "  `mon_num` int  not NULL DEFAULT 0," +
                "  `mon_vol` float  not NULL DEFAULT 0," +
                "  `flag` int  not NULL DEFAULT 0," +
                "  PRIMARY KEY (`num`)" +
                ") ENGINE=InnoDB AUTO_INCREMENT=1 ";
        sqlExecuteService.execute(sql);
    }
    //查询预估数据
    public List<AnaylsisId> getAnaysisXls(int battGroupId, int testRecordCount) {
        String sql="  SELECT  distinct  num,test_record_count,record_num,record_time,group_vol,mon_vol,mon_num FROM db_analysis.tb_analysis_"+battGroupId+
        String sql="  SELECT  distinct  num,test_record_count,record_num,record_time,group_vol,mon_vol,mon_num,flag FROM db_analysis.tb_analysis_"+battGroupId+
                "        WHERE test_record_count = " +testRecordCount+
                "        order by test_record_count asc ,record_num asc ,mon_num ASC ";
        List<AnaylsisId> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
@@ -3840,6 +3890,7 @@
                        idData.setGroupVol(rs.getFloat("group_vol"));
                        idData.setMonNum(rs.getInt("mon_num"));
                        idData.setMonVol(rs.getFloat("mon_vol"));
                        idData.setFlag(rs.getInt("flag"));
                        list.add(idData);
                    }
                } catch (SQLException e) {
@@ -3850,4 +3901,334 @@
        });
        return list;
    }
    //补前面的数据
    public void insertBeforeData(int battGroupId, int testRecordCount, List<AnaysisData> list) {
        ArrayList  sql_str=new ArrayList();
        String tableName="db_analysis."+"tb_analysis_"+battGroupId;
        //检测表是否存在
        if(list!=null){
            String insertSql="insert into "+tableName+" "
                    + "("
                    + "test_record_count,"
                    + "record_num,"
                    + "record_time,"
                    + "group_vol,"
                    + "mon_num,"
                    + "mon_vol,"
                    + "flag"
                    + ") "
                    + " values ";
            for (int i=0;i<list.size();i++) {
                AnaysisData ays=list.get(i);
                List monVols=ays.getMonVols();
                for (int j=0;j<monVols.size();j++) {
                    if(!(i==0&&j==0)){
                        insertSql+=" ,  ";
                    }
                    String volSql="("
                            + testRecordCount+","
                            + ays.getRecordNum()+","
                            + "'"+ays.getRecordTime()+"',"
                            + ays.getGroupVol()+","
                            + (j+1)+","
                            + monVols.get(j)+","
                            + 0+""
                            + ")";//如果对应是字符几个带上单引号
                    insertSql+=volSql;
                }
            }
            sql_str.add(insertSql);
        }
        sqlExecuteService.makeManualCommit(sql_str);
    }
    //2.将数据插入电池组数据
    public void insertAnaysisXlsToTdata(int battGroupId, int testRecordCount, List<XlsToTdata> list) {
        ArrayList  sql_str=new ArrayList();
        String tableName="db_batt_testdata."+"tb_batttestdata_"+battGroupId;
        //检测表是否存在
        if(list!=null){
            String insertSql="insert into "+tableName+" "
                    + "("
                    + "BattGroupId,"
                    + "test_record_count,"
                    + "record_num,"
                    + "record_time,"
                    + "test_starttime,"
                    + "test_timelong,"
                    + "group_vol,"
                    + "test_curr,"
                    + "test_cap,"
                    + "mon_num,"
                    + "mon_vol,"
                    + "test_type,"
                    + "data_new,"
                    + "data_available"
                    + ") "
                    + " values ";
            for (int i=0;i<list.size();i++) {
                XlsToTdata tdata=list.get(i);
                List monVols=tdata.getMonVols();
                for (int j=0;j<monVols.size();j++) {
                    if(!(i==0&&j==0)){
                        insertSql+=" ,  ";
                    }
                    String volSql="("
                            + battGroupId+","
                            + testRecordCount+","
                            + (i+1)+","
                            + "'"+tdata.getRecordTime()+"',"
                            + "'"+ActionUtil.sdf.format(new Date())+"',"
                            + tdata.getTestTimelong()+","
                            + tdata.getGroupVol()+","
                            + tdata.getGroupCurr()+","
                            + tdata.getTestCap()+","
                            + (j+1)+","
                            + monVols.get(j)+","
                            + 3+","
                            + 1+","
                            + 1+""
                            + ")";//如果对应是字符几个带上单引号
                    insertSql+=volSql;
                }
            }
            sql_str.add(insertSql);
        }
        sqlExecuteService.makeManualCommit(sql_str);
    }
    //预估
    public List<PredictDataId> getPredictDataId(int battGroupId, int testRecordCount) {
        String sql="  SELECT  distinct  * FROM db_batt_testdata.tb_batttestdata_"+battGroupId+
                "        WHERE test_record_count = " +testRecordCount+
                "        order by record_num asc,mon_num asc ";
        List<PredictDataId> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
            @Override
            public List getResults(ResultSet rs) throws SQLException {
                List list=new ArrayList<>();
                try {
                    while (rs.next()){
                        PredictDataId data=new PredictDataId();
                        data.setBattGroupId(rs.getInt("BattGroupId"));
                        data.setTestRecordCount(rs.getInt("test_record_count"));
                        data.setTestCap(rs.getFloat("test_type"));
                        data.setDataNew(rs.getInt("data_new"));
                        data.setDataAvailable(rs.getInt("data_available"));
                        data.setRecordNum(rs.getInt("record_num"));
                        data.setTestStarttime(rs.getTimestamp("test_starttime"));
                        data.setRecordTime(rs.getTimestamp("record_time"));
                        data.setTestTimelong(rs.getInt("test_timelong"));
                        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.setMonTmp(rs.getFloat("mon_tmp"));
                        list.add(data);
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                return list;
            }
        });
        return list;
    }
    //2.取出最后一笔数据
    public List<PredictDataId> getPredictDataIdLast(int battGroupId, int testRecordCount, int maxRecordNum) {
        String sql="  SELECT  distinct  * FROM db_batt_testdata.tb_batttestdata_"+battGroupId+
            "        WHERE test_record_count = " +testRecordCount+" and record_num="+maxRecordNum+
            "        order by record_num asc,mon_num asc ";
        List<PredictDataId> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
            @Override
            public List getResults(ResultSet rs) throws SQLException {
                List list=new ArrayList<>();
                try {
                    while (rs.next()){
                        PredictDataId data=new PredictDataId();
                        data.setBattGroupId(rs.getInt("BattGroupId"));
                        data.setTestRecordCount(rs.getInt("test_record_count"));
                        data.setTestType(rs.getInt("test_type"));
                        data.setDataNew(rs.getInt("data_new"));
                        data.setDataAvailable(rs.getInt("data_available"));
                        data.setRecordNum(rs.getInt("record_num"));
                        data.setTestStarttime(rs.getTimestamp("test_starttime"));
                        data.setRecordTime(rs.getTimestamp("record_time"));
                        data.setTestTimelong(rs.getInt("test_timelong"));
                        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.setMonTmp(rs.getFloat("mon_tmp"));
                        list.add(data);
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                return list;
            }
        });
        return list;
    }
    //3.取出预估对象的maxRecordNum之后的数据
    public List<PredictDataId> getPredictDataIdAgain(int battGroupId, int testRecordCount, int maxRecordNum) {
        String sql="  SELECT  distinct  * FROM db_batt_testdata.tb_batttestdata_"+battGroupId+
                "        WHERE test_record_count = " +testRecordCount+" and record_num>="+maxRecordNum+
                "        order by record_num asc,mon_num asc ";
        List<PredictDataId> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
            @Override
            public List getResults(ResultSet rs) throws SQLException {
                List list=new ArrayList<>();
                try {
                    while (rs.next()){
                        PredictDataId data=new PredictDataId();
                        data.setBattGroupId(rs.getInt("BattGroupId"));
                        data.setTestRecordCount(rs.getInt("test_record_count"));
                        data.setTestType(rs.getInt("test_type"));
                        data.setDataNew(rs.getInt("data_new"));
                        data.setDataAvailable(rs.getInt("data_available"));
                        data.setRecordNum(rs.getInt("record_num"));
                        data.setTestStarttime(rs.getTimestamp("test_starttime"));
                        data.setRecordTime(rs.getTimestamp("record_time"));
                        data.setTestTimelong(rs.getInt("test_timelong"));
                        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.setMonTmp(rs.getFloat("mon_tmp"));
                        list.add(data);
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                return list;
            }
        });
        return list;
    }
    //将数据插入id表
    public void addPredictDataId(int battGroupId, int testRecordCount2, List<PredictDataId> list2, List<PredictDataId> list1, Map<Integer,PredictDataId> mapDifference) {
        ArrayList  sql_str=new ArrayList();
        String tableName="db_batt_testdata."+"tb_batttestdata_"+battGroupId;
        //先插入2
        if(list2!=null){
            String insertSql2="insert into "+tableName+" "
                    + "("
                    + "BattGroupId,"
                    + "test_record_count,"
                    + "test_type,"
                    + "data_new,"
                    + "data_available,"
                    + "record_num,"
                    + "test_starttime,"
                    + "record_time,"
                    + "test_timelong,"
                    + "online_vol,"
                    + "group_vol,"
                    + "test_curr,"
                    + "test_cap,"
                    + "mon_num,"
                    + "mon_vol,"
                    + "mon_tmp"
                    + ") "
                    + " values ";
            for (int i=0;i<list2.size();i++) {
                PredictDataId data2=list2.get(i);
                    String sql2="("
                            +battGroupId+","
                            + data2.getTestRecordCount()+","
                            + data2.getTestType()+","
                            + data2.getDataNew()+","
                            + data2.getDataAvailable()+","
                            + data2.getRecordNum()+1+","
                            + "'"+ActionUtil.sdf.format(data2.getTestStarttime())+"',"
                            + "'"+ActionUtil.sdf.format(data2.getRecordTime())+"',"
                            + data2.getTestTimelong()+","
                            + data2.getOnlineVol()+","
                            + data2.getGroupVol()+","
                            + data2.getTestCurr()+","
                            + data2.getTestCap()+","
                            + data2.getMonNum()+","
                            + data2.getMonVol()+","
                            + data2.getMonTmp()+""
                            + ")";//如果对应是字符几个带上单引号
                    insertSql2+=sql2;
            }
            sql_str.add(insertSql2);
        }
        //再插入1
        if(list1!=null){
            String insertSql1="insert into "+tableName+" "
                    + "("
                    + "BattGroupId,"
                    + "test_record_count,"
                    + "test_type,"
                    + "data_new,"
                    + "data_available,"
                    + "record_num,"
                    + "test_starttime,"
                    + "record_time,"
                    + "test_timelong,"
                    + "online_vol,"
                    + "group_vol,"
                    + "test_curr,"
                    + "test_cap,"
                    + "mon_num,"
                    + "mon_vol,"
                    + "mon_tmp"
                    + ") "
                    + " values ";
            for (int i=0;i<list1.size();i++) {
                PredictDataId data1=list1.get(i);
                String sql1="("
                        +battGroupId+","
                        + data1.getTestRecordCount()+","
                        + data1.getTestType()+","
                        + data1.getDataNew()+","
                        + data1.getDataAvailable()+","
                        + data1.getRecordNum()+","
                        + "'"+ActionUtil.sdf.format(data1.getTestStarttime())+"',"
                        + "'"+ActionUtil.sdf.format(data1.getRecordTime())+"',"
                        + data1.getTestTimelong()+mapDifference.get(data1.getMonNum()).getTestTimelong()+","
                        + data1.getOnlineVol()+","
                        + data1.getGroupVol()+","
                        + data1.getTestCurr()+mapDifference.get(data1.getMonNum()).getTestCurr()+","
                        + data1.getTestCap()+mapDifference.get(data1.getMonNum()).getTestCap()+","
                        + data1.getMonNum()+","
                        + data1.getMonVol()+mapDifference.get(data1.getMonNum()).getMonVol()+","
                        + data1.getMonTmp()+mapDifference.get(data1.getMonNum()).getMonTmp()+""
                        + ")";//如果对应是字符几个带上单引号
                insertSql1+=sql1;
            }
            sql_str.add(insertSql1);
        }
        sqlExecuteService.makeManualCommit(sql_str);
    }
    //获取当前天平均负载电流
    public Float getAvgLoadCurr(Integer powerId, String tableName) {
        String sql="  select avg(load_curr) as avgCurr from "+tableName +" where DATE(record_time) = CURDATE() ";
        List<Float> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
            @Override
            public List getResults(ResultSet rs) throws SQLException {
                List list=new ArrayList<>();
                try {
                    while (rs.next()){
                        list.add(rs.getFloat("avgCurr"));
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                return list;
            }
        });
        float avgCurr=0f;
        if (list!=null){
            avgCurr=list.get(0);
        }
        return avgCurr;
    }
}