新疆锂电通信程序,兼容【常规BTS,老版本并联BTS;假负载BTS,逆变BTS】
V10.656 edit at date 2024-07-18 lijun
1.历史实时数据保存参数根据'db_param.tb_app_param'表中的参数进行识别
历史实时数据存储间隔(秒)->realdata_SaveDataTimeInterval 60 real-time history data
save data interval by seconds
历史实时数据存储间隔(天)->realdata_SaveDataTimeMax 90 real-time history data
save data max time for batttest data count to insert to mysql server
14个文件已修改
358 ■■■■ 已修改文件
BattMonitor_FBS9100S_ForXinJiang/bin/com/battmonitor/base/AppParam$MonitorParam.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_ForXinJiang/bin/com/battmonitor/base/AppParam.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_ForXinJiang/bin/com/battmonitor/sql/Sql_Mysql.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_ForXinJiang/bin/com/dev/btse/comm/BattRealDataPro_Thread.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_ForXinJiang/bin/com/dev/btse/comm/FBS9100_Task_Thread_SQL.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_ForXinJiang/bin/com/version_inf/version_inf.txt 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_ForXinJiang/bin/main/main_MonitorServer_FBS9100S.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_ForXinJiang/config.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_ForXinJiang/src/com/battmonitor/base/AppParam.java 197 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_ForXinJiang/src/com/battmonitor/sql/Sql_Mysql.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_ForXinJiang/src/com/dev/btse/comm/BattRealDataPro_Thread.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_ForXinJiang/src/com/dev/btse/comm/FBS9100_Task_Thread_SQL.java 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_ForXinJiang/src/com/version_inf/version_inf.txt 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_ForXinJiang/src/main/main_MonitorServer_FBS9100S.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_ForXinJiang/bin/com/battmonitor/base/AppParam$MonitorParam.class
Binary files differ
BattMonitor_FBS9100S_ForXinJiang/bin/com/battmonitor/base/AppParam.class
Binary files differ
BattMonitor_FBS9100S_ForXinJiang/bin/com/battmonitor/sql/Sql_Mysql.class
Binary files differ
BattMonitor_FBS9100S_ForXinJiang/bin/com/dev/btse/comm/BattRealDataPro_Thread.class
Binary files differ
BattMonitor_FBS9100S_ForXinJiang/bin/com/dev/btse/comm/FBS9100_Task_Thread_SQL.class
Binary files differ
BattMonitor_FBS9100S_ForXinJiang/bin/com/version_inf/version_inf.txt
@@ -1,7 +1,13 @@
V10.656 edit at date 2024-07-18 lijun
    1.历史实时数据保存参数根据'db_param.tb_app_param'表中的参数进行识别
        历史实时数据存储间隔(秒)->realdata_SaveDataTimeInterval    60    real-time history data save data interval by seconds
        历史实时数据存储间隔(天)->realdata_SaveDataTimeMax        90    real-time history data save data max time for batttest data count to insert to mysql server
V10.655 edit at date 2024-04-07 lijun
    1.新增设备类型9150-山东定制版BTS,新增旁路以及对应状态传递
    2.历史实时数据最久保存1年的历史实时数据
V10.654 edit at date 2023-09-07 lijun
    1.修复记录历史数据时缺少db_batt_testdata.tb_battresdata_inf表,导致历史数据中的db_batt_testdata.tb_battresdata_inf数据无法插入导致历史数据记录故障
BattMonitor_FBS9100S_ForXinJiang/bin/main/main_MonitorServer_FBS9100S.class
Binary files differ
BattMonitor_FBS9100S_ForXinJiang/config.xml
@@ -63,7 +63,7 @@
  <devfbs9100_check_mode>IP</devfbs9100_check_mode>
  <devfbs9100_encry_en>true</devfbs9100_encry_en>
  <realdatarecord_fn_cofig>
    <realdatarecord_fn_en>false</realdatarecord_fn_en>
    <realdatarecord_fn_en>true</realdatarecord_fn_en>
    <realdatarecord_mintimelong>60</realdatarecord_mintimelong>
    <realdatarecord_maxsavetime>1098</realdatarecord_maxsavetime>
  </realdatarecord_fn_cofig>
