V2.215 edit at date 2023-06-16
1.修复机房较多时[单组蓄电池单体较多]电池告警线程时间更新卡顿bug
2.蓄电池告警检测新增上上限告警以及下下限告警逻辑
3.修复放电单体电压低告警未在放电时触发bug
4.修复告警检测逻辑,加快电池告警触发灵敏度
5.修复在关闭使能后,之前存在的告警未消除bug
6.新增log4j日志打印,避免长时间运行日志溢出
3个文件已添加
18个文件已修改
459 ■■■■■ 已修改文件
BattMonitor_FBS9100S_Alarm/.classpath 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_Alarm/bin/com/battalarm/BattAlarm_Thread_New2.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_Alarm/bin/com/battalarm/BattDevHistory_SubtableThread.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_Alarm/bin/com/battalarm/BattDevHistory_SubtableThread_SQL.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_Alarm/bin/com/battalarm/DeviceAlarm_Thread_New.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_Alarm/bin/com/battdata_rt/BattData_RT.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_Alarm/bin/com/sql/MysqlConnPool.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_Alarm/bin/com/sql/Sql_Mysql.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_Alarm/bin/main/main_FBS9100S_Alarm.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_Alarm/lib/log4j-api-2.15.0.jar 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_Alarm/lib/log4j-core-2.15.0.jar 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_Alarm/log4j2_fbs9100s_alarm_x64.xml 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_Alarm/src/com/battalarm/BattAlarm_Thread_New2.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_Alarm/src/com/battalarm/BattDevHistory_SubtableThread.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_Alarm/src/com/battalarm/BattDevHistory_SubtableThread_SQL.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_Alarm/src/com/battalarm/DeviceAlarm_Thread_New.java 101 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_Alarm/src/com/battdata_rt/BattData_RT.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_Alarm/src/com/sql/MysqlConnPool.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_Alarm/src/com/sql/Sql_Mysql.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_Alarm/src/com/version_inf/version_inf.txt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_Alarm/src/main/main_FBS9100S_Alarm.java 120 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_Alarm/.classpath
@@ -21,5 +21,7 @@
    <classpathentry kind="lib" path="lib/spring-context-2.5.5.jar"/>
    <classpathentry kind="lib" path="lib/spring-core-2.5.5.jar"/>
    <classpathentry kind="lib" path="lib/sqljdbc4.jar"/>
    <classpathentry kind="lib" path="lib/log4j-api-2.15.0.jar"/>
    <classpathentry kind="lib" path="lib/log4j-core-2.15.0.jar"/>
    <classpathentry kind="output" path="bin"/>
</classpath>
BattMonitor_FBS9100S_Alarm/bin/com/battalarm/BattAlarm_Thread_New2.class
Binary files differ
BattMonitor_FBS9100S_Alarm/bin/com/battalarm/BattDevHistory_SubtableThread.class
Binary files differ
BattMonitor_FBS9100S_Alarm/bin/com/battalarm/BattDevHistory_SubtableThread_SQL.class
Binary files differ
BattMonitor_FBS9100S_Alarm/bin/com/battalarm/DeviceAlarm_Thread_New.class
Binary files differ
BattMonitor_FBS9100S_Alarm/bin/com/battdata_rt/BattData_RT.class
Binary files differ
BattMonitor_FBS9100S_Alarm/bin/com/sql/MysqlConnPool.class
Binary files differ
BattMonitor_FBS9100S_Alarm/bin/com/sql/Sql_Mysql.class
Binary files differ
BattMonitor_FBS9100S_Alarm/bin/main/main_FBS9100S_Alarm.class
Binary files differ
BattMonitor_FBS9100S_Alarm/lib/log4j-api-2.15.0.jar
Binary files differ
BattMonitor_FBS9100S_Alarm/lib/log4j-core-2.15.0.jar
Binary files differ
BattMonitor_FBS9100S_Alarm/log4j2_fbs9100s_alarm_x64.xml
New file
@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
    <properties>
        <Property name="PATTERN_LAYOUT">%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] [%level] %logger{36} - %msg%n</Property>
        <property name="LOG_HOME">fbs9100s_alarm_x64_logs</property>
    </properties>
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="${PATTERN_LAYOUT}" />
        </Console>
        <!--warn及以下日志-->
        <RollingFile name="INFO" fileName="${LOG_HOME}/info.log" filePattern="${LOG_HOME}/info-%d{yyyyMMdd}-%i.log.gz">
            <PatternLayout pattern="${PATTERN_LAYOUT}"/>
            <Filters>
                <!--如果是error级别拒绝-->
                <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>
                <!--如果是info\warn输出-->
                <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <Policies>
                <TimeBasedTriggeringPolicy />
                <!--单个文件大小-->
                <SizeBasedTriggeringPolicy size="20MB"/>
            </Policies>
            <!--保存日志文件个数-->
            <DefaultRolloverStrategy max="9"/>
        </RollingFile>
        <!--error级别日志输出-->
        <RollingFile name="ERROR" fileName="${LOG_HOME}/error.log" filePattern="${LOG_HOME}/error-%d{yyyyMMdd}-%i.log.gz">
            <PatternLayout pattern="${PATTERN_LAYOUT}"/>
            <Filters>
                <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="20MB"/>
            </Policies>
            <DefaultRolloverStrategy max="15">
                <Delete basePath="${LOG_HOME}/" maxDepth="2">
                    <IfFileName glob="*.log.gz" >
                        <IfAny>
                          <IfAccumulatedFileCount exceeds="14" />
                        </IfAny>
                    </IfFileName>
                    <!--!Note: 这里的age必须和filePattern协调, 后者是精确到dd, 这里就要写成xd, xD就不起作用,另外, 数字最好>2, 否则可能造成删除的时候, 最近的文件还处于被占用状态,导致删除不成功!-->
                    <!--30天-->
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="trace">
            <AppenderRef ref="Console" />
            <appenderRef ref="INFO" />
            <appenderRef ref="ERROR" />
        </Root>
    </Loggers>
