package com.fgkj.dao.impl.ram; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import com.fgkj.dao.BaseDAO; import com.fgkj.dao.CallBack; import com.fgkj.dao.DAOHelper; import com.fgkj.dao.FBS9100_ComBase; import com.fgkj.dao.LimitNumberFactory; import com.fgkj.dao.UinfDaoFactory; import com.fgkj.db.DBUtil; import com.fgkj.db.IDatabaseName; import com.fgkj.dto.BattInf; import com.fgkj.dto.Page; import com.fgkj.dto.User; import com.fgkj.dto.User_inf; import com.fgkj.dto.User_log; import com.fgkj.dto.ram.FBS9100; import com.fgkj.dto.ram.Fbs9100_setparam; import com.fgkj.dto.ram.Fbs9100_state; import com.fgkj.dto.ram.Fbs9600_state; import com.fgkj.services.User_logService; public class Fbs9600_stateImpl implements BaseDAO,CallBack{ public List getResults(ResultSet rs) { List list=new ArrayList(); try { while(rs.next()){ Fbs9600_state fstate=new Fbs9600_state(); fstate.setNum(rs.getInt("num")); fstate.setDev_ip(rs.getString("dev_ip")); fstate.setDev_id(rs.getInt("dev_id")); fstate.setOp_cmd(rs.getInt("op_cmd")); fstate.setDev_workstate(rs.getInt("dev_workstate")); fstate.setDev_alarmstate(rs.getInt("dev_alarmstate")); fstate.setDev_commcount(rs.getInt("dev_commcount")); fstate.setDev_errcommcount(rs.getInt("dev_errcommcount")); list.add(fstate); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return list; } public boolean add(Object obj) { Fbs9600_state fs=(Fbs9600_state) obj; String sql="insert into db_ram_db.tb_Fbs9600_state(dev_ip,dev_id,op_cmd,dev_workstate,dev_alarmstate,dev_commcount," + "dev_errcommcount) values(?,?,?,?,?,?,?)"; Boolean bl=DAOHelper.executeUpdate(DBUtil.getConn(), sql, new Object[]{fs.getDev_ip(),fs.getDev_id(), fs.getOp_cmd(),fs.getDev_workstate(),fs.getDev_alarmstate(),fs.getDev_commcount(),fs.getDev_errcommcount()}); return bl; } //fbs显示屏启动放电 public boolean update(Object obj) { Fbs9600_state fs=(Fbs9600_state) obj; String sql="update db_ram_db.tb_Fbs9600_state set op_cmd=? " + " where dev_id=?"; Boolean bl=DAOHelper.executeUpdate(DBUtil.getConn(), sql, new Object[]{ fs.getOp_cmd(),fs.getDev_id()}); return bl; } //fbs9600设备内阻测试 public boolean updatePro(Object obj) { List list=(List) obj; ArrayList sql_str=new ArrayList(); List listU=new ArrayList();//存放user_log for (Fbs9600_state fstate : list) { if(fstate.getOp_cmd()==FBS9100_ComBase.CMD_9600_Start){ String sql="update db_ram_db.tb_Fbs9600_state set op_cmd="+fstate.getOp_cmd()+" " + " where dev_id="+fstate.getDev_id(); sql_str.add(sql); } { String msg="启动"+fstate.getDev_id()+"的设备内阻测试"; User_log ulog=UinfDaoFactory.CreateULog(UinfDaoFactory.Increase, msg); listU.add(ulog); } } boolean bl=DAOHelper.makeManualCommit(DBUtil.getConn(), sql_str); (new User_logService()).addPro(listU);//将用户的操作记录下来 return bl; } public boolean del(Object obj) { Fbs9600_state fs=(Fbs9600_state) obj; String sql="delete from db_ram_db.tb_Fbs9600_state where num=?"; Boolean bl=DAOHelper.executeUpdate(DBUtil.getConn(), sql, new Object[]{fs.getNum()}); return bl; } //FBS9600设备内阻测试显示全部9600设备的信息 public List searchByUid(Object obj) { User_inf uinf=(User_inf) obj; String sql=""; String baseSql="select distinct tb_Fbs9600_state.num,dev_ip,dev_id,op_cmd,dev_workstate,dev_alarmstate,dev_commcount,dev_errcommcount, " + " db_battinf.tb_battinf.StationName,db_battinf.tb_battinf.FbsDeviceName " + " from db_ram_db.tb_Fbs9600_state " + " left outer join db_battinf.tb_battinf ON tb_fbs9600_state.dev_id=db_battinf.tb_battinf.FBSDeviceId " + " where tb_fbs9600_state.dev_id in(select distinct db_battinf.tb_battinf.FBSDeviceId " + " 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=? ) "; String F9600sql=" and tb_fbs9600_state.dev_id like '%9600%'";//支持9600设备 String F9616sql=" or tb_fbs9600_state.dev_id like '%9616%'";//支持9600设备 sql=baseSql+F9600sql+F9616sql; //System.out.println(sql); List list=DAOHelper.executeQuery(sql, DBUtil.getConn(), new Object[]{uinf.getUId()}, new CallBack() { public List getResults(ResultSet rs) { List list=new ArrayList(); try { while(rs.next()){ Fbs9600_state fstate=new Fbs9600_state(); fstate.setNum(rs.getInt("num")); fstate.setDev_ip(rs.getString("dev_ip")); fstate.setDev_id(rs.getInt("dev_id")); fstate.setOp_cmd(rs.getInt("op_cmd")); fstate.setDev_workstate(rs.getInt("dev_workstate")); fstate.setDev_alarmstate(rs.getInt("dev_alarmstate")); fstate.setDev_commcount(rs.getInt("dev_commcount")); fstate.setDev_errcommcount(rs.getInt("dev_errcommcount")); fstate.setStationName(rs.getString("stationName")); fstate.setDeviceName("FBS9600"); list.add(fstate); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return list; } }); return list; } //11.1FBS9100设备通信状态查询 /* * fbs9100:op_cmd:0:全部;1:fbs9100,2:fbs9600 * dev_errcommcount;0:通讯正常,1:通讯中断,100:全部*/ public List serchByCondition(Object obj) { Fbs9600_state fs=(Fbs9600_state) obj; Page page=fs.getPage(); Connection conn=DBUtil.getConn(); String numberSql=" SELECT FOUND_ROWS() number"; String sql=""; String baseSql="select SQL_CALC_FOUND_ROWS distinct tb_Fbs9600_state.num,dev_ip,dev_id,op_cmd,dev_workstate,dev_alarmstate,dev_commcount,dev_errcommcount, " + "db_battinf.tb_battinf.StationName,db_battinf.tb_battinf.FbsDeviceName," + "COUNT(DISTINCT BattGroupId) as cnt " + "from db_ram_db.tb_Fbs9600_state " + "left outer join db_battinf.tb_battinf ON tb_fbs9600_state.dev_id=db_battinf.tb_battinf.FBSDeviceId " + "where "; //通讯中断 String comSqlT=" dev_errcommcount=0 "; String comSqlF=" dev_errcommcount>0 "; String comSqlA=" dev_errcommcount>=0 "; if(fs.getDev_errcommcount()==0){ baseSql+=comSqlT; }else if(fs.getDev_errcommcount()==1){ baseSql+=comSqlF; }else if(fs.getDev_errcommcount()==100){ baseSql+=comSqlA; } //判断是否为管理的机房 String stationSql=" and dev_id in(select distinct db_battinf.tb_battinf.FBSDeviceId " + " 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+=stationSql; //分组 String groupSql=" GROUP BY tb_fbs9600_state.dev_id "; //分页 String limitSql=" limit ?,? "; //最后结果 sql=baseSql+groupSql+limitSql; //System.out.println(sql); List list=DAOHelper.executeQueryLimit(sql, conn, new Object[]{fs.getNum(),(page.getPageCurr()-1)*page.getPageSize(),page.getPageSize()}, new CallBack() { List list=new ArrayList(); public List getResults(ResultSet rs) { try { while(rs.next()){ Fbs9600_state fstate=new Fbs9600_state(); fstate.setNum(rs.getInt("cnt")); //关联电池组 fstate.setDev_ip(rs.getString("dev_ip")); fstate.setDev_id(rs.getInt("dev_id")); fstate.setOp_cmd(rs.getInt("op_cmd")); fstate.setDev_workstate(rs.getInt("dev_workstate")); fstate.setDev_alarmstate(rs.getInt("dev_alarmstate")); fstate.setDev_commcount(rs.getInt("dev_commcount")); fstate.setDev_errcommcount(rs.getInt("dev_errcommcount")); fstate.setStationName(rs.getString("stationName")); fstate.setDeviceName("FBS9600"); list.add(fstate); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return list; } }); //去掉limit条件后的总数 int number=LimitNumberFactory.GetLimtitNumber(conn, numberSql); if(list!=null&&list.size()>0){ page.setPageAll(number); list.get(list.size()-1).setPage(page); } return list; } //机房命令操作设备时的cmd和ack校验 public boolean sendCmdToFBS9600Dev(int cmd,int dev_id) { int m_cmd = cmd; int m_cmd_ack = cmd; switch(m_cmd) { case FBS9100_ComBase.CMD_Start: m_cmd_ack = FBS9100_ComBase.CMD_StartAck; break; case FBS9100_ComBase.CMD_Stop: m_cmd_ack = FBS9100_ComBase.CMD_StopAck; break; default: return false; } boolean res_exe = false; String sql = "UPDATE db_ram_db.tb_fbs9600_state SET " + " op_cmd=? " + " WHERE dev_id=? "; Boolean bl=DAOHelper.executeUpdate(DBUtil.getConn(), sql, new Object[]{m_cmd,dev_id}); if(true == bl) { sql = "SELECT op_cmd FROM db_ram_db.tb_fbs9600_state "+ " WHERE dev_id="+dev_id; Connection conn=DBUtil.getConn(); PreparedStatement ps = null; ResultSet rs = null; for(int n=0; n<20; n++) { try { ps = conn.prepareStatement(sql); rs=ps.executeQuery(); if(rs.next()) { if(rs.getInt("op_cmd") == m_cmd_ack) { res_exe = true; break; } } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { Thread.sleep(250); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } DBUtil.close(rs, ps, conn); } return res_exe; } //放电测试添加fbs9600设备的添加电池组的操作 public List serchByInfo(Object obj) { BattInf binf=(BattInf) obj; String sql="select db_battinf.tb_battinf.battgroupid,db_battinf.tb_battinf.StationName,db_battinf.tb_battinf.StationName5,db_battinf.tb_battinf.FBSDeviceId,db_battinf.tb_battinf.FBSDeviceIp,FbsDeviceName,db_battinf.tb_battinf.BattGroupName" + ",db_battinf.tb_battinf.GroupIndexInFBSDevice,db_battinf.tb_battinf.MonCount,db_battinf.tb_battinf.MonVolStd,db_battinf.tb_battinf.MonCapStd" + ",db_ram_db.tb_fbs9600_state.dev_ip,db_ram_db.tb_fbs9600_state.dev_id,db_ram_db.tb_fbs9600_state.op_cmd" + ",db_ram_db.tb_fbs9600_state.dev_commcount,db_ram_db.tb_fbs9600_state.dev_errcommcount " + " FROM db_battinf.tb_battinf " + " LEFT OUTER JOIN db_ram_db.tb_fbs9600_state on db_ram_db.tb_fbs9600_state.dev_id=db_battinf.tb_battinf.FBSDeviceId " + " where db_battinf.tb_battinf.StationName1 like ? and db_battinf.tb_battinf.StationName LIKE ? " + " and db_battinf.tb_battinf.battgroupid=? "; List list=DAOHelper.executeQuery(sql, DBUtil.getConn(), new Object[]{"%"+binf.getStationName1()+"%","%"+binf.getStationName()+"%",binf.getBattGroupId()}, new CallBack() { public List getResults(ResultSet rs) { List list=new ArrayList(); try { while(rs.next()){ Fbs9600_state fstate=new Fbs9600_state(); fstate.setBattgroupid(rs.getInt("battgroupid")); fstate.setDev_ip(rs.getString("dev_ip")); fstate.setDev_id(rs.getInt("dev_id")); fstate.setOp_cmd(rs.getInt("op_cmd")); fstate.setDev_commcount(rs.getInt("dev_commcount")); fstate.setDev_errcommcount(rs.getInt("dev_errcommcount")); fstate.setStationName(rs.getString("stationName")); fstate.setStationName5(rs.getString("stationName5")); fstate.setDeviceName(rs.getString("FbsDeviceName")); fstate.setBattgroupName(rs.getString("battgroupName")); fstate.setGroupIndexInFBSDevice(rs.getInt("groupIndexInFBSDevice")); list.add(fstate); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return list; } }); return list; } public static void main(String[] args) { Fbs9600_stateImpl fi=new Fbs9600_stateImpl(); /*Fbs9600_state fs=new Fbs9600_state(); fs.setNum(5)*/; Fbs9100_state fs=new Fbs9100_state(); fs.setNum(5); fs.setDev_errcommcount(0); /*List list=fi.serchByCondition(fs); System.out.println(list.size()); for(Fbs9600_state f:list){ System.out.println(f); }*/ User_inf uinf=new User_inf(); uinf.setUId(1002); List list=fi.searchByUid(uinf); System.out.println(list.size()); for(Fbs9600_state f:list){ System.out.println(f); } } public List searchAll() { // TODO Auto-generated method stub return null; } }