BattMonitor_FBS9100S_ForXinJiang/src/com/battmonitor/base/AppParam.java
@@ -102,6 +102,11 @@
        m_MonitorParam.poweroff_BattTestGroupCountMax = param.m_MonitorParam.poweroff_BattTestGroupCountMax;
        m_MonitorParam.poweroff_MonVolChangeLevel = param.m_MonitorParam.poweroff_MonVolChangeLevel;
        m_MonitorParam.poweroff_TestDataRecordCountMax = param.m_MonitorParam.poweroff_TestDataRecordCountMax;
        m_MonitorParam.BattJunHengFN = param.m_MonitorParam.BattJunHengFN;
        m_MonitorParam.realdata_SaveDataTimeInterval = param.m_MonitorParam.realdata_SaveDataTimeInterval;
        m_MonitorParam.realdata_SaveDataTimeMax = param.m_MonitorParam.realdata_SaveDataTimeMax;
    }
    
    class MonitorParam {
@@ -124,6 +129,9 @@
        public int poweroff_BattTestGroupCountMax = 10;
        
        public boolean BattJunHengFN = false;
        public int realdata_SaveDataTimeInterval = 60;                //历史实时数据存储数据间隔
        public int realdata_SaveDataTimeMax = 90;                    //历史实时数据最大保存周期
    }
    
    
@@ -236,6 +244,14 @@
        return m_MonitorParam.BattJunHengFN;
    }
    
    public int getRealdata_SaveDataTimeInterval() {
        return m_MonitorParam.realdata_SaveDataTimeInterval;
    }
    public int getRealdata_SaveDataTimeMax() {
        return m_MonitorParam.realdata_SaveDataTimeMax;
    }
    /**
     * 从数据库中获取参数的值,并且创建tb_app_param表
     */
