package com.battalarm;
|
|
import java.sql.ResultSet;
|
import java.sql.SQLException;
|
import java.util.Date;
|
|
import com.base.Com;
|
import com.base.ComBase;
|
import com.battdata_rt.BattData_RT;
|
import com.sql.MysqlConnPool;
|
import com.sql.Sql_Mysql;
|
|
public class BattAlarm_Thread_SQL {
|
|
/**
|
* ²éѯÐîµç³Ø×é×îÐÂÒ»±Ê½ÚÄܷŵçµÄÊý¾Ý
|
* @param pool
|
* @param battdata
|
*/
|
public static boolean queryBattLastTestData(MysqlConnPool pool,BattData_RT battdata) {
|
boolean flag = false;
|
String sql_str = "SELECT test_record_count,test_timelong,test_cap,group_vol,max_monvol,min_monvol,record_num,test_starttime " +
|
" FROM " + Sql_Mysql.BattTestDataInf_Table +
|
" WHERE test_record_count = (" +
|
" SELECT MAX(test_record_count) FROM " + Sql_Mysql.BattTestDataInf_Table +
|
" WHERE BattGroupId = " + battdata.BattGroupId + " AND test_type = 3 AND test_starttype = 3 " +
|
" ) AND BattGroupId = " + battdata.BattGroupId;
|
Sql_Mysql sql = new Sql_Mysql(pool.getConn());
|
ResultSet res = null;
|
ResultSet res1 = null;
|
res = sql.sqlMysqlQuery(sql_str);
|
try {
|
if(res.next()) {
|
int tmp_test_record_count = res.getInt("test_record_count");
|
int tmp_record_num = res.getInt("record_num");
|
|
//ÀúÊ·Êý¾ÝÓиüÐÂ
|
if((tmp_test_record_count != battdata.TestData.testRecordCount) || (tmp_record_num != battdata.TestData.recordNum)) {
|
battdata.TestData.testRecordCount = tmp_test_record_count;
|
battdata.TestData.recordNum = tmp_record_num;
|
|
battdata.TestData.testTimeLong = res.getInt("test_timelong");
|
battdata.TestData.testCap = res.getFloat("test_cap");
|
battdata.TestData.abort_groupvol = res.getFloat("group_vol");
|
float max_monvol = res.getFloat("max_monvol");
|
float min_monvol = res.getFloat("min_monvol");
|
//ƽ¾ùµçÁ÷
|
double avg_test_curr = battdata.TestData.testCap*3600/battdata.TestData.testTimeLong; //²âÊÔÆ½¾ùµçÁ÷
|
battdata.TestData.test_restcap = (float)ComBase.GetMonomerCap(battdata.MonStdCap, ComBase.GetHourRate(battdata.MonStdCap, avg_test_curr), battdata.TestData.testCap, max_monvol, min_monvol, battdata.MonStdVol, ComBase.CapType_Rest);
|
|
//System.out.println("monstdcap:" + battdata.MonStdCap+ "\tcurr:"+avg_test_curr+"\ttest_cap:"+battdata.TestData.testCap+"\tmax:"+max_monvol+"\tmin:"+min_monvol+"\tstdvol:"+battdata.MonStdVol);
|
//System.out.println("BattGroupId = " + battdata.BattGroupId+"\trestcap = " + battdata.TestData.test_restcap+"\t"+Com.getDateTimeFormat(res.getTimestamp("test_starttime"), Com.DTF_YMDhms));
|
res1 = null;
|
String sql_str_sel = "SELECT mon_num,mon_vol FROM " + Sql_Mysql.BattTestData_Table + battdata.BattGroupId +
|
" WHERE BattGroupId = " + battdata.BattGroupId + " AND test_record_count = " + battdata.TestData.testRecordCount + " AND record_num = " + battdata.TestData.recordNum +
|
" ORDER BY mon_num ";
|
res1 = sql.sqlMysqlQuery(sql_str_sel);
|
//System.out.println(sql_str_sel);
|
while(null != res1 && res1.next()) {
|
int mon_num = res1.getInt("mon_num");
|
float mon_vol = res1.getFloat("mon_vol");
|
if(battdata.MonCount >= mon_num) {
|
battdata.al_MonVol.get(mon_num-1).monRealCap = (float)ComBase.GetMonomerCap(battdata.MonStdCap, ComBase.GetHourRate(battdata.MonStdCap, avg_test_curr), battdata.TestData.testCap, max_monvol, mon_vol, battdata.MonStdVol, ComBase.CapType_Real);
|
}
|
flag = true;
|
}
|
}
|
}
|
} catch (SQLException e) {
|
e.printStackTrace();
|
} finally {
|
if(null != res) {
|
try {
|
res.close();
|
} catch (SQLException e) {
|
e.printStackTrace();
|
}
|
}
|
sql.close_con();
|
}
|
return flag;
|
}
|
|
/**
|
* ¸üÐÂ×é¶Ë¸æ¾¯ÐÅÏ¢
|
* @param pool
|
* @param battdata
|
*/
|
public static void updateBattRtState_Table(MysqlConnPool pool,BattData_RT battdata) {
|
String sql_str = " UPDATE " + Sql_Mysql.BattRsAlarm_Table + ""
|
+ " SET record_time = '"+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)+"'"
|
+ ",groupvol_alm = " + battdata.TestData.groupVol_AlarmData.getAlarmState()
|
+ ",test_end_cap=" + battdata.TestData.testCap
|
+ ",test_end_vol=" + battdata.TestData.abort_groupvol
|
+ ",test_timelong= " + battdata.TestData.testTimeLong
|
+ " WHERE BattGroupId = " + battdata.BattGroupId;
|
//System.out.println(sql_str);
|
Sql_Mysql sql = new Sql_Mysql(pool.getConn());
|
try {
|
sql.sqlMysqlExecute(sql_str);
|
} catch (SQLException e) {
|
e.printStackTrace();
|
} finally {
|
sql.close_con();
|
}
|
|
}
|
|
/**
|
* ¸üÐÂµç³Ø¸æ¾¯¼Ç¼
|
* @param conn_pool
|
* @param bd_rt
|
*/
|
public static void updateBattAlarm_RT_RamDB_Table(MysqlConnPool conn_pool, BattData_RT bd_rt)
|
{
|
Sql_Mysql sql = new Sql_Mysql(conn_pool.getConn());
|
try
|
{
|
String sql_str = "UPDATE " + Sql_Mysql.BattRtAlarm_Table
|
+ " SET "
|
+ " record_time='" + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms) + "'";
|
|
boolean tmp_dt = false;
|
String sql_str_vol = " ";
|
for(int n=0; n<bd_rt.MonCount; n++) {
|
tmp_dt = bd_rt.al_MonVol.get(n).monVol_AlarmData.getAlarmState();
|
sql_str_vol += " WHEN " + (n+1) + " THEN " + tmp_dt;
|
}
|
if(sql_str_vol.trim().length() > 1) {
|
sql_str_vol = ", monvol_alm = CASE mon_num " + sql_str_vol + " ELSE monvol_alm END ";
|
}
|
|
String sql_str_tmp = " ";
|
for(int n=0; n<bd_rt.MonCount; n++) {
|
tmp_dt = bd_rt.al_MonVol.get(n).monTmp_AlarmData.getAlarmState();
|
sql_str_tmp += " WHEN " + (n+1) + " THEN " + tmp_dt;
|
}
|
if(sql_str_tmp.trim().length() > 1) {
|
sql_str_tmp = ", montmp_alm = CASE mon_num " + sql_str_tmp + " ELSE montmp_alm END ";
|
}
|
|
String sql_str_res = " ";
|
for(int n=0; n<bd_rt.MonCount; n++) {
|
tmp_dt = bd_rt.al_MonVol.get(n).monRes_AlarmData.getAlarmState();
|
sql_str_res += " WHEN " + (n+1) + " THEN " + tmp_dt;
|
}
|
if(sql_str_res.trim().length() > 1) {
|
sql_str_res = ", monres_alm = CASE mon_num " + sql_str_res + " ELSE monres_alm END ";
|
}
|
|
String sql_str_cap = " ";
|
for(int n=0; n<bd_rt.MonCount; n++) {
|
tmp_dt = bd_rt.al_MonVol.get(n).monRealCap_AlarmData.getAlarmState();
|
sql_str_cap += " WHEN " + (n+1) + " THEN " + tmp_dt;
|
}
|
if(sql_str_cap.trim().length() > 1) {
|
sql_str_cap = ", monrestcap_alm = CASE mon_num " + sql_str_cap + " ELSE monrestcap_alm END ";
|
}
|
String sql_str_2 = sql_str_vol + sql_str_tmp + sql_str_res + sql_str_cap ;
|
if(sql_str_2.trim().length() > 1) {
|
sql_str_2 += " WHERE BattGroupId=" + bd_rt.BattGroupId;
|
/*
|
+ " AND mon_num IN (";
|
for(int n=0; n<brt.MonCount; n++) {
|
if(n > 0) {
|
sql_str_2 += ",";
|
}
|
sql_str_2 += (n+1);
|
}
|
sql_str_2 += ")";
|
*/
|
} else {
|
sql_str_2 = " WHERE BattGroupId=" + bd_rt.BattGroupId;
|
}
|
|
sql_str += sql_str_2;
|
//System.out.println(bd_rt.MonCount);
|
//System.out.println(sql_str);
|
sql.sqlMysqlExecute(sql_str);
|
} catch (SQLException e) {
|
e.printStackTrace();
|
} finally {
|
sql.close_con();
|
}
|
}
|
}
|