package com.battdata_rt;
|
import java.sql.ResultSet;
|
import java.sql.SQLException;
|
import java.util.ArrayList;
|
|
import com.base.AppConfig;
|
import com.base.ComBase;
|
import com.dec.fbs9100.AppParam;
|
import com.dec.fbs9100.FBS9100_SysState;
|
import com.dec.fbs9100.MysqlConnPool;
|
import com.dec.fbs9100.Sql_Mysql;
|
|
public class BattData_RT {
|
public static final int DEF_CommTimeOutMax = 7200;
|
private MysqlConnPool m_Conn_Pool;
|
|
private boolean MonDataFromCInterfaceOk = false;
|
|
private boolean MonDataIsUseForIdce8200 = false;
|
private boolean mIDCE8200_ConState = false;
|
private int mIDCE8200CommTimeout = 0;
|
|
public int StationId;
|
public String StationName;
|
public byte[] StationIp = new byte[4];
|
public int BattGroupId = 0;
|
public int BattCurrDeviceId = 0;
|
public int[] BattCurrValueId = new int[16];
|
|
public int FBSDeviceId = 0;
|
public String FBSDeviceIp = " ";
|
public String FBSDeviceName = " ";
|
public int GroupIndexInFBSDevice = 1;
|
public String FBSDeviceIp_WG = " ";
|
public String FBSDeviceIp_YM = " ";
|
|
public int BattGroupNum;
|
public int BattState;
|
public int MonCount = 1;
|
public float MonStdVol;
|
public float MonStdCap;
|
public String PublicKeyY;
|
|
|
private boolean StoreBattRes_DataEn = false;
|
private boolean StoreDataBusy = false;
|
private boolean MysqlDataTable_Exist = false;
|
public boolean MysqlDataResInfTable_Exist = false;
|
public boolean MysqlRecordInf_Exist = false;
|
|
public InsertDataToMysql_Task mSqlTask = null;
|
|
public ArrayList<MonVolData> al_MonVol = new ArrayList<MonVolData>();
|
public ArrayList<MonVolData> al_MonVol_RtOld = new ArrayList<MonVolData>();
|
public ArrayList<MonVolData> al_MonVol_History = new ArrayList<MonVolData>();
|
public ArrayList<ArrayList<Integer>> al_MonVol_C_Id = new ArrayList<ArrayList<Integer>>();
|
|
public BattStatData mTestData;
|
|
private int mCommTimeCoutCount = 0;
|
public int mMaxMonNum = 0;
|
public float mMaxMonVol = 0;
|
public int mMinMonNum = 0;
|
public float mMinMonVol = 0;
|
|
private AppParam mAppParam = new AppParam();
|
|
private float mBattFloatCurrLevel = (float) 15.0;
|
private float mBattFloatVolLevel = (float) (MonStdVol*MonCount*1.125);
|
|
private int mTestTimeLongMin = 1*60;
|
public int mSaveDataTimeInterval = 10;
|
private float mDataHistoryNewLevel = (float) 0.01;
|
private int mTestDataRecordCountMax = 10000;
|
|
/*********************************************************************************/
|
/*********************************************************************************/
|
public BattData_RT(AppConfig cfg, AppParam param, MysqlConnPool pool)
|
{
|
mTestData = new BattStatData(cfg.getSourceBattDataType(), cfg.getSybSrvCurrChargeDirPos());
|
|
mAppParam.copyAppParam(param);
|
//System.out.println("mAppParam.getTestTimeLongMinimum(AppParam.AppParam_Discharge):"+mAppParam.getTestTimeLongMinimum(AppParam.AppParam_Discharge));
|
m_Conn_Pool = pool;
|
if(null != m_Conn_Pool)
|
{
|
mSqlTask = new InsertDataToMysql_Task();
|
}
|
}
|
/*********************************************************************************/
|
public void updata_BattRtSate_To_RamDb() {
|
BattData_RT_SQL.updateBattState_RT_RamDB_Table(m_Conn_Pool, this);
|
}
|
/*********************************************************************************/
|
public void updata_BattRtData_To_RamDb() {
|
BattData_RT_SQL.updateBattData_RT_RamDB_Table(m_Conn_Pool, this);
|
}
|
/*********************************************************************************/
|
public BattData_RT updata_SetIp() {
|
return BattData_RT_SQL.selectRT_BttInf_Table(m_Conn_Pool, this);
|
}
|
/*********************************************************************************/
|
|
public void make_al_MonVol_C_Id()
|
{
|
al_MonVol_C_Id.clear();
|
ArrayList<Integer> tmp_al_id = null;
|
|
int start_index = 0;
|
for(int m=0; m<al_MonVol.size(); m++)
|
{
|
int tmp_id = al_MonVol.get(m).cInterfaceId;
|
|
if((start_index < 1) || (start_index > 24)
|
|| ((tmp_id-2) > tmp_al_id.get(start_index - 1))
|
|| ((tmp_id+2) < tmp_al_id.get(start_index - 1)))
|
{
|
start_index = 0;
|
tmp_al_id = new ArrayList<Integer>();
|
al_MonVol_C_Id.add(tmp_al_id);
|
}
|
|
tmp_al_id.add(tmp_id);
|
start_index++;
|
}
|
}
|
|
public void make_al_MonVol_Auto_C_Id()
|
{
|
al_MonVol_C_Id.clear();
|
ArrayList<Integer> tmp_al_id = null;
|
|
tmp_al_id = new ArrayList<Integer>();
|
for(int m=0; m<al_MonVol.size(); m++)
|
{
|
int tmp_id = al_MonVol.get(m).cInterfaceId;
|
tmp_al_id.add(tmp_id);
|
}
|
|
al_MonVol_C_Id.add(tmp_al_id);
|
}
|
|
public void setStoreBattRes_DataEnStat(boolean stat)
|
{
|
StoreBattRes_DataEn = stat;
|
}
|
public boolean getStoreBattRes_DataEnStat()
|
{
|
return StoreBattRes_DataEn;
|
}
|
|
private void setMonitorParam(int test_type)
|
{
|
float det_vol = MonStdVol / 2;
|
if(det_vol < 1)
|
det_vol = 1;
|
|
if(BattStatData.BATTSTATE_DISCHARGE == test_type) {
|
mTestTimeLongMin = mAppParam.getTestTimeLongMinimum(AppParam.AppParam_Discharge);
|
mSaveDataTimeInterval = mAppParam.getSaveDataTimeInterval(AppParam.AppParam_Discharge);
|
mDataHistoryNewLevel = det_vol * mAppParam.getMonVolChangeLevel(AppParam.AppParam_Discharge);
|
mTestDataRecordCountMax = mAppParam.getTestDataRecordCountMax(AppParam.AppParam_Discharge);
|
} else {
|
mTestTimeLongMin = mAppParam.getTestTimeLongMinimum(AppParam.AppParam_Charge);
|
mSaveDataTimeInterval = mAppParam.getSaveDataTimeInterval(AppParam.AppParam_Charge);
|
mDataHistoryNewLevel = det_vol * mAppParam.getMonVolChangeLevel(AppParam.AppParam_Charge);
|
mTestDataRecordCountMax = mAppParam.getTestDataRecordCountMax(AppParam.AppParam_Charge);
|
}
|
}
|
|
public void setBattFloatVolCurrLevel(float vol_lev, float curr_level)
|
{
|
mBattFloatVolLevel = vol_lev;
|
mBattFloatCurrLevel = curr_level;
|
mTestData.setBattFloatCurrLevel(mBattFloatCurrLevel);
|
}
|
|
public boolean isMonDataFromCInterfaceOk()
|
{
|
return MonDataFromCInterfaceOk;
|
}
|
public void setMonDataFromCInterfaceOk(boolean stat)
|
{
|
MonDataFromCInterfaceOk = stat;
|
}
|
|
public boolean isMonDataUseForIdce8200()
|
{
|
return MonDataIsUseForIdce8200;
|
}
|
public void setMonDataUseForIdce8200(boolean stat)
|
{
|
MonDataIsUseForIdce8200 = stat;
|
}
|
|
/********************************************************************************/
|
public boolean checkIfIdce8200ComMTimeout()
|
{
|
boolean time_ount = false;
|
if(mIDCE8200CommTimeout >= 60)
|
{
|
time_ount = true;
|
mIDCE8200_ConState = false;
|
setMonDataUseForIdce8200(false);
|
}
|
if(mIDCE8200CommTimeout < 1000)
|
mIDCE8200CommTimeout++;
|
|
return time_ount;
|
}
|
public float MonStdVol() {
|
return MonStdVol;
|
}
|
public float MonStdCap() {
|
return MonStdCap;
|
}
|
public boolean getIdce8200ComState()
|
{
|
return mIDCE8200_ConState;
|
}
|
|
public void updateMonVolFromIDCE8200(int mon_index, float vol)
|
{
|
mIDCE8200_ConState = true;
|
mIDCE8200CommTimeout = 0;
|
setMonDataUseForIdce8200(true);
|
|
al_MonVol.get(mon_index).monVol = vol;
|
}
|
|
public void updateMonVolFromSQL_SERVER()
|
{
|
if(true == isMonDataFromCInterfaceOk())
|
{
|
return;
|
}
|
|
float sumvol = 0;
|
for(int bt_index=0; bt_index<al_MonVol.size(); bt_index++)
|
{
|
if(false == isMonDataUseForIdce8200())
|
{
|
al_MonVol.get(bt_index).monVol = al_MonVol.get(bt_index).monVol_TMP;
|
}
|
sumvol += al_MonVol.get(bt_index).monVol;
|
}
|
mTestData.groupVol = sumvol;
|
}
|
|
public void updateMonVolFrom_C_Interface(int mon_c_id, float mon_vol)
|
{
|
float sumvol = 0;
|
for(int var=0; var<al_MonVol.size(); var++)
|
{
|
MonVolData mvol = al_MonVol.get(var);
|
if(mon_c_id == mvol.cInterfaceId)
|
{
|
if(false == isMonDataUseForIdce8200())
|
{
|
mvol.monVol = mon_vol;
|
}
|
|
if((mon_vol > 0.1) && (false == isMonDataFromCInterfaceOk()))
|
{
|
setMonDataFromCInterfaceOk(true);
|
}
|
}
|
|
sumvol += al_MonVol.get(var).monVol;
|
}
|
mTestData.groupVol = sumvol;
|
}
|
/********************************************************************************/
|
|
public int getBattCount()
|
{
|
return MonCount;
|
}
|
public byte getBattState()
|
{
|
return mTestData.battState;
|
}
|
public byte getBattTestType()
|
{
|
return mTestData.battTestState;
|
}
|
public float getOnlineVol()
|
{
|
return mTestData.onlineVol;
|
}
|
public float getGroupVol()
|
{
|
return mTestData.groupVol;
|
}
|
public float getGroupTmp()
|
{
|
return mTestData.groupTmp;
|
}
|
public float getTestCurr()
|
{
|
return mTestData.testCurr;
|
}
|
public float getTestCap()
|
{
|
return mTestData.testCap;
|
}
|
public long getTestStartTime()
|
{
|
return mTestData.startTestTime.getTime();
|
}
|
public long getTestRecordTime()
|
{
|
return mTestData.recordTime.getTime();
|
}
|
public int getTestTimeLong()
|
{
|
return mTestData.testTimeLong;
|
}
|
public float getBattRealCap()
|
{
|
return mTestData.battRealCap;
|
}
|
public float getBattRestCap()
|
{
|
return mTestData.battRestCap;
|
}
|
public int getBattRestTime()
|
{
|
return mTestData.battRestTime;
|
}
|
public float getGroupCurr() {
|
return mTestData.group_curr;
|
}
|
|
/**
|
* ��������������������������������������������������������������
|
* @param al_vol
|
*/
|
public void makeMaxMinMonVol(ArrayList<MonVolData> al_vol)
|
{
|
if(null != al_vol)
|
{
|
float maxvol = -80000;
|
float minvol = 80000;
|
for(int n=0; n<al_vol.size(); n++)
|
{
|
if(maxvol < al_vol.get(n).monVol)
|
{
|
maxvol = al_vol.get(n).monVol;
|
mMaxMonNum = n+1;
|
}
|
if(minvol > al_vol.get(n).monVol)
|
{
|
minvol = al_vol.get(n).monVol;
|
mMinMonNum = n+1;
|
}
|
}
|
mMaxMonVol = maxvol;
|
mMinMonVol = minvol;
|
}
|
}
|
|
|
public float getMaxMonVol()
|
{
|
float maxvol = -80000;
|
for(int n=0; n<al_MonVol.size(); n++)
|
{
|
if(maxvol < al_MonVol.get(n).monVol)
|
{
|
maxvol = al_MonVol.get(n).monVol;
|
mMaxMonNum = n+1;
|
}
|
}
|
return maxvol;
|
}
|
public float getMinMonVol()
|
{
|
float minvol = 80000;
|
for(int n=0; n<al_MonVol.size(); n++)
|
{
|
if(minvol > al_MonVol.get(n).monVol)
|
{
|
minvol = al_MonVol.get(n).monVol;
|
mMinMonNum = n+1;
|
}
|
}
|
return minvol;
|
}
|
public float getGroupVolFromMonVol()
|
{
|
float gvol = 0;
|
for(int n=0; n<al_MonVol.size(); n++)
|
{
|
gvol += al_MonVol.get(n).monVol;
|
}
|
return gvol;
|
}
|
//------------------------------------------------------------------------------------//
|
public void makeDataClearByCommTimeOut() {
|
if(this.mCommTimeCoutCount < (DEF_CommTimeOutMax+100)) {
|
this.mCommTimeCoutCount += 1;
|
}
|
if(this.mCommTimeCoutCount >= DEF_CommTimeOutMax) {
|
mTestData.TestCurr_RT = 0;
|
mTestData.testCurr = 0;
|
}
|
}
|
public void makeDataResetByCommTimeOut() {
|
this.mCommTimeCoutCount = 0;
|
}
|
//------------------------------------------------------------------------------------//
|
private boolean make_al_MonVol_History()
|
{
|
boolean data_new = false;
|
for(int n=0; n<al_MonVol_History.size(); n++)
|
{
|
float tmp_dt = al_MonVol.get(n).monVol;
|
if(Math.abs((al_MonVol_History.get(n).monVol - tmp_dt)) > mDataHistoryNewLevel)
|
{
|
al_MonVol_History.get(n).data_new = true;
|
al_MonVol_History.get(n).monVol = tmp_dt;
|
data_new = true;
|
}
|
}
|
|
return data_new;
|
}
|
public float get_al_MonVol_History(int index)
|
{
|
float vol = 0;
|
if((index>=0) && (index<al_MonVol_History.size()))
|
{
|
vol = al_MonVol_History.get(index).monVol;
|
}
|
return vol;
|
}
|
public boolean is_al_MonVol_History_New(int index)
|
{
|
boolean isnew = false;
|
if((index>=0) && (index<al_MonVol_History.size()))
|
{
|
isnew = al_MonVol_History.get(index).data_new;
|
}
|
return isnew;
|
}
|
private void clear_al_MonVol_History_New()
|
{
|
for(int n=0; n<al_MonVol_History.size(); n++)
|
al_MonVol_History.get(n).data_new = false;
|
}
|
private void set_al_MonVol_History_New()
|
{
|
for(int n=0; n<al_MonVol_History.size(); n++)
|
{
|
//if(al_MonVol_History.get(n).monVol != al_MonVol.get(n).monVol)
|
{
|
al_MonVol_History.get(n).data_new = true;
|
al_MonVol_History.get(n).monVol = al_MonVol.get(n).monVol;
|
}
|
}
|
}
|
//------------------------------------------------------------------------------------//
|
private void calBattRestCap(double b_curr, double b_testcap)
|
{
|
double curr = Math.abs(b_curr);
|
double testcap = Math.abs(b_testcap);
|
int HourRate = ComBase.GetHourRate(MonStdCap, curr);
|
|
mTestData.battRestCap = (float) Math.abs(ComBase.GetMonomerCap(MonStdCap,
|
HourRate,
|
testcap,
|
getMaxMonVol(),
|
getMinMonVol(),
|
MonStdVol,
|
ComBase.CapType_Rest));
|
mTestData.battRestTime = ComBase.GetRestTimeSecond(mTestData.battRestCap, curr);
|
mTestData.battRealCap = (float) (mTestData.battRestCap + testcap * ComBase.N_TO_10H(HourRate));
|
}
|
//==============================================================//
|
//==============================================================//
|
//����al_MonVol����������������������0.001
|
public boolean checkIfHaveZeroMonVol()
|
{
|
boolean have_zero_vol = false;
|
|
for(int n=0; n<al_MonVol.size(); n++)
|
{
|
if(n >= 10000)
|
break;
|
|
if(al_MonVol.get(n).monVol <= 0.001)
|
{
|
have_zero_vol = true;
|
break;
|
}
|
}
|
|
return have_zero_vol;
|
}
|
|
private void initTestData(byte test_type)
|
{
|
int count = 1;
|
if(BattStatData.BATTSTATE_FLOAT != test_type)
|
{
|
Sql_Mysql sql = new Sql_Mysql(m_Conn_Pool.getConn());
|
count = sql.getBattTestRecordCountNew(BattGroupId, Sql_Mysql.BattTestDataInf_Table);
|
sql.close_con();
|
}
|
|
if(count <= 0)
|
return;
|
|
setMonitorParam(test_type);
|
|
mTestData.init(mTestData.getDevFBS9100S_WorkState(), test_type, count);
|
if((FBS9100_SysState.IEC61850_SYS_STATE_CHARGING == mTestData.getDevFBS9100S_WorkState())
|
|| (FBS9100_SysState.IEC61850_SYS_STATE_DISCHARGING == mTestData.getDevFBS9100S_WorkState())) {
|
mTestData.setLoaderType(BattStatData.TEST_LOADER_FBS9100S);
|
//System.out.println("mTestData.setLoaderType(BattStatData.TEST_LOADER_FBS9100S)");
|
}
|
/*
|
else {
|
if(true == mTestData.isCurrDataUseForIdceFbi()) {
|
if(false == mTestData.isCurrDataUseForIdceFbi_LaZha()) {
|
mTestData.setLoaderType(BattStatData.TEST_LOADER_FBI_IDCE);
|
}
|
}
|
}
|
*/
|
MysqlDataTable_Exist = false;
|
MysqlDataResInfTable_Exist = false;
|
MysqlRecordInf_Exist = false;
|
}
|
|
public boolean check_If_Bpm7100_DataNeedStore()
|
{
|
boolean store_state = false;
|
/***********************************************************************/
|
if(false == getStoreDataBusyTag())
|
{
|
mTestData.testCurr = mTestData.TestCurr_RT;
|
|
if(true == mTestData.getBpm7100RunState()) {
|
if(BattStatData.BATTSTATE_MONITOR != mTestData.battTestState) {
|
initTestData(BattStatData.BATTSTATE_MONITOR);
|
store_state = true;
|
}
|
} else {
|
if(BattStatData.BATTSTATE_FLOAT != mTestData.battTestState) {
|
mTestData.battTestState = BattStatData.BATTSTATE_FLOAT;
|
mTestData.TestState_RT = mTestData.battTestState;
|
store_state = true;
|
}
|
}
|
|
if(Math.abs(mTestData.testCurr) < mBattFloatCurrLevel) {
|
if(BattStatData.BATTSTATE_FLOAT != mTestData.battState) {
|
mTestData.battState = BattStatData.BATTSTATE_FLOAT;
|
}
|
} else {
|
if(mTestData.testCurr >= (mBattFloatCurrLevel+2))
|
{
|
if(BattStatData.BATTSTATE_CHARGE != mTestData.battState) {
|
mTestData.bpm7100_init(BattStatData.BATTSTATE_CHARGE);
|
if(BattStatData.BATTSTATE_MONITOR == mTestData.battTestState) {
|
store_state = true;
|
}
|
}
|
} else if(mTestData.testCurr <= ((mBattFloatCurrLevel+2)*(-1))) {
|
if(BattStatData.BATTSTATE_DISCHARGE != mTestData.battState) {
|
mTestData.bpm7100_init(BattStatData.BATTSTATE_DISCHARGE);
|
if(BattStatData.BATTSTATE_MONITOR == mTestData.battTestState) {
|
store_state = true;
|
}
|
}
|
}
|
|
setMonitorParam(mTestData.battState);
|
}
|
}
|
|
if (BattStatData.BATTSTATE_MONITOR == mTestData.battTestState)
|
{
|
mTestData.calTestCap(1);
|
calBattRestCap(mTestData.testCurr, mTestData.testCap);
|
|
//boolean dt_new = make_al_MonVol_History();
|
if(mTestData.recordNum_BPM7100 < mTestDataRecordCountMax)
|
{
|
if((0==(mTestData.dataCalCount%mSaveDataTimeInterval)) || (1==mTestData.dataCalCount))
|
{
|
set_al_MonVol_History_New();
|
store_state = true;
|
}
|
}
|
}
|
|
if(true == getStoreDataBusyTag())
|
store_state = false;
|
else
|
{
|
if(true == store_state)
|
setStoreDataBusyTag();
|
}
|
/***********************************************************************/
|
|
return store_state;
|
}
|
|
|
public boolean checkIfDataNeedStore()
|
{
|
boolean store_state = false;
|
/***********************************************************************/
|
if(false == getStoreDataBusyTag())
|
{
|
mTestData.testCurr = mTestData.TestCurr_RT;
|
if((Math.abs(mTestData.testCurr) < mBattFloatCurrLevel)
|
/*&& (FBS9100_SysState.IEC61850_SYS_STATE_DISCHARGING != mTestData.dev_FBS9100S_WorkState)*/)
|
{
|
if(BattStatData.BATTSTATE_FLOAT != mTestData.battTestState)
|
{
|
mTestData.battTestState = BattStatData.BATTSTATE_FLOAT;
|
mTestData.battState = BattStatData.BATTSTATE_FLOAT;
|
store_state = true;
|
}
|
}
|
|
if(false == store_state)
|
{
|
if(mTestData.testCurr >= (mBattFloatCurrLevel+2))
|
{
|
if(BattStatData.BATTSTATE_DISCHARGE == mTestData.battTestState)
|
{
|
mTestData.battTestState = BattStatData.BATTSTATE_FLOAT;
|
mTestData.battState = BattStatData.BATTSTATE_FLOAT;
|
store_state = true;
|
}
|
else if(BattStatData.BATTSTATE_FLOAT == mTestData.battTestState)
|
{
|
initTestData(BattStatData.BATTSTATE_CHARGE);
|
}
|
}
|
else if(mTestData.testCurr <= ((mBattFloatCurrLevel+2)*(-1)))
|
{
|
if(BattStatData.BATTSTATE_CHARGE == mTestData.battTestState)
|
{
|
mTestData.battTestState = BattStatData.BATTSTATE_FLOAT;
|
mTestData.battState = BattStatData.BATTSTATE_FLOAT;
|
store_state = true;
|
}
|
else if(BattStatData.BATTSTATE_FLOAT == mTestData.battTestState)
|
{
|
initTestData(BattStatData.BATTSTATE_DISCHARGE);
|
}
|
}/*
|
else {//edit by mxpopstar @2019.01.11
|
if(BattStatData.BATTSTATE_FLOAT == mTestData.battTestState) {
|
if(FBS9100_SysState.IEC61850_SYS_STATE_DISCHARGING == mTestData.dev_FBS9100S_WorkState) {
|
initTestData(BattStatData.BATTSTATE_DISCHARGE);
|
//printBattRtDataDebugInf_FBS9100S(6);
|
} else if(FBS9100_SysState.IEC61850_SYS_STATE_CHARGING == mTestData.dev_FBS9100S_WorkState) {
|
initTestData(BattStatData.BATTSTATE_CHARGE);
|
//printBattRtDataDebugInf_FBS9100S(7);
|
}
|
}
|
}*/
|
}
|
}
|
|
if((BattStatData.BATTSTATE_DISCHARGE == mTestData.battTestState)
|
|| (BattStatData.BATTSTATE_CHARGE == mTestData.battTestState))
|
{
|
mTestData.calTestCap(1);
|
calBattRestCap(mTestData.testCurr, mTestData.testCap);
|
|
boolean dt_new = make_al_MonVol_History();
|
if(mTestData.recordNum < mTestDataRecordCountMax)
|
{
|
if((true == dt_new) || ((mTestData.dataCalCount % mSaveDataTimeInterval)==0))
|
{
|
set_al_MonVol_History_New();
|
store_state = true;
|
}
|
}
|
}
|
else
|
{
|
if(mTestData.groupVol > mBattFloatVolLevel) {
|
mTestData.battState = BattStatData.BATTSTATE_JUNCHARGE;
|
} else {
|
mTestData.battState = BattStatData.BATTSTATE_FLOAT;
|
}
|
}
|
|
if(true == getStoreDataBusyTag())
|
store_state = false;
|
else
|
{
|
if(true == store_state)
|
setStoreDataBusyTag();
|
}
|
|
/***********************************************************************/
|
return store_state;
|
}
|
|
public void clearStoreDataBusyTag()
|
{
|
StoreDataBusy = false;
|
}
|
private boolean getStoreDataBusyTag()
|
{
|
return StoreDataBusy;
|
}
|
private void setStoreDataBusyTag()
|
{
|
StoreDataBusy = true;
|
}
|
|
public class InsertDataToMysql_Task implements Runnable {
|
|
private void inserTestDataToDB(Sql_Mysql sql_v, int test_stoptype_t) {
|
boolean result = true;
|
for(int c=0; c<3; c++) {
|
try {
|
sql_v.mysql_con.setAutoCommit(false);
|
//------------------------------------------------------------//
|
String sql_str = BattData_RT_SQL.getInsertBattTestDataStr(BattData_RT.this);
|
sql_v.sqlMysqlExecute(sql_str);
|
//------------------------------------------------------------//
|
ArrayList<String> al_sql_str = BattData_RT_SQL.getInsertOrUpdateBattTestDataStopStr(BattData_RT.this);
|
for(int n=0; n<al_sql_str.size(); n++)
|
{
|
sql_v.sqlMysqlExecute(al_sql_str.get(n));
|
}
|
//------------------------------------------------------------//
|
if(1 == BattData_RT.this.mTestData.testRecordCount) {
|
MysqlRecordInf_Exist = true;
|
}
|
//------------------------------------------------------------//
|
ResultSet rest_t = sql_v.sqlMysqlQuery("SELECT COUNT(*) FROM " + Sql_Mysql.BattTestDataInf_Table
|
+ " WHERE BattGroupId=" + BattData_RT.this.BattGroupId
|
+ " AND test_record_count=" + BattData_RT.this.mTestData.testRecordCount);
|
if(rest_t.next()) {
|
if(rest_t.getInt(1) < 1) {
|
MysqlRecordInf_Exist = false;
|
}
|
}
|
//------------------------------------------------------------//
|
sql_str = BattData_RT_SQL.getInsertOrUpdateBattTestDataInfStr(BattData_RT.this, test_stoptype_t);
|
sql_v.sqlMysqlExecute(sql_str);
|
//------------------------------------------------------------//
|
sql_v.mysql_con.commit();
|
|
mTestData.recordNum += 1;
|
mTestData.recordNum_BPM7100 += 1;
|
clear_al_MonVol_History_New();
|
|
MysqlDataResInfTable_Exist = true;
|
MysqlRecordInf_Exist = true;
|
} catch (SQLException e) {
|
try {
|
sql_v.mysql_con.rollback();
|
} catch (SQLException e1) {
|
// TODO Auto-generated catch block
|
e1.printStackTrace();
|
}
|
e.printStackTrace();
|
result = false;
|
} finally {
|
try {
|
sql_v.mysql_con.setAutoCommit(true);
|
} catch (SQLException e1) {
|
// TODO Auto-generated catch block
|
e1.printStackTrace();
|
}
|
if(true == result)
|
break;
|
else
|
{
|
try {
|
Thread.sleep(500);
|
} catch (InterruptedException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
}
|
}
|
|
@Override
|
public void run() {
|
//System.out.println("mTestData.testTimeLong:"+mTestData.testTimeLong);
|
//System.out.println("mTestTimeLongMin:"+mTestTimeLongMin);
|
Sql_Mysql sql = new Sql_Mysql(m_Conn_Pool.getConn());
|
String sql_str = null;
|
try {
|
sql.sqlMysqlUseDB(Sql_Mysql.DB_BATT_TESTDATA);
|
|
if(false == MysqlDataTable_Exist)
|
{
|
sql_str = BattData_RT_SQL.getCreateBattTestDataStr("`tb_BattTestDataStop_" + BattGroupId + "` ");
|
sql.sqlMysqlExecute(sql_str);
|
MysqlDataTable_Exist = sql.sqlMysqlCheckIfTableExist("tb_BattTestData_" + BattGroupId);
|
}
|
|
if(false == MysqlDataTable_Exist)
|
{
|
System.out.println("tb_BattTestData_" + BattGroupId + " is not exist, create it now...");
|
sql_str = BattData_RT_SQL.getCreateBattTestDataStr("`tb_BattTestData_" + BattGroupId + "` ");
|
sql.sqlMysqlExecute(sql_str);
|
}
|
//System.out.println("mTestData.TestState_RT:" + mTestData.TestState_RT
|
// + ", mTestData.battTestState:" + mTestData.battTestState);
|
if((BattStatData.BATTSTATE_FLOAT != mTestData.TestState_RT)
|
&& (BattStatData.BATTSTATE_FLOAT != mTestData.battTestState))
|
{
|
inserTestDataToDB(sql, -1);
|
} else {
|
if(BattStatData.TEST_LOADER_FBS9100S == mTestData.getLoaderType()) {
|
set_al_MonVol_History_New();
|
inserTestDataToDB(sql, mTestData.test_stoptype);
|
System.out.println("inserTestDataToDB(sql, mTestData.test_stoptype)=" + mTestData.test_stoptype);
|
}
|
|
if(mTestData.testTimeLong < mTestTimeLongMin) {
|
try {
|
sql.mysql_con.setAutoCommit(false);
|
ArrayList<String> al_str = BattData_RT_SQL.getDeleteBattTestDataStr(BattData_RT.this);
|
for(int n=0; n<al_str.size(); n++)
|
{
|
sql.sqlMysqlExecute(al_str.get(n));
|
System.out.println(Thread.currentThread().getName() + ": " + al_str.get(n));
|
}
|
sql.mysql_con.commit();
|
|
} catch (SQLException e) {
|
sql.mysql_con.rollback();
|
} finally {
|
sql.mysql_con.setAutoCommit(true);
|
}
|
}
|
}
|
} catch (SQLException e) {
|
System.out.println(e.getMessage());
|
}
|
finally
|
{
|
sql.close_con();
|
clearStoreDataBusyTag();
|
}
|
}
|
}
|
}
|