</Configuration>
BattMonitor_FBS9100S_Alarm/src/com/battalarm/BattAlarm_Thread_New2.java
@@ -8,6 +8,9 @@
import java.util.Date;
import java.util.List;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.base.Com;
import com.battalarm.BattAlarmParam.AlarmParamCell;
import com.battdata_rt.BattData_RT;
@@ -31,12 +34,15 @@
    private BattData_RT_Array m_AL_Data;
    private BattAlarmParam m_AlarmParam_COE;
    
    private Logger logger = null;
    public BattAlarm_Thread_New2(AppConfig cfg, MysqlConnPool con_pool, BattData_RT_Array al_data)
    {
        m_AppCfg = cfg;
        m_Conn_Pool = con_pool;
        m_AlarmParam_COE = new BattAlarmParam();
        m_AL_Data = al_data;
        logger = LogManager.getLogger(this);
        
        CreateBattAlarmParamTable(m_Conn_Pool.getConn());                //创建电池告警参数表
        for(int i=0;i<m_AL_Data.getItemCount();i++){
@@ -91,7 +97,7 @@
            
            
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            if(sql != null){
                sql.close_con();
@@ -291,13 +297,13 @@
                sql.sqlMysqlExecute(sql_str);
            }*/            
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally{
            if(null != res) {
                try {
                    res.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                    sql.logger.error(e.toString(), e);
                }
            }
            sql.close_con();
@@ -313,7 +319,7 @@
    {
        Sql_Mysql sql = new Sql_Mysql(conn);
        String sql_str;
        ResultSet res;
        ResultSet res = null;
        
        try {
            sql.sqlMysqlUseDB(Sql_Mysql.DB_PARAM);
@@ -397,10 +403,17 @@
            }
        }
        catch (SQLException e) {
            e.printStackTrace();
            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();
            //System.out.println("sql.close_con()");
        }
@@ -435,7 +448,7 @@
            
            if(false == sql.sqlMysqlCheckIfTableExist(BattAlarmDataTableName))
            {
                System.out.println(BattAlarmDataTableName + " is not exist, create it now...");
                sql.logger.info(BattAlarmDataTableName + " is not exist, create it now...");
                String sql_str = "CREATE TABLE `" + BattAlarmDataTableName + "` "
                                + "( `num` bigint(20) NOT NULL AUTO_INCREMENT," + 
                                "  `BattGroupId` int(11) NOT NULL DEFAULT '0'," + 
@@ -542,13 +555,13 @@
            }
            //---------------------------------------------------------------------------------------------//
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            if(null != res) {
                try {
                    res.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                    sql.logger.error(e.toString(), e);
                }
            }
            sql.close_con();
@@ -566,7 +579,7 @@
            sql.sqlMysqlUseDB(Sql_Mysql.DB_ALARM);
            if(false == sql.sqlMysqlCheckIfTableExist(BattAlarmDataHistoryTableName))
            {
                System.out.println(BattAlarmDataHistoryTableName + " is not exist, create it now...");
                sql.logger.info(BattAlarmDataHistoryTableName + " is not exist, create it now...");
                String sql_str = "CREATE TABLE IF NOT EXISTS `tb_battalarm_data_history` ("
                        + "  `num` bigint(20) NOT NULL AUTO_INCREMENT," + 
                        "  `BattGroupId` int(11) NOT NULL DEFAULT '0'," + 
@@ -639,13 +652,13 @@
                sql.sqlMysqlExecute("ALTER TABLE " + BattAlarmDataHistoryTableName + " ADD INDEX `index_alm_level` (`alm_level` ASC);");
            }
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            if(null != res) {
                try {
                    res.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                    sql.logger.error(e.toString(), e);
                }
            }
            sql.close_con();
@@ -702,7 +715,7 @@
            }    
            
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            sql.close_con();
            //System.out.println("sql.close_con()");
@@ -724,7 +737,7 @@
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            sql.close_con();
        }
@@ -771,7 +784,7 @@
            sql.sqlMysqlUseDB(Sql_Mysql.DB_ALARM);
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            sql.close_con();
        }
@@ -793,7 +806,7 @@
            sql.sqlMysqlUseDB(Sql_Mysql.DB_ALARM);
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            sql.close_con();
        }        
@@ -849,7 +862,7 @@
                
            //}
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            sql.close_con();
        }
@@ -858,8 +871,9 @@
    private void getBattRtDataFromRamDB(Connection conn, BattData_RT rt_data)
    {
        Sql_Mysql sql = new Sql_Mysql(conn);
        ResultSet res = null;
        try {
            ResultSet res = sql.sqlMysqlQuery("SELECT * FROM " + Sql_Mysql.BattRtState_Table
            res = sql.sqlMysqlQuery("SELECT * FROM " + Sql_Mysql.BattRtState_Table
                                                + " WHERE BattGroupId=" + rt_data.BattGroupId);
            if(res.next()) {
                rt_data.TestData.onlineVol = res.getFloat("online_vol");
@@ -887,8 +901,15 @@
            //计算电池组的单体实际容量电池组的放完剩余容量
            BattAlarm_Thread_SQL.queryBattLastTestData(m_Conn_Pool, rt_data);
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            if(null != res) {
                try {
                    res.close();
                } catch (SQLException e1) {
                    sql.logger.error(e1.toString(), e1);
                }
            }
            sql.close_con();
        }
    }
@@ -904,7 +925,7 @@
            //System.out.println(sql_str);
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            sql.close_con();
        }        
@@ -934,7 +955,7 @@
            //sql.sqlMysqlExecute(sql_str2);
            //sql.sqlMysqlExecute(sql_str3);
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            sql.close_con();
        }
