package com.power.alarm; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.Date; import java.util.UUID; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import com.base.AppConfig; import com.base.Com; import com.power.data.PowerData_RT; import com.power.data.PowerData_RT_Array; import com.power.data.PowerDev_acData; import com.power.data.PowerDev_dcData; import com.power.mysql.MysqlConnPool; import com.power.mysql.Sql_Mysql; import com.power.spcomm.SPCommModule; import com.power.spcomm.SocketClientComm_Thread; public class PwrDeviceAlarm_Thread extends Thread { private PowerData_RT_Array m_AL_Data; private MysqlConnPool m_Conn_Pool; @SuppressWarnings("unused") private AppConfig m_AppCfg = null; private Alarm_Param mAlarm_Param = null; private Logger logger = null; private Date AlarmThreadStartTime = null; public PwrDeviceAlarm_Thread(AppConfig cfg, MysqlConnPool pool, PowerData_RT_Array data) { logger = LogManager.getLogger(this.getClass()); m_Conn_Pool = pool; m_AL_Data = data; m_AppCfg = cfg; } private void InsertPwrDevAlarmToTable(long record_id_t, int dev_id, int alm_type_id, int alm_level, int alm_src, int alm_index, float alm_value, Sql_Mysql sql) throws SQLException { //Sql_Mysql sql = new Sql_Mysql(m_Conn_Pool.getConn()); //try { sql.sqlMysqlUseDB(Sql_Mysql.DB_PWRDEV_ALARM); if(true == sql.sqlMysqlCheckIfTableExist(Sql_Mysql.TB_PWRDEV_ALARM)) { String sql_str = "INSERT INTO " + Sql_Mysql.TB_PWRDEV_ALARM + " " + "(record_id," + "PowerDeviceId, " + "alm_type, " + "alm_level, " + "alm_source, " + "alm_index, " + "alm_start_time, " + "alm_end_time, " + "alm_value," + "alm_is_confirmed, " + "alm_confirmed_time, " + "alm_cleared_type," + "alm_severity) " + " VALUES " + "(" + record_id_t + ", " + dev_id + ", " + alm_type_id + ", " + alm_level + ", " + alm_src + ", " + alm_index + ", " + "'" + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms) + "', " + "'" + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms) + "', " + alm_value +", " + false + ", " + "'" + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms) + "', " + PwrDeviceAlarm_Data.ALM_CLEARED_TYPE_NULL + " ," + ((alm_level == Alarm_Param.Alm_Level_Emergency)?1:0) + " " + ")"; sql.sqlMysqlExecute(sql_str); } //} catch (SQLException e) { //logger.error(e.toString(), e); //} finally { //sql.close_con(); //} } private void ChangeRT_AlarmToHistoryAlarm(int dev_id, int alm_type_id, int alm_src,int alm_index, Sql_Mysql sql) throws SQLException { ArrayList sql_strs = new ArrayList(); //Sql_Mysql sql = new Sql_Mysql(m_Conn_Pool.getConn()); //try { sql.sqlMysqlUseDB(Sql_Mysql.DB_PWRDEV_ALARM); //ÔÚʵʱ¸æ¾¯±íÖеĵ±Ç°É豸µÄ¸æ¾¯¼Ç¼¸Ä³ÉÀúÊ·¸æ¾¯¼Ç¼,²¢ÇҼǼµ±Ç°µÄʱ¼ä String sql_str1 = "UPDATE " + Sql_Mysql.TB_PWRDEV_ALARM + " SET " + " alm_end_time='" + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms) + "', " + " alm_cleared_type=" + PwrDeviceAlarm_Data.ALM_CLEARED_TYPE_AUTO + " WHERE PowerDeviceId=" + dev_id + " AND alm_type= " + alm_type_id /* + " AND alm_source = "+alm_src */ + " AND alm_index = "+alm_index; //½«µ±Ç°É豸ʵʱ¸æ¾¯±íÖеÄÀúÊ·¸æ¾¯¼Ç¼²åÈëµ½É豸ÀúÊ·¸æ¾¯±íÖÐ String sql_str2 = " INSERT INTO " + Sql_Mysql.TB_PWRDEV_ALARM_HISTORY+"(record_id,PowerDeviceId,alm_type,alm_level,alm_source,alm_index,alm_start_time,alm_end_time,alm_value,alm_is_confirmed,alm_confirmed_time,alm_cleared_type) (SELECT record_id,PowerDeviceId,alm_type,alm_level,alm_source,alm_index,alm_start_time,alm_end_time,alm_value,alm_is_confirmed,alm_confirmed_time,alm_cleared_type from "+Sql_Mysql.TB_PWRDEV_ALARM+" WHERE PowerDeviceId="+dev_id+" AND alm_cleared_type!="+PwrDeviceAlarm_Data.ALM_CLEARED_TYPE_NULL+ " AND alm_type= "+ alm_type_id+ " AND alm_source = "+alm_src + " AND alm_index = "+alm_index+")"; //½«ÊµÊ±¸æ¾¯±íÖеķÇʵʱ¸æ¾¯É¾³ý String sql_str3 = " DELETE FROM " + Sql_Mysql.TB_PWRDEV_ALARM + " WHERE PowerDeviceId = " + dev_id + " AND alm_cleared_type != " + PwrDeviceAlarm_Data.ALM_CLEARED_TYPE_NULL + " AND alm_type= " + alm_type_id /* +" AND alm_source = "+alm_src */ + " AND alm_index = "+alm_index; sql_strs.add(sql_str1); sql_strs.add(sql_str2); sql_strs.add(sql_str3); sql.makeManualCommit(sql_strs); //} catch (SQLException e) { //logger.error(e.toString(), e); //} finally { //sql.close_con(); //} } public PwrDeviceAlarm_Data JudgeAlarmIfExists(int dev_id,int alm_type_id,int alm_src,int alm_index, Sql_Mysql sql) throws SQLException { //Sql_Mysql sql = new Sql_Mysql(m_Conn_Pool.getConn()); PwrDeviceAlarm_Data adata = null; //try { sql.sqlMysqlUseDB(Sql_Mysql.DB_PWRDEV_ALARM); String sql_str = " SELECT PowerDeviceId,record_id,alm_level,alm_cleared_type,alm_start_time " + " FROM " + Sql_Mysql.TB_PWRDEV_ALARM + " WHERE PowerDeviceId= " + dev_id + " AND alm_type = " + alm_type_id /* +" AND alm_source = "+alm_src */ + " AND alm_index = "+alm_index + " ORDER BY alm_start_time DESC "; ResultSet rs = sql.sqlMysqlQuery(sql_str); if(rs.next()) { adata = new PwrDeviceAlarm_Data(); adata.setPwrDev_id(rs.getInt("PowerDeviceId")); adata.setRecId(rs.getLong("record_id")); adata.setAlm_level(rs.getInt("alm_level")); adata.setAlm_cleared_type(rs.getInt("alm_cleared_type")); } //} catch (SQLException e) { //logger.error(e.toString(), e); //} finally { //sql.close_con(); //} return adata; } private void makeAlarmWork(int dev_id,int alm_type_id,boolean alm_stt,float alm_val,int alm_src,int alm_index,Sql_Mysql sql) throws SQLException { boolean alm_st = alm_stt; if(alm_src==PwrDeviceAlarm_Data.ALM_SOURCE_DETECT && mAlarm_Param.UserAlarm_EN==0) { alm_st = false; } PwrDeviceAlarm_Data adata = JudgeAlarmIfExists(dev_id, alm_type_id,alm_src,alm_index,sql); if((adata==null || adata.alm_cleared_type == 1) && (alm_st == true)) { long RecId = UUID.randomUUID().getLeastSignificantBits(); if(0 == RecId) { RecId = UUID.randomUUID().getLeastSignificantBits(); } InsertPwrDevAlarmToTable(RecId,dev_id,alm_type_id,mAlarm_Param.alarm_level,alm_src,alm_index,alm_val,sql); } else if((adata!=null) && (alm_st == false)) { ChangeRT_AlarmToHistoryAlarm(dev_id,alm_type_id,alm_src,alm_index,sql); } } private void makePowerDeviceAlarm(PowerData_RT rtpd) { //----------ЭתͨП澯------------- boolean commerr = false; if(rtpd.GetPwrDeviceCommErrState() == true) { int comErrTimeLong = (int)(((new Date().getTime()) - rtpd.commRecordTime.getTime())/1000); if(comErrTimeLong > PwrDeviceAlarm_Data.COMM_ERR_TIME_INTERVAL) { commerr = true; } } Sql_Mysql sql = new Sql_Mysql(m_Conn_Pool.getConn()); try { //System.out.println("commerr:"+commerr + "ʱ¼ä£º"+Com.getDateTimeFormat(rtpd.commRecordTime, Com.DTF_YMDhms)); //****** ͨÐŵçÔ´ ****** mAlarm_Param = Alarm_Param_SQL.query_alarm_param(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_ACDC_CPSS_CommErr_ID, sql); makeAlarmWork(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_ACDC_CPSS_CommErr_ID,commerr,PwrDeviceAlarm_Data.DEFAULT_ALARM_VALUE,PwrDeviceAlarm_Data.ALM_SOURCE_DETECT,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); if(commerr) { //logger.info("Comm Err,Alarm suspend... "); return; } //****** ACDC ****** make_ACDC_AlarmWork(rtpd,sql); try { sleep(50); } catch (InterruptedException e) { logger.error(e.toString(), e); } //****** AC ****** make_AC_AlarmWork(rtpd,sql); try { sleep(50); } catch (InterruptedException e) { logger.error(e.toString(), e); } //****** DC ****** make_DC_AlarmWork(rtpd,sql); try { sleep(50); } catch (InterruptedException e) { logger.error(e.toString(), e); } //****** Alarm_Time_Adj ******* make_AlarmTimeAdj_AlarmWork(sql); try { sleep(50); } catch (InterruptedException e) { logger.error(e.toString(), e); } } catch (SQLException e) { logger.error(e.toString(), e); } finally { sql.close_con(); } } public void run() { int waittime = PwrDeviceAlarm_Data.COMM_ERR_TIME_INTERVAL+15; logger.info("PwrDeviceAlarm_Thread start After " + waittime + " Seconds..."); Alarm_Config_SQL.initAlarm_Config_ToTable(m_Conn_Pool); /* for(int n=0;nmAlarm_Param.alarm_limitH),rtpd.m_acData.acIn1_volA,PwrDeviceAlarm_Data.ALM_SOURCE_DETECT,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); mAlarm_Param = Alarm_Param_SQL.query_alarm_param(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_AC_AcIn1_A_Less_ID, sql); makeAlarmWork(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_AC_AcIn1_A_Less_ID,rtpd.m_acData.is_acIn1_less_A,rtpd.m_acData.acIn1_volA,PwrDeviceAlarm_Data.ALM_SOURCE_READ,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); boolean err_detect = false; if(rtpd.m_acData.acIn1_volAmAlarm_Param.alarm_limitH),rtpd.m_acData.acIn1_volB,PwrDeviceAlarm_Data.ALM_SOURCE_DETECT,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); mAlarm_Param = Alarm_Param_SQL.query_alarm_param(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_AC_AcIn1_B_Less_ID, sql); makeAlarmWork(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_AC_AcIn1_B_Less_ID,rtpd.m_acData.is_acIn1_less_B,rtpd.m_acData.acIn1_volB,PwrDeviceAlarm_Data.ALM_SOURCE_READ,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); err_detect = false; if(rtpd.m_acData.acIn1_volBmAlarm_Param.alarm_limitH),rtpd.m_acData.acIn1_volB,PwrDeviceAlarm_Data.ALM_SOURCE_DETECT,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); mAlarm_Param = Alarm_Param_SQL.query_alarm_param(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_AC_AcIn1_C_Less_ID, sql); makeAlarmWork(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_AC_AcIn1_C_Less_ID,rtpd.m_acData.is_acIn1_less_C,rtpd.m_acData.acIn1_volC,PwrDeviceAlarm_Data.ALM_SOURCE_READ,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); err_detect = false; if(rtpd.m_acData.acIn1_volCmAlarm_Param.alarm_limitH),rtpd.m_acData.acIn2_volA,PwrDeviceAlarm_Data.ALM_SOURCE_DETECT,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); mAlarm_Param = Alarm_Param_SQL.query_alarm_param(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_AC_AcIn2_A_Less_ID, sql); makeAlarmWork(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_AC_AcIn2_A_Less_ID,rtpd.m_acData.is_acIn2_less_A,rtpd.m_acData.acIn2_volA,PwrDeviceAlarm_Data.ALM_SOURCE_READ,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); err_detect = false; if(rtpd.m_acData.acIn2_volAmAlarm_Param.alarm_limitH),rtpd.m_acData.acIn2_volB,PwrDeviceAlarm_Data.ALM_SOURCE_DETECT,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); mAlarm_Param = Alarm_Param_SQL.query_alarm_param(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_AC_AcIn2_B_Less_ID, sql); makeAlarmWork(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_AC_AcIn2_B_Less_ID,rtpd.m_acData.is_acIn2_less_B,rtpd.m_acData.acIn2_volB,PwrDeviceAlarm_Data.ALM_SOURCE_READ,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); err_detect = false; if(rtpd.m_acData.acIn2_volBmAlarm_Param.alarm_limitH),rtpd.m_acData.acIn2_volB,PwrDeviceAlarm_Data.ALM_SOURCE_DETECT,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); mAlarm_Param = Alarm_Param_SQL.query_alarm_param(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_AC_AcIn2_C_Less_ID, sql); makeAlarmWork(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_AC_AcIn2_C_Less_ID,rtpd.m_acData.is_acIn2_less_C,rtpd.m_acData.acIn2_volC,PwrDeviceAlarm_Data.ALM_SOURCE_READ,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); err_detect = false; if(rtpd.m_acData.acIn2_volCmAlarm_Param.alarm_limitH),rtpd.m_acData.temprature,PwrDeviceAlarm_Data.ALM_SOURCE_DETECT,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); } private void make_ACDC_AlarmWork(PowerData_RT rtpd,Sql_Mysql sql) throws SQLException { //----------------------------------------------------------------------------------------------------------- //ÏÈÅжÏÓÐûÓÐÍ£µç£¬Í£µçÁ˾Ͳ»ÅжÏȱÏࡢǷѹ mAlarm_Param = Alarm_Param_SQL.query_alarm_param(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_PowerDown_ID, sql); makeAlarmWork(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_PowerDown_ID,rtpd.m_acdcData.is_acIn1_powerdown,rtpd.m_acdcData.acIn1_volA,PwrDeviceAlarm_Data.ALM_SOURCE_READ,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); boolean ac1_powerdown = false; if(rtpd.m_acdcData.acIn1_volAmAlarm_Param.alarm_limitH),rtpd.m_acdcData.acIn1_volA,PwrDeviceAlarm_Data.ALM_SOURCE_DETECT,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); mAlarm_Param = Alarm_Param_SQL.query_alarm_param(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_A_Less_ID, sql); makeAlarmWork(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_A_Less_ID,rtpd.m_acdcData.is_acIn1_less_A,rtpd.m_acdcData.acIn1_volA,PwrDeviceAlarm_Data.ALM_SOURCE_READ,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); boolean err_detect = false; if(rtpd.m_acdcData.acIn1_volAmAlarm_Param.alarm_limitH),rtpd.m_acdcData.acIn1_volB,PwrDeviceAlarm_Data.ALM_SOURCE_DETECT,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); mAlarm_Param = Alarm_Param_SQL.query_alarm_param(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_B_Less_ID, sql); makeAlarmWork(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_B_Less_ID,rtpd.m_acdcData.is_acIn1_less_B,rtpd.m_acdcData.acIn1_volB,PwrDeviceAlarm_Data.ALM_SOURCE_READ,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); err_detect = false; if(rtpd.m_acdcData.acIn1_volBmAlarm_Param.alarm_limitH),rtpd.m_acdcData.acIn1_volB,PwrDeviceAlarm_Data.ALM_SOURCE_DETECT,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); mAlarm_Param = Alarm_Param_SQL.query_alarm_param(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_C_Less_ID, sql); makeAlarmWork(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_C_Less_ID,rtpd.m_acdcData.is_acIn1_less_C,rtpd.m_acdcData.acIn1_volC,PwrDeviceAlarm_Data.ALM_SOURCE_READ,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); err_detect = false; if(rtpd.m_acdcData.acIn1_volCmAlarm_Param.alarm_limitH),rtpd.m_acdcData.acIn2_volA,PwrDeviceAlarm_Data.ALM_SOURCE_DETECT,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); mAlarm_Param = Alarm_Param_SQL.query_alarm_param(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn2_A_Less_ID, sql); makeAlarmWork(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn2_A_Less_ID,rtpd.m_acdcData.is_acIn2_less_A,rtpd.m_acdcData.acIn2_volA,PwrDeviceAlarm_Data.ALM_SOURCE_READ,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); err_detect = false; if(rtpd.m_acdcData.acIn2_volAmAlarm_Param.alarm_limitH),rtpd.m_acdcData.acIn2_volB,PwrDeviceAlarm_Data.ALM_SOURCE_DETECT,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); mAlarm_Param = Alarm_Param_SQL.query_alarm_param(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn2_B_Less_ID, sql); makeAlarmWork(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn2_B_Less_ID,rtpd.m_acdcData.is_acIn2_less_B,rtpd.m_acdcData.acIn2_volB,PwrDeviceAlarm_Data.ALM_SOURCE_READ,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); err_detect = false; if(rtpd.m_acdcData.acIn2_volBmAlarm_Param.alarm_limitH),rtpd.m_acdcData.acIn2_volB,PwrDeviceAlarm_Data.ALM_SOURCE_DETECT,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); mAlarm_Param = Alarm_Param_SQL.query_alarm_param(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn2_C_Less_ID, sql); makeAlarmWork(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn2_C_Less_ID,rtpd.m_acdcData.is_acIn2_less_C,rtpd.m_acdcData.acIn2_volC,PwrDeviceAlarm_Data.ALM_SOURCE_READ,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); err_detect = false; if(rtpd.m_acdcData.acIn2_volCmAlarm_Param.alarm_limitH),rtpd.m_acdcData.dcOut_vol,PwrDeviceAlarm_Data.ALM_SOURCE_DETECT,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); mAlarm_Param = Alarm_Param_SQL.query_alarm_param(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_ACDC_DCout_UnderV_ID, sql); makeAlarmWork(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_ACDC_DCout_UnderV_ID,rtpd.m_acdcData.is_dcOut_under_vol,rtpd.m_acdcData.dcOut_vol,PwrDeviceAlarm_Data.ALM_SOURCE_READ,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); // makeAlarmWork(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_ACDC_DCout_UnderV_ID,(rtpd.m_acdcData.dcOut_volmAlarm_Param.alarm_limitH),rtpd.m_dcData.dcOut1_vol,PwrDeviceAlarm_Data.ALM_SOURCE_DETECT,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); mAlarm_Param = Alarm_Param_SQL.query_alarm_param(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_DC_DCout1_UnderV_ID, sql); makeAlarmWork(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_DC_DCout1_UnderV_ID,rtpd.m_dcData.is_dc1_under_vol,rtpd.m_dcData.dcOut1_vol,PwrDeviceAlarm_Data.ALM_SOURCE_READ,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); // makeAlarmWork(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_DC_DCout1_UnderV_ID,(rtpd.m_dcData.dcOut1_volmAlarm_Param.alarm_limitH),rtpd.m_dcData.dcOut2_vol,PwrDeviceAlarm_Data.ALM_SOURCE_DETECT,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); mAlarm_Param = Alarm_Param_SQL.query_alarm_param(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_DC_DCout2_UnderV_ID, sql); makeAlarmWork(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_DC_DCout2_UnderV_ID,rtpd.m_dcData.is_dc2_under_vol,rtpd.m_dcData.dcOut2_vol,PwrDeviceAlarm_Data.ALM_SOURCE_READ,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); // makeAlarmWork(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_DC_DCout2_UnderV_ID,(rtpd.m_dcData.dcOut2_volmAlarm_Param.alarm_limitH),rtpd.m_dcData.temprature,PwrDeviceAlarm_Data.ALM_SOURCE_DETECT,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); mAlarm_Param = Alarm_Param_SQL.query_alarm_param(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_DC_MonitorErr_ID, sql); makeAlarmWork(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_DC_MonitorErr_ID,rtpd.m_dcData.is_dc_monitorerr,PwrDeviceAlarm_Data.DEFAULT_ALARM_VALUE,PwrDeviceAlarm_Data.ALM_SOURCE_READ,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); mAlarm_Param = Alarm_Param_SQL.query_alarm_param(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_DC_TolalAlarm_ID, sql); makeAlarmWork(rtpd.PowerDevDeviceId, PwrDeviceAlarm_Data.ALM_TYPE_DC_TolalAlarm_ID,rtpd.m_dcData.is_total_alarm,PwrDeviceAlarm_Data.DEFAULT_ALARM_VALUE,PwrDeviceAlarm_Data.ALM_SOURCE_READ,PwrDeviceAlarm_Data.DEFAULT_ALARM_INDEX,sql); } private void make_AlarmTimeAdj_AlarmWork(Sql_Mysql sql) throws SQLException { sql.sqlMysqlUseDB(Sql_Mysql.DB_PWRDEV_ALARM); String sql_str = " SELECT PowerDeviceId,alm_type,alm_start_time " + " FROM " + Sql_Mysql.TB_PWRDEV_ALARM + " WHERE alm_source = " + PwrDeviceAlarm_Data.ALM_SOURCE_DETECT + " AND alm_type != " + PwrDeviceAlarm_Data.ALM_TYPE_ACDC_CPSS_CommErr_ID //+ " AND alm_start_time>'"+Com.getDateTimeFormat(AlarmThreadStartTime, Com.DTF_YMDhms)+"'" + " ORDER BY alm_start_time DESC "; //logger.info(sql_str); ResultSet rs = sql.sqlMysqlQuery(sql_str); while(rs.next()) { int powerdevid = rs.getInt("PowerDeviceId"); int almtypeid = rs.getInt("alm_type"); Date alarmstarttimedetect = rs.getTimestamp("alm_start_time"); String sql_str1 = " SELECT PowerDeviceId,alm_type,alm_start_time " + " FROM " + Sql_Mysql.TB_PWRDEV_ALARM + " WHERE alm_source=" + PwrDeviceAlarm_Data.ALM_SOURCE_READ + " AND alm_type=" + almtypeid + " AND PowerDeviceId=" + powerdevid + " ORDER BY alm_start_time DESC "; ResultSet rs1 = sql.sqlMysqlQuery(sql_str1); boolean timealarmexists = false; Date record_time = null; if(rs1.next()) { //²é±íÓÐÔ¶¶ËÒ£ÐÅÁ¿¸æ¾¯ Date alarmstarttimeread = rs1.getTimestamp("alm_start_time"); if((alarmstarttimeread.getTime()-alarmstarttimedetect.getTime())>(30*60*1000)) { timealarmexists = true; record_time = alarmstarttimeread; //logger.info("alarmstarttimeread : "+ Com.getDateTimeFormat(alarmstarttimeread, Com.DTF_YMDhms) + ", alarmstarttimedetect : " + Com.getDateTimeFormat(alarmstarttimedetect, Com.DTF_YMDhms)); } } else { //ÎÞÔ¶¶ËÒ£ÐÅÁ¿¸æ¾¯ Date nowtime = new Date(); if((nowtime.getTime()-alarmstarttimedetect.getTime())>(30*60*1000)) { timealarmexists = true; record_time = nowtime; //logger.info("nowtime : "+ Com.getDateTimeFormat(nowtime, Com.DTF_YMDhms) + ", alarmstarttimedetect : " + Com.getDateTimeFormat(alarmstarttimedetect, Com.DTF_YMDhms)); } } if(timealarmexists) { String sql_str2 = " SELECT PowerDeviceId,alarm_typeId " + " FROM " + Sql_Mysql.PWRDEV_ALARM_TIMEADJ_TABLE + " WHERE PowerDeviceId=" + powerdevid + " AND alarm_typeId=" + almtypeid + " ORDER BY detect_datetime DESC "; ResultSet rs2 = sql.sqlMysqlQuery(sql_str2); if(rs2.next()) { } else { String sql_str3 = "INSERT INTO " + Sql_Mysql.PWRDEV_ALARM_TIMEADJ_TABLE + " " + " (PowerDeviceId,alarm_typeId,detect_datetime,record_datetime)" + " VALUES (" + powerdevid + "," + almtypeid + "," + "'" + Com.getDateTimeFormat(alarmstarttimedetect, Com.DTF_YMDhms) + "'" + "," + "'" + Com.getDateTimeFormat(record_time, Com.DTF_YMDhms) + "'" + ");"; sql.sqlMysqlExecute(sql_str3); } } } } }