package com.batttest;
|
|
import java.sql.SQLException;
|
import java.util.Calendar;
|
|
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.Logger;
|
|
import com.battmonitor.base.Com;
|
import com.battmonitor.data.BattData_RT_Array;
|
import com.battmonitor.data.BattStatData;
|
import com.battmonitor.sql.MysqlConnPool;
|
import com.battmonitor.sql.Sql_Mysql;
|
import com.config.AppConfig;
|
|
public class BattAutoStorePro_Thread extends Thread {
|
|
private Logger logger = null;
|
private BattData_RT_Array m_Data;
|
private MysqlConnPool m_Conn_Pool;
|
|
private int start_up_delay = 60;
|
private int auto_save_minute_interval = 10;
|
private int auto_save_daycount_max = 10;
|
|
public BattAutoStorePro_Thread(MysqlConnPool pool, AppConfig cfg, BattData_RT_Array data)
|
{
|
logger = LogManager.getLogger(this.getClass());
|
|
m_Conn_Pool = pool;
|
m_Data = data;
|
|
start_up_delay = cfg.getBattAutoStoreDelayForStartUp();
|
auto_save_minute_interval = cfg.getBattAutoStoreMinuteInterval();
|
auto_save_daycount_max = cfg.getBattAutoStoreDayCountMax();
|
}
|
//-----------------------------------------------------------------------------//
|
|
|
/**
|
* ´Ótb_battresdata_inf±íÖÐɾ³ýtest_type=1²¢ÇÒ¿ªÊ¼Ê±¼äÔÚday_countÌìǰ µÄµçµ¼²âÊԼǼ
|
* @param conn_pool
|
* @param bg_id
|
* @param day_count
|
*/
|
private void deleteDataFromResTable(MysqlConnPool conn_pool, int bg_id, int day_count)
|
{
|
Calendar cld = Calendar.getInstance();
|
cld.set(Calendar.HOUR_OF_DAY, 0);
|
cld.set(Calendar.MINUTE, 0);
|
cld.set(Calendar.SECOND, 0);
|
cld.add(Calendar.DAY_OF_MONTH, day_count*(-1));
|
|
Sql_Mysql sql = new Sql_Mysql(conn_pool.getConn());
|
try {
|
sql.sqlMysqlUseDB(Sql_Mysql.DB_BATT_TESTDATA);
|
|
String tb_name = "tb_BattResData_" + bg_id;
|
if(true == sql.sqlMysqlCheckIfTableExist(tb_name))
|
{
|
String sql_str = "DELETE FROM " + tb_name + " WHERE test_record_count IN "
|
+ "(SELECT test_record_count FROM " + Sql_Mysql.BattResDataInf_Table
|
+ " WHERE BattGroupId=" + bg_id
|
+ " AND test_type=" + BattStatData.BATTDATA_FLOAT
|
+ " AND test_starttime<'"
|
+ Com.getDateTimeFormat(cld.getTime(), Com.DTF_YMDhms) + "')";
|
String sql_str1 = "DELETE FROM " + Sql_Mysql.BattResDataInf_Table
|
+ " WHERE BattGroupId=" + bg_id
|
+ " AND test_type=" + BattStatData.BATTDATA_FLOAT
|
+ " AND test_starttime<'"
|
+ Com.getDateTimeFormat(cld.getTime(), Com.DTF_YMDhms) + "'";
|
try {
|
sql.mysql_con.setAutoCommit(false);
|
sql.sqlMysqlExecute(sql_str);
|
sql.sqlMysqlExecute(sql_str1);
|
sql.mysql_con.commit();
|
} catch (SQLException e) {
|
sql.mysql_con.rollback();
|
//System.out.println(sql_str);
|
logger.error(e.toString(), e);
|
} finally {
|
sql.mysql_con.setAutoCommit(true);
|
}
|
}
|
} catch (SQLException e) {
|
logger.error(e.toString(), e);
|
} finally {
|
sql.close_con();
|
}
|
}
|
|
@Override
|
public void run() {
|
logger.info("BattAutoStorePro_Thread Started, "
|
+ "start_up_delay(s): " + start_up_delay + ", "
|
+ "auto_save_minute_interval(m):" + auto_save_minute_interval);
|
|
try {
|
for(int s=0; s<start_up_delay; s++) {
|
sleep(1000);
|
}
|
} catch (InterruptedException e) {
|
logger.error(e.toString(), e);
|
}
|
|
while(true)
|
{
|
try
|
{
|
//------------------------------------------------------------------------//
|
for(int n=0; n<m_Data.getItemCount(); n++)
|
{
|
BattResStorePro_Thread.insertDataToResTable(m_Conn_Pool, m_Data.getItem(n), BattStatData.BATTDATA_FLOAT);
|
deleteDataFromResTable(m_Conn_Pool, m_Data.getItem(n).BattGroupId, auto_save_daycount_max);
|
}
|
|
//------------------------------------------------------------------------//
|
for(int d=0; d<auto_save_minute_interval; d++)
|
{
|
for(int s=0; s<60; s++)
|
{
|
sleep(1000);
|
}
|
}
|
//------------------------------------------------------------------------//
|
} catch (InterruptedException e) {
|
logger.error(e.toString(), e);
|
}
|
}
|
}
|
}
|