@@ -953,7 +974,7 @@
            //System.out.println(sql_str);
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            sql.close_con();
        }
@@ -988,8 +1009,15 @@
                battalarm.usr_id = rs.getInt("usr_Id");
            }
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        }finally {
            if(null != rs) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    sql.logger.error(e.toString(), e);
                }
            }
            sql.close_con();
        }
                
@@ -1027,8 +1055,15 @@
                alarms.add(battalarm);
            }
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        }finally {
            if(null != rs) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    sql.logger.error(e.toString(), e);
                }
            }
            sql.close_con();
        }                
        return alarms;
@@ -1039,7 +1074,7 @@
        try {
            updateBattAlarm_StartTime(m_Conn_Pool,"V"+main_FBS9100S_Alarm.m_VersionNum);            //更新线程监控中的电池告警的启动时间
            
            System.out.println(this.getName() + " - BattAlarm_Thread Delayed For "
            logger.info(this.getName() + " - BattAlarm_Thread Delayed For "
                    + m_AppCfg.getBattAlarmClearedDelay() + " Seconds To Start...");
            int delay_time_count = m_AppCfg.getBattAlarmFnStartDelay();
            
@@ -1049,7 +1084,7 @@
//            }
            //clearHistoryAlarm_BattNew(m_Conn_Pool);                                                //将之前的实时告警记录改为历史告警记录
        
            System.out.println(this.getName() + " - BattAlarm_Thread Started at "
            logger.info(this.getName() + " - BattAlarm_Thread Started at "
                                                + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
            
            for(int n=0; n<m_AL_Data.getItemCount(); n++)
@@ -1103,11 +1138,11 @@
                    alarms.clear();
                    sleep(200);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                    logger.error(e.toString(), e);
                }
            }
        } catch (Exception e1) {
            e1.printStackTrace();
            logger.error(e1.toString(), e1);
        }
    }
    
BattMonitor_FBS9100S_Alarm/src/com/battalarm/BattDevHistory_SubtableThread.java
@@ -5,6 +5,9 @@
import java.util.Date;
import java.util.List;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.base.Com;
import com.sql.MysqlConnPool;
@@ -19,16 +22,18 @@
    private List<BattAlarmData> battAlmDatas;             //需要分表的电池历史告警记录
    private List<FBS9100_DevData> devAlmDatas;             //需要分表的设备历史告警记录
    private MysqlConnPool pool;
    private Logger logger = null;
    
    public BattDevHistory_SubtableThread(MysqlConnPool pool) {
        this.battAlmDatas = new ArrayList<>();             //需要分表的电池历史告警记录
        this.devAlmDatas = new ArrayList<>();             //需要分表的设备历史告警记录
        this.pool = pool;
        this.logger = LogManager.getLogger(this);
    }
    @Override
    public void run() {
        System.out.println(" BattDevHistory_SubtableThread Start at " + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms) );
        logger.info(" BattDevHistory_SubtableThread Start at " + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms) );
        Date time = new Date(0);
        Date lastCheck = time;                //上一次检测历史告警时间
        Date lastDelete = time;                //上一次删除历史告警时间
@@ -94,12 +99,12 @@
                
                return;
            } catch (Exception e) {
                e.printStackTrace();
                logger.error(e.toString(), e);
            } finally {
                try {
                    Thread.sleep(10000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                    logger.error(e.toString(), e);
                }
            }            
        }    
BattMonitor_FBS9100S_Alarm/src/com/battalarm/BattDevHistory_SubtableThread_SQL.java
@@ -46,13 +46,13 @@
                battAlarms.add(alm);
            }
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            if(null != res) {
                try {
                    res.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                    sql.logger.error(e.toString(), e);
                }
            }
            sql.close_con();
@@ -92,13 +92,13 @@
                devAlmDatas.add(alm);
            }
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            if(null != res) {
                try {
                    res.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                    sql.logger.error(e.toString(), e);
                }
            }
            sql.close_con();
@@ -146,7 +146,7 @@
            sql_strs.add(sql_str_del);
            sql.makeManualCommit(sql_strs);
        } catch (Exception e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            sql.close_con();
        }
@@ -190,7 +190,7 @@
            sql_strs.add(sql_str_del);
            sql.makeManualCommit(sql_strs);
        } catch (Exception e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            sql.close_con();
        }
@@ -218,6 +218,7 @@
                "  `alm_confirmed_time` datetime NOT NULL DEFAULT '1982-01-01 00:00:00'," + 
                "  `alm_cleared_type` int(11) NOT NULL DEFAULT '0'," + 
                "  `usr_Id` int(11) NOT NULL DEFAULT '0'," + 
                "  `alm_severity` int(11) NOT NULL DEFAULT '0' COMMENT '告警重要等级[0:重要;1:紧急]'," +
                "  PRIMARY KEY (`num`)," + 
                "  KEY `index_battgroup_id` (`BattGroupId`)," + 
                "  KEY `index_Record_Id` (`Record_Id`)," + 
@@ -226,12 +227,12 @@
                "  KEY `index_alm_cleared_type` (`alm_cleared_type`)," + 
                "  KEY `index_alm_signal_id` (`alm_signal_id`)," + 
                "  KEY `index_alm_level` (`alm_level`)" + 
                ") ENGINE=InnoDB DEFAULT CHARSET=utf8; " ;
                ") ENGINE=InnoDB AUTO_INCREMENT=122358 DEFAULT CHARSET=utf8" ;
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally{
            sql.close_con();
        }
