hdw
2019-01-19 7f953d9aa0e7d4fcbe3c366c7f9f0b3f847f12bd
gx_tieta/src/com/fgkj/dao/impl/ram/Bts_station_stateImpl.java
@@ -1,10 +1,21 @@
package com.fgkj.dao.impl.ram;
import java.sql.Connection;
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.LimitNumberFactory;
import com.fgkj.dao.UinfDaoFactory;
import com.fgkj.db.DBUtil;
import com.fgkj.dto.BattInf;
import com.fgkj.dto.BattMap_information;
import com.fgkj.dto.Page;
import com.fgkj.dto.User_inf;
import com.fgkj.dto.ram.Bts_station_state;
public class Bts_station_stateImpl implements BaseDAO,CallBack{
@@ -35,17 +46,332 @@
   }
    //查询机房实时状态
   public List serchByCondition(Object obj) {
      Bts_station_state bs=(Bts_station_state) obj;
      String sql="select distinct station_id,dev_id,record_datetime,station_stat,station_poff_start_time,station_poff_tlong,station_fadian_start_time,station_fadian_tlong" +
               " ,station_diaozhan_start_time,station_diaozhan_tlong,station_temp,station_damp,station_dooropen_start_time,station_dooropen_tlong " +
               " from db_ram_db.tb_bts_station_station_state " +
               " where ";
      return null;
      BattInf binf=(BattInf) obj;
      Page p=binf.getPage();
      Connection conn=DBUtil.getConn();
      String numberSql="SELECT FOUND_ROWS() number";//存放总数
      String sql="select SQL_CALC_FOUND_ROWS distinct station_id,dev_id,record_datetime,station_stat,station_poff_start_time,station_fadian_start_time" +
               " ,station_diaozhan_start_time,station_temp,station_damp,station_dooropen_start_time,station_xuhang_start_time,station_xuhang_end_time" +
               " ,tb_battinf.stationname,tb_battinf.stationname1,tb_battinf.stationname2,tb_battinf.stationname3,tb_battinf.stationname5 " +
               " from db_ram_db.tb_bts_station_state,db_battinf.tb_battinf  " +
               " where  tb_bts_station_state.dev_id=db_battinf.tb_battinf.FBSDeviceId  " +
               " and tb_battinf.stationname1 like ? and tb_battinf.stationname2 like ? and tb_battinf.stationname3 like ?  and tb_battinf.stationname5 like ?   " +
               " and stationid like ? and Station_install=1 " ;
               /*"  and tb_bts_station_state.station_id in (" +
               "  select distinct db_battinf.tb_battinf.stationid  " +
               "  from db_battinf.tb_battinf " +
               "  left outer join db_user.tb_user_battgroup_baojigroup_battgroup on db_user.tb_user_battgroup_baojigroup_battgroup.stationid=db_battinf.tb_battinf.stationid " +
               "  left outer join db_user.tb_user_battgroup_baojigroup_usr on db_user.tb_user_battgroup_baojigroup_usr.baoji_group_id=db_user.tb_user_battgroup_baojigroup_battgroup.baoji_group_id " +
               "  left outer join db_user.tb_user_inf on tb_user_inf.uid=db_user.tb_user_battgroup_baojigroup_usr.uid " +
               "  where db_user.tb_user_inf.uid=?  and tb_battinf.stationname1 like ? and tb_battinf.stationname2 like ? and tb_battinf.stationname3 like ? ) " +
               " and stationid like ?  " ;*/
      //用户管理
      String userSql=" and StationId in(" +
            " select distinct db_user.tb_user_battgroup_baojigroup_battgroup.StationId from db_user.tb_user_battgroup_baojigroup_battgroup,db_user.tb_user_battgroup_baojigroup_usr where db_user.tb_user_battgroup_baojigroup_battgroup.baoji_group_id=db_user.tb_user_battgroup_baojigroup_usr.baoji_group_id  and db_user.tb_user_battgroup_baojigroup_usr.uId=?" +
            " ) ";
      sql+=userSql;
      if(binf.getBattGroupNum()>1){
         sql+=" and ( ";
      }
      //掉站
      String diaozhanSql="  ((station_stat&32)>1) ";
      if((binf.getBattGroupNum()&32)>1){
         sql+=diaozhanSql;
      }
      if((binf.getBattGroupNum()&16)>1&&(binf.getBattGroupNum()>32)){
         sql+=" or ";
      }
      //开门
      String dooropenSql="  ((station_stat&16)>1) ";
      if((binf.getBattGroupNum()&16)>1){
         sql+=dooropenSql;
      }
      if((binf.getBattGroupNum()&8)>1&&(binf.getBattGroupNum()>16)){
         sql+=" or ";
      }
      //发电
      String fadianSql="  ((station_stat&8)>1) ";
      if((binf.getBattGroupNum()&8)>1){
         sql+=fadianSql;
      }
      if((binf.getBattGroupNum()&4)>1&&(binf.getBattGroupNum()>8)){
         sql+=" or ";
      }
      //续航
      String xuhangSql="  ((station_stat&4)>1) ";
      if((binf.getBattGroupNum()&4)>1){
         sql+=xuhangSql;
      }
      if((binf.getBattGroupNum()&2)>1&&(binf.getBattGroupNum()>4)){
         sql+=" or ";
      }
      //停电
      String poffSql="  ((station_stat&2)>1) ";
      if((binf.getBattGroupNum()&2)>1){
         sql+=poffSql;
      }
      if(binf.getBattGroupNum()>1){
         sql+=" ) ";
      }
      if(binf.getBattGroupNum()==0){
         sql+=" and station_stat<0 ";         //当没有选择想要查看的机房异常状态是筛选
      }
      //分页
      String orderSql=" limit ? ,? ";
      sql+=orderSql;
      //System.out.println(sql);
      List<Bts_station_state> list=DAOHelper.executeQueryLimit(sql, conn, new Object[]{"%"+binf.getStationName1()+"%","%"+binf.getStationName2()+"%","%"+binf.getStationName3()+"%","%"+binf.getStationName5()+"%","%"+binf.getStationId()+"%",binf.getNum(),(p.getPageCurr()-1)*p.getPageSize(),p.getPageSize()},new CallBack() {
         public List getResults(ResultSet rs) {
            List list=new ArrayList();
            try {
               while(rs.next()){
                  Bts_station_state b=new Bts_station_state();
                  b.setStation_id(rs.getString("station_id"));
                  b.setDev_id(rs.getInt("dev_id"));
                  b.setRecord_datetime(rs.getTimestamp("record_datetime"));
                  b.setStation_stat(rs.getInt("station_stat"));
                  if(((b.getStation_stat()>>5)&1)==1){
                     b.setStation_stat_diaozhan(1);//掉站
                  }
                  if(((b.getStation_stat()>>4)&1)==1){
                     b.setStation_stat_dooropen(1);//开门
                  }
                  if(((b.getStation_stat()>>3)&1)==1){
                     b.setStation_stat_fadian(1);  //发电
                  }
                  if(((b.getStation_stat()>>2)&1)==1){
                     b.setStation_stat_xuhang(1);//续航
                  }
                  if(((b.getStation_stat()>>1)&1)==1){
                     b.setStation_stat_poff(1);    //停电
                  }
                  b.setStation_poff_start_time(rs.getTimestamp("station_poff_start_time"));
                  b.setStation_fadian_start_time(rs.getTimestamp("station_fadian_start_time"));
                  b.setStation_diaozhan_start_time(rs.getTimestamp("station_diaozhan_start_time"));
                  b.setStation_temp(rs.getFloat("station_temp"));
                  b.setStation_damp(rs.getFloat("station_damp"));
                  b.setStation_dooropen_start_time(rs.getTimestamp("station_dooropen_start_time"));
                  b.setStation_xuhang_start_time(rs.getTimestamp("station_xuhang_start_time"));
                  b.setStation_xuhang_end_time(rs.getTimestamp("station_xuhang_end_time"));
                  b.setStationName(rs.getString("stationName"));
                  b.setStationName1(rs.getString("stationName1"));
                  b.setStationName2(rs.getString("stationName2"));
                  b.setStationName3(rs.getString("stationName3"));
                  b.setStationName5(rs.getString("stationName5"));
                  Page page=new Page();
                  b.setPage(page);
                  list.add(b);
               }
            } 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 int serchByState(Object obj) {
      User_inf uinf=(User_inf) obj;
      String sql=" select count(*) as nums from db_ram_db.tb_bts_station_state where station_stat&2>1  " +
               "  and tb_bts_station_state.station_id  in (" +
               "  select distinct db_battinf.tb_battinf.stationid  " +
               "  from db_battinf.tb_battinf " +
               "  left outer join db_user.tb_user_battgroup_baojigroup_battgroup on db_user.tb_user_battgroup_baojigroup_battgroup.stationid=db_battinf.tb_battinf.stationid " +
               "  left outer join db_user.tb_user_battgroup_baojigroup_usr on db_user.tb_user_battgroup_baojigroup_usr.baoji_group_id=db_user.tb_user_battgroup_baojigroup_battgroup.baoji_group_id " +
               "  left outer join db_user.tb_user_inf on tb_user_inf.uid=db_user.tb_user_battgroup_baojigroup_usr.uid " +
               "  where db_user.tb_user_inf.uid=? and  Station_install=1 ) ";
      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()){
                  list.add(rs.getInt("nums"));
               }
            } catch (SQLException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            }
            return list;
         }
      });
      int nums=0;//总数
      if(list!=null&&list.size()>0){
         nums=(Integer) list.get(list.size()-1);
      }
      return nums;
   }
   //查询当前机房掉战数
   public int serchByState_diaozhan(Object obj) {
      User_inf uinf=(User_inf) obj;
      String sql=" select count(*) as nums from db_ram_db.tb_bts_station_state where station_stat&32>1  " +
               "  and tb_bts_station_state.station_id in (" +
               "  select distinct db_battinf.tb_battinf.stationid  " +
               "  from db_battinf.tb_battinf " +
               "  left outer join db_user.tb_user_battgroup_baojigroup_battgroup on db_user.tb_user_battgroup_baojigroup_battgroup.stationid=db_battinf.tb_battinf.stationid " +
               "  left outer join db_user.tb_user_battgroup_baojigroup_usr on db_user.tb_user_battgroup_baojigroup_usr.baoji_group_id=db_user.tb_user_battgroup_baojigroup_battgroup.baoji_group_id " +
               "  left outer join db_user.tb_user_inf on tb_user_inf.uid=db_user.tb_user_battgroup_baojigroup_usr.uid " +
               "  where db_user.tb_user_inf.uid=? and  Station_install=1 ) ";
      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()){
                  list.add(rs.getInt("nums"));
               }
            } catch (SQLException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            }
            return list;
         }
      });
      int nums=0;//总数
      if(list!=null&&list.size()>0){
         nums=(Integer) list.get(list.size()-1);
      }
      return nums;
   }
   //查询具体某机房停电数(根据station_id )
   public int serchByStationId(Object obj) {
      BattMap_information binformation=(BattMap_information) obj;
      String sql="select count(num) as nums  from db_ram_db.tb_bts_station_state " +
            " where  station_stat&2>1  " +
            " and station_id=?  " +
            " limit 1 ";
      //System.out.println(sql);
      List list=DAOHelper.executeQuery(sql, DBUtil.getConn(), new Object[]{binformation.getStationId()}, new CallBack() {
         public List getResults(ResultSet rs) {
            List list=new ArrayList();
            try {
               while(rs.next()){
                  int nums=rs.getInt("nums");
                  list.add(nums);
               }
            } catch (SQLException e) {
               e.printStackTrace();
            }
            return list;
         }
      });
      int nums=0;//最后的结果
      if(list!=null&&list.size()>0){
         nums=(Integer) list.get(list.size()-1);
      }
      return nums;
   }
   //查询具体某机房掉站数(根据station_id )
   public int serchByStationId_diaozhan(Object obj) {
      BattMap_information binformation=(BattMap_information) obj;
      String sql="select count(num) as nums  from db_ram_db.tb_bts_station_state " +
            " where  station_stat&32>1   " +
            " and station_id=?  " +
            " limit 1 ";
      //System.out.println(sql);
      List list=DAOHelper.executeQuery(sql, DBUtil.getConn(), new Object[]{binformation.getStationId()}, new CallBack() {
         public List getResults(ResultSet rs) {
            List list=new ArrayList();
            try {
               while(rs.next()){
                  int nums=rs.getInt("nums");
                  list.add(nums);
               }
            } catch (SQLException e) {
               e.printStackTrace();
            }
            return list;
         }
      });
      int nums=0;//最后的结果
      if(list!=null&&list.size()>0){
         nums=(Integer) list.get(list.size()-1);
      }
      return nums;
   }
   //查询设备SD卡的实时状态
   public int serchSDCard(Object obj) {
      BattInf binf=(BattInf) obj;
      String sql=" select distinct station_stat from  db_ram_db.tb_bts_station_state where station_id=? ";
      List list=DAOHelper.executeQuery(sql, DBUtil.getConn(),new Object[] {binf.getStationId()} , new CallBack() {
         @Override
         public List getResults(ResultSet rs) {
            List list=new ArrayList();
            try {
               while(rs.next()) {
                  int station_stat=rs.getInt("station_stat");
                  if((station_stat&2048)>1) {
                     list.add(1);
                  }else {
                     list.add(0);
                  }
               }
            } catch (SQLException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            }
            return list;
         }
      });
      int station_stat=1;
      if(list!=null&&list.size()>0) {
         station_stat=(int) list.get(list.size()-1);
      }
      return station_stat;
   }
   public List serchByInfo(Object obj) {
      // TODO Auto-generated method stub
      return null;
   }
   public static void main(String[] args) {
      Bts_station_stateImpl bimpl=new Bts_station_stateImpl();
      BattInf binf=new BattInf();
      binf.setNum(1002);
      binf.setStationName1("");
      binf.setStationName2("");
      binf.setStationName3("");
      binf.setStationName5("");
      binf.setStationId("42000408");
      binf.setBattGroupNum(62);
      User_inf uinf=new User_inf();
      uinf.setUId(1002);
      Page p=new Page();
      p.setPageCurr(1);
      p.setPageSize(10);
      binf.setPage(p);
      /*List<Bts_station_state> list=bimpl.serchByCondition(binf);
      for (Bts_station_state bs : list) {
         //System.out.println(bs.getStation_stat_diaozhan()+"  "+bs.getStation_stat_dooropen()+"  "+bs.getStation_stat_fadian()+"   "+bs.getStation_stat_xuhang()+"  "+bs.getStation_stat_poff());
          System.out.println(bs);
      }*/
      //System.out.println(list.size());
      //int nums=bimpl.serchByState(uinf);
      /*BattMap_information bm=new BattMap_information();
      bm.setStationId("42000570");
      int nums=bimpl.serchByStationId(bm);*/
      //int nums=bimpl.serchByState_diaozhan(uinf);
      /*BattMap_information bm=new BattMap_information();
      bm.setStationId("42000366");
      int nums=bimpl.serchByStationId_diaozhan(bm);*/
      int station_state=bimpl.serchSDCard(binf);
      System.out.println(station_state);
   }
}