@@ -243,88 +259,106 @@
    {
        Sql_Mysql sql = new Sql_Mysql(m_Conn_Pool.getConn());
        String sql_str;
        ResultSet res;
        ResultSet res = null;
        sql_str = "INSERT INTO " + Sql_Mysql.App_Param_Table
                + " (param_name, "
                + "param_value, "
                + "param_caption)"
                + " VALUES ";
        try {
            sql.sqlMysqlUseDB(Sql_Mysql.DB_PARAM);
            if(false == MysqlDataTable_Exist) {
                MysqlDataTable_Exist = sql.sqlMysqlCheckIfTableExist(AppParamTableName);
            res = sql.sqlMysqlQuery("SELECT * FROM " + Sql_Mysql.App_Param_Table + " WHERE param_name = 'discharge_SaveDataTimeInterval'");
            if(!res.next()) {
                sql.sqlMysqlExecute(sql_str + "('discharge_SaveDataTimeInterval', '" + this.m_MonitorParam.discharge_SaveDataTimeInterval + "','discharge_TimeInterval for every data insert into db_batt_testdata by seconds')");
            }
            
            if(false == MysqlDataTable_Exist)
            {
                System.out.println(AppParamTableName + " is not exist, create it now...");
                ArrayList<String> al_sqlstr = new ArrayList<String>();
                sql_str = "CREATE TABLE `" + AppParamTableName + "` "
                        + "( `num` INT NOT NULL AUTO_INCREMENT, "
                        + "`param_name` VARCHAR(50) NULL, "
                        + "`param_value` VARCHAR(50) NULL, "
                        + "`param_caption` VARCHAR(200) NULL, "
                        + "PRIMARY KEY (`num`));";
                al_sqlstr.add(sql_str);
                sql_str = "INSERT INTO " + AppParamTableName
                        + " (param_name, "
                        + "param_value, "
                        + "param_caption)"
                        + " VALUES "
                        //-------------------------------------------------------------------------------//
                        + "('discharge_SaveDataTimeInterval', '10', "
                        + "'discharge_TimeInterval for every data insert into db_batt_testdata by seconds'), "
            res = sql.sqlMysqlQuery("SELECT * FROM " + Sql_Mysql.App_Param_Table + " WHERE param_name = 'discharge_MonVolChangeLevel'");
            if(!res.next()) {
                sql.sqlMysqlExecute(sql_str + "('discharge_MonVolChangeLevel', '" + this.m_MonitorParam.discharge_MonVolChangeLevel+ "', "+ "'discharge_MonVolChangeLevel for batt test data to save');");
            }
            res = sql.sqlMysqlQuery("SELECT * FROM " + Sql_Mysql.App_Param_Table + " WHERE param_name = 'discharge_TestTimeLongMinimum'");
            if(!res.next()) {
                sql.sqlMysqlExecute(sql_str + "('discharge_TestTimeLongMinimum', '" + this.m_MonitorParam.discharge_TestTimeLongMinimum + "', " + "'discharge_TestTimeLongMinimum for batttest data to store');");
            }
                        
                        + "('discharge_MonVolChangeLevel', '0.05', "
                        + "'discharge_MonVolChangeLevel for batt test data to save'), "
                        + "('discharge_TestTimeLongMinimum', '1800', "
                        + "'discharge_TestTimeLongMinimum for batttest data to store'), "
                        + "('discharge_TestDataRecordCountMax', '10000', "
                        + "'discharge_TestDataRecordCountMax for batttest data count to insert to mysql server'), "
                        + "('discharge_BattTestGroupCountMax', '10', "
                        + "'discharge_BattTestGroupCountMax for batttest thread count to work at the same time'), "
                        //-------------------------------------------------------------------------------//
                        + "('charge_SaveDataTimeInterval', '10', "
                        + "'charge_TimeInterval for every data insert into db_batt_testdata by seconds'), "
                        + "('charge_MonVolChangeLevel', '0.05', "
                        + "'charge_MonVolChangeLevel for batt test data to save'), "
                        + "('charge_TestTimeLongMinimum', '1800', "
                        + "'charge_TestTimeLongMinimum for batttest data to store'), "
                        + "('charge_TestDataRecordCountMax', '10000', "
                        + "'charge_TestDataRecordCountMax for batttest data count to insert to mysql server'), "
                        + "('charge_BattTestGroupCountMax', '10', "
                        + "'charge_BattTestGroupCountMax for batttest thread count to work at the same time'), "
                        //-------------------------------------------------------------------------------//
                        + "('poweroff_SaveDataTimeInterval', '10', "
                        + "'poweroff_TimeInterval for every data insert into db_batt_testdata by seconds'), "
                        + "('poweroff_MonVolChangeLevel', '0.05', "
                        + "'poweroff_MonVolChangeLevel for batt test data to save'), "
                        + "('poweroff_TestTimeLongMinimum', '1800', "
                        + "'poweroff_TestTimeLongMinimum for batttest data to store'), "
                        + "('poweroff_TestDataRecordCountMax', '10000', "
                        + "'poweroff_TestDataRecordCountMax for batttest data count to insert to mysql server'), "
                        + "('poweroff_BattTestGroupCountMax', '10', "
                        + "'poweroff_BattTestGroupCountMax for batttest thread count to work at the same time'), "
                        //-------------------------------------------------------------------------------//
                        + "('BattJunHengFN', 'false', "
                        + "'BattJunHengFN for batt monomer to be balance')";
                al_sqlstr.add(sql_str);
                for(int n=0; n<al_sqlstr.size(); n++)
                    sql.sqlMysqlExecute(al_sqlstr.get(n));
            res = sql.sqlMysqlQuery("SELECT * FROM " + Sql_Mysql.App_Param_Table + " WHERE param_name = 'discharge_TestDataRecordCountMax'");
            if(!res.next()) {
                sql.sqlMysqlExecute(sql_str + "('discharge_TestDataRecordCountMax', '" + this.m_MonitorParam.discharge_TestDataRecordCountMax + "', " + "'discharge_TestDataRecordCountMax for batttest data count to insert to mysql server');");
            }
            res = sql.sqlMysqlQuery("SELECT * FROM " + Sql_Mysql.App_Param_Table + " WHERE param_name = 'discharge_BattTestGroupCountMax'");
            if(!res.next()) {
                sql.sqlMysqlExecute(sql_str + "('discharge_BattTestGroupCountMax', '" + this.m_MonitorParam.discharge_BattTestGroupCountMax + "', "    + "'discharge_BattTestGroupCountMax for batttest thread count to work at the same time');");
            }
            //-------------------------------------------------------------------------------//
            res = sql.sqlMysqlQuery("SELECT * FROM " + Sql_Mysql.App_Param_Table + " WHERE param_name = 'charge_SaveDataTimeInterval'");
            if(!res.next()) {
                sql.sqlMysqlExecute(sql_str + "('charge_SaveDataTimeInterval', '" + this.m_MonitorParam.charge_SaveDataTimeInterval + "', "    + "'charge_TimeInterval for every data insert into db_batt_testdata by seconds');");
            }
            
            sql_str = "SELECT * FROM  " + AppParamTableName;
            res = sql.sqlMysqlQuery("SELECT * FROM " + Sql_Mysql.App_Param_Table + " WHERE param_name = 'charge_MonVolChangeLevel'");
            if(!res.next()) {
                sql.sqlMysqlExecute(sql_str + "('charge_MonVolChangeLevel', '" + this.m_MonitorParam.charge_MonVolChangeLevel + "', " + "'charge_MonVolChangeLevel for batt test data to save');");
            }
            res = sql.sqlMysqlQuery("SELECT * FROM " + Sql_Mysql.App_Param_Table + " WHERE param_name = 'charge_TestTimeLongMinimum'");
            if(!res.next()) {
                sql.sqlMysqlExecute(sql_str + "('charge_TestTimeLongMinimum', '" + this.m_MonitorParam.charge_TestTimeLongMinimum + "', " + "'charge_TestTimeLongMinimum for batttest data to store');");
            }
            res = sql.sqlMysqlQuery("SELECT * FROM " + Sql_Mysql.App_Param_Table + " WHERE param_name = 'charge_TestDataRecordCountMax'");
            if(!res.next()) {
                sql.sqlMysqlExecute(sql_str + "('charge_TestDataRecordCountMax', '" + this.m_MonitorParam.charge_TestDataRecordCountMax + "', "    + "'charge_TestDataRecordCountMax for batttest data count to insert to mysql server');");
            }
            res = sql.sqlMysqlQuery("SELECT * FROM " + Sql_Mysql.App_Param_Table + " WHERE param_name = 'charge_BattTestGroupCountMax'");
            if(!res.next()) {
                sql.sqlMysqlExecute(sql_str + "('charge_BattTestGroupCountMax', '" + this.m_MonitorParam.charge_BattTestGroupCountMax + "', " + "'charge_BattTestGroupCountMax for batttest thread count to work at the same time')");
            }
            //-------------------------------------------------------------------------------//
            res = sql.sqlMysqlQuery("SELECT * FROM " + Sql_Mysql.App_Param_Table + " WHERE param_name = 'poweroff_SaveDataTimeInterval'");
            if(!res.next()) {
                sql.sqlMysqlExecute(sql_str + "('poweroff_SaveDataTimeInterval', '" + this.m_MonitorParam.poweroff_SaveDataTimeInterval + "', "    + "'poweroff_TimeInterval for every data insert into db_batt_testdata by seconds');");
            }
            res = sql.sqlMysqlQuery("SELECT * FROM " + Sql_Mysql.App_Param_Table + " WHERE param_name = 'poweroff_MonVolChangeLevel'");
            if(!res.next()) {
                sql.sqlMysqlExecute(sql_str + "('poweroff_MonVolChangeLevel', '" + this.m_MonitorParam.poweroff_MonVolChangeLevel + "', " + "'poweroff_MonVolChangeLevel for batt test data to save');");
            }
            res = sql.sqlMysqlQuery("SELECT * FROM " + Sql_Mysql.App_Param_Table + " WHERE param_name = 'poweroff_TestTimeLongMinimum'");
            if(!res.next()) {
                sql.sqlMysqlExecute(sql_str + "('poweroff_TestTimeLongMinimum', '" + this.m_MonitorParam.poweroff_TestTimeLongMinimum + "', " + "'poweroff_TestTimeLongMinimum for batttest data to store')");
            }
            res = sql.sqlMysqlQuery("SELECT * FROM " + Sql_Mysql.App_Param_Table + " WHERE param_name = 'poweroff_TestDataRecordCountMax'");
            if(!res.next()) {
                sql.sqlMysqlExecute(sql_str + "('poweroff_TestDataRecordCountMax', '" + this.m_MonitorParam.poweroff_TestDataRecordCountMax + "', "    + "'poweroff_TestDataRecordCountMax for batttest data count to insert to mysql server')");
            }
            res = sql.sqlMysqlQuery("SELECT * FROM " + Sql_Mysql.App_Param_Table + " WHERE param_name = 'poweroff_BattTestGroupCountMax'");
            if(!res.next()) {
                sql.sqlMysqlExecute(sql_str + "('poweroff_BattTestGroupCountMax', '" + this.m_MonitorParam.poweroff_BattTestGroupCountMax + "', " + "'poweroff_BattTestGroupCountMax for batttest thread count to work at the same time')");
            }
            //-------------------------------------------------------------------------------//
            res = sql.sqlMysqlQuery("SELECT * FROM " + Sql_Mysql.App_Param_Table + " WHERE param_name = 'BattJunHengFN'");
            if(!res.next()) {
                sql.sqlMysqlExecute(sql_str + "('BattJunHengFN', '" + this.m_MonitorParam.BattJunHengFN + "', "    + "'BattJunHengFN for batt monomer to be balance')");
            }
            //-------------------------------------------------------------------------------//
            res = sql.sqlMysqlQuery("SELECT * FROM " + Sql_Mysql.App_Param_Table + " WHERE param_name = 'realdata_SaveDataTimeInterval'");
            if(!res.next()) {
                sql.sqlMysqlExecute(sql_str + "('realdata_SaveDataTimeInterval', '" + this.m_MonitorParam.realdata_SaveDataTimeInterval + "', "    + "'real-time history data save data interval by seconds')");
            }
            //-------------------------------------------------------------------------------//
            res = sql.sqlMysqlQuery("SELECT * FROM " + Sql_Mysql.App_Param_Table + " WHERE param_name = 'realdata_SaveDataTimeMax'");
            if(!res.next()) {
                sql.sqlMysqlExecute(sql_str + "('realdata_SaveDataTimeMax', '" + this.m_MonitorParam.realdata_SaveDataTimeMax + "', "    + "'real-time history data save data max time for batttest data count to insert to mysql server')");
            }
            sql_str = "SELECT * FROM  " + Sql_Mysql.App_Param_Table;
            res = sql.sqlMysqlQuery(sql_str);
            String pm_name;
            while(res.next())
@@ -366,6 +400,13 @@
                //---------------------------------------------------------------------------//
                else if(pm_name.equals("BattJunHengFN"))
                    m_MonitorParam.BattJunHengFN = res.getBoolean("param_value");
                //---------------------------------------------------------------------------//
                else if(pm_name.equals("realdata_SaveDataTimeInterval"))
                    m_MonitorParam.realdata_SaveDataTimeInterval = res.getInt("param_value");
                //---------------------------------------------------------------------------//
                else if(pm_name.equals("realdata_SaveDataTimeMax"))
                    m_MonitorParam.realdata_SaveDataTimeMax = res.getInt("param_value");
                //---------------------------------------------------------------------------//
            }
        } catch (SQLException e) {
            logger.error(e.toString(), e);
@@ -417,6 +458,10 @@
        
        if(m_MonitorParam.poweroff_BattTestGroupCountMax < 10) m_MonitorParam.poweroff_BattTestGroupCountMax = 10;
        if(m_MonitorParam.poweroff_BattTestGroupCountMax > 350) m_MonitorParam.poweroff_BattTestGroupCountMax = 350;
        if(m_MonitorParam.realdata_SaveDataTimeInterval < 10) m_MonitorParam.realdata_SaveDataTimeInterval = 10;
        if(m_MonitorParam.realdata_SaveDataTimeMax < 31) m_MonitorParam.realdata_SaveDataTimeMax = 31;
        //--------------------------------------------------------------------------------------------------------//
    }
}
BattMonitor_FBS9100S_ForXinJiang/src/com/battmonitor/sql/Sql_Mysql.java
@@ -143,6 +143,9 @@
    public final static String Li9130_Bms_Alm_Table     = DB_RamDB + ".`tb_li9130_bms_alm`";                        //锂电BTS的BMS告警信息表
    
    
    /***************************** db_param 数据库  **********************************/
    public final static String App_Param_Table = DB_PARAM + ".`tb_app_param`";
    /***************************** db_dev_testparam 数据库  **********************************/
    public final static String Batt_TestParam_Table = DB_DEV_TESTPARAM + ".tb_batt_testparam_";                        //放电参数记录表
    
BattMonitor_FBS9100S_ForXinJiang/src/com/dev/btse/comm/BattRealDataPro_Thread.java
@@ -7,6 +7,7 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.battmonitor.base.AppParam;
import com.battmonitor.base.Com;
import com.battmonitor.data.BattData_RT;
import com.battmonitor.data.BattData_RT_Array;
@@ -27,10 +28,10 @@
    public BattData_RT_Array data;
    
    public static int MinRecordTimeLong = 60;            //每次记录的最短时间间隔
    public static int MaxRecordTimeLong = 366;        //最大记录历史数据时间
    public static int MaxRecordTimeLong = 90 ;            //最大记录历史数据时间
    private Logger logger = null;
    
    public BattRealDataPro_Thread(MysqlConnPool con_pool, AppConfig cfg, BattData_RT_Array data) {
    public BattRealDataPro_Thread(MysqlConnPool con_pool, AppParam param, BattData_RT_Array data) {
        
        this.cfg = cfg;
        this.con_pool = con_pool;
@@ -39,6 +40,9 @@
        
        //MinRecordTimeLong = cfg.getRealDataRecord_MinTimeLong();
        //MaxRecordTimeLong = cfg.getRealDataRecord_MaxSaveTime();
        MinRecordTimeLong = param.getRealdata_SaveDataTimeInterval();
        MaxRecordTimeLong = param.getRealdata_SaveDataTimeMax();
    }
    
    
BattMonitor_FBS9100S_ForXinJiang/src/com/dev/btse/comm/FBS9100_Task_Thread_SQL.java
@@ -333,9 +333,15 @@
            
            //sql.sqlMysqlExecute(str3);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            if(null != res) {
                try {
                    res.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            sql.close_con();
        }
    }
@@ -995,16 +1001,23 @@
                                + " WHERE dev_id=" + m_pm.dev_id;
        int state_t = 0;
        Sql_Mysql sql = new Sql_Mysql(con_pool.getConn());
        ResultSet res =  null;
        try {
            //sql.logger.debug(sql_str);
            ResultSet res = sql.sqlMysqlQuery(sql_str_base);
            res = sql.sqlMysqlQuery(sql_str_base);
            if(res.next()) {
                state_t = res.getInt("station_stat");
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            sql.logger.error("FBS9100_Task_Thread_SQL.getFbs9100StationState_ById():" + e.toString(), e);
        } finally {
            if(null != res) {
                try {
                    res.close();
                } catch (SQLException e) {
                    sql.logger.error("FBS9100_Task_Thread_SQL.getFbs9100StationState_ById():" + e.toString(), e);
                }
            }
            sql.close_con();
        }        
        return state_t;
@@ -1016,16 +1029,22 @@
                                + " WHERE dev_id=" + m_pm.dev_id;
        long flow_sum = 0;
        Sql_Mysql sql = new Sql_Mysql(con_pool.getConn());
        ResultSet res = null;
        try {
            //sql.logger.debug(sql_str);
            ResultSet res = sql.sqlMysqlQuery(sql_str_base);
            res = sql.sqlMysqlQuery(sql_str_base);
            if(res.next()) {
                flow_sum = res.getLong("dev_data_flowsum");
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            sql.logger.error("FBS9100_Task_Thread_SQL.getFbs9100DataCommFlowSum_ById():" + e.toString(), e);
        } finally {
            if(null != res) {
                try {
                    res.close();
                } catch (SQLException e) {
                 }
            }
            sql.close_con();
        }
        
@@ -1312,9 +1331,15 @@
                }
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            sql.logger.error("FBS9100_Task_Thread_SQL.queryBTS_DCDC_AlarmStat():" + e.toString(), e);
        } finally {
            if(null != res) {
                try {
                    res.close();
                } catch (SQLException e) {
                    sql.logger.error("FBS9100_Task_Thread_SQL.queryBTS_DCDC_AlarmStat():" + e.toString(), e);
                }
            }
            sql.close_con();
        }
        
@@ -1411,9 +1436,15 @@
                test_cnt = res.getInt("dev_restest_count");
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            sql.logger.error("FBS9100_Task_Thread_SQL.queryFBS9100_ResTestCnt():" + e.toString(), e);
        } finally {
            if(null != res) {
                try {
                    res.close();
                } catch (SQLException e) {
                    sql.logger.error("FBS9100_Task_Thread_SQL.queryFBS9100_ResTestCnt():" + e.toString(), e);
                }
            }
            sql.close_con();
        }
        