@@ -257,18 +258,19 @@
                "  `alm_confirmed_time` datetime NOT NULL DEFAULT '1982-01-01 00:00:00'," + 
                "  `alm_cleared_type` int(11) NOT NULL DEFAULT '0'," + 
                "  `usr_Id` int(11) NOT NULL DEFAULT '0'," + 
                "  `alm_severity` int(11) NOT NULL DEFAULT '1' COMMENT '告警重要等级[0:重要;1:紧急]'," +
                "  PRIMARY KEY (`num`)," + 
                "  KEY `index_record_id` (`record_id`)," + 
                "  KEY `index_dev_id` (`dev_id`)," + 
                "  KEY `index_alm_type` (`alm_type`)," + 
                "  KEY `index_alm_start_time` (`alm_start_time`)," + 
                "  KEY `index_alm_cleared_type` (`alm_cleared_type`)" + 
                ") ENGINE=InnoDB DEFAULT CHARSET=utf8; " ;
                ") ENGINE=InnoDB AUTO_INCREMENT=16458 DEFAULT CHARSET=utf8 " ;
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally{
            sql.close_con();
        }
@@ -299,21 +301,21 @@
                }
                
                sql_delete_strs.append("db_alarm." + res.getString("TABLE_NAME"));
                System.err.println("自动删除超过3年的告警表 : db_alarm."+res.getString("TABLE_NAME")+"\t at "+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
                sql.logger.info("自动删除超过3年的告警表 : db_alarm."+res.getString("TABLE_NAME")+"\t at "+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
                count++;
            }
            if(count >0) {
                System.out.println(sql_delete_strs.toString());
                //System.out.println(sql_delete_strs.toString());
                sql.sqlMysqlExecute(sql_delete_strs.toString());
            }
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            if(null != res) {
                try {
                    res.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                    sql.logger.error(e.toString(), e);
                }
            }
            sql.close_con();
BattMonitor_FBS9100S_Alarm/src/com/battalarm/DeviceAlarm_Thread_New.java
@@ -2,13 +2,15 @@
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;
import java.util.UUID;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.base.Com;
import com.config.AppConfig;
@@ -79,10 +81,14 @@
    private MysqlConnPool m_Conn_Pool;
    private AppConfig m_AppCfg = null;
    
    private Logger logger = null;
    public DeviceAlarm_Thread_New(AppConfig cfg, MysqlConnPool con_pool)
    {
        m_AppCfg = cfg;
        m_Conn_Pool = con_pool;
        logger = LogManager.getLogger(this);
        
        createDevAlarmTable_IfNotExist(m_Conn_Pool);                //创建设备实时告警记录表
        
@@ -96,11 +102,12 @@
    private void createDevAlarmTable_IfNotExist(MysqlConnPool conn_pool)
    {
        Sql_Mysql sql = new Sql_Mysql(m_Conn_Pool.getConn());
        ResultSet res = null;
        try {
            sql.sqlMysqlUseDB(Sql_Mysql.DB_ALARM);
            if(false == sql.sqlMysqlCheckIfTableExist(DeviceAlarmTableName))
            {
                System.out.println(DeviceAlarmTableName + " is not exist, create it now...");
                sql.logger.info(DeviceAlarmTableName + " is not exist, create it now...");
                String sql_str = " CREATE TABLE `" + DeviceAlarmTableName + "` " + "(" + 
                                "  `num` bigint(20) NOT NULL AUTO_INCREMENT," + 
                                "  `record_id` bigint(20) NOT NULL DEFAULT '0'," + 
@@ -129,7 +136,7 @@
            }
            
            //--------------将alm_is_cleared boolean字段改为alm_cleared_type int类型 2016-05-15--------------//
            ResultSet res = sql.sqlMysqlQuery("SELECT DATA_TYPE FROM information_schema.columns"
            res = sql.sqlMysqlQuery("SELECT DATA_TYPE FROM information_schema.columns"
                                            + " WHERE table_schema='db_alarm'"
                                            + " AND table_name='" + DeviceAlarmTableName + "'"
                                            + " AND column_name='alm_is_cleared'");
@@ -183,8 +190,15 @@
            
            //----------------------------------------------------------------------------------------------//
        } catch (SQLException e) {
            e.printStackTrace();
            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();
            //System.out.println("sql.close_con()");
        }
@@ -197,11 +211,12 @@
    private void createDevAlarm_HistoryTable_IfNotExist(MysqlConnPool conn_pool)
    {
        Sql_Mysql sql = new Sql_Mysql(m_Conn_Pool.getConn());
        ResultSet res = null;
        try {
            sql.sqlMysqlUseDB(Sql_Mysql.DB_ALARM);
            if(false == sql.sqlMysqlCheckIfTableExist(DeviceALarmHistoryTableName))
            {
                System.out.println(DeviceALarmHistoryTableName + " is not exist, create it now...");
                sql.logger.info(DeviceALarmHistoryTableName + " is not exist, create it now...");
                String sql_str = "CREATE TABLE IF NOT EXISTS `"+DeviceALarmHistoryTableName+"` ("
                        + "  `num` bigint(20) NOT NULL AUTO_INCREMENT,"
                        + "  `record_id` bigint(20) NOT NULL DEFAULT '0',"
@@ -228,7 +243,7 @@
            }
            
            //添加设备告警值字段alm_value
            ResultSet res = sql.sqlMysqlQuery("SELECT * FROM information_schema.columns"
            res = sql.sqlMysqlQuery("SELECT * FROM information_schema.columns"
                    + " WHERE table_schema='db_alarm'"
                    + " AND table_name='" + DeviceALarmHistoryTableName + "'"
                    + " AND column_name='alm_value'");
@@ -248,8 +263,15 @@
                        + " ADD COLUMN `alm_severity` int(11) NOT NULL DEFAULT '1' COMMENT '告警重要等级[0:重要;1:紧急]';");
            }
        } catch (SQLException e) {
            e.printStackTrace();
            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();
            //System.out.println("sql.close_con()");
        }
@@ -313,7 +335,7 @@
                sql.sqlMysqlExecute(sql_str);
            }
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            sql.close_con();
            //System.out.println("sql.close_con()");
@@ -349,7 +371,7 @@
            //sql.sqlMysqlExecute(sql_str2);
            //sql.sqlMysqlExecute(sql_str3);
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            sql.close_con();
        }
@@ -360,13 +382,14 @@
    public static List<FBS9100_DevData> selectAllDev(MysqlConnPool conn_pool){
        Sql_Mysql sql = new Sql_Mysql(conn_pool.getConn());
        List<FBS9100_DevData> list = new ArrayList<FBS9100_DevData>();
        ResultSet rs = null;
        try {
            sql.sqlMysqlUseDB(Sql_Mysql.DB_RamDB);
            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);
            rs = sql.sqlMysqlQuery(sql_str);
            SimpleDateFormat sdf = new SimpleDateFormat(Com.DTF_YMDhms);
            while(rs.next()) {
                FBS9100_DevData  fbs9100_devdata=new FBS9100_DevData();
@@ -385,8 +408,15 @@
                list.add(fbs9100_devdata);
            }
        } catch (SQLException | ParseException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            if(null != rs) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    sql.logger.error(e.toString(), e);
                }
            }
            sql.close_con();
        }
        return list;
