package com.battdata_rt;
|
|
import com.base.Com;
|
import com.config.AppConfig;
|
import com.config.AppParam;
|
import com.sql.MysqlConnPool;
|
import com.sql.Sql_Mysql;
|
import java.sql.ResultSet;
|
import java.sql.SQLException;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.Random;
|
|
public class PowerData_RT_Array {
|
public static final int DATA_SOURCE_FBSDEV = 0;
|
public static final int DATA_SOURCE_SQLSERVER = 1;
|
public static final int DATA_SOURCE_C_INTERFACE = 2;
|
public static final int DATA_SOURCE_SQLSERVER_AND_C_INTERFACE = 3;
|
private ArrayList<PowerData_RT> Data_Array = new ArrayList();
|
private MysqlConnPool m_Conn_Pool;
|
private int Sybase_query_count = 0;
|
private Date m_SybaseServerDate = new Date();
|
private AppParam m_Param;
|
private AppConfig m_AppCfg;
|
private ArrayList<String> al_stationid = new ArrayList();
|
|
public PowerData_RT_Array(AppConfig cfg, MysqlConnPool pool) {
|
this.m_AppCfg = cfg;
|
this.m_Conn_Pool = pool;
|
}
|
|
public Date getSybaseServerDateTime() {
|
return this.m_SybaseServerDate;
|
}
|
|
public int getSybaseQueryCount() {
|
return this.Sybase_query_count;
|
}
|
|
public int getItemCount() {
|
return this.Data_Array.size();
|
}
|
|
public PowerData_RT getItem(int index) {
|
return (PowerData_RT) this.Data_Array.get(index);
|
}
|
|
public void addItem(PowerData_RT data) {
|
this.Data_Array.add(data);
|
}
|
|
public boolean checkIfHaveZeroMonVol() {
|
boolean have_zero_vol = false;
|
|
for (int n = 0; n < this.Data_Array.size(); n++) {
|
if (n >= 1000000) {
|
break;
|
}
|
if (((PowerData_RT) this.Data_Array.get(n)).checkIfHaveZeroMonVol()) {
|
have_zero_vol = true;
|
break;
|
}
|
}
|
|
return have_zero_vol;
|
}
|
|
public void initPowerDataRT_Inf(double ser_ver) {
|
this.Data_Array.clear();
|
|
initPowerDataRT_Inf_FromSQL();
|
|
//new PowerData_RT_RamDB_Thread(this.m_Conn_Pool, this.Data_Array, ser_ver).start();
|
}
|
|
|
public void makeRondomData_Task(int start_index, int count) {
|
if (start_index < 0)
|
start_index = 0;
|
if (count < 0) {
|
count = 0;
|
}
|
if (start_index >= this.al_stationid.size()) {
|
start_index = this.al_stationid.size() - 1;
|
}
|
if (start_index + count > this.al_stationid.size()) {
|
count = this.al_stationid.size() - start_index;
|
}
|
|
Random rd = new Random();
|
for (int n = 0; n < this.Data_Array.size(); n++) {
|
PowerData_RT batt_data = (PowerData_RT) this.Data_Array.get(n);
|
for (int bt_index = 0; bt_index < batt_data.al_MonVol.size(); bt_index++) {
|
((MonVolData) batt_data.al_MonVol.get(bt_index)).monVol_TMP = (batt_data.MonStdVol
|
+ batt_data.MonStdVol / 2.0F * (rd.nextFloat() / 10.0F));
|
}
|
}
|
|
for (int n = 0; n < this.Data_Array.size(); n++) {
|
PowerData_RT batt_data = (PowerData_RT) this.Data_Array.get(n);
|
|
float sumvol = 0.0F;
|
for (int bt_index = 0; bt_index < batt_data.al_MonVol.size(); bt_index++) {
|
((MonVolData) batt_data.al_MonVol.get(bt_index)).monVol = ((MonVolData) batt_data.al_MonVol
|
.get(bt_index)).monVol_TMP;
|
((MonVolData) batt_data.al_MonVol.get(bt_index)).monTmp = ((float) (20.0D + rd.nextFloat() * 5.0F));
|
((MonVolData) batt_data.al_MonVol.get(bt_index)).monRes = ((float) (1.0D + rd.nextFloat() / 2.0F)
|
* (batt_data.MonStdVol / 2.0F));
|
|
float ser = 0.0F;
|
if (((MonVolData) batt_data.al_MonVol.get(bt_index)).monRes > 0.1D) {
|
ser = (float) (1000.0D / ((MonVolData) batt_data.al_MonVol.get(bt_index)).monRes
|
* (batt_data.MonStdVol / 2.0F));
|
}
|
((MonVolData) batt_data.al_MonVol.get(bt_index)).monSer = ser;
|
sumvol += ((MonVolData) batt_data.al_MonVol.get(bt_index)).monVol;
|
}
|
batt_data.mTestData.groupVol = sumvol;
|
}
|
|
this.Sybase_query_count += 1;
|
if (this.Sybase_query_count < 0)
|
this.Sybase_query_count = 0;
|
}
|
|
/**
|
* 鍔犺浇閫氫俊鐢垫簮閰嶇疆淇℃伅
|
* @param mVersionnum
|
*/
|
public void initPowerDataRT_Inf_FromSQL() {
|
Sql_Mysql sql = null;
|
ResultSet res = null;
|
try {
|
sql = new Sql_Mysql(m_Conn_Pool.getConn());
|
String sql_str = " SELECT power_id,power_name,mon_num,acvol_high_limit,acvol_low_limit,dcoutvol_low_limit,power_ip,dev_type "
|
+ " ,binf_id,binf_name,mon_vol,mon_cap,mon_res,load_curr "
|
+ " FROM " + Sql_Mysql.Power_Inf_Table
|
+ " ORDER BY power_id ASC ";
|
|
res = sql.sqlMysqlQuery(sql_str);
|
int auto_cid = 100000001;
|
while(res.next()) {
|
int power_id = res.getInt("power_id");
|
String power_name = res.getString("power_name").trim();
|
String power_ip = res.getString("power_ip").trim();
|
int dev_type = res.getInt("dev_type");
|
|
int binf_id = res.getInt("binf_id");
|
String binf_name = res.getString("binf_name").trim();
|
int mon_vol = res.getInt("mon_vol");
|
int mon_cap = res.getInt("mon_cap");
|
float mon_res = res.getFloat("mon_res");
|
float load_curr = res.getFloat("load_curr");
|
//鍗曚綋鏁伴噺
|
int MonCount = res.getInt("mon_num");
|
if(MonCount >= 500) {
|
MonCount = 500;
|
}
|
if(MonCount < 0) {
|
MonCount = 0;
|
}
|
boolean power_exist = false;
|
|
for(int n=0; n<Data_Array.size(); n++) {
|
PowerData_RT brt = Data_Array.get(n);
|
|
if(power_id == brt.getPower_id()) {
|
boolean param_changed = false;
|
if(false == power_ip.equals(brt.getPower_ip())) {
|
brt.setPower_ip(power_ip);
|
param_changed = true;
|
}
|
if(dev_type != brt.getDev_type()) {
|
brt.setDev_type(dev_type);
|
param_changed = true;
|
}
|
if(MonCount != brt.al_MonVol.size()) {
|
brt.updateMonCnt(MonCount);
|
param_changed = true;
|
}
|
if(mon_cap != brt.MonStdCap) {
|
brt.MonStdCap = mon_cap;
|
param_changed = true;
|
}
|
if(mon_vol != brt.MonStdVol) {
|
brt.MonStdVol = mon_vol;
|
param_changed = true;
|
}
|
power_exist = true;
|
break;
|
}
|
}
|
|
if(true == power_exist) {
|
continue;
|
} else {
|
PowerData_RT rtdata = new PowerData_RT(this.m_AppCfg, this.m_Conn_Pool,power_id);
|
|
rtdata.power_id = res.getInt("power_id");
|
rtdata.power_name = res.getString("power_name").trim();
|
rtdata.power_ip = res.getString("power_ip").trim();
|
rtdata.dev_type = res.getInt("dev_type");
|
|
rtdata.BattGroupId = binf_id;
|
rtdata.MonStdCap = mon_cap;
|
rtdata.MonStdVol = mon_vol;
|
|
|
//鍗曚綋鏁伴噺
|
rtdata.MonCount = res.getInt("mon_num");
|
if (rtdata.MonCount >= 500)
|
rtdata.MonCount = 500;
|
if (rtdata.MonCount < 0) {
|
rtdata.MonCount = 0;
|
}
|
for(int mn=0; mn<rtdata.MonCount; mn++) {
|
MonVolData data = new MonVolData(0, 0, auto_cid++);
|
rtdata.al_MonVol.add(data);
|
//System.out.println(data.monVol+"################");
|
rtdata.al_MonVol_RtOld.add(data.clone());
|
rtdata.setMonVol_RtOldDefaultVal();
|
rtdata.al_MonVol_History.add(data.clone());
|
}
|
/*****rtdata.initTestDataSaveRunable();*****/
|
// if(true == m_AppCfg.getBattTestStateReloadEn()) {
|
// PowerData_RT_SQL.queryBattState_From_RT_Table(m_Conn_Pool, rtdata);
|
// byte batttest_type = rtdata.getBattTestType();
|
// if((BattStatData.BATTDATA_DISCHARGE == batttest_type)
|
// || (BattStatData.BATTDATA_CHARGE == batttest_type)) {
|
// rtdata.setMonitorParam(batttest_type);
|
// PowerData_RT_SQL.get_MonData_From_BattData_RT_RamDB_Table(m_Conn_Pool, rtdata);
|
// rtdata.mTestData.testRecordCount
|
// = PowerData_RT_SQL.queryTestRecordCountMax_From_tb_batttestdata_inf(m_Conn_Pool, rtdata.BattGroupId);
|
// rtdata.MysqlRecordInf_Exist = true;
|
// }
|
// }
|
Data_Array.add(rtdata);
|
}
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
if(null != res) {
|
try {
|
res.close();
|
} catch (SQLException e) {
|
e.printStackTrace();
|
}
|
}
|
sql.close_con();
|
}
|
}
|
|
/**
|
*
|
*/
|
public void checkBattRealData() {
|
for (int i = 0; i < Data_Array.size(); i++) {
|
PowerData_RT poRt = Data_Array.get(i);
|
|
PowerData_RT_SQL.checkBattRtData(poRt.BattGroupId,poRt.MonCount,m_Conn_Pool);
|
|
PowerData_RT_SQL.checkBattRSData(poRt.BattGroupId,poRt.MonCount,m_Conn_Pool);
|
}
|
}
|
|
}
|