@@ -1488,6 +1519,13 @@
        } catch (SQLException e) {
            sql.logger.error("FBS9100_Task_Thread_SQL.queryFbs9100SetParamCmdBydev_id():" + e.toString(), e);
        } finally {
            if(null != res) {
                try {
                    res.close();
                } catch (SQLException e) {
                    sql.logger.error("FBS9100_Task_Thread_SQL.queryFbs9100SetParamCmdBydev_id():" + e.toString(), e);
                }
            }
            sql.close_con();
        }
    }
@@ -1527,6 +1565,13 @@
        } catch (SQLException e) {
            sql.logger.error("FBS9100_Task_Thread_SQL.queryFbs9100SetParamBydev_id():" + e.toString(), e);
        } finally {
            if(null != res) {
                try {
                    res.close();
                } catch (SQLException e) {
                    sql.logger.error("FBS9100_Task_Thread_SQL.queryFbs9100SetParamBydev_id():" + e.toString(), e);
                }
            }
            sql.close_con();
        }
    }
@@ -1711,6 +1756,13 @@
        } catch (SQLException e) {
            sql.logger.error("FBS9100_Task_Thread_SQL.queryFbs9100SysParamCmdBydev_id():" + e.toString(), e);
        } finally {
            if(null != res) {
                try {
                    res.close();
                } catch (SQLException e) {
                    sql.logger.error("FBS9100_Task_Thread_SQL.queryFbs9100SysParamCmdBydev_id():" + e.toString(), e);
                }
            }
            sql.close_con();
        }
    }