@@ -423,8 +453,15 @@
                list.add(fbs9100_devdata);
            }
        } catch (SQLException e) {
            e.printStackTrace();
            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 list;
@@ -434,6 +471,7 @@
    public static FBS9100_DevData judgedevidInorNo(MysqlConnPool conn_pool,int dev_id,int alm_type_id){
        Sql_Mysql sql = new Sql_Mysql(conn_pool.getConn());
        FBS9100_DevData devData = null;
        ResultSet rs = null;
        try {
            sql.sqlMysqlUseDB(Sql_Mysql.DB_ALARM);
            String sql_str = " SELECT dev_id,record_id,alm_level,alm_type,alm_cleared_type,alm_start_time "
@@ -443,7 +481,7 @@
            /*String sql_str = "SELECT record_id,alm_level FROM " + DeviceAlarmTableName 
                                + " WHERE dev_id=" + dev_id+ " AND alm_type= "+ alm_type_id + " AND record_id != 0 AND alm_cleared_type = 0";
                + " limit 1 ";*/
            ResultSet rs = sql.sqlMysqlQuery(sql_str);
            rs = sql.sqlMysqlQuery(sql_str);
            if(rs.next()) {
                devData = new FBS9100_DevData();
                
@@ -454,8 +492,15 @@
                devData.setAlm_cleared_type(rs.getInt("alm_cleared_type"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            if(null != rs) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    sql.logger.error(e.toString(), e);
                }
            }
            sql.close_con();
        }
        return devData;
@@ -471,7 +516,7 @@
                    + " AND ServerName='BMS_FBSDEV_ALARM'";
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            sql.close_con();
        }        
@@ -487,7 +532,7 @@
                        + "WHERE alm_cleared_type = 0 ";
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            sql.close_con();
        }
@@ -497,7 +542,7 @@
    public void run() {        
        //clearHistoryAlarm_DEV(m_Conn_Pool);                                                //将设备实时的告警记录改成历史告警记录
        updateDeviceAlarm_StartTime(m_Conn_Pool,"V"+main_FBS9100S_Alarm.m_VersionNum);        //更新设备告警的启动时间
        System.out.println(this.getName() + " - DevAlarm_Thread Started at "
        logger.info(this.getName() + " - DevAlarm_Thread Started at "
                                            + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
        
        
@@ -520,7 +565,7 @@
                }
            }
        } catch (Exception e1) {
            e1.printStackTrace();
            logger.error(e1.toString(), e1);
        }        
        
        while(true)
@@ -808,7 +853,7 @@
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            sql.close_con();
        }
@@ -827,7 +872,7 @@
            //System.out.println(sql_str);
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            sql.close_con();
        }
@@ -866,13 +911,13 @@
                list.add(data);
            }
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            if(rs != null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                    sql.logger.error(e.toString(), e);
                }
            }
            sql.close_con();
@@ -907,14 +952,14 @@
            }
            SDalarm.isAlarm = flag;
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            try {
                if(rs != null) {
                    rs.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
                sql.logger.error(e.toString(), e);
            }
            sql.close_con();
        }
@@ -958,14 +1003,14 @@
                //}
            }
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            try {
                if(rs != null) {
                    rs.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
                sql.logger.error(e.toString(), e);
            }
            sql.close_con();
        }
@@ -1003,14 +1048,14 @@
                isEffective = true;
            }
        } catch (SQLException e) {
            e.printStackTrace();
            sql.logger.error(e.toString(), e);
        } finally {
            try {
                if(rs != null) {
                    rs.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
                sql.logger.error(e.toString(), e);
            }
            sql.close_con();
        }
BattMonitor_FBS9100S_Alarm/src/com/battdata_rt/BattData_RT.java
@@ -423,9 +423,9 @@
            vol_data.monRealCap_AlarmData.makeAlarmData(al_alm_data, m_AlarmParam.alm_MonREALCAP, vol_data.monRealCap);
        }
        long outtimelong = Math.abs((new Date().getTime()) - TestData.recordTime.getTime());
        if(BattGroupId == 1000021) {
            System.out.println("TestData.groupVol_AlarmData.alm_signal_id:"+TestData.groupVol_AlarmData.alm_signal_id+"==" + this.TestData.groupVol_AlarmData.getAlarmState());
        }
