package com.whyc.service; 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; import org.springframework.stereotype.Service; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; @Service public class SubTableService { @Autowired private MybatisSqlExecuteService sqlExecuteService; //根据充放电记录查询单体放电历史详情 public List getTDataHis(int binfId, int testRecordCount) { String sql="select * from db_dis_batt.batt_test_inf_"+binfId+" " + " where binf_id="+binfId+" " + " and test_record_count="+testRecordCount+ " order by test_starttime asc "; List list=sqlExecuteService.executeQuery_call(sql, new CallBack() { @Override public List getResults(ResultSet rs) throws SQLException { List list=new ArrayList(); while (rs.next()){ BattTestInfData data=new BattTestInfData(); data.setNum(rs.getInt("num")); data.setBinfId(rs.getInt("binf_id")); data.setTestRecordCount(rs.getInt("test_record_count")); data.setTestStarttime(rs.getTimestamp("test_starttime")); data.setRecordTime(rs.getTimestamp("record_time")); data.setTestType(rs.getInt("test_type")); data.setRecordNum(rs.getInt("record_num")); 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); } return list; } }); 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() ; if(battAlarmHistory.getAlmStartTime()!=null){ sql+=" and alm_start_time >='"+ ThreadLocalUtil.format(battAlarmHistory.getAlmStartTime(),1)+"' "; } if(battAlarmHistory.getAlmEndTime()!=null){ sql+=" and alm_start_time <='"+ThreadLocalUtil.format(battAlarmHistory.getAlmEndTime(),1)+"' "; } List list = sqlExecuteService.executeQuery_call(sql, new CallBack() { @Override public List getResults(ResultSet rs) throws SQLException { LinkedList 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 getBattHisList(BattAlarmHistory battAlarmHistory) { String sql="SELECT * FROM db_alarm."+ battAlarmHistory.getRecordYear()+" history " + " where history.binf_id="+ battAlarmHistory.getBinfId() ; if(battAlarmHistory.getAlmStartTime()!=null){ sql+=" and alm_start_time >='"+ ThreadLocalUtil.format(battAlarmHistory.getAlmStartTime(),1)+"' "; } if(battAlarmHistory.getAlmEndTime()!=null){ sql+=" and alm_start_time <='"+ThreadLocalUtil.format(battAlarmHistory.getAlmEndTime(),1)+"' "; } sql+=" ORDER BY alm_start_time asc limit "+ battAlarmHistory.getLimitStart()+","+ battAlarmHistory.getLimitEnd()+" "; List list=sqlExecuteService.executeQuery_call(sql, new CallBack() { @Override public List getResults(ResultSet rs) throws SQLException { List list=new ArrayList(); while (rs.next()){ BattAlarmHistory data=new BattAlarmHistory(); data.setNum(rs.getInt("num")); data.setBinfId(rs.getInt("binf_id")); data.setAlmStartTime(rs.getTimestamp("alm_start_time")); data.setAlmEndTime(rs.getTimestamp("alm_end_time")); data.setMonNum(rs.getInt("mon_num")); data.setAlmId(rs.getInt("alm_id")); data.setAlmLevel(rs.getInt("alm_level")); 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 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 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 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; } }); return list; } //取该单体最后一笔放电记录 public BattTestInfData getMonNumData(int binfId, Integer testRecordCount, Integer recordNum, int monNum) { String sql="select * from db_dis_batt.batt_test_inf_"+binfId+" " + " where binf_id="+binfId+" " + " and test_record_count="+testRecordCount+ " and record_num="+recordNum+ " and mon_num="+monNum; List list=sqlExecuteService.executeQuery_call(sql, new CallBack() { @Override public List getResults(ResultSet rs) throws SQLException { List list=new ArrayList(); while (rs.next()){ BattTestInfData data=new BattTestInfData(); data.setNum(rs.getInt("num")); data.setBinfId(rs.getInt("binf_id")); data.setTestRecordCount(rs.getInt("test_record_count")); data.setTestStarttime(rs.getTimestamp("test_starttime")); data.setRecordTime(rs.getTimestamp("record_time")); data.setTestType(rs.getInt("test_type")); data.setRecordNum(rs.getInt("record_num")); 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); } return list; } }); return list.stream().findFirst().orElse((BattTestInfData) ActionUtil.objeNull); } }