@@ -1779,6 +1831,13 @@
        } catch (SQLException e) {
            sql.logger.error("FBS9100_Task_Thread_SQL.queryFbs9100SysParamBydev_id():" + e.toString(), e);
        } finally {
            if(null != res) {
                try {
                    res.close();
                } catch (SQLException e) {
                    sql.logger.error("FBS9100_Task_Thread_SQL.queryFbs9100SysParamBydev_id():" + e.toString(), e);
                }
            }
            sql.close_con();
        }
    }
@@ -1846,6 +1905,13 @@
        } catch (SQLException e) {
            sql.logger.error("FBS9100_Task_Thread_SQL.queryFbs9100BattParamCmdBydev_id():" + e.toString(), e);
        } finally {
            if(null != res) {
                try {
                    res.close();
                } catch (SQLException e) {
                    sql.logger.error("FBS9100_Task_Thread_SQL.queryFbs9100BattParamCmdBydev_id():" + e.toString(), e);
                }
            }
            sql.close_con();
        }
    }
@@ -1914,6 +1980,13 @@
        } catch (SQLException e) {
            sql.logger.error("FBS9100_Task_Thread_SQL.queryFbs9100BattParamBydev_id():" + e.toString(), e);
        } finally {
            if(null != res) {
                try {
                    res.close();
                } catch (SQLException e) {
                    sql.logger.error("FBS9100_Task_Thread_SQL.queryFbs9100BattParamBydev_id():" + e.toString(), e);
                }
            }
            sql.close_con();
        }
    }