//        if(BattGroupId == 1000021) {
//            System.out.println("TestData.groupVol_AlarmData.alm_signal_id:"+TestData.groupVol_AlarmData.alm_signal_id+"==" + this.TestData.groupVol_AlarmData.getAlarmState());
//        }
        if(outtimelong<60*1000) {            
            BattAlarm_Thread_SQL.updateBattRtState_Table(pool, this);
            BattAlarm_Thread_SQL.updateBattAlarm_RT_RamDB_Table(pool, this);
BattMonitor_FBS9100S_Alarm/src/com/sql/MysqlConnPool.java
@@ -3,15 +3,21 @@
import java.sql.Connection;
import java.sql.SQLException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class MysqlConnPool {
    private ComboPooledDataSource mysql_ds = new ComboPooledDataSource();
    private int mSqlPort = 5306;
    
    public Logger logger = null;
    public MysqlConnPool(String server_ip, int port, int conncount_max)
    {
        try {
            logger = LogManager.getLogger(this);
            init(server_ip, port, conncount_max);
        } catch (PropertyVetoException e) {
            e.printStackTrace();
@@ -34,7 +40,7 @@
        try {
            con = mysql_ds.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
            logger.error("MysqlConnPool.getConn()"+e.toString(), e);
        }
        return con;
    }
BattMonitor_FBS9100S_Alarm/src/com/sql/Sql_Mysql.java
@@ -5,6 +5,9 @@
import java.sql.Statement;
import java.util.ArrayList;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.base.Com;
/**
@@ -138,9 +141,12 @@
    //--------------------------------------------------------------------------------------------//
    public Connection mysql_con;
    
    public Logger logger = null;
    public Sql_Mysql(Connection conn)
    {
        mysql_con = conn;
        logger = LogManager.getLogger(this);
    }
    
    /*
@@ -159,7 +165,7 @@
        try {
            mysql_con.close();
        } catch (SQLException e) {
            e.printStackTrace();
            logger.error(this.getClass()+".close_con()"+e.toString(), e);
        }
    }
    
@@ -189,7 +195,7 @@
                st_count++;
            }
        } catch (SQLException e) {
            e.printStackTrace();
            logger.error(this.getClass()+".getBattStationCount()"+e.toString(), e);
        }
        
        return st_count;
@@ -239,7 +245,7 @@
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            logger.error(this.getClass()+".makeManualCommit()"+e.toString(), e);
            exe_res = false;
        } finally {
            try {
@@ -249,7 +255,7 @@
                mysql_con.setAutoCommit(true);
            } catch (SQLException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
                logger.error(this.getClass()+".makeManualCommit()"+e1.toString(), e1);
            }
        }
        
@@ -305,7 +311,7 @@
                stname = res.getString("StationName");
            }
        } catch (SQLException e) {
            e.printStackTrace();
            logger.error(this.getClass()+".getStationName()"+e.toString(), e);
        }
        
        return stname;
@@ -325,7 +331,7 @@
                bgname = res.getString("BattGroupName");
            }
        } catch (SQLException e) {
            e.printStackTrace();
            logger.error(this.getClass()+".getBattGroupName()"+e.toString(), e);
        }
        
        return bgname;
@@ -344,7 +350,7 @@
                usrname = res.getString("uName");
            }
        } catch (SQLException e) {
            e.printStackTrace();
            logger.error(this.getClass()+".getUsrName()"+e.toString(), e);
        }
        
        return usrname;
@@ -386,7 +392,7 @@
                taskname = res.getString("task_name");
            }
        } catch (SQLException e) {
            e.printStackTrace();
            logger.error(this.getClass()+".getUsrTaskName()"+e.toString(), e);
        }
        
        return taskname;
@@ -405,7 +411,7 @@
                taskcreatetime = Com.getDateTimeFormat(res.getTimestamp("task_create_date"), Com.DTF_YMDhms);
            }
        } catch (SQLException e) {
            e.printStackTrace();
            logger.error(this.getClass()+".getUsrTaskCreateTime()"+e.toString(), e);
        }
        
        return taskcreatetime;
@@ -441,7 +447,7 @@
            
            mysql_con.commit();
        } catch (SQLException e) {
            e.printStackTrace();
            logger.error(this.getClass()+".getBattTestRecordCountNew()"+e.toString(), e);
            res_exe = false;
        } finally {
            if(false == res_exe) {
@@ -450,7 +456,7 @@
                    mysql_con.setAutoCommit(true);
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    logger.error(this.getClass()+".getBattTestRecordCountNew()"+e.toString(), e);
                }
            }
        }
BattMonitor_FBS9100S_Alarm/src/com/version_inf/version_inf.txt
@@ -21,6 +21,7 @@
    3.修复放电单体电压低告警未在放电时触发bug
    4.修复告警检测逻辑,加快电池告警触发灵敏度
    5.修复在关闭使能后,之前存在的告警未消除bug
    6.新增log4j日志打印,避免长时间运行日志溢出
V2.214 edit at date 2023-03-03 lijun
BattMonitor_FBS9100S_Alarm/src/main/main_FBS9100S_Alarm.java
@@ -4,6 +4,9 @@
import java.util.Date;
import java.util.TimeZone;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.base.Com;
import com.battalarm.BattAlarm_Thread_New;
import com.battalarm.BattAlarm_Thread_New2;
@@ -75,10 +78,18 @@
    private static MysqlConnPool GB_MysqlConnPool;
    private static BattData_RT_Array GB_DataArray;
    public static AppParam GB_App_Param;
    private static Logger logger;
    static {
        System.setProperty("log4j.configurationFile", "log4j2_fbs9100s_alarm_x64.xml");
    //    System.setProperty("contextSelector", "org.apache.logging.log4j.core.async.AsyncLoggerContextSelector");
    }
    /*********************************************************************************************/
    /*********************************************************************************************/
    public static void main(String[] args) {
        TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
        logger = LogManager.getLogger(main_FBS9100S_Alarm.class);
        
        /*//BasicConfigurator.configure();*/
        String ver = m_Version;
@@ -114,10 +125,10 @@
            FTP_Server_Port = DEF_FTP_ServerFBO_Port;
        }
        //System.out.println(ver+"%%%%%%%%%%%%%");
        System.out.println("/****************************************************************");
        System.out.println("*****************************************************************");
        System.out.println("****************************************************************/");
        System.out.println(ver);
        logger.info("/****************************************************************");
        logger.info("*****************************************************************");
        logger.info("****************************************************************/");
        logger.info(ver);
        //创建config.xml文件
        m_AppConfig = new AppConfig();
        /*
@@ -135,7 +146,7 @@
        //检测数据库连接
        checkingMySQLServerStart();
        //MysqlServer_Port = 5306;
        System.out.println("IP:"+m_AppConfig.getMysqlServerIp()+"port"+MysqlServer_Port);
        logger.info("IP:"+m_AppConfig.getMysqlServerIp()+"port"+MysqlServer_Port);
        
        
        //初始化连接池中的各种参数信息
@@ -161,57 +172,42 @@
        //更新tb_batt_rtdata,tb_server_state,tb_batt_rtstate表中的数据
        GB_DataArray.initBattDataRT_Inf();
        
        System.out.println( "------------------- AppConfig start -----------------------------------\n"
                            + "MysqlServerIp=" + m_AppConfig.getMysqlServerIp() + "\n"
                            + "SybaseServerIp=" + m_AppConfig.getSourceSQLServerIp() + "\n"
                            + "MysqlConnCountMax=" + m_AppConfig.getMysqlConnCountMax() + "\n"
                            + "WorkThreadCountMax=" + m_AppConfig.getWorkThreadCountMax() + "\n"
                            + "SourceBattDataType=" + m_AppConfig.getSourceBattDataType() + "\n"
                            + "FbsDeviceBaseIp=" + m_AppConfig.getFbsDeviceBaseIp() + "\n"
                            + "BattAlarmFnEn=" + m_AppConfig.getBattAlarmFnEn() + "\n"
                            + "BattAlarmFnStartDelay=" + m_AppConfig.getBattAlarmFnStartDelay() + "\n"
                            + "BattAlarmClearedDelay=" + m_AppConfig.getBattAlarmClearedDelay() + "\n"
                            + "BattResStoreFnEn=" + m_AppConfig.getBattResStoreFnEn() + "\n"
                            + "BattResStoreDelayForTestManual=" + m_AppConfig.getBattResStoreDelayForTestManual() + "\n"
                            + "BattResStoreDayInterval=" + m_AppConfig.getBattResStoreDayInterval() + "\n"
                            + "------------------- AppConfig end -----------------------------------\n");
        logger.info("------------------- AppConfig start -----------------------------------" );
        logger.info("MysqlServerIp=" + m_AppConfig.getMysqlServerIp() );
        logger.info("SybaseServerIp=" + m_AppConfig.getSourceSQLServerIp() );
        logger.info("MysqlConnCountMax=" + m_AppConfig.getMysqlConnCountMax() );
        logger.info("WorkThreadCountMax=" + m_AppConfig.getWorkThreadCountMax() );
        logger.info("SourceBattDataType=" + m_AppConfig.getSourceBattDataType() );
        logger.info("FbsDeviceBaseIp=" + m_AppConfig.getFbsDeviceBaseIp() );
        logger.info("BattAlarmFnEn=" + m_AppConfig.getBattAlarmFnEn() );
        logger.info("BattAlarmFnStartDelay=" + m_AppConfig.getBattAlarmFnStartDelay() );
        logger.info("BattAlarmClearedDelay=" + m_AppConfig.getBattAlarmClearedDelay() );
        logger.info("BattResStoreFnEn=" + m_AppConfig.getBattResStoreFnEn() );
        logger.info("BattResStoreDelayForTestManual=" + m_AppConfig.getBattResStoreDelayForTestManual() );
        logger.info("BattResStoreDayInterval=" + m_AppConfig.getBattResStoreDayInterval() );
        logger.info("------------------- AppConfig end -----------------------------------");
                            
        System.out.println( "--------------------- App_Param start---------------------------------\n"
                            + "Discharge_TestTimeLongMinimum="
                            + GB_App_Param.getTestTimeLongMinimum(AppParam.AppParam_Discharge) + "\n"
                            + "Discharge_SaveDataTimeInterval="
                            + GB_App_Param.getSaveDataTimeInterval(AppParam.AppParam_Discharge) + "\n"
                            + "Discharge_MonVolChangeLevel="
                            + GB_App_Param.getMonVolChangeLevel(AppParam.AppParam_Discharge) + "\n"
                            + "Discharge_BattTestGroupCountMax="
                            + GB_App_Param.getBattTestGroupCountMax(AppParam.AppParam_Discharge) + "\n"
                            + "Discharge_TestDataRecordCountMax="
                            + GB_App_Param.getTestDataRecordCountMax(AppParam.AppParam_Discharge) + "\n"
                            + "--------------------------------------------------------------------\n"
                            + "Charge_TestTimeLongMinimum="
                            + GB_App_Param.getTestTimeLongMinimum(AppParam.AppParam_Charge) + "\n"
                            + "Charge_SaveDataTimeInterval="
                            + GB_App_Param.getSaveDataTimeInterval(AppParam.AppParam_Charge) + "\n"
                            + "Charge_MonVolChangeLevel="
                            + GB_App_Param.getMonVolChangeLevel(AppParam.AppParam_Charge) + "\n"
                            + "Charge_BattTestGroupCountMax="
                            + GB_App_Param.getBattTestGroupCountMax(AppParam.AppParam_Charge) + "\n"
                            + "Charge_TestDataRecordCountMax="
                            + GB_App_Param.getTestDataRecordCountMax(AppParam.AppParam_Charge) + "\n"
                            + "--------------------------------------------------------------------\n"
                            + "Poweroff_TestTimeLongMinimum="
                            + GB_App_Param.getTestTimeLongMinimum(AppParam.AppParam_PowerOff) + "\n"
                            + "Poweroff_SaveDataTimeInterval="
                            + GB_App_Param.getSaveDataTimeInterval(AppParam.AppParam_PowerOff) + "\n"
                            + "Poweroff_MonVolChangeLevel="
                            + GB_App_Param.getMonVolChangeLevel(AppParam.AppParam_PowerOff) + "\n"
                            + "Poweroff_BattTestGroupCountMax="
                            + GB_App_Param.getBattTestGroupCountMax(AppParam.AppParam_PowerOff) + "\n"
                            + "Poweroff_TestDataRecordCountMax="
                            + GB_App_Param.getTestDataRecordCountMax(AppParam.AppParam_PowerOff) + "\n"
                            + "--------------------------------------------------------------------\n"
                            + "Discharge_BattJunHengFN=" + GB_App_Param.getBattJunHengFN() + "\n"
                            + "--------------------- App_Param end---------------------------------\n");
        logger.info("--------------------- App_Param start---------------------------------");
        logger.info("Discharge_TestTimeLongMinimum=" + GB_App_Param.getTestTimeLongMinimum(AppParam.AppParam_Discharge) );
        logger.info("Discharge_SaveDataTimeInterval=" + GB_App_Param.getSaveDataTimeInterval(AppParam.AppParam_Discharge) );
        logger.info("Discharge_MonVolChangeLevel=" + GB_App_Param.getMonVolChangeLevel(AppParam.AppParam_Discharge) );
        logger.info("Discharge_BattTestGroupCountMax=" + GB_App_Param.getBattTestGroupCountMax(AppParam.AppParam_Discharge) );
        logger.info("Discharge_TestDataRecordCountMax=" + GB_App_Param.getTestDataRecordCountMax(AppParam.AppParam_Discharge) );
        logger.info("--------------------------------------------------------------------");
        logger.info("Charge_TestTimeLongMinimum=" + GB_App_Param.getTestTimeLongMinimum(AppParam.AppParam_Charge) );
        logger.info("Charge_SaveDataTimeInterval=" + GB_App_Param.getSaveDataTimeInterval(AppParam.AppParam_Charge) );
        logger.info("Charge_MonVolChangeLevel=" + GB_App_Param.getMonVolChangeLevel(AppParam.AppParam_Charge) );
        logger.info("Charge_BattTestGroupCountMax=" + GB_App_Param.getBattTestGroupCountMax(AppParam.AppParam_Charge) );
        logger.info("Charge_TestDataRecordCountMax="     + GB_App_Param.getTestDataRecordCountMax(AppParam.AppParam_Charge) );
        logger.info("--------------------------------------------------------------------");
        logger.info("Poweroff_TestTimeLongMinimum=" + GB_App_Param.getTestTimeLongMinimum(AppParam.AppParam_PowerOff) );
        logger.info("Poweroff_SaveDataTimeInterval=" + GB_App_Param.getSaveDataTimeInterval(AppParam.AppParam_PowerOff) );
        logger.info("Poweroff_MonVolChangeLevel=" + GB_App_Param.getMonVolChangeLevel(AppParam.AppParam_PowerOff) );
        logger.info("Poweroff_BattTestGroupCountMax=" + GB_App_Param.getBattTestGroupCountMax(AppParam.AppParam_PowerOff) );
        logger.info("Poweroff_TestDataRecordCountMax=" + GB_App_Param.getTestDataRecordCountMax(AppParam.AppParam_PowerOff) );
        logger.info("--------------------------------------------------------------------");
        logger.info("Discharge_BattJunHengFN=" + GB_App_Param.getBattJunHengFN() );
        logger.info("--------------------- App_Param end---------------------------------");
        /*********************************************************************************/
        /*********************************************************************************/
        /*********************************************************************************/
@@ -237,23 +233,23 @@
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
                logger.error(e.toString(), e);
            }
        }
    }
    
    public static void checkingMySQLServerStart(){
        int MysqlServer_Port = 3360;
        System.out.println("IP:"+m_AppConfig.getMysqlServerIp()+"\t port:"+MysqlServer_Port);
        logger.info("IP:"+m_AppConfig.getMysqlServerIp()+"\t port:"+MysqlServer_Port);
        //初始化连接池中的各种参数信息        m_AppConfig.getMysqlServerIp()
        GB_MysqlConnPool = new MysqlConnPool(m_AppConfig.getMysqlServerIp(), MysqlServer_Port, 5);
        while(true){
            Connection conn = null;
            try {
                System.out.println(" 开始检测数据库连接 "+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
                logger.info(" 开始检测数据库连接 "+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
                conn =  GB_MysqlConnPool.getConn();
                if(conn != null){
                    System.out.println("检测数据库连接成功");
                    logger.info("检测数据库连接成功");
                    break;
                }else {
                    //休息1秒重新检测
@@ -263,15 +259,15 @@
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e1) {
                    System.err.println(e);
                    logger.error(e.toString(), e1);
                }
                System.out.println(" MySQL_FBSDEV not Start ... ");
                logger.info(" MySQL_FBSDEV not Start ... ");
            } finally {
                if(conn != null) {
                    try {
                        conn.close();
                    } catch (SQLException e) {
                        System.err.println(e);
                        logger.error(e.toString(), e);
                    }
                }
            }