package com.fgkj.dao.impl; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import com.fgkj.actions.ActionUtil; import com.fgkj.dao.AlarmDaoFactory; import com.fgkj.dao.BaseDAO; import com.fgkj.dao.CallBack; import com.fgkj.dao.DAOHelper; import com.fgkj.dao.LimitNumberFactory; import com.fgkj.db.DBUtil; import com.fgkj.dto.BattInf; import com.fgkj.dto.Batt_Maint_Dealarm; import com.fgkj.dto.Batt_maint_inf; import com.fgkj.dto.Battalarm_data; import com.fgkj.dto.Battalarm_data_history; import com.fgkj.dto.Batttestdata_inf; import com.fgkj.dto.Page; import com.fgkj.dto.User_inf; public class Battalarm_data_historyImpl implements BaseDAO,CallBack{ public List getResults(ResultSet rs) { // TODO Auto-generated method stub return null; } public boolean add(Object obj) { // TODO Auto-generated method stub return false; } public boolean update(Object obj) { // TODO Auto-generated method stub return false; } public boolean del(Object obj) { // TODO Auto-generated method stub return false; } //3.2电池告警查询(删除记录)<多条记录删除> public String delPro(Object obj){ Battalarm_data_history adata_h = (Battalarm_data_history) obj; String sql = "delete from db_alarm.tb_battalarm_data_history where num="+adata_h.getNum(); return sql; } public List searchAll() { // TODO Auto-generated method stub return null; } public List serchByCondition(Object obj) { // TODO Auto-generated method stub return null; } // 3.2电池告警 /* * 条件所存放的位置前台:tb_batt_maint_inf * 在线电压:usr_id 119001 * 组端电压:fault_type_id 119002 * 充电电流:fault_level 119003 * 放电电流:record_uid 119004 * 单体电压:maint_type_id 119005 * 单体温度:maint_done 119006 * 单体内阻:maint_close 119007 * 连接条阻抗:master_id 119008 * -----alarm_data * MonNum 容量告警告警 *Record_Id 容量更换告警 * 告警等级 * 一级告警:num * 二级告警:battgroupid * 三级告警:master_audit * 四级告警:appoint-uid * * * 下限告警/上限告警 alarm_data * alm_signal_id:为奇数--上限告警(alm_id) 选中1 未选中100 * alm_signal_id:为偶数--下限告警 (alm_signal_id) 选中0 未选中100 * * 告警状态alm_cleared_type; * 当前告警:选中0 * 历史告警:选中1 * 两者告警:选中100 * 全都不选:不选200 */ public List serchByInfo(Object obj) { Batt_Maint_Dealarm bmd = (Batt_Maint_Dealarm) obj; BattInf binf=bmd.getBinf(); Batttestdata_inf tdata=bmd.getTdata(); Battalarm_data_history adata_H = bmd.getAdata_H(); Batt_maint_inf mainf = bmd.getMainf(); User_inf uinf=bmd.getUinf(); String sql=""; String numberSql="SELECT FOUND_ROWS() number";//存放总数 Connection conn=DBUtil.getConn();//sql和numberSql共用一个connection String baseSql = "select SQL_CALC_FOUND_ROWS distinct(db_alarm.tb_battalarm_data_history.BattGroupId),db_alarm.tb_battalarm_data_history.num,alm_signal_id,db_alarm.tb_battalarm_data_history.monnum,alm_value,alm_level,alm_is_confirmed,alm_confirmed_time,alm_start_time,alm_end_time, " + " stationname,stationname5,battgroupname" + " from db_alarm.tb_battalarm_data_history,db_battinf.tb_battinf " + " where alm_id in(?,?,?,?,?,?) and alm_signal_id%2 in(?,?) " + " and alm_level in(?,?,?,?) " + " and alm_start_time>=? and alm_start_time<=? " + " and db_battinf.tb_battinf.stationname1 like ? and db_battinf.tb_battinf.stationname like ? and db_battinf.tb_battinf.stationname2 like ? and db_battinf.tb_battinf.stationname5 like ? "; /*//用于实时告警 String almSqlT="and alm_cleared_type=? "; //历史告警 String almSqlF="and alm_cleared_type in(?,1,2) "; //两者均包含 String almSqlA="and alm_cleared_type in(?,0,1,2) "; if(adata_H.getAlm_cleared_type()==0){ baseSql+=almSqlT; }else if(adata_H.getAlm_cleared_type()==1){ baseSql+=almSqlF; }else if(adata_H.getAlm_cleared_type()==100){ baseSql+=almSqlA; }else if(adata_H.getAlm_cleared_type()==200){ baseSql+=almSqlT; }*/ //用于电池组条件 String idSqlT=" and db_battinf.tb_battinf.battgroupid!=? and db_alarm.tb_battalarm_data_history.battgroupid=db_battinf.tb_battinf.battgroupid ";//全部 String idSqlF=" and db_battinf.tb_battinf.battgroupid=? and db_alarm.tb_battalarm_data_history.battgroupid=db_battinf.tb_battinf.battgroupid "; if(binf.getBattGroupId()==0){ baseSql+=idSqlT; }else{ baseSql+=idSqlF; } //用于用户管理的电池组的筛选 String userSql=" and db_alarm.tb_battalarm_data_history.BattGroupId in(select distinct db_battinf.tb_battinf.battgroupid " + " from db_battinf.tb_battinf,db_user.tb_user_battgroup_baojigroup_battgroup,db_user.tb_user_battgroup_baojigroup_usr,db_user.tb_user_inf " + " where db_user.tb_user_battgroup_baojigroup_battgroup.BattGroupId=db_battinf.tb_battinf.BattGroupId " + " and 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=? )"; baseSql+=userSql; String endSql="order by db_alarm.tb_battalarm_data_history.alm_start_time desc,db_alarm.tb_battalarm_data_history.monnum asc "; String limitSql=" limit ?,? "; sql=baseSql+endSql+limitSql; //System.out.println(sql); List list= DAOHelper.executeQueryLimit(sql,conn, new Object[] { mainf.getFault_type_id(), mainf.getFault_level(), mainf.getRecord_uid(), mainf.getMaint_type_id(), mainf.getMaint_done(), mainf.getMaint_close(), adata_H.getAlm_id(), adata_H.getAlm_signal_id(), mainf.getNum(), mainf.getBattGroupId(), mainf.getMaster_audit(), mainf.getAppoint_uid(), adata_H.getAlm_start_time(), adata_H.getAlm_start_time1(), "%"+binf.getStationName1()+"%", "%"+binf.getStationName()+"%", "%"+binf.getStationName2()+"%", "%"+binf.getStationName5()+"%", //adata_H.getAlm_cleared_type(), binf.getBattGroupId(), uinf.getUId(), (bmd.getPage().getPageCurr() - 1)* bmd.getPage().getPageSize(), bmd.getPage().getPageSize()}, new CallBack() { public List getResults(ResultSet rs) { List list = new ArrayList(); try { while (rs.next()) { String name="未知"; //存放告警名称 String type="未知"; //存放告警等级 Batt_Maint_Dealarm bmd = new Batt_Maint_Dealarm(); BattInf binf = new BattInf(); binf.setStationName(rs.getString("stationName")); binf.setStationName5(rs.getString("stationName5")); binf.setBattGroupName(rs.getString("battGroupName")); Battalarm_data_history adata_H = new Battalarm_data_history(); adata_H.setNum(rs.getInt("num")); adata_H.setBattGroupId(rs.getInt("battGroupId")); adata_H.setAlm_signal_id(rs.getInt("alm_signal_id")); adata_H.setMonNum(rs.getInt("monNum")); adata_H.setAlm_value(rs.getFloat("alm_value")); adata_H.setAlm_level(rs.getInt("alm_level")); adata_H.setAlm_is_confirmed(rs.getInt("alm_is_confirmed")); adata_H.setAlm_confirmed_time(rs.getTimestamp("alm_confirmed_time")); adata_H.setAlm_start_time(rs.getTimestamp("alm_start_time")); adata_H.setAlm_end_time(rs.getTimestamp("alm_end_time")); //battinf中的StationName8,StationName9存放告警名称和等级 name=AlarmDaoFactory.getAlarmName(adata_H.getAlm_signal_id()); type=AlarmDaoFactory.getAlarmType(adata_H.getAlm_level()); binf.setStationName8(name); binf.setStationName9(type); Page page = new Page(); bmd.setBinf(binf); bmd.setAdata_H(adata_H); bmd.setPage(page); list.add(bmd); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return list; } }); //去掉limit条件后的总数 int number=LimitNumberFactory.GetLimtitNumber(conn, numberSql); //System.out.println("number: "+number); if(list!=null&&list.size()>0){ list.get(list.size()-1).getPage().setPageAll(number); } return list; } public static void main(String[] args) throws ParseException { Battalarm_data_historyImpl bimpl=new Battalarm_data_historyImpl(); Page p = new Page(); p.setPageCurr(1); p.setPageSize(10); /*条件所存放的位置前台:tb_batt_maint_inf * 在线电压:usr_id * 组端电压:fault_type_id * 充电电流:fault_level * 放电电流:record_uid * 单体电压:maint_type_id * 单体温度:maint_done * 单体内阻:maint_close * 连接条阻抗:master_id * */ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date1 = sdf.parse("2000-01-01"); Date date2 = sdf.parse("2020-01-01"); Batt_maint_inf mainf=new Batt_maint_inf(); mainf.setUsr_id(119001); mainf.setFault_type_id(119002); mainf.setFault_level(119003); mainf.setRecord_uid(119004); mainf.setMaint_type_id(119005); mainf.setMaint_done(119006); mainf.setMaint_close(119007); mainf.setMaster_id(119008); mainf.setNum(1); mainf.setBattGroupId(2); mainf.setMaster_audit(3); mainf.setAppoint_uid(4); Battalarm_data_history adata = new Battalarm_data_history(); adata.setAlm_id(0); //下限告警未选中 adata.setAlm_signal_id(1); //上限告警选中 adata.setAlm_cleared_type(100); adata.setAlm_start_time(ActionUtil.getSimpDate(date1)); adata.setAlm_start_time1(ActionUtil.getSimpDate(date2)); BattInf binf = new BattInf(); binf.setStationName(""); binf.setStationName1(""); binf.setBattGroupId(0); User_inf uinf=new User_inf(); uinf.setUId(1002); Batt_Maint_Dealarm bmd = new Batt_Maint_Dealarm(); bmd.setPage(p); bmd.setAdata_H(adata); bmd.setMainf(mainf); bmd.setBinf(binf); bmd.setUinf(uinf); List list=bimpl.serchByInfo(bmd); for (Batt_Maint_Dealarm b : list) { System.out.println(b.getPage()); } } }