@@ -1984,6 +2057,13 @@
        } catch (SQLException e) {
            sql.logger.error("FBS9100_Task_Thread_SQL.queryBTSGPRSCmdBydev_id():" + e.toString(), e);
        } finally {
            if(null != res) {
                try {
                    res.close();
                } catch (SQLException e) {
                    sql.logger.error("FBS9100_Task_Thread_SQL.queryBTSGPRSCmdBydev_id():" + e.toString(), e);
                }
            }
            sql.close_con();
        }
        
@@ -2005,6 +2085,13 @@
        } catch (SQLException e) {
            sql.logger.error("FBS9100_Task_Thread_SQL.queryBTSGPRS_ATCmd_Bydev_id():" + e.toString(), e);
        } finally {
            if(null != res) {
                try {
                    res.close();
                } catch (SQLException e) {
                    sql.logger.error("FBS9100_Task_Thread_SQL.queryBTSGPRS_ATCmd_Bydev_id():" + e.toString(), e);
                }
            }
            sql.close_con();
        }
        
@@ -2382,6 +2469,13 @@
            } catch (SQLException e) {
                sql.logger.error("FBS9100_Task_Thread_SQL.updateFBS9100S_NiBianStateTable():" + e.toString(), e);
            } finally {
                if(null != res) {
                    try {
                        res.close();
                    } catch (SQLException e) {
                        sql.logger.error("FBS9100_Task_Thread_SQL.updateFBS9100S_NiBianStateTable():" + e.toString(), e);
                    }
                }
                sql.close_con();
            }
        }
