package com.socket;
|
|
import android.database.Cursor;
|
import android.database.SQLException;
|
import android.database.sqlite.SQLiteDatabase;
|
import android.util.Log;
|
|
import com.concentrator.Concentrator_State;
|
import com.fgkj.dao.DBHelper;
|
import com.util.Com;
|
|
import java.util.Date;
|
|
/**
|
* 内阻数据记录线程
|
*/
|
public class BattResDataRecordThread extends Thread{
|
public static final String TAG = "BattResDataRecordThread";
|
|
public BattDataThread battData; //电池实时数据
|
public DBHelper dbHelper; //数据库对象
|
public int lastResTestCount = 0; //上一次内阻测试的次数
|
|
public BattResDataRecordThread(BattDataThread battData,DBHelper dbHelper){
|
this.battData = battData;
|
this.dbHelper = dbHelper;
|
|
dbHelper.Create_battresdata(dbHelper.getWritableDatabase(),battData.battIndex); //创建当前电池组的内阻数据表
|
}
|
|
@Override
|
public void run() {
|
Log.d(TAG, "run: BattResDataRecordThread start at" + Com.getDateTimeFormat(new Date(),Com.DTF_YMDhms));
|
|
|
while(true){
|
try {
|
//Log.e(TAG, "run: "+ battData.isOutTime+"\tlastResTestCount:"+lastResTestCount+"\t count:"+battData.state.getRestestcount());
|
if(!battData.isOutTime){
|
if(lastResTestCount != battData.state.getRestestcount()){
|
if(battData.state.monCount >0 && battData.state.mon_ress[battData.state.monCount-1] > 0){
|
//开始记录内阻历史数据
|
int max_test_record_count = queryMaxTestRecordCount(battData.battIndex,dbHelper); //查询当前电池组最大的记录笔数
|
Log.e(TAG, "run: MAXCOUNT:"+max_test_record_count );
|
//插入 tb_battresdata_inf 表中
|
insertBattResDataInf(battData.battIndex, battData.state,dbHelper,max_test_record_count);
|
|
//插入 tb_battresdata_id 表中
|
insertBattResDataID(battData.battIndex,battData.state,dbHelper,max_test_record_count);
|
//Log.e(TAG, "run: battindex:"+battData.battIndex+"记录历史数据成功 #############################");
|
lastResTestCount = battData.state.getRestestcount();
|
}
|
}
|
}
|
sleep(3000);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
|
public static void insertBattResDataID(int battgroupid,Concentrator_State state,DBHelper dbHelper,int test_record_count){
|
String sql_str_start = "INSERT INTO tb_battresdata_1(BattGroupId,test_record_count,test_type,test_starttime,group_vol,test_curr,mon_num,mon_vol,mon_tmp,mon_res) VALUES ";
|
String sql_str_base = "";
|
for(int i = 0;i<state.monCount;i++){
|
if(i != 0){
|
sql_str_base += ",";
|
}
|
sql_str_base += "("+battgroupid+","+test_record_count+","+BattDataThread.TESTTYPE_RESTEST+",'"+Com.getDateTimeFormat(new Date(),Com.DTF_YMDhms)+"',"+state.getGroupvol()+","+state.getGroupcurr()+","+(i+1)+","+state.mon_vols[i]+","+state.mon_tmps[i]+","+state.mon_ress[i]+")";
|
}
|
SQLiteDatabase db = dbHelper.getWritableDatabase();
|
//Log.e(TAG, "insertBattResDataID: "+sql_str_start+sql_str_base );
|
try {
|
db.execSQL(sql_str_start+sql_str_base);
|
} catch (SQLException e) {
|
e.printStackTrace();
|
} finally{
|
// if(db != null){
|
// db.close();
|
// }
|
}
|
}
|
|
/**
|
* 插入内阻数据进入inf表
|
* @param battgroupid
|
* @param state
|
* @param dbHelper
|
* @param test_record_count
|
*/
|
public static void insertBattResDataInf(int battgroupid, Concentrator_State state, DBHelper dbHelper, int test_record_count){
|
String sql_str = "INSERT INTO tb_battresdata_inf " +
|
"(BattGroupId,test_record_count,test_type,test_starttime,record_time,group_vol,test_curr) " +
|
"VALUES("
|
+ battgroupid+","
|
+ test_record_count+","
|
+ BattDataThread.TESTTYPE_RESTEST+",'"
|
+ Com.getDateTimeFormat(new Date(),Com.DTF_YMDhms)+"','"
|
+ Com.getDateTimeFormat(new Date(),Com.DTF_YMDhms)+"',"
|
+ state.getGroupvol()+ ","
|
+ state.getGroupcurr()+"" +
|
");";
|
SQLiteDatabase db = dbHelper.getWritableDatabase();
|
try {
|
//Log.d(TAG, "insertBattResDataInf: "+sql_str);
|
db.execSQL(sql_str);
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally{
|
// if(db != null){
|
// db.close();
|
// }
|
}
|
}
|
|
|
/**
|
* 查询数据库目前当前电池组的最大
|
* @param battgroupid
|
* @param dbHelper
|
* @return
|
*/
|
public static int queryMaxTestRecordCount(int battgroupid,DBHelper dbHelper){
|
int max_test_record_count = 1;
|
String sql_str = " SELECT max(test_record_count)as max_test_record_count FROM tb_battresdata_inf WHERE BattGroupId = " + battgroupid;
|
SQLiteDatabase db = dbHelper.getWritableDatabase();
|
try {
|
Cursor rs = db.rawQuery(sql_str,null);
|
if (rs.moveToNext()){
|
max_test_record_count = rs.getInt(rs.getColumnIndex("max_test_record_count"))+1;
|
}
|
} catch (SQLException e) {
|
e.printStackTrace();
|
} finally{
|
// if(db != null){
|
// db.close();
|
// }
|
}
|
return max_test_record_count;
|
}
|
}
|