山西太原电源的通信程序【在用】
IEC61850_ForPowerSupply/src/com/power/alarm/PwrDeviceAlarm_Thread_SQL.java
@@ -2,11 +2,186 @@
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.base.Com;
import com.power.data.PowerData_RT;
import com.power.mysql.MysqlConnPool;
import com.power.mysql.Sql_Mysql;
public class PwrDeviceAlarm_Thread_SQL {
   public static void ChangeRT_AlarmToHistoryAlarm(MysqlConnPool pool){
      ArrayList<String> sql_strs = new ArrayList<String>();
      Sql_Mysql sql = new Sql_Mysql(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;
         //将当前设备实时告警表中的历史告警记录插入到设备历史告警表中
         String sql_str2 = " INSERT INTO " + Sql_Mysql.TB_PWRDEV_ALARM_HISTORY+"(record_id,PowerDeviceId,alm_type,alm_level,alm_start_time,alm_end_time,alm_value,alm_is_confirmed,alm_confirmed_time,alm_cleared_type,alm_trigger,alm_severity)  (SELECT record_id,PowerDeviceId,alm_type,alm_level,alm_start_time,alm_end_time,alm_value,alm_is_confirmed,alm_confirmed_time,alm_cleared_type,alm_trigger,alm_severity from "+Sql_Mysql.TB_PWRDEV_ALARM+" WHERE alm_cleared_type = " + PwrDeviceAlarm_Data.ALM_CLEARED_TYPE_HIST + ")";
         //将实时告警表中的非实时告警删除
         String sql_str3 = " DELETE FROM " + Sql_Mysql.TB_PWRDEV_ALARM +" WHERE alm_cleared_type = " + PwrDeviceAlarm_Data.ALM_CLEARED_TYPE_HIST;
         //sql_strs.add(sql_str1);
         sql_strs.add(sql_str2);
         sql_strs.add(sql_str3);
         sql.makeManualCommit(sql_strs);
      } catch (Exception e) {
         sql.logger.error(e.toString(), e);
      } finally {
         sql.close_con();
      }
   }
   public static List<PwrDeviceAlarm_Data> queryPwrDeviceHistoty(MysqlConnPool pool) {
      List<PwrDeviceAlarm_Data> al_alarm = new ArrayList<>();
      String sql_str_sel = " SELECT * FROM db_pwrdev_alarm.tb_pwrdev_alarm WHERE alm_cleared_type = " + PwrDeviceAlarm_Data.ALM_CLEARED_TYPE_HIST;
      ResultSet res = null;
      Sql_Mysql sql = new Sql_Mysql(pool.getConn());
      res = sql.sqlMysqlQuery(sql_str_sel);
      try {
         while(res.next()) {
            PwrDeviceAlarm_Data tmp_alm = new PwrDeviceAlarm_Data(res.getInt("alm_type"));
            tmp_alm.RecId = res.getLong("record_id");
            tmp_alm.alm_cleared_type = res.getInt("alm_cleared_type");      //告警类型    0:实时告警         1:历史告警       2:取消告警
            tmp_alm.alm_vlaue = res.getFloat("alm_value");               //告警值
            tmp_alm.alm_level = res.getInt("alm_level");               //告警等级
            tmp_alm.alm_start_time = res.getTimestamp("alm_start_time");   //告警开始时间
            tmp_alm.alm_end_time = res.getTimestamp("alm_end_time");      //告警结束时间
            tmp_alm.alm_trigger = res.getInt("alm_trigger");            //告警来源[0-来源于点表;1-来源于电源告警参数]
            tmp_alm.alm_severity = res.getInt("alm_severity");            //告警重要等级[0:重要;1:紧急]
            al_alarm.add(tmp_alm);
         }
      } catch (SQLException e) {
         sql.logger.error(e.toString(), e);
      } finally {
         if(null != res) {
            try {
               res.close();
            } catch (SQLException e) {
               sql.logger.error(e.toString(), e);
            }
         }
         sql.close_con();
      }
      return al_alarm;
   }
   /**
    *    插入或者更新电源告警记录
    * @param pool
    * @param alarm
    */
   public static void InsertPwrDevAlarmToTable(MysqlConnPool pool, PwrDeviceAlarm_Data alarm) {
      String sql_str_sel = " SELECT * FROM db_pwrdev_alarm.tb_pwrdev_alarm WHERE alm_type = " + alarm.alm_type + " and PowerDeviceId = " + alarm.pwrdev_id/* + " AND alm_cleared_type = " + PwrDeviceAlarm_Data.ALM_CLEARED_TYPE_REAL*/;
      String sql_str_upd = "";
      String sql_str_ins = "";
      Sql_Mysql sql = new Sql_Mysql(pool.getConn());
      ResultSet res = null;
      PwrDeviceAlarm_Data tmp_alm = null;
      try {
         sql.sqlMysqlUseDB(Sql_Mysql.DB_PWRDEV_ALARM);
         res = sql.sqlMysqlQuery(sql_str_sel);
         if(res.next()) {
            tmp_alm = new PwrDeviceAlarm_Data(res.getInt("alm_type"));
            tmp_alm.RecId = res.getLong("record_id");
            tmp_alm.alm_cleared_type = res.getInt("alm_cleared_type");      //告警类型    0:实时告警         1:历史告警       2:取消告警
            tmp_alm.alm_vlaue = res.getFloat("alm_value");               //告警值
            tmp_alm.alm_level = res.getInt("alm_level");               //告警等级
            tmp_alm.alm_start_time = res.getTimestamp("alm_start_time");   //告警开始时间
            tmp_alm.alm_end_time = res.getTimestamp("alm_end_time");      //告警结束时间
            tmp_alm.alm_trigger = res.getInt("alm_trigger");            //告警来源[0-来源于点表;1-来源于电源告警参数]
            tmp_alm.alm_severity = res.getInt("alm_severity");            //告警重要等级[0:重要;1:紧急]
         }
         if(null == tmp_alm) {
            if(alarm.alm_cleared_type == PwrDeviceAlarm_Data.ALM_CLEARED_TYPE_REAL) {
               //新出现的电源实时告警
               sql_str_ins = "INSERT INTO " + Sql_Mysql.TB_PWRDEV_ALARM + " "
                     + "(record_id,"
                     + "PowerDeviceId, "
                     + "alm_type, "
                     + "alm_level, "
                     + "alm_start_time, "
                     + "alm_end_time, "
                     + "alm_value,"
                     + "alm_is_confirmed, "
                     + "alm_confirmed_time,"
                     + "alm_trigger, "
                     + "alm_severity, "
                     + "alm_cleared_type) "
                     + " VALUES "
                     + "("
                     + alarm.RecId + ", "
                     + alarm.pwrdev_id + ", "
                     + alarm.alm_type + ", "
                     + alarm.alm_level + ", "
                     + "'" + Com.getDateTimeFormat(alarm.alm_start_time, Com.DTF_YMDhms) + "', "
                     + "'" + Com.getDateTimeFormat(alarm.alm_end_time, Com.DTF_YMDhms) + "', "
                     + alarm.alm_vlaue +", "
                     + false + ", "
                     + "'" + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms) + "', "
                     + "'" + alarm.alm_trigger + "', "
                     + "" + alarm.alm_severity + ", "
                     + PwrDeviceAlarm_Data.ALM_CLEARED_TYPE_NULL + " "
                     + ")";
               sql.sqlMysqlExecute(sql_str_ins);
            }
         }else {
            //当前实时告警已存在
            if(alarm.alm_cleared_type == PwrDeviceAlarm_Data.ALM_CLEARED_TYPE_HIST) {
               //当前告警消失,修改当前状态
               sql_str_upd = " UPDATE " + Sql_Mysql.PWRDEV_ALARM_TABLE +
                          " SET alm_cleared_type = " + alarm.alm_cleared_type +
                          " ,alm_end_time = '" + Com.getDateTimeFormat(alarm.alm_end_time, Com.DTF_YMDhms) + "'" +
                          " WHERE PowerDeviceId = " + alarm.pwrdev_id + " AND alm_type = " + alarm.alm_type;
               sql.sqlMysqlExecute(sql_str_upd);
            }
            if(alarm.alm_level != tmp_alm.alm_level) {
               //当前告警等级切换
               sql_str_upd = " UPDATE " + Sql_Mysql.PWRDEV_ALARM_TABLE +
                          " SET alm_level =  " + alarm.alm_level +
                          " WHERE PowerDeviceId = " + alarm.pwrdev_id + " AND alm_type = " + alarm.alm_type;
               sql.sqlMysqlExecute(sql_str_upd);
            }
         }
      } catch (SQLException e) {
         sql.logger.error(e.toString(), e);
      } finally {
         if(null != res) {
            try {
               res.close();
            } catch (SQLException e) {
               sql.logger.error(e.toString(), e);
            }
         }
         sql.close_con();
      }
   }
   
   /**
    *    读取是否需要更新电源告警参数
@@ -57,4 +232,456 @@
      }
      return thread_en;
   }
   /**
    *    载入电源告警参数
    * @param pool
    * @param rtpd
    */
   public static void readPwrDeviceAlarm(MysqlConnPool pool,PowerData_RT rtpd) {
      String sql_str_sel =  " SELECT * FROM " + Sql_Mysql.PWRDEV_ALARM_PARAM_FORSX_TABLE + " WHERE PowerDeviceId =  " + rtpd.PowerDevDeviceId;
      Sql_Mysql sql = new Sql_Mysql(pool.getConn());
      ResultSet res = null;
      res = sql.sqlMysqlQuery(sql_str_sel);
      try {
         rtpd.almParams.clear();
         while(res.next()) {
            PwrDeviceAarmParam param = new PwrDeviceAarmParam();
            param.PowerDeviceId = res.getInt("PowerDeviceId");                     //'电源id',
            param.alm_id = res.getInt("alm_id");                              //'告警id',
            param.alm_level = res.getInt("alm_level");                           //'告警等级',
            param.alarm_limitH = res.getFloat("alarm_limitH");                     //'告警上限阈值',
            param.alarm_limitH_EN = res.getBoolean("alarm_limitH_EN");               //'上限告警使能',
            param.alarm_limitL = res.getFloat("alarm_limitL");                     //'告警下限阈值',
            param.alarm_limitL_EN = res.getBoolean("alarm_limitL_EN");               //'告警下限使能',
            param.alarm_source = res.getInt("alarm_source");                     //'告警数据来源[0-设备告警点位判断;1-当前阈值判断]',
            param.alarm_name = res.getString("alarm_name");                        //'当前告警描述',
            param.alarm_type = res.getInt("alarm_type");                        //'0-上下限有效  1-上限有效  2-下限有效',
            param.alarm_en_node = res.getInt("alarm_en_node");                     //告警来源是点位时告警使能[0:不启用;1:启用]
            param.alarm_limitH_upper = res.getFloat("alarm_limitH_upper");            //'告警上上限阈值',
            param.alarm_limitL_lower = res.getFloat("alarm_limitL_lower");            //'告警下下限阈值',
            param.alm_delay_time = res.getInt("alm_delay_time");                  //'告警上上限阈值使能',
            param.alarm_limitH_upper_en = res.getBoolean("alarm_limitH_upper_en");      //'告警上上限阈值使能',
            param.alarm_limitL_lower_en = res.getBoolean("alarm_limitL_lower_en");      //'告警下下限阈值使能',
            param.alarm_limitL_level = res.getInt("alarm_limitL_level");            //下限告警等级',
            param.alarm_limitH_level = res.getInt("alarm_limitH_level");            //上限告警等级',
            param.alarm_limitL_lower_level = res.getInt("alarm_limitL_lower_level");   //下下限告警等级',
            param.alarm_limitH_upper_level = res.getInt("alarm_limitH_upper_level");   //上上限告警等级',
            rtpd.almParams.put(param.alm_id, param);
         }
      } catch (SQLException e) {
         sql.logger.error(e.toString(), e);
      } finally {
         if(null != res) {
            try {
               res.close();
            } catch (SQLException e) {
               sql.logger.error(e.toString(), e);
            }
         }
         sql.close_con();
      }
   }
   public static void queryLastPwrDeviceAlarm(PowerData_RT item,MysqlConnPool pool) {
      String sql_str = " SELECT * FROM " + Sql_Mysql.PWRDEV_ALARM_TABLE + " WHERE PowerDeviceId = " + item.PowerDevDeviceId + " AND alm_cleared_type = 0;";
      Sql_Mysql sql = new Sql_Mysql(pool.getConn());
      ResultSet res = null;
      res = sql.sqlMysqlQuery(sql_str);
      try {
         while(res.next()) {
            PwrDeviceAlarm_Data alm = null;
            int alm_type = res.getInt("alm_type");
            switch(alm_type) {
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_A_OverV_ID:                                    //110001;         //1路交流A相过压
               {alm = item.alm_ACDC_Acin1_A_OverV_First;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_A_UnderV_ID:                                    //110002;         //1路交流A相欠压
               {alm = item.alm_ACDC_Acin1_A_Underv_First;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_A_Less_ID:                                    //110003;         //1路交流A相缺相
               {alm = item.alm_ACDC_AcIn1_A_Less_First;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_B_OverV_ID:                                    //110004;         //1路交流B相过压
               {alm = item.alm_ACDC_AcIn1_B_OverV_First;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_B_UnderV_ID:                                    //110005;         //1路交流B相欠压
               {alm = item.alm_ACDC_AcIn1_B_UnderV_First;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_B_Less_ID:                                    //110006;         //1路交流B相缺相
               {alm = item.alm_ACDC_AcIn1_B_Less_First;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_C_OverV_ID:                                    //110007;         //1路交流C相过压
               {alm = item.alm_ACDC_AcIn1_C_OverV_First;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_C_UnderV_ID:                                    //110008;         //1路交流C相欠压
               {alm = item.alm_ACDC_AcIn1_C_UnderV_First;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_C_Less_ID:                                    //110009;         //1路交流C相缺相
               {alm = item.alm_ACDC_AcIn1_C_Less_First;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_PowerDown_ID:                                    //110010;         //交流停电
               {alm = item.alm_ACDC_AcIn1_PowerDown;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_ThunderErr_ID:                                    //110011;         //防雷器故障
               {alm = item.alm_ACDC_AcIn1_ThunderErr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_DCout_OverV_ID:                                    //110012;         //直流电压过高
               {alm = item.alm_ACDC_DCout_OverV;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_DCout_UnderV_ID:                                    //110013;         //直流电压过低
               {alm = item.alm_ACDC_DCout_UnderV;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_LoaderFuse_ID:                                    //110014;         //负载熔断
               {alm = item.alm_ACDC_LoaderFuse;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_BattGrp1Fuse_ID:                                    //110015;         //电池组1熔断
               {alm = item.alm_ACDC_BattGrp1Fuse;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_BattGrp2Fuse_ID:                                    //110016;         //电池组2熔断
               {alm = item.alm_ACDC_BattGrp2Fuse;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Module1Err_ID:                                    //110017;         //整流器1总故障
               {alm = item.alm_ACDC_Module1Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Module2Err_ID:                                    //110018;         //整流器2总故障
               {alm = item.alm_ACDC_Module2Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Module3Err_ID:                                    //110019;         //整流器3总故障
               {alm = item.alm_ACDC_Module3Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Module4Err_ID:                                    //110020;         //整流器4总故障
               {alm = item.alm_ACDC_Module4Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Module5Err_ID:                                    //110021;         //整流器5总故障
               {alm = item.alm_ACDC_Module5Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Module6Err_ID:                                    //110022;         //整流器6总故障
               {alm = item.alm_ACDC_Module6Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Module7Err_ID:                                    //110023;         //整流器7总故障
               {alm = item.alm_ACDC_Module7Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Module8Err_ID:                                    //110024;         //整流器8总故障
               {alm = item.alm_ACDC_Module8Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Module9Err_ID:                                    //110025;         //整流器9总故障
               {alm = item.alm_ACDC_Module9Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Module10Err_ID:                                    //110026;         //整流器10总故障
               {alm = item.alm_ACDC_Module10Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Module11Err_ID:                                    //110027;         //整流器11总故障
               {alm = item.alm_ACDC_Module11Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Module12Err_ID:                                    //110028;         //整流器12总故障
               {alm = item.alm_ACDC_Module12Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Module13Err_ID:                                    //110029;         //整流器13总故障
               {alm = item.alm_ACDC_Module13Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Module14Err_ID:                                    //110030;         //整流器14总故障
               {alm = item.alm_ACDC_Module14Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Module15Err_ID:                                    //110031;         //整流器15总故障
               {alm = item.alm_ACDC_Module15Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Module16Err_ID:                                    //110032;         //整流器16总故障
               {alm = item.alm_ACDC_Module16Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcAlarm_ID:                                    //110033;         //交流总故障
               {alm = item.alm_ACDC_AcAlarm;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_DcAlarm_ID:                                    //110034;         //直流总故障
               {alm = item.alm_ACDC_DcAlarm;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Acb1_OverCurrA_ID:                                    //110035;         //交流A相过流
               {alm = item.alm_ACDC_Acb1_OverCurrA;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Acb1_OverCurrB_ID:                                    //110036;         //交流B相过流
               {alm = item.alm_ACDC_Acb1_OverCurrB;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Acb1_OverCurrC_ID:                                    //110037;         //交流C相过流
               {alm = item.alm_ACDC_Acb1_OverCurrC;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_MonitorErr_ID:                                    //110038;         //监控器故障
               {alm = item.alm_ACDC_MonitorErr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_DcOut_OverCurr_ID:                                    //110039;         //直流过流
               {alm = item.alm_ACDC_DcOut_OverCurr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_TolalAlarm_ID:                                    //110040;         //开关柜总报警
               {alm = item.alm_ACDC_TolalAlarm;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Batt1_VolLow_ID:                                    //110041;         //电池组1电压低
               {alm = item.alm_ACDC_Batt1_VolLow;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Batt2_VolLow_ID:                                    //110042;         //电池组2电压低
               {alm = item.alm_ACDC_Batt2_VolLow;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Batt1_Down_ID:                                    //110043;         //电池组1下电
               {alm = item.alm_ACDC_Batt1_Down;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Batt2_Down_ID:                                    //110044;         //电池组2下电
               {alm = item.alm_ACDC_Batt2_Down;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Batt1_OverChgCurr_ID:                                    //110045;         //电池组1充电过流
               {alm = item.alm_ACDC_Batt1_OverChgCurr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Batt2_OverChgCurr_ID:                                    //110046;         //电池组2充电过流
               {alm = item.alm_ACDC_Batt2_OverChgCurr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod1_OverVol_ID:                                    //110047;         //整流器1过压
               {alm = item.alm_ACDC_Mod1_OverVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod2_OverVol_ID:                                    //110048;         //整流器2过压
               {alm = item.alm_ACDC_Mod2_OverVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod3_OverVol_ID:                                    //110049;         //整流器3过压
               {alm = item.alm_ACDC_Mod3_OverVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod4_OverVol_ID:                                    //110050;         //整流器4过压
               {alm = item.alm_ACDC_Mod4_OverVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod5_OverVol_ID:                                    //110051;         //整流器5过压
               {alm = item.alm_ACDC_Mod5_OverVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod6_OverVol_ID:                                    //110052;         //整流器6过压
               {alm = item.alm_ACDC_Mod6_OverVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod7_OverVol_ID:                                    //110053;         //整流器7过压
               {alm = item.alm_ACDC_Mod7_OverVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod8_OverVol_ID:                                    //110054;         //整流器8过压
               {alm = item.alm_ACDC_Mod8_OverVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod9_OverVol_ID:                                    //110055;         //整流器9过压
               {alm = item.alm_ACDC_Mod9_OverVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod10_OverVol_ID:                                    //110056;         //整流器10过压
               {alm = item.alm_ACDC_Mod10_OverVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod11_OverVol_ID:                                    //110057;         //整流器11过压
               {alm = item.alm_ACDC_Mod11_OverVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod12_OverVol_ID:                                    //110058;         //整流器12过压
               {alm = item.alm_ACDC_Mod12_OverVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod13_OverVol_ID:                                    //110059;         //整流器13过压
               {alm = item.alm_ACDC_Mod13_OverVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod14_OverVol_ID:                                    //110060;         //整流器14过压
               {alm = item.alm_ACDC_Mod14_OverVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod15_OverVol_ID:                                    //110061;         //整流器15过压
               {alm = item.alm_ACDC_Mod15_OverVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod16_OverVol_ID:                                    //110062;         //整流器16过压
               {alm = item.alm_ACDC_Mod16_OverVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod1_UnderVol_ID:                                    //110063;         //整流器1欠压
               {alm = item.alm_ACDC_Mod1_UnderVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod2_UnderVol_ID:                                    //110064;         //整流器2欠压
               {alm = item.alm_ACDC_Mod2_UnderVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod3_UnderVol_ID:                                    //110065;         //整流器3欠压
               {alm = item.alm_ACDC_Mod3_UnderVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod4_UnderVol_ID:                                    //110066;         //整流器4欠压
               {alm = item.alm_ACDC_Mod4_UnderVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod5_UnderVol_ID:                                    //110067;         //整流器5欠压
               {alm = item.alm_ACDC_Mod5_UnderVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod6_UnderVol_ID:                                    //110068;         //整流器6欠压
               {alm = item.alm_ACDC_Mod6_UnderVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod7_UnderVol_ID:                                    //110069;         //整流器7欠压
               {alm = item.alm_ACDC_Mod7_UnderVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod8_UnderVol_ID:                                    //110070;         //整流器8欠压
               {alm = item.alm_ACDC_Mod8_UnderVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod9_UnderVol_ID:                                    //110071;         //整流器9欠压
               {alm = item.alm_ACDC_Mod9_UnderVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod10_UnderVol_ID:                                    //110072;         //整流器10欠压
               {alm = item.alm_ACDC_Mod10_UnderVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod11_UnderVol_ID:                                    //110073;         //整流器11欠压
               {alm = item.alm_ACDC_Mod11_UnderVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod12_UnderVol_ID:                                    //110074;         //整流器12欠压
               {alm = item.alm_ACDC_Mod12_UnderVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod13_UnderVol_ID:                                    //110075;         //整流器13欠压
               {alm = item.alm_ACDC_Mod13_UnderVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod14_UnderVol_ID:                                    //110076;         //整流器14欠压
               {alm = item.alm_ACDC_Mod14_UnderVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod15_UnderVol_ID:                                    //110077;         //整流器15欠压
               {alm = item.alm_ACDC_Mod15_UnderVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod16_UnderVol_ID:                                    //110078;         //整流器16欠压
               {alm = item.alm_ACDC_Mod16_UnderVol;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod1_OverCurr_ID:                                    //110079;         //整流器1过流
               {alm = item.alm_ACDC_Mod1_OverCurr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod2_OverCurr_ID:                                    //110080;         //整流器2过流
               {alm = item.alm_ACDC_Mod2_OverCurr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod3_OverCurr_ID:                                    //110081;         //整流器3过流
               {alm = item.alm_ACDC_Mod3_OverCurr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod4_OverCurr_ID:                                    //110082;         //整流器4过流
               {alm = item.alm_ACDC_Mod4_OverCurr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod5_OverCurr_ID:                                    //110083;         //整流器5过流
               {alm = item.alm_ACDC_Mod5_OverCurr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod6_OverCurr_ID:                                    //110084;         //整流器6过流
               {alm = item.alm_ACDC_Mod6_OverCurr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod7_OverCurr_ID:                                    //110085;         //整流器7过流
               {alm = item.alm_ACDC_Mod7_OverCurr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod8_OverCurr_ID:                                    //110086;         //整流器8过流
               {alm = item.alm_ACDC_Mod8_OverCurr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod9_OverCurr_ID:                                    //110087;         //整流器9过流
               {alm = item.alm_ACDC_Mod9_OverCurr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod10_OverCurr_ID:                                    //110088;         //整流器10过流
               {alm = item.alm_ACDC_Mod10_OverCurr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod11_OverCurr_ID:                                    //110089;         //整流器11过流
               {alm = item.alm_ACDC_Mod11_OverCurr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod12_OverCurr_ID:                                    //110090;         //整流器12过流
               {alm = item.alm_ACDC_Mod12_OverCurr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod13_OverCurr_ID:                                    //110091;         //整流器13过流
               {alm = item.alm_ACDC_Mod13_OverCurr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod14_OverCurr_ID:                                    //110092;         //整流器14过流
               {alm = item.alm_ACDC_Mod14_OverCurr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod15_OverCurr_ID:                                    //110093;         //整流器15过流
               {alm = item.alm_ACDC_Mod15_OverCurr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod16_OverCurr_ID:                                    //110094;         //整流器16过流
               {alm = item.alm_ACDC_Mod16_OverCurr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod1_AC_Err_ID:                                    //110095;         //整流器1交流异常
               {alm = item.alm_ACDC_Mod1_AC_Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod2_AC_Err_ID:                                    //110096;         //整流器2交流异常
               {alm = item.alm_ACDC_Mod2_AC_Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod3_AC_Err_ID:                                    //110097;         //整流器3交流异常
               {alm = item.alm_ACDC_Mod3_AC_Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod4_AC_Err_ID:                                    //110098;         //整流器4交流异常
               {alm = item.alm_ACDC_Mod4_AC_Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod5_AC_Err_ID:                                    //110099;         //整流器5交流异常
               {alm = item.alm_ACDC_Mod5_AC_Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod6_AC_Err_ID:                                    //110100;         //整流器6交流异常
               {alm = item.alm_ACDC_Mod6_AC_Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod7_AC_Err_ID:                                    //110101;         //整流器7交流异常
               {alm = item.alm_ACDC_Mod7_AC_Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod8_AC_Err_ID:                                    //110102;         //整流器8交流异常
               {alm = item.alm_ACDC_Mod8_AC_Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod9_AC_Err_ID:                                    //110103;         //整流器9交流异常
               {alm = item.alm_ACDC_Mod9_AC_Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod10_AC_Err_ID:                                    //110104;         //整流器10交流异常
               {alm = item.alm_ACDC_Mod10_AC_Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod11_AC_Err_ID:                                    //110105;         //整流器11交流异常
               {alm = item.alm_ACDC_Mod11_AC_Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod12_AC_Err_ID:                                    //110106;         //整流器12交流异常
               {alm = item.alm_ACDC_Mod12_AC_Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod13_AC_Err_ID:                                    //110107;         //整流器13交流异常
               {alm = item.alm_ACDC_Mod13_AC_Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod14_AC_Err_ID:                                    //110108;         //整流器14交流异常
               {alm = item.alm_ACDC_Mod14_AC_Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod15_AC_Err_ID:                                    //110109;         //整流器15交流异常
               {alm = item.alm_ACDC_Mod15_AC_Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_Mod16_AC_Err_ID:                                    //110110;         //整流器16交流异常
               {alm = item.alm_ACDC_Mod16_AC_Err;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_Trip_ID:                                    //110111;         //交流输入1跳闸
               {alm = item.alm_ACDC_AcIn1_Trip;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn2_Trip_ID:                                    //110112;         //交流输入2跳闸
               {alm = item.alm_ACDC_AcIn2_Trip;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_Fuse_ID:                                    //110113;         //交流输入1熔丝告警
               {alm = item.alm_ACDC_AcIn1_Fuse;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn2_Fuse_ID:                                    //110114;         //交流输入2熔丝告警
               {alm = item.alm_ACDC_AcIn2_Fuse;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_Unbalance_ID:                                    //110115;         //交流输入1三相不平衡
               {alm = item.alm_ACDC_AcIn1_Unbalance;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn2_Unbalance_ID:                                    //110116;         //交流输入2三相不平衡
               {alm = item.alm_ACDC_AcIn2_Unbalance;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_FreqErr_ID:                                    //110117;         //交流输入1频率异常
               {alm = item.alm_ACDC_AcIn1_FreqErr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn2_FreqErr_ID:                                    //110118;         //交流输入2频率异常
               {alm = item.alm_ACDC_AcIn2_FreqErr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_CPSS_CommErr_ID:                                    //110119;         //协转通信故障
               {alm = item.alm_ACDC_CPSS_CommErr;}break;
               //1+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
               case PwrDeviceAlarm_Data.ALM_TYPE_PWRDEV_CommErr_ID:                                    //110120;         //电源通信故障
               {alm = item.alm_PWRDEV_CommErr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_User_AcIn1_PowerDown_ID:                                    //110121;         //交流输入1停电
               {alm = item.alm_User_AcIn1_PowerDown;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_User_AcIn2_PowerDown_ID:                                    //110122;         //交流输入2停电
               {alm = item.alm_User_AcIn2_PowerDown;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_User_AcIn1_CommErr_ID:                                    //110123;         //交流1采集通信故障
               {alm = item.alm_User_AcIn1_CommErr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_User_AcIn2_CommErr_ID:                                    //110124;         //交流2采集通信故障
               {alm = item.alm_User_AcIn2_CommErr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_Envm_Temp1_CommErr_ID:                                    //110125;         //温感1通信故障
               {alm = item.alm_Envm_Temp1_CommErr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_Envm_Temp2_CommErr_ID:                                    //110126;         //温感2通信故障
               {alm = item.alm_Envm_Temp2_CommErr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_Envm_Temp3_CommErr_ID:                                    //110127;         //温感3通信故障
               {alm = item.alm_Envm_Temp3_CommErr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_Envm_Humi1_CommErr_ID:                                    //110128;         //湿感1通信故障
               {alm = item.alm_Envm_Humi1_CommErr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_Envm_Humi2_CommErr_ID:                                    //110129;         //湿感2通信故障
               {alm = item.alm_Envm_Humi2_CommErr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_Envm_Humi3_CommErr_ID:                                    //110130;         //湿感3通信故障
               {alm = item.alm_Envm_Humi3_CommErr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_Envm_Smoke1_Occur_ID:                                    //110131;         //烟感1报警
               {alm = item.alm_Envm_Smoke1_Occur;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_Envm_Smoke2_Occur_ID:                                    //110132;         //烟感2报警
               {alm = item.alm_Envm_Smoke2_Occur;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_Envm_Smoke3_Occur_ID:                                    //110133;         //烟感3报警
               {alm = item.alm_Envm_Smoke3_Occur;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_Envm_Smoke1_CommErr_ID:                                    //110134;         //烟感1通信故障
               {alm = item.alm_Envm_Smoke1_CommErr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_Envm_Smoke2_CommErr_ID:                                    //110135;         //烟感2通信故障
               {alm = item.alm_Envm_Smoke2_CommErr;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_Envm_Smoke3_CommErr_ID:                                    //110136;         //烟感3通信故障
               {alm = item.alm_Envm_Smoke3_CommErr;}break;
               /********************* 2023-07-28 新增电源告警 ************************************************/
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_A_OverV_Second_ID:                                    //110137;      //2路交流A相过压
               {alm = item.alm_ACDC_AcIn1_A_OverV_Second;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_A_UnderV_Second_ID:                                    //110138;      //2路交流A相欠压
               {alm = item.alm_ACDC_AcIn1_A_UnderV_Second;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_A_Less_Second_ID:                                    //110139;      //2路交流A相缺相
               {alm = item.alm_ACDC_AcIn1_A_Less_Second;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_B_OverV_Second_ID:                                    //110140;      //2路交流B相过压
               {alm = item.alm_ACDC_AcIn1_B_OverV_Second;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_B_UnderV_Second_ID:                                    //110141;      //2路交流B相欠压
               {alm = item.alm_ACDC_AcIn1_B_UnderV_Second;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_B_Less_Second_ID:                                    //110142;      //2路交流B相缺相
               {alm = item.alm_ACDC_AcIn1_B_Less_Second;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_C_OverV_Second_ID:                                    //110143;      //2路交流C相过压
               {alm = item.alm_ACDC_AcIn1_C_OverV_Second;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_C_UnderV_Second_ID:                                    //110144;      //2路交流C相欠压
               {alm = item.alm_ACDC_AcIn1_C_UnderV_Second;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_AcIn1_C_Less_Second_ID:                                    //110145;      //2路交流C相缺相
               {alm = item.alm_ACDC_AcIn1_C_Less_Second;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_PWRDEV_ERROR_ID:                                    //110146;      //电源告警
               {alm = item.alm_PWRDEV_ERROR;}break;
               case PwrDeviceAlarm_Data.ALM_TYPE_ACDC_PowerDown_CommErr_ID:                                    //110147;      //交流停电通信故障
               {alm = item.alm_ACDC_PowerDown_CommErr;}break;
            }
            if(null != alm) {
               alm.pwrdev_id = item.PowerDevDeviceId;
               alm.RecId = res.getLong("record_id");
               alm.alm_type = alm_type;                           //告警id
               alm.alm_cleared_type = res.getInt("alm_cleared_type");      //告警类型    0:实时告警         1:历史告警       2:取消告警
               alm.alm_vlaue = res.getFloat("alm_value");               //告警值
               alm.alm_severity = res.getInt("alm_severity");            //告警状态
               alm.alm_level = res.getInt("alm_level");               //告警等级
               alm.alm_start_time = res.getTimestamp("alm_start_time");   //告警开始时间
               alm.alm_trigger = res.getInt("alm_trigger");            //告警触发来源
               //System.out.println(alm);
            }
         }
      } catch (SQLException e) {
         sql.logger.error(e.toString(), e);
      } finally {
         if(null != res) {
            try {
               res.close();
            } catch (SQLException e) {
               sql.logger.error(e.toString(), e);
            }
         }
         sql.close_con();
      }
   }
   /**
    *    查询BTS设备的设备工作状态以及电池组状态
    * @param pool
    * @param rtpd
    */
   public static void readStateionBTSState(MysqlConnPool pool, PowerData_RT rtpd) {
      String sql_str = " SELECT dev_workstate,batt_state " +
                   " FROM db_battinf.tb_battinf,db_ram_db.tb_batt_rtstate,db_ram_db.tb_fbs9100_state " +
                   " WHERE FBSDeviceId = dev_id AND tb_battinf.BattGroupId = tb_batt_rtstate.BattGroupId " +
                   " AND StationId = '" + rtpd.StationId + "'";
      Sql_Mysql sql = new Sql_Mysql(pool.getConn());
      ResultSet res = null;
      res = sql.sqlMysqlQuery(sql_str);
      try {
         if(res.next()) {
            rtpd.dev_wrokstate = res.getInt("dev_workstate");
            rtpd.batt_state = res.getInt("batt_state");
         }
      } catch (SQLException e) {
         sql.logger.error(e.toString(), e);
      } finally {
         if(null != res) {
            try {
               res.close();
            } catch (SQLException e) {
               sql.logger.error(e.toString(), e);
            }
         }
         sql.close_con();
      }
   }
}