| | |
| | | import java.sql.ResultSet;
|
| | | import java.sql.SQLException;
|
| | | import java.sql.Timestamp;
|
| | | import java.text.ParseException;
|
| | | import java.text.SimpleDateFormat;
|
| | | import java.util.ArrayList;
|
| | | import java.util.Date;
|
| | | import java.util.List;
|
| | |
| | |
|
| | | public final static int ALM_TYPE_FBS9100_COLLECTERROR_ID = 119033; //采集线告警
|
| | |
|
| | | public final static int ALM_TYPE_FBS9100_CurrBalance_ID = 119034; //停电电流均衡告警
|
| | | public final static float ALM_BTS_Curr_SPACING = 1.0f; //停电电流均衡告警电流阀值
|
| | | |
| | |
|
| | | public final static int ALM_TYPE_BTS61850_RELAY_Error_ID = 618501; //继电器告警
|
| | | public final static int ALM_TYPE_BTS61850_CONNCET_Error_ID = 618502; //通讯告警
|
| | |
| | | public final static float ALM_BTS_VOL_SPACING = 1.5f; //判断累计和电压和组端电压差距的值
|
| | |
|
| | | public final static float ALM_DEVICE_DEFAULT_VALUE= 0.0f; //设备告警默认告警值
|
| | | |
| | |
|
| | | public final static int FIRST_ALM_LEVEL = 1; //一级告警
|
| | | public final static int SECOND_ALM_LEVEL = 2; //二级告警
|
| | |
| | | List<FBS9100_DevData> list = new ArrayList<FBS9100_DevData>();
|
| | | try {
|
| | | sql.sqlMysqlUseDB(Sql_Mysql.DB_RamDB);
|
| | | String sql_str = " SELECT dev_id,dev_ip,record_datetime,dev_temp,dev_61850alarms,dev_batt_xuhang_tlong,dev_station_poff_tlong,dev_station_poff_cnt,dev_last_captest_stop_type "
|
| | | String sql_str = " SELECT DISTINCT(dev_id),dev_ip,record_datetime,dev_temp,dev_61850alarms,dev_batt_xuhang_tlong,dev_station_poff_tlong,dev_station_poff_cnt,dev_last_captest_stop_type,dev_workstate,dev_onlinevollow "
|
| | | +" FROM " + Sql_Mysql.FBS9100State_Table +"," + Sql_Mysql.BattInf_Table
|
| | | +" WHERE tb_fbs9100_state.dev_id = tb_battinf.FBSDeviceId ";
|
| | | //System.out.println("sql_str: "+sql_str);
|
| | | ResultSet rs = sql.sqlMysqlQuery(sql_str);
|
| | | SimpleDateFormat sdf = new SimpleDateFormat(Com.DTF_YMDhms);
|
| | | while(rs.next()) {
|
| | | FBS9100_DevData fbs9100_devdata=new FBS9100_DevData();
|
| | | fbs9100_devdata.setDev_id(rs.getInt("dev_id"));
|
| | | fbs9100_devdata.setDev_ip(rs.getString("dev_ip"));
|
| | | fbs9100_devdata.setRecord_time(rs.getTimestamp("record_datetime"));
|
| | | fbs9100_devdata.setRecord_time(sdf.parse(rs.getString("record_datetime")));
|
| | | fbs9100_devdata.setAlarms(rs.getString("dev_61850alarms"));
|
| | | fbs9100_devdata.setContiPowerLong(rs.getFloat("dev_batt_xuhang_tlong"));
|
| | | fbs9100_devdata.setCutPowerLong(rs.getFloat("dev_station_poff_tlong"));
|
| | | fbs9100_devdata.setDev_last_captest_stop_type(rs.getInt("dev_last_captest_stop_type"));
|
| | | fbs9100_devdata.setDev_temp(rs.getFloat("dev_temp"));
|
| | | |
| | | fbs9100_devdata.setDev_workstate(rs.getInt("dev_workstate"));
|
| | | fbs9100_devdata.setDev_onlinevollow(rs.getInt("dev_onlinevollow"));
|
| | | //System.out.println(fbs9100_devdata);
|
| | | list.add(fbs9100_devdata);
|
| | | }
|
| | | } catch (SQLException e) {
|
| | | } catch (SQLException | ParseException e) {
|
| | | e.printStackTrace();
|
| | | } finally {
|
| | | sql.close_con();
|
| | |
| | |
|
| | | FBS9100_DevData dev = list.get(i);
|
| | | int dev_id = list.get(i).getDev_id();
|
| | | Timestamp record_time = list.get(i).getRecord_time();
|
| | | Date record_time = list.get(i).getRecord_time();
|
| | | String dev_ip = list.get(i).getDev_ip();
|
| | | long interval = Math.abs((new Date()).getTime()- record_time.getTime());
|
| | | //System.out.println("time: "+(new Date()).getTime()+" "+record_time.getTime()+" "+interval);
|
| | |
| | | //判断当前设备是否是61850设备
|
| | | if(dev_id/10000 != 61850) {
|
| | | //设备温度告警
|
| | | /*FBS9100_DevData tmpalarm = DeviceAlarm_Thread_New.judgedevidInorNo(m_Conn_Pool, dev_id,DeviceAlarm_Thread_New.ALM_TYPE_FBS9100_TMPHIGHT_ID);
|
| | | FBS9100_DevData tmpalarm = DeviceAlarm_Thread_New.judgedevidInorNo(m_Conn_Pool, dev_id,DeviceAlarm_Thread_New.ALM_TYPE_FBS9100_TMPHIGHT_ID);
|
| | | if((tmpalarm == null || 1 == tmpalarm.alm_cleared_type) && dev.getDev_temp() > ALM_BTS_TMP_HIGHT_VALUE) {
|
| | | long RecId = UUID.randomUUID().getLeastSignificantBits();
|
| | | if(0 == RecId) {
|
| | |
| | | if(tmpalarm != null && dev.getDev_temp() <= ALM_BTS_TMP_HIGHT_VALUE) {
|
| | | makeRealAlarmToHistoryAlarm(m_Conn_Pool,list.get(i),DeviceAlarm_Thread_New.ALM_TYPE_FBS9100_TMPHIGHT_ID); //将实时告警记录变成历史告警记录
|
| | | }
|
| | | }*/
|
| | | }
|
| | |
|
| | |
|
| | | //设备SD卡告警
|
| | | /*FBS9100_DevData SDlastalarm = DeviceAlarm_Thread_New.judgedevidInorNo(m_Conn_Pool, dev_id,DeviceAlarm_Thread_New.ALM_TYPE_FBS9100_SDERROR_ID);
|
| | | FBS9100_DevData SDlastalarm = DeviceAlarm_Thread_New.judgedevidInorNo(m_Conn_Pool, dev_id,DeviceAlarm_Thread_New.ALM_TYPE_FBS9100_SDERROR_ID);
|
| | | FBS9100_DevData SDalarm = searchDevSDError(m_Conn_Pool,dev);
|
| | | if((SDlastalarm == null || 1 == SDlastalarm.alm_cleared_type) && SDalarm.isAlarm) {
|
| | | long RecId = UUID.randomUUID().getLeastSignificantBits();
|
| | |
| | | if(SDlastalarm != null && !SDalarm.isAlarm) {
|
| | | makeRealAlarmToHistoryAlarm(m_Conn_Pool,list.get(i),DeviceAlarm_Thread_New.ALM_TYPE_FBS9100_SDERROR_ID); //将实时告警记录变成历史告警记录
|
| | | }
|
| | | }*/
|
| | | }
|
| | |
|
| | | //采集线告警
|
| | | FBS9100_DevData collectlastalarm = DeviceAlarm_Thread_New.judgedevidInorNo(m_Conn_Pool, dev_id,DeviceAlarm_Thread_New.ALM_TYPE_FBS9100_COLLECTERROR_ID); //查询当前设备之前是否存在采集线告警
|
| | |
| | | }
|
| | |
|
| | |
|
| | | //BTS设备停电电流均衡监测
|
| | | if(dev.dev_onlinevollow > 0) {
|
| | | //常规BTS停电放电判断
|
| | | FBS9100_DevData stopcurrstalarm = DeviceAlarm_Thread_New.judgedevidInorNo(m_Conn_Pool, dev_id,DeviceAlarm_Thread_New.ALM_TYPE_FBS9100_CurrBalance_ID); //查询当前设备之前是否存在停电电流均衡告警
|
| | | FBS9100_DevData curralarm = DeviceAlarm_Thread_New.check61850DevicePowerOffCurr(m_Conn_Pool, dev, ALM_BTS_Curr_SPACING);
|
| | | //System.out.println(dev.dev_id+":"+(stopcurrstalarm == null || 1 == stopcurrstalarm.alm_cleared_type)+"=="+(curralarm != null && curralarm.isAlarm));
|
| | | if((stopcurrstalarm == null || 1 == stopcurrstalarm.alm_cleared_type) && (curralarm != null && curralarm.isAlarm)) {
|
| | | //System.out.println("设备id:"+dev.dev_id+"新增停电均衡监测告警"+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
|
| | | long RecId = UUID.randomUUID().getLeastSignificantBits();
|
| | | if(0 == RecId) {
|
| | | RecId = UUID.randomUUID().getLeastSignificantBits();
|
| | | }
|
| | | DeviceAlarm_Thread_New.insertOrUpdateDevAlarmToTable(m_Conn_Pool, RecId, dev_id, dev_ip,
|
| | | DeviceAlarm_Thread_New.ALM_TYPE_FBS9100_CurrBalance_ID,FIRST_ALM_LEVEL,ALM_DEVICE_DEFAULT_VALUE, true);
|
| | | }
|
| | | }
|
| | |
|
| | | }else{
|
| | | //61850设备告警[设备通讯告警,K告警,D告警,过温告警,干接点告警]
|
| | |
| | | if((dev61850Data != null && dev61850Data.RecId != 0) && (dev.getDev_last_captest_stop_type() <= 13)){
|
| | | //System.out.println("dev_id:"+dev.dev_id+"\t alm_type:"+ALM_BTS61851_TYPEIDS[k]);
|
| | | makeRealAlarmToHistoryAlarm(m_Conn_Pool,list.get(i),ALM_TYPE_BTS61850_TEST_ERROR_ID); //将实时告警记录变成历史告警记录
|
| | | }
|
| | | }
|
| | | |
| | | //61850BTS设备停电电流均衡监测
|
| | | if(dev.dev_workstate == 3) {
|
| | | //常规BTS停电放电判断
|
| | | FBS9100_DevData stopcurrstalarm = DeviceAlarm_Thread_New.judgedevidInorNo(m_Conn_Pool, dev_id,DeviceAlarm_Thread_New.ALM_TYPE_FBS9100_CurrBalance_ID); //查询当前设备之前是否存在停电电流均衡告警
|
| | | FBS9100_DevData curralarm = DeviceAlarm_Thread_New.check61850DevicePowerOffCurr(m_Conn_Pool, dev, ALM_BTS_Curr_SPACING);
|
| | | if((stopcurrstalarm == null || 1 == stopcurrstalarm.alm_cleared_type) && (curralarm != null && curralarm.isAlarm)) {
|
| | | System.out.println("设备id:"+dev.dev_id+"新增停电均衡监测告警"+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
|
| | | long RecId = UUID.randomUUID().getLeastSignificantBits();
|
| | | if(0 == RecId) {
|
| | | RecId = UUID.randomUUID().getLeastSignificantBits();
|
| | | }
|
| | | DeviceAlarm_Thread_New.insertOrUpdateDevAlarmToTable(m_Conn_Pool, RecId, dev_id, dev_ip,
|
| | | DeviceAlarm_Thread_New.ALM_TYPE_FBS9100_CurrBalance_ID,FIRST_ALM_LEVEL,ALM_DEVICE_DEFAULT_VALUE, true);
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | public static FBS9100_DevData searchGatherAlarm(MysqlConnPool conn_pool,FBS9100_DevData dev) {
|
| | | FBS9100_DevData alarm = new FBS9100_DevData();
|
| | | String sql_str =
|
| | | " SELECT sum(mon_vol) as sum_vol,tb_battinf.BattGroupId,FBSDeviceId,group_curr,group_vol,online_vol " + |
| | | " SELECT sum(mon_vol) as sum_vol,tb_battinf.BattGroupId,FBSDeviceId,any_value(group_curr) as group_curr,any_value(group_vol) as group_vol,any_value(online_vol) as online_vol " + |
| | | " FROM db_battinf.tb_battinf,db_ram_db.tb_batt_rtdata,db_ram_db.tb_batt_rtstate " +
|
| | | " WHERE tb_battinf.BattGroupId = tb_batt_rtdata.BattGroupId " +
|
| | | " AND tb_battinf.BattGroupId = tb_batt_rtstate.BattGroupId " +
|
| | |
| | | boolean isEffective = false; //判别当前的告警是否有效
|
| | | ResultSet rs = null;
|
| | | Sql_Mysql sql = new Sql_Mysql(conn_pool.getConn());
|
| | | //System.out.println(sql_str);
|
| | | try {
|
| | | rs = sql.sqlMysqlQuery(sql_str);
|
| | | alarm.isAlarm = false;
|
| | | try {
|
| | | while(rs.next()) {
|
| | | while(null != rs && rs.next()) {
|
| | | float group_curr = rs.getFloat("group_curr");
|
| | | //if(group_curr < ALM_BTS_CURR_MAX_VALUE) {
|
| | | alarm.dev_id = rs.getInt("FBSDeviceId");
|
| | |
| | | return isEffective?alarm:null;
|
| | | }
|
| | |
|
| | | public static FBS9100_DevData check61850DevicePowerOffCurr(MysqlConnPool pool,FBS9100_DevData dev,float currlimit) {
|
| | | FBS9100_DevData alarm = new FBS9100_DevData();
|
| | | String sql_str = |
| | | " SELECT group_curr,FBSDeviceId,rec_datetime " + |
| | | "FROM "+Sql_Mysql.BattInf_Table+","+Sql_Mysql.BattRtState_Table+"" + |
| | | "WHERE tb_battinf.BattGroupId = tb_batt_rtstate.BattGroupId AND FBSDeviceId = " + dev.dev_id;
|
| | | boolean isEffective = false; //判别当前的告警是否有效
|
| | | ResultSet rs = null;
|
| | | Sql_Mysql sql = new Sql_Mysql(pool.getConn());
|
| | | rs = sql.sqlMysqlQuery(sql_str);
|
| | | alarm.isAlarm = false;
|
| | | int battcount = 0; //电池组组数
|
| | | float currdiff = 0;
|
| | | Date rec_datetime = new Date(0,0,0);
|
| | | try {
|
| | | while(rs.next()) {
|
| | | battcount ++;
|
| | | float battcurr = rs.getFloat("group_curr");
|
| | | currdiff = battcurr - currdiff;
|
| | | rec_datetime = rs.getTimestamp("rec_datetime");
|
| | | }
|
| | | //System.out.println(dev.dev_id+":"+(battcount == 2) +"==="+ (Math.abs(currdiff) > ALM_BTS_Curr_SPACING));
|
| | | if(battcount == 2 && Math.abs(currdiff) > ALM_BTS_Curr_SPACING) {
|
| | | alarm.isAlarm = true;
|
| | | alarm.dev_id = dev.dev_id;
|
| | | }
|
| | | if(Math.abs(new Date().getTime()-rec_datetime.getTime())/1000<=120) {
|
| | | //通讯中断不算有效告警
|
| | | isEffective = true;
|
| | | }
|
| | | } catch (SQLException e) {
|
| | | e.printStackTrace();
|
| | | } finally {
|
| | | try {
|
| | | if(rs != null) {
|
| | | rs.close();
|
| | | }
|
| | | } catch (SQLException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | sql.close_con();
|
| | | }
|
| | | return isEffective?alarm:null;
|
| | | }
|
| | | |
| | | public static void main(String[] args) {
|
| | | //MysqlConnPool conn_pool = new MysqlConnPool("127.0.0.1", 3360, 100);
|
| | | //DeviceAlarm_Thread_New thread = new DeviceAlarm_Thread_New(new AppConfig(), conn_pool);
|