@@ -2493,16 +2587,22 @@
                }
                
                sql_delete_strs += "db_batt_history." + res.getString("TABLE_NAME");
                System.out.println("删除:"+res.getString("TABLE_NAME")+"\t at "+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
                sql.logger.error("删除:"+res.getString("TABLE_NAME")+"\t at "+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
                count++;
            }
            if(count >0) {
                sql.sqlMysqlTotalExecute(sql_delete_strs);
            }
            res.close();
        } catch (SQLException e) {
            sql.logger.error("FBS9100_Task_Thread_SQL.deleteHistoryData():" + e.toString(), e);
        } finally {
            if(null != res) {
                try {
                    res.close();
                } catch (SQLException e) {
                    sql.logger.error("FBS9100_Task_Thread_SQL.deleteHistoryData():" + e.toString(), e);
                }
            }
            sql.close_con();
        }
    }
@@ -2859,6 +2959,13 @@
        } catch (SQLException e) {
            sql.logger.error("FBS9100_Task_Thread_SQL.queryFbs9100JhParamBydev_id():" + e.toString(), e);
        } finally {
            if(null != res) {
                try {
                    res.close();
                } catch (SQLException e) {
                    sql.logger.error("FBS9100_Task_Thread_SQL.queryFbs9100JhParamBydev_id():" + e.toString(), e);
                }
            }
            sql.close_con();
        }
    }
@@ -2891,6 +2998,13 @@
        } catch (SQLException e) {
            sql.logger.error("FBS9100_Task_Thread_SQL.queryFbs9100MutlParamBydev_id():" + e.toString(), e);
        } finally {
            if(null != res) {
                try {
                    res.close();
                } catch (SQLException e) {
                    sql.logger.error("FBS9100_Task_Thread_SQL.queryFbs9100MutlParamBydev_id():" + e.toString(), e);
                }
            }
            sql.close_con();
        }
    }
BattMonitor_FBS9100S_ForXinJiang/src/com/version_inf/version_inf.txt
@@ -1,7 +1,13 @@
V10.656 edit at date 2024-07-18 lijun
    1.历史实时数据保存参数根据'db_param.tb_app_param'表中的参数进行识别
        历史实时数据存储间隔(秒)->realdata_SaveDataTimeInterval    60    real-time history data save data interval by seconds
        历史实时数据存储间隔(天)->realdata_SaveDataTimeMax        90    real-time history data save data max time for batttest data count to insert to mysql server
V10.655 edit at date 2024-04-07 lijun
    1.新增设备类型9150-山东定制版BTS,新增旁路以及对应状态传递
    2.历史实时数据最久保存1年的历史实时数据
V10.654 edit at date 2023-09-07 lijun
    1.修复记录历史数据时缺少db_batt_testdata.tb_battresdata_inf表,导致历史数据中的db_batt_testdata.tb_battresdata_inf数据无法插入导致历史数据记录故障
BattMonitor_FBS9100S_ForXinJiang/src/main/main_MonitorServer_FBS9100S.java
@@ -31,7 +31,7 @@
    /**************************************************************************/
    /**************************************************************************/
    public final static boolean app_debug = false;
    public final static double m_VersionNum = 10.655;
    public final static double m_VersionNum = 10.656;
    public final static String m_Version = "Welcome To Use BattMonitorFBS9100S V" 
                                            + m_VersionNum + " RC_20201110";
    /**************************************************************************/
@@ -245,7 +245,7 @@
        
        if(true == m_AppConfig.isRealDataRecord_fn_En()) 
        {
            BattRealDataPro_Thread batt_realdata = new BattRealDataPro_Thread(GB_MysqlConnPool, m_AppConfig, GB_DataArray);
            BattRealDataPro_Thread batt_realdata = new BattRealDataPro_Thread(GB_MysqlConnPool, GB_App_Param, GB_DataArray);
            batt_realdata.start();
        }