BattMonitor_DB_Builder/.settings/org.eclipse.core.resources.prefs
@@ -1,2 +1,5 @@ eclipse.preferences.version=1 encoding//src/com/battdata_rt/BattStatData.java=UTF-8 encoding//src/com/battdata_rt/PowerData_RT.java=UTF-8 encoding//src/com/battdata_rt/PowerData_RT_Array.java=UTF-8 encoding/<project>=GBK BattMonitor_DB_Builder/bin/com/base/ComBase.classBinary files differ
BattMonitor_DB_Builder/bin/com/battdata_rt/BattStatData.classBinary files differ
BattMonitor_DB_Builder/bin/com/battdata_rt/MonVolData.classBinary files differ
BattMonitor_DB_Builder/bin/com/battdata_rt/PowerData_RT.classBinary files differ
BattMonitor_DB_Builder/bin/com/battdata_rt/PowerData_RT_Array.classBinary files differ
BattMonitor_DB_Builder/bin/com/battdata_rt/PowerData_RT_RamDB_Thread.classBinary files differ
BattMonitor_DB_Builder/bin/com/battdata_rt/PowerData_RT_RamDB_Thread_SQL.classBinary files differ
BattMonitor_DB_Builder/bin/com/battdata_rt/PowerData_RT_SQL.classBinary files differ
BattMonitor_DB_Builder/bin/com/battdata_rt/package-info.classBinary files differ
BattMonitor_DB_Builder/bin/com/config/AppParam$MonitorParam.classBinary files differ
BattMonitor_DB_Builder/bin/com/config/AppParam.classBinary files differ
BattMonitor_DB_Builder/bin/com/sql/util/Db_Alarm.classBinary files differ
BattMonitor_DB_Builder/bin/com/sql/util/Db_Param.classBinary files differ
BattMonitor_DB_Builder/bin/com/sql/util/Db_Power_Alarm.classBinary files differ
BattMonitor_DB_Builder/src/com/base/ComBase.java
New file @@ -0,0 +1,201 @@ package com.base; public class ComBase { public static final byte CapType_Rest = 0; public static final byte CapType_Real = 1; public static final int MonomerCountMax = 480; public static byte changeIntToByte(int data) { return (byte) (data & 0xFF); } public static short changeIntToShort(int data) { return (short) (data & 0xFFFF); } public static byte changeShortToByte(short data) { return (byte) (data & 0xFF); } public static int changeByteToInt(byte data) { int tmp = data; return tmp & 0xFF; } public static int changeShortToInt(short data) { int tmp = data; return tmp & 0xFFFF; } public static double changeShortToDouble(short data) { int tmp = data & 0xFFFF; return tmp; } public static short changeDoubleToShort(double data) { int tmp = (int) data; return (short) (tmp & 0xFFFF); } public static double GetFDCurrent(double stdcap, int hourrate) { double res = 0.055D; switch (hourrate) { case 1: res = 0.514D; break; case 2: res = 0.306D; break; case 3: res = 0.25D; break; case 4: res = 0.2D; break; case 5: res = 0.166D; break; case 6: res = 0.146D; break; case 7: res = 0.131D; break; case 8: res = 0.118D; break; case 9: res = 0.108D; break; case 10: res = 0.1D; break; case 20: res = 0.055D; break; case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: default: res = 0.055D; } return stdcap * res; } public static int GetHourRate(double stdah, double current) { int index = 0; double[] value = { 5.14D, 3.06D, 2.5D, 2.0D, 1.66D, 1.46D, 1.31D, 1.18D, 1.08D, 1.0D, 0.55D }; if (stdah < 1.0D) { stdah = 1.0D; } double res = current / (stdah / 10.0D); if (res >= 5.14D) return 1; if (res <= 0.55D) return 20; for (index = 0; index < 10; index++) { if ((res <= value[index]) && (res > value[(index + 1)])) break; } if (value[index] - res < res - value[(index + 1)]) { return index + 1; } if (index + 2 > 10) return 20; return index + 2; } public static double N_TO_10H(int n_H) { switch (n_H) { case 1: return 1.818181818181818D; case 2: return 1.639344262295082D; case 3: return 1.333333333333333D; case 4: return 1.265822784810126D; case 5: return 1.200480192076831D; case 6: return 1.141552511415525D; case 7: return 1.09051254089422D; case 8: return 1.059322033898305D; case 9: return 1.026694045174538D; case 10: return 1.0D; case 20: return 0.9090909090909091D; case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: } return 1.0D; } public static double GetMonomerCap(double STDAH, int HourRate, double SumAH, double MaxMonomerVol, double MonomerVol, double MonomerVolType, byte CapType) { if (MaxMonomerVol - MonomerVolType * 0.9D <= 0.0D) { return 0.0D; } if (STDAH < 1.0D) { STDAH = 1.0D; } if (SumAH < 0.0D) { SumAH *= -1.0D; } double tmp_cap = MonomerVol - MonomerVolType * 0.9D; tmp_cap *= (STDAH - SumAH * N_TO_10H(HourRate)); double dt_vol = MaxMonomerVol - MonomerVolType * 0.9D; if (dt_vol < 0.01D) dt_vol = 0.01D; tmp_cap /= dt_vol; if (tmp_cap < 0.0D) { tmp_cap = 0.0D; } if (CapType == 0) return tmp_cap; if (CapType == 1) { return tmp_cap + SumAH * N_TO_10H(HourRate); } return (tmp_cap + SumAH * N_TO_10H(HourRate)) * 100.0D / STDAH; } public static int GetRestTimeSecond(double restcap, double curr) { double tmp_curr = Math.abs(curr); if (tmp_curr < 0.1D) { tmp_curr = 0.1D; } int rest_time = (int) (restcap / tmp_curr * 3600.0D); if (rest_time > 356400) { rest_time = 356400; } return rest_time; } } /* * Location: * C:\Users\LiJun\Desktop\公司各种设备资料\9600显示模块相关文件\后台程序\2018-09-07\BattFBS9600XSP. * jar Qualified Name: com.base.ComBase JD-Core Version: 0.6.2 */ BattMonitor_DB_Builder/src/com/battdata_rt/BattStatData.java
New file @@ -0,0 +1,379 @@ package com.battdata_rt; import java.util.Date; import com.base.Com; public class BattStatData { //---------------------------------------------------------- final public static byte BATTDATA_NULL = 0; final public static byte BATTDATA_FLOAT = 1; final public static byte BATTDATA_CHARGE = 2; final public static byte BATTDATA_DISCHARGE = 3; final public static byte BATTDATA_JUNCHARGE = 4; final public static byte BATTDATA_RES = 5; final public static byte BATTDATA_SER = 6; final public static byte BATTDATA_TMP = 7; final public static byte BATTDATA_CONNRES = 8; final public static byte BATTDATA_MONITOR = 9; //---------------------------------------------------------- final public static byte BATTSTATE_NULL = 0; final public static byte BATTSTATE_FLOAT = 1; final public static byte BATTSTATE_CHARGE = 2; final public static byte BATTSTATE_DISCHARGE = 3; final public static byte BATTSTATE_JUNCHARGE = 4; final public static byte BATTSTATE_RES = 5; final public static byte BATTSTATE_SER = 6; final public static byte BATTSTATE_TMP = 7; final public static byte BATTSTATE_CONNRES = 8; final public static byte BATTSTATE_MONITOR = 9; //---------------------------------------------------------- final public static byte TEST_LOADER_REALLOADER = 1; final public static byte TEST_LOADER_FBI_IDCE = 2; final public static byte TEST_LOADER_FBS9100S = 3; //---------------------------------------------------------- //---- FBI/IDCE serials device connection state monitor ---- private boolean CurrDataIsUseForIdceFbi = false; private boolean CurrDataIsUseForIdceFbi_LaZha = false; //---------------------------------------------------------- private float mBattFloatCurrLevel = 30; //---------------------------------------------------------- //---------------------------------------------------------- public int dev_FBS9100S_WorkState = 0; public int dev_FBS9100S_TestType = 0; public byte battTestState = BATTSTATE_FLOAT; public byte battTestType_For_DataSave = BATTSTATE_FLOAT; public int dataCalCount; public int testRecordCount; public byte testLoaderType = 0; public int test_stoptype = 0; public int batt_res_test_cnt_last = 0; public int batt_res_test_cnt = 0; public int batt_res_test_state = 0; public int recordNum; public int recordNum_BPM7100; public Date startTestTime = new Date(); public Date recordTime = new Date(); public Date newDataRecordTime = new Date(); //new data time that get from fbs_dev; //public Date dataInsertToDBTime = new Date(); //data insert to database time; public int testTimeLong; public float onlineVol; public float groupVol; public float groupTmp; public byte battState; private boolean bpm7100_runState = false; public float testCurr = 0; public float testCurrAbsMax = 0; public float TestCurr_RT = 0; public float TestCurr_RT_TMP = 0; public int TestState_RT; public float sybase_server_battcurr; public float testCap; public float battRealCap; public float battRestCap; public int battRestTime; public float dev_temperature; //'娓╁害浼犳劅鍣ㄦ俯搴�', public float dev_humidity; //'娓╁害浼犳劅鍣ㄦ箍搴�', public BattStatData() { init((byte) BATTSTATE_FLOAT, 0); } public String getStartTestTimeString() { return Com.getDateTimeFormat(startTestTime, Com.DTF_YMDhms); } public String getRecordTimeString() { return Com.getDateTimeFormat(recordTime, Com.DTF_YMDhms); } public void setStartTestTime(long tm) { startTestTime.setTime(tm); } public void setRecordTime(long tm) { recordTime.setTime(tm); } public long getStartTestTimeInLong() { return startTestTime.getTime(); } public long getRecordTimeInLong() { return recordTime.getTime(); } public void setBattFloatCurrLevel(float curr_level) { mBattFloatCurrLevel = curr_level; } public void setBpm7100RunState(boolean stat) { bpm7100_runState = stat; } public boolean getBpm7100RunState() { return bpm7100_runState; } public BattStatData clone() { BattStatData bdata = new BattStatData(); bdata.battTestState = battTestState; bdata.battTestType_For_DataSave = battTestType_For_DataSave; bdata.battState = battState; bdata.dataCalCount = dataCalCount; bdata.testRecordCount = testRecordCount; bdata.recordNum = recordNum; bdata.recordNum_BPM7100 = recordNum_BPM7100; bdata.startTestTime.setTime(startTestTime.getTime()); bdata.testLoaderType = testLoaderType; bdata.test_stoptype = test_stoptype; bdata.recordTime.setTime(recordTime.getTime()); bdata.newDataRecordTime.setTime(newDataRecordTime.getTime()); bdata.testTimeLong = testTimeLong; bdata.onlineVol = onlineVol; bdata.groupVol = groupVol; bdata.groupTmp = groupTmp; bdata.testCurr = testCurr; bdata.testCurrAbsMax = testCurrAbsMax; bdata.sybase_server_battcurr = sybase_server_battcurr; bdata.testCap = testCap; bdata.battRealCap = battRealCap; bdata.battRestCap = battRestCap; bdata.battRestTime = battRestTime; bdata.dev_temperature = dev_temperature; //'娓╁害浼犳劅鍣ㄦ俯搴�', bdata.dev_humidity = dev_humidity; //'娓╁害浼犳劅鍣ㄦ箍搴�', return bdata; } public void init(byte test_type, int count) { battTestState = test_type; battTestType_For_DataSave = test_type; if(BattStatData.BATTSTATE_MONITOR == test_type) { TestState_RT = battTestState; } else { battState = test_type; } testLoaderType = TEST_LOADER_REALLOADER; //edit by mxpopstar @20201002 //this.checkAndSetLoaderType(); test_stoptype = -1; testRecordCount = count; dataCalCount = 0; recordNum = 0; recordNum_BPM7100 = 0; startTestTime.setTime(new Date().getTime()); recordTime.setTime(new Date().getTime()); testTimeLong = 0; testCap = 0; testCurrAbsMax = 0; } public void bpm7100_init(byte batt_state) { battState = batt_state; dataCalCount = 0; recordNum_BPM7100 = 0; testCap = 0; testCurrAbsMax = 0; } public void upDateCurrRT(float curr) { TestCurr_RT = curr; //System.out.println("TestCurr_RT: " + TestCurr_RT); if(Math.abs(testCurrAbsMax) < Math.abs(TestCurr_RT)) { testCurrAbsMax = TestCurr_RT; } if(Math.abs(TestCurr_RT) < mBattFloatCurrLevel) { TestState_RT = BATTSTATE_FLOAT; } if(TestCurr_RT >= mBattFloatCurrLevel) { TestState_RT = BATTSTATE_CHARGE; } else if(TestCurr_RT <= (mBattFloatCurrLevel*(-1))) { TestState_RT = BATTSTATE_DISCHARGE; } } public int getBatt_res_test_state() { return batt_res_test_state; } public void setBatt_res_test_state(int batt_res_test_state) { this.batt_res_test_state = batt_res_test_state; if(this.batt_res_test_state == 1 && this.batt_res_test_cnt_last == this.batt_res_test_cnt) { //鍐呴樆娴嬭瘯鏃惰缃産att_res_test_cnt != batt_res_test_cnt_last batt_res_test_cnt ++; } } public float getAvgTestCurr() { float avg_curr = 0; if(testTimeLong > 0) { avg_curr = (testCap*3600)/testTimeLong; } return avg_curr; } public boolean isCurrDataUseForIdceFbi() { return CurrDataIsUseForIdceFbi; } public void setCurrDataIsUseForIdceFbi(boolean stat) { CurrDataIsUseForIdceFbi = stat; } public void setLoaderType(byte ld_t) { testLoaderType = ld_t; } public byte getLoaderType() { return testLoaderType; } // public void checkAndSetLoaderType() { // int fbsdev_testtype = this.getDevFBS9100S_TestType(); // if((FBS9100_ComBase.SYS_STATE_STOPPED != this.getDevFBS9100S_WorkState()) // && ((FBS9100_ComBase.TestType_CAP==fbsdev_testtype) // || (FBS9100_ComBase.TestType_Charge==fbsdev_testtype))) { // // //--------------------- edit by mxpopstar @20201107 ----------------------// // if(FBS9100_ComBase.SYS_STATE_CHARGING != this.getDevFBS9100S_WorkState()) { // this.battTestType_For_DataSave = BattStatData.BATTSTATE_DISCHARGE; // } // // if(BattStatData.TEST_LOADER_FBS9100S != this.getLoaderType()) { // this.setLoaderType(BattStatData.TEST_LOADER_FBS9100S); // } // } // /******************************************************* // else { // if(true == this.isCurrDataUseForIdceFbi()) { // if(false == this.isCurrDataUseForIdceFbi_LaZha()) { // this.setLoaderType(BattStatData.TEST_LOADER_FBI_IDCE); // } // } // } // ********************************************************/ // } public int getTestRecordNum() { return recordNum; } public void setDevFBS9100S_WorkState(int alarm_stat, int test_type, int wks_t) { test_stoptype = alarm_stat; dev_FBS9100S_TestType = test_type; dev_FBS9100S_WorkState = wks_t; } public int getDevFBS9100S_WorkState() { return dev_FBS9100S_WorkState; } public int getDevFBS9100S_TestType() { return dev_FBS9100S_TestType; } public boolean isCurrDataUseForIdceFbi_LaZha() { return CurrDataIsUseForIdceFbi_LaZha; } public void setCurrDataIsUseForIdceFbi_LaZha(boolean stat) { CurrDataIsUseForIdceFbi_LaZha = stat; } /** * 浠嶧BS璁惧鏇存柊group temp * @param vol */ public void updateGroupTempFrom_FBSDev(float temp) { groupTmp = temp; } /** * 浠嶧BS璁惧鏇存柊online vol * @param vol */ public void updateOnlineVolFrom_FBSDev(float vol) { onlineVol = vol; } /** * 浠嶧BS璁惧鏇存柊缁勭鐢靛帇 * @param vol */ public void updateGroupVolFrom_FBSDev(float vol) { groupVol = vol; } /*************************************************************************/ public float getDev_temperature() { return dev_temperature; } public float getDev_humidity() { return dev_humidity; } public void setDev_temperature(float dev_temperature) { this.dev_temperature = dev_temperature; } public void setDev_humidity(float dev_humidity) { this.dev_humidity = dev_humidity; } /** * 浠嶧BS璁惧鏇存柊鐢垫祦 * @param curr */ public void updateCurrFrom_FBSDev(float curr) { upDateCurrRT(curr); } public void updateNewDataRCTime(Date d_t) { newDataRecordTime.setTime(d_t.getTime()); } public void calTestCap(int second_interval) { Date old_rec_t = new Date(); old_rec_t.setTime(recordTime.getTime()); recordTime.setTime(new Date().getTime()); testTimeLong = (int) ((recordTime.getTime() - startTestTime.getTime())/1000); double t_interval = recordTime.getTime(); t_interval = (t_interval-old_rec_t.getTime()) / 1000; testCap += (testCurr*t_interval)/3600; if((++dataCalCount) >= 36000) { dataCalCount = 0; } } } BattMonitor_DB_Builder/src/com/battdata_rt/MonVolData.java
New file @@ -0,0 +1,49 @@ package com.battdata_rt; public class MonVolData { public int deviceId; public int monId; public int cInterfaceId; public boolean data_new = false; public float monVol = 0.0F; public float monVol_TMP = 0.0F; public float monTmp = 0.0F; public float monRes = 0.0F; public float monSer = 0.0F; public float connRes = 0.0F; public float monJHcurr = 0; //均衡电流 public float mon_LY_vol = 0; //漏液电压 public MonVolData() { } public MonVolData(int dev_id, int mon_id, int c_id) { this.deviceId = dev_id; this.monId = mon_id; this.cInterfaceId = c_id; } public MonVolData clone() { MonVolData vdata = new MonVolData(); vdata.deviceId = this.deviceId; vdata.monId = this.monId; vdata.cInterfaceId = this.cInterfaceId; vdata.data_new = this.data_new; vdata.monVol = this.monVol; vdata.monVol_TMP = this.monVol_TMP; vdata.monTmp = this.monTmp; vdata.monRes = this.monRes; vdata.connRes = this.connRes; vdata.monJHcurr = this.monJHcurr; vdata.mon_LY_vol = this.mon_LY_vol; return vdata; } } /* * Location: * C:\Users\LiJun\Desktop\公司各种设备资料\9600显示模块相关文件\后台程序\2018-09-07\BattFBS9600XSP. * jar Qualified Name: com.battdata_rt.MonVolData JD-Core Version: 0.6.2 */ BattMonitor_DB_Builder/src/com/battdata_rt/PowerData_RT.java
New file @@ -0,0 +1,925 @@ package com.battdata_rt; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import com.base.ComBase; import com.config.AppConfig; import com.config.AppParam; import com.sql.MysqlConnPool; public class PowerData_RT { public static final int Power_Type_First = 1; //包含电池和电源信息 public static final int Power_Type_Second = 2; //包含电池和电源信息 public static final int Power_Type_Third = 3; //仅包含电源信息 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; private boolean Lock_Data_Stat = false; public int power_id; //电源ID public String power_name = ""; //电源名称 public String power_ip = "127.0.0.1"; //电源IP public int dev_type; //电源类型 public int StationId; public boolean Station_Event_poff = false; public boolean Station_Event_xuhang = false; public boolean Station_Event_diaozhan = false; 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 FBSDeviceName = ""; public String FBSDeviceIp = " "; public byte[] FBSDevIp = new byte[16]; private String FBSRegCode = " "; public int GroupIndexInFBSDevice = 1; public int BattGroupNum; public int BattState; public int MonCount = 1; public float MonStdVol = 2; public float MonStdCap; private boolean StoreBattRes_DataEn = false; private boolean StoreDataBusy = false; public boolean MysqlDataTable_Exist = false; public boolean MysqlDataResInfTable_Exist = false; public boolean MysqlRecordInf_Exist = false; 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 AppConfig mAppConfig = new AppConfig(); private float mBattFloatCurrLevel = (float) 3.0; private float mBattFloatVolLevel = (float) (MonStdVol*MonCount*1.125); public int mTestTimeLongMin = 60; public int mSaveDataTimeInterval = 5; private float mDataHistoryNewLevel = (float) 0.01; private int mTestDataRecordCountMax = 20000; /*********************************************************************************/ /*********************************************************************************/ public PowerData_RT(AppConfig config, MysqlConnPool pool,int power_id) { mTestData = new BattStatData(); mAppConfig.copyAppParam(config); m_Conn_Pool = pool; initTestDataSaveRunable(); } /*********************************************************************************/ public void initTestDataSaveRunable() { if(null != m_Conn_Pool) { /* try { File file = new File("bms_btse_jar//com.battmonitor.data_store.jar");//jar包的路径 URL url = file.toURI().toURL(); System.out.println("url is: " + url.toString()); @SuppressWarnings("resource") URLClassLoader loader = new URLClassLoader(new URL[]{url});//创建类加载器 Class<?> cls = loader.loadClass("com.battmonitor.data_store.InsertDataToMysql_Task"); // 从Class中实例出一个对象 InsertDataToMysql_Task impl = null; try { impl = (InsertDataToMysql_Task) cls.newInstance(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("method.invoke battgroup_id return is: " + impl.getBattGroupID()); Method method = cls.getMethod("get_InsertDataToMysql_Task_Instant", BattData_RT.class, MysqlConnPool.class);//方法名和对应的各个参数的类型 InsertDataToMysql_Task mSqlTask = (InsertDataToMysql_Task) method.invoke(null, BattData_RT.this, m_Conn_Pool);//调用得到的上边的方法method(静态方法,第一个参数可以为null) //if(null != mSqlTask) { System.out.println("method.invoke battgroup_id return is: " + str); //} //System.out.println("method.invoke return is:" + String.valueOf(o)); } catch (ClassNotFoundException | NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } */ } } /*********************************************************************************/ public void updata_BattRtSate_To_RamDb() { PowerData_RT_SQL.updateBattState_RT_RamDB_Table(m_Conn_Pool, this); } /*********************************************************************************/ public void updata_BattRtData_To_RamDb() { PowerData_RT_SQL.updateBattData_RT_RamDB_Table(m_Conn_Pool, this); } /*********************************************************************************/ public void insert_BattResData_To_Db() { PowerData_RT_SQL.updateBattData_RT_RamDB_Table(m_Conn_Pool, this); } /*********************************************************************************/ public void clear_al_MonVol_RtOld() { for(int n=0; n<al_MonVol_RtOld.size(); n++) { al_MonVol_RtOld.get(n).monVol = 0; al_MonVol_RtOld.get(n).monTmp = 0; al_MonVol_RtOld.get(n).monRes = 0; al_MonVol_RtOld.get(n).connRes = 0; al_MonVol_RtOld.get(n).monSer = 0; al_MonVol_RtOld.get(n).monJHcurr = 0; } } /*********************************************************************************/ /** * 设置 tmp_al_id 数组中cInterfaceId的值 */ public void make_al_MonVol_C_Id() { try { 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++; } } catch (Exception e) { System.err.println("BattData_RT.make_al_MonVol_C_Id():" + e.getMessage()); } } /** * 设置al_MonVol_C_Id中的cInterfaceId */ public void make_al_MonVol_Auto_C_Id() { try { 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); } catch (Exception e) { System.err.println("BattData_RT.make_al_MonVol_Auto_C_Id():" + e.getMessage()); } } public void SetLock_Data_Stat(boolean stat) { Lock_Data_Stat = stat; } public boolean GetLock_Data_Stat() { return Lock_Data_Stat; } public void setStoreBattRes_DataEnStat(boolean stat) { StoreBattRes_DataEn = stat; } public boolean getStoreBattRes_DataEnStat() { return StoreBattRes_DataEn; } public void setMonitorParam(int test_type) { float det_vol = MonStdVol / 2; if(det_vol < 1) det_vol = 1; if(BattStatData.BATTSTATE_DISCHARGE == test_type) { mTestTimeLongMin = mAppConfig.getTestTimeLongMinimum(AppParam.AppParam_Discharge); mSaveDataTimeInterval = mAppConfig.getSaveDataTimeInterval(AppParam.AppParam_Discharge); mDataHistoryNewLevel = det_vol * mAppConfig.getMonVolChangeLevel(AppParam.AppParam_Discharge); mTestDataRecordCountMax = mAppConfig.getTestDataRecordCountMax(AppParam.AppParam_Discharge); } else { mTestTimeLongMin = mAppConfig.getTestTimeLongMinimum(AppParam.AppParam_Charge); mSaveDataTimeInterval = mAppConfig.getSaveDataTimeInterval(AppParam.AppParam_Charge); mDataHistoryNewLevel = det_vol * mAppConfig.getMonVolChangeLevel(AppParam.AppParam_Charge); mTestDataRecordCountMax = mAppConfig.getTestDataRecordCountMax(AppParam.AppParam_Charge); } } public void updateMonCnt(int new_mon_cnt) { if((new_mon_cnt>0) && (new_mon_cnt<ComBase.MonomerCountMax)) { int mon_cnt = this.al_MonVol.size(); if(new_mon_cnt > mon_cnt) { while(new_mon_cnt > this.al_MonVol.size()) { MonVolData data = new MonVolData(0, 0, this.BattGroupId*1000 + this.al_MonVol.size()+1); this.al_MonVol.add(data); this.al_MonVol_RtOld.add(data.clone()); this.al_MonVol_History.add(data.clone()); } //----------- 增加的时候最后设置单体数量 ---------------- this.MonCount = new_mon_cnt; } else if(new_mon_cnt < mon_cnt) { //----------- 减少的时候最先设置单体数量 ---------------- this.MonCount = new_mon_cnt; while(new_mon_cnt < this.al_MonVol.size()) { this.al_MonVol.remove(this.al_MonVol.size()-1); this.al_MonVol_RtOld.remove(this.al_MonVol_RtOld.size()-1); this.al_MonVol_History.remove(this.al_MonVol_History.size()-1); } } } } public void setBattFloatVolCurrLevel(float vol_lev, float curr_level) { mBattFloatVolLevel = vol_lev; mBattFloatCurrLevel = curr_level; mTestData.setBattFloatCurrLevel(mBattFloatCurrLevel); } public float getBattFloatVolLev() { return mBattFloatVolLevel; } public float getBattFloatCurrLev() { return mBattFloatCurrLevel; } public String getDevRegCode() { return FBSRegCode; } public void setDevRegCode(String reg_code) { FBSRegCode = reg_code; } 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 int getPower_id() { return power_id; } public String getPower_name() { return power_name; } public String getPower_ip() { return power_ip; } public int getDev_type() { return dev_type; } public void setPower_id(int power_id) { this.power_id = power_id; } public void setPower_name(String power_name) { this.power_name = power_name; } public void setPower_ip(String power_ip) { this.power_ip = power_ip; } public void setDev_type(int dev_type) { this.dev_type = dev_type; } /********************************************************************************/ 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 boolean getIdce8200ComState() { return mIDCE8200_ConState; } public void updateMonVolFromIDCE8200(int mon_index, float vol) { try { mIDCE8200_ConState = true; mIDCE8200CommTimeout = 0; setMonDataUseForIdce8200(true); al_MonVol.get(mon_index).monVol = vol; } catch (Exception e) { System.err.println("BattData_RT.updateMonVolFrom_C_Interface():" + e.getMessage()); } } public void updateMonVolFromSQL_SERVER() { if(true == isMonDataFromCInterfaceOk()) { return; } try { 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; } catch (Exception e) { System.err.println("BattData_RT.updateMonVolFromSQL_SERVER():" + e.getMessage()); } } public void updateMonVolFrom_C_Interface(int mon_c_id, float mon_vol) { try { 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; } catch (Exception e) { System.err.println("BattData_RT.updateMonVolFrom_C_Interface():" + e.getMessage()); } } /********************************************************************************/ public int getBattCount() { return MonCount; } public byte getBattState() { return mTestData.battState; } public byte getNewBattState() { if((mTestData.battState == BattStatData.BATTDATA_FLOAT || mTestData.battState == BattStatData.BATTDATA_JUNCHARGE)&& mTestData.batt_res_test_state == 1) { //如果电池组是浮充状态并且在内阻测试则返回内阻测试状态 return BattStatData.BATTDATA_RES; } return mTestData.battState; } public byte getBattTestType() { return mTestData.battTestState; } public float getOnlineVol() { return mTestData.onlineVol; } public float getDev_Temperature() { return mTestData.getDev_temperature(); } public float getDev_Humidity() { return mTestData.getDev_humidity(); } 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.getStartTestTimeInLong(); } public long getTestRecordTime() { return mTestData.getRecordTimeInLong(); } public int getTestTimeLong() { return mTestData.testTimeLong; } public float getBattRealCap() { return mTestData.battRealCap; } public float getBattRestCap() { return mTestData.battRestCap; } public int getBattRestTime() { return mTestData.battRestTime; } /** * 设置电池组单体的最大单体电压和最小单体电压,以及对应的单体编号 * @param al_vol */ public void makeMaxMinMonVol(ArrayList<MonVolData> al_vol) { try { 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; } } catch (Exception e) { System.err.println("BattData_RT.makeMaxMinMonVol():" + e.getMessage()); } } public float getMaxMonVol() { float maxvol = -80000; try { 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; } } } catch (Exception e) { System.err.println("BattData_RT.getMaxMonVol():" + e.getMessage()); } return maxvol; } public float getMinMonVol() { float minvol = 80000; try { 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; } } } catch (Exception e) { System.err.println("BattData_RT.getMinMonVol():" + e.getMessage()); } return minvol; } public float getGroupVolFromMonVol() { float gvol = 0; try { for(int n=0; n<al_MonVol.size(); n++) { gvol += al_MonVol.get(n).monVol; } } catch (Exception e) { System.err.println("BattData_RT.getGroupVolFromMonVol():" + e.getMessage()); } 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; try { 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; } } } catch (Exception e) { System.err.println("BattData_RT.make_al_MonVol_History():" + e.getMessage()); } return data_new; } public float get_al_MonVol_History(int index) { float vol = 0; try{ if((index>=0) && (index<al_MonVol_History.size())) { vol = al_MonVol_History.get(index).monVol; } } catch (Exception e) { System.err.println("BattData_RT.get_al_MonVol_History():" + e.getMessage()); } return vol; } public boolean is_al_MonVol_History_New(int index) { boolean isnew = false; try { if((index>=0) && (index<al_MonVol_History.size())) { isnew = al_MonVol_History.get(index).data_new; } } catch (Exception e) { System.err.println("BattData_RT.is_al_MonVol_History_New():" + e.getMessage()); } return isnew; } public void clear_al_MonVol_History_New() { try { for(int n=0; n<al_MonVol_History.size(); n++) al_MonVol_History.get(n).data_new = false; } catch (Exception e) { System.err.println("BattData_RT.clear_al_MonVol_History_New():" + e.getMessage()); } } public void set_al_MonVol_History_New() { try { 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; } } } catch (Exception e) { System.err.println("BattData_RT.set_al_MonVol_History_New():" + e.getMessage()); } } //------------------------------------------------------------------------------------// 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; try { 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; } } } catch (Exception e) { System.err.println("BattData_RT.checkIfHaveZeroMonVol():" + e.getMessage()); } 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; } */ count = PowerData_RT_SQL.queryTestRecordCountMax_From_tb_batttestdata_inf(m_Conn_Pool, this.BattGroupId); count += 1; setMonitorParam(test_type); mTestData.init(test_type, count); System.err.println("mSaveDataTimeInterval:" + mSaveDataTimeInterval); /*********edit by mxpopstar @20201002*******************************************/ /******** these codes has moved to mTestData.checkAndSetLoaderType()************ int fbsdev_testtype = mTestData.getDevFBS9100S_TestType(); if((FBS9100_ComBase.SYS_STATE_STOPPED != mTestData.getDevFBS9100S_WorkState()) && ((FBS9100_ComBase.TestType_CAP==fbsdev_testtype) || (FBS9100_ComBase.TestType_Charge==fbsdev_testtype))) { 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 void printBattRtDataDebugInf_FBS9100S(int pos) { /* if(BattStatData.TEST_LOADER_FBS9100S == mTestData.getLoaderType()) { System.out.println(String.format("batt_stat_change at pos " + pos + ", " + " bg_id: %d," + " battTestState: %d," + " batt_stat: %d," + " batt_curr: %1.1fA," + " dcdc_Vout: %1.2fV," + " dcdc_Iout: %1.2fA," + " dcdc_Ibuck: %1.2fA," + " dcdc_Workstate: %d," + " dcdc_WorkMode: %d," + " dcdc_VoutSet: %1.2fV," + " dcdc_IoutSet: %1.2fA," + " dcdc_IbuckSet: %1.2fA," + " dcdc_alarm: %d," + " dcdc_txcnt: %d," + " dcdc_rxcnt: %d", this.BattGroupId, mTestData.battTestState, mTestData.battState, mTestData.testCurr, m_DCDC_Data.Vout, m_DCDC_Data.Iout, m_DCDC_Data.Ibuck, m_DCDC_Data.RunSetComm, m_DCDC_Data.ModeSetComm, m_DCDC_Data.SetDisVol, m_DCDC_Data.SetDisCurr, m_DCDC_Data.SetBuckI, m_DCDC_Data.SMR_Alarm1, m_DCDC_Data.CommTxCnt, m_DCDC_Data.CommRxCnt) + Com.getNowTimeWithAt()); } */ } // public boolean checkIfDataNeedStore() // { // boolean store_state = false; // /***********************************************************************/ // if(false == getStoreDataBusyTag()) //让数据库能确保完成数据存储 // { // mTestData.testCurr = mTestData.TestCurr_RT; // if(Math.abs(mTestData.testCurr) < mBattFloatCurrLevel) // { // if(BattStatData.BATTDATA_FLOAT != mTestData.battTestState) { // if((FBS9100_ComBase.SYS_STATE_DISCHARGING != mTestData.dev_FBS9100S_WorkState) // && (FBS9100_ComBase.SYS_STATE_HELUQI_DISCHARGING != mTestData.dev_FBS9100S_WorkState)) { // //2018年12月15日添加,只要设备处于核容测试或升压续航状态,数据就不停止记录. // printBattRtDataDebugInf_FBS9100S(1); // // mTestData.battTestState = BattStatData.BATTSTATE_FLOAT; // mTestData.battState = BattStatData.BATTSTATE_FLOAT; // store_state = true; // } // } /*else if(BattStatData.BATTDATA_CHARGE == mTestData.battTestState) { // //if(FBS9100_ComBase.SYS_STATE_CHARGING != mTestData.dev_FBS9100S_WorkState) { // //2018年12月15日添加,只要设备处于核容测试或升压续航状态,数据就不停止记录. // printBattRtDataDebugInf_FBS9100S(1); // // 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) // { // printBattRtDataDebugInf_FBS9100S(2); // // mTestData.battTestState = BattStatData.BATTSTATE_FLOAT; // mTestData.battState = BattStatData.BATTSTATE_FLOAT; // store_state = true; // } // else if(BattStatData.BATTSTATE_FLOAT == mTestData.battTestState) // { // initTestData(BattStatData.BATTSTATE_CHARGE); // printBattRtDataDebugInf_FBS9100S(3); // } // } else if(mTestData.testCurr <= ((mBattFloatCurrLevel+2)*(-1))) { // if(BattStatData.BATTSTATE_CHARGE == mTestData.battTestState) // { // printBattRtDataDebugInf_FBS9100S(4); // // mTestData.battTestState = BattStatData.BATTSTATE_FLOAT; // mTestData.battState = BattStatData.BATTSTATE_FLOAT; // store_state = true; // } // else if(BattStatData.BATTSTATE_FLOAT == mTestData.battTestState) // { // initTestData(BattStatData.BATTSTATE_DISCHARGE); // printBattRtDataDebugInf_FBS9100S(5); // } // } else {//edit by mxpopstar @2018.12.18 // if(BattStatData.BATTSTATE_FLOAT == mTestData.battTestState) { // if((FBS9100_ComBase.SYS_STATE_DISCHARGING == mTestData.dev_FBS9100S_WorkState) // ||(FBS9100_ComBase.SYS_STATE_HELUQI_DISCHARGING == mTestData.dev_FBS9100S_WorkState)) { // initTestData(BattStatData.BATTSTATE_DISCHARGE); // printBattRtDataDebugInf_FBS9100S(6); // }/* else if(FBS9100_ComBase.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; // } // } // // /************************** edit by mxpopstar @ 2020-10-02 ***************************/ // if(true == store_state) { // //mTestData.checkAndSetLoaderType(); // } // /*************************************************************************************/ // // 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; } /** * 2022-07-05 新增给al_MonVol_RtOld设置默认值 * @lijun */ public void setMonVol_RtOldDefaultVal() { if(null != al_MonVol_RtOld) { for(int n=0;n<al_MonVol_RtOld.size();n++) { al_MonVol_RtOld.get(n).monVol = -1; al_MonVol_RtOld.get(n).monTmp = -1; al_MonVol_RtOld.get(n).monRes = -1; al_MonVol_RtOld.get(n).monSer = -1; al_MonVol_RtOld.get(n).connRes = -1; } } } public Object calAlmParam(int almtypePowercommfaultId) { // TODO Auto-generated method stub return null; } } BattMonitor_DB_Builder/src/com/battdata_rt/PowerData_RT_Array.java
New file @@ -0,0 +1,267 @@ 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); } } } BattMonitor_DB_Builder/src/com/battdata_rt/PowerData_RT_RamDB_Thread.java
New file @@ -0,0 +1,33 @@ package com.battdata_rt; import com.sql.MysqlConnPool; import java.util.ArrayList; public class PowerData_RT_RamDB_Thread extends Thread { MysqlConnPool m_conn_pool; ArrayList<PowerData_RT> al_bgdata; double ser_ver = 0.0D; boolean server_start_inf_set_ok = false; public PowerData_RT_RamDB_Thread(MysqlConnPool conn_pool, ArrayList<PowerData_RT> bd_al, double ver) { this.m_conn_pool = conn_pool; this.al_bgdata = bd_al; this.ser_ver = ver; } public void run() { while (true) try { Thread.sleep(1000L); } catch (InterruptedException e) { e.printStackTrace(); } } } /* * Location: * C:\Users\LiJun\Desktop\公司各种设备资料\9600显示模块相关文件\后台程序\2018-09-07\BattFBS9600XSP. * jar Qualified Name: com.battdata_rt.BattData_RT_RamDB_Thread JD-Core Version: * 0.6.2 */ BattMonitor_DB_Builder/src/com/battdata_rt/PowerData_RT_RamDB_Thread_SQL.java
New file @@ -0,0 +1,350 @@ package com.battdata_rt; import com.base.Com; import com.sql.MysqlConnPool; import com.sql.Sql_Mysql; import java.io.File; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.Date; public class PowerData_RT_RamDB_Thread_SQL { public static void createBattData_RT_RamDB_Table(MysqlConnPool conn_pool, ArrayList<PowerData_RT> bd_al) { String sql_str0 = "DROP TABLE IF EXISTS `db_ram_db`.`tb_batt_rtdata`; "; String sql_str1 = "CREATE TABLE IF NOT EXISTS `db_ram_db`.`tb_batt_rtdata` ( `num` BIGINT NOT NULL AUTO_INCREMENT, `BattGroupId` INT NOT NULL DEFAULT 0, `rec_datetime` DATETIME NOT NULL DEFAULT '1982-01-01 00:00:00', `mon_num` INT NOT NULL DEFAULT 0, `mon_vol` FLOAT NOT NULL DEFAULT 0, `mon_tmp` FLOAT NOT NULL DEFAULT 0, `mon_res` FLOAT NOT NULL DEFAULT 0, `mon_ser` FLOAT NOT NULL DEFAULT 0, `mon_conn_res` FLOAT NOT NULL DEFAULT 0, `mon_cap` FLOAT NOT NULL DEFAULT 0, INDEX index_BattGroupId (`BattGroupId`), PRIMARY KEY (`num`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;"; String sql_str2 = "INSERT INTO `db_ram_db`.`tb_batt_rtdata`(BattGroupId,mon_num) VALUES "; int cnt = 0; for (int n = 0; n < bd_al.size(); n++) { PowerData_RT brt = (PowerData_RT) bd_al.get(n); for (int mc = 0; mc < brt.MonCount; mc++) { if (cnt > 0) { sql_str2 = sql_str2 + ","; } sql_str2 = sql_str2 + "(" + brt.BattGroupId + "," + (mc + 1) + ")"; cnt++; } } Sql_Mysql sql = new Sql_Mysql(conn_pool.getConn()); try { sql.sqlMysqlExecute(sql_str0); sql.sqlMysqlExecute(sql_str1); sql.sqlMysqlExecute(sql_str2); } catch (SQLException e) { e.printStackTrace(); } finally { sql.close_con(); } } public static void updateBattData_RT_RamDB_Table(MysqlConnPool conn_pool, ArrayList<PowerData_RT> bd_al) { Sql_Mysql sql = new Sql_Mysql(conn_pool.getConn()); try { for (int index = 0; index < bd_al.size(); index++) { PowerData_RT brt = (PowerData_RT) bd_al.get(index); String sql_str = "UPDATE `db_ram_db`.`tb_batt_rtdata` SET rec_datetime='" + Com.getDateTimeFormat(new Date(), "yyyy-MM-dd HH:mm:ss") + "'"; float tmp_dt = 0.0F; String sql_str_vol = " "; for (int n = 0; n < brt.MonCount; n++) { tmp_dt = ((MonVolData) brt.al_MonVol.get(n)).monVol; if (((MonVolData) brt.al_MonVol_RtOld.get(n)).monVol != tmp_dt) { ((MonVolData) brt.al_MonVol_RtOld.get(n)).monVol = tmp_dt; sql_str_vol = sql_str_vol + " WHEN " + (n + 1) + " THEN " + String.format("%1.3f", new Object[] { Float.valueOf(tmp_dt) }); } } if (sql_str_vol.trim().length() > 1) { sql_str_vol = ", mon_vol = CASE mon_num " + sql_str_vol + " ELSE mon_vol END "; } String sql_str_tmp = " "; for (int n = 0; n < brt.MonCount; n++) { tmp_dt = ((MonVolData) brt.al_MonVol.get(n)).monTmp; if (((MonVolData) brt.al_MonVol_RtOld.get(n)).monTmp != tmp_dt) { ((MonVolData) brt.al_MonVol_RtOld.get(n)).monTmp = tmp_dt; sql_str_tmp = sql_str_tmp + " WHEN " + (n + 1) + " THEN " + String.format("%1.3f", new Object[] { Float.valueOf(tmp_dt) }); } } if (sql_str_tmp.trim().length() > 1) { sql_str_tmp = ", mon_tmp = CASE mon_num " + sql_str_tmp + " ELSE mon_tmp END "; } String sql_str_res = " "; for (int n = 0; n < brt.MonCount; n++) { tmp_dt = ((MonVolData) brt.al_MonVol.get(n)).monRes; if (((MonVolData) brt.al_MonVol_RtOld.get(n)).monRes != tmp_dt) { ((MonVolData) brt.al_MonVol_RtOld.get(n)).monRes = tmp_dt; sql_str_res = sql_str_res + " WHEN " + (n + 1) + " THEN " + String.format("%1.3f", new Object[] { Float.valueOf(tmp_dt) }); } } if (sql_str_res.trim().length() > 1) { sql_str_res = ", mon_res = CASE mon_num " + sql_str_res + " ELSE mon_res END "; } String sql_str_ser = " "; for (int n = 0; n < brt.MonCount; n++) { tmp_dt = ((MonVolData) brt.al_MonVol.get(n)).monSer; if (((MonVolData) brt.al_MonVol_RtOld.get(n)).monSer != tmp_dt) { ((MonVolData) brt.al_MonVol_RtOld.get(n)).monSer = tmp_dt; sql_str_ser = sql_str_ser + " WHEN " + (n + 1) + " THEN " + String.format("%1.3f", new Object[] { Float.valueOf(tmp_dt) }); } } if (sql_str_ser.trim().length() > 1) { sql_str_ser = ", mon_ser = CASE mon_num " + sql_str_ser + " ELSE mon_ser END "; } String sql_str_2 = sql_str_vol + sql_str_tmp + sql_str_res + sql_str_ser; if (sql_str_2.trim().length() > 1) { sql_str_2 = sql_str_2 + " WHERE BattGroupId=" + brt.BattGroupId; } else { sql_str_2 = " WHERE BattGroupId=" + brt.BattGroupId; } sql_str = sql_str + sql_str_2; sql.sqlMysqlExecute(sql_str); } } catch (SQLException e) { e.printStackTrace(); } finally { sql.close_con(); } } public static void createBattState_RT_RamDB_Table(MysqlConnPool conn_pool, ArrayList<PowerData_RT> bd_al) { String sql_str0 = "DROP TABLE IF EXISTS `db_ram_db`.`tb_batt_rtstate`; "; String sql_str1 = "CREATE TABLE IF NOT EXISTS `db_ram_db`.`tb_batt_rtstate` ( `num` BIGINT NOT NULL AUTO_INCREMENT, `BattGroupId` INT NOT NULL DEFAULT 0, `batt_count` INT NOT NULL DEFAULT 0, `rec_datetime` DATETIME NOT NULL DEFAULT '1982-01-01 00:00:00', `online_vol` FLOAT NOT NULL DEFAULT 0, `group_vol` FLOAT NOT NULL DEFAULT 0, `group_tmp` FLOAT NOT NULL DEFAULT 0, `group_curr` FLOAT NOT NULL DEFAULT 0, `batt_state` INT NOT NULL DEFAULT 0, `batt_test_type` INT NOT NULL DEFAULT 0, `batt_test_starttime` DATETIME NOT NULL DEFAULT '1982-01-01 00:00:00', `batt_test_recordtime` DATETIME NOT NULL DEFAULT '1982-01-01 00:00:00', `batt_test_tlong` INT NOT NULL DEFAULT 0, `batt_test_cap` FLOAT NOT NULL DEFAULT 0, `batt_real_cap` FLOAT NOT NULL DEFAULT 0, `batt_rest_cap` FLOAT NOT NULL DEFAULT 0, `batt_rest_power1_time` INT NOT NULL DEFAULT 0, `batt_rest_power2_time` INT NOT NULL DEFAULT 0, INDEX index_BattGroupId (`BattGroupId`), PRIMARY KEY (`num`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;"; String sql_str2 = "INSERT INTO `db_ram_db`.`tb_batt_rtstate`(BattGroupId) VALUES "; for (int n = 0; n < bd_al.size(); n++) { PowerData_RT brt = (PowerData_RT) bd_al.get(n); if (n > 0) { sql_str2 = sql_str2 + ","; } sql_str2 = sql_str2 + "(" + brt.BattGroupId + ")"; } Sql_Mysql sql = new Sql_Mysql(conn_pool.getConn()); try { sql.sqlMysqlExecute(sql_str0); sql.sqlMysqlExecute(sql_str1); sql.sqlMysqlExecute(sql_str2); } catch (SQLException e) { e.printStackTrace(); } finally { sql.close_con(); } } public static void updateBattState_RT_RamDB_Table(MysqlConnPool conn_pool, ArrayList<PowerData_RT> bd_al) { Sql_Mysql sql = new Sql_Mysql(conn_pool.getConn()); try { String sql_str = "UPDATE `db_ram_db`.`tb_batt_rtstate` SET rec_datetime='" + Com.getDateTimeFormat(new Date(), "yyyy-MM-dd HH:mm:ss") + "',"; sql_str = sql_str + " batt_count = CASE BattGroupId "; for (int n = 0; n < bd_al.size(); n++) { PowerData_RT brt = (PowerData_RT) bd_al.get(n); sql_str = sql_str + " WHEN " + brt.BattGroupId + " THEN " + brt.MonCount; } sql_str = sql_str + " END, online_vol = CASE BattGroupId "; for (int n = 0; n < bd_al.size(); n++) { PowerData_RT brt = (PowerData_RT) bd_al.get(n); sql_str = sql_str + " WHEN " + brt.BattGroupId + " THEN " + brt.getOnlineVol(); } sql_str = sql_str + " END, group_vol = CASE BattGroupId "; for (int n = 0; n < bd_al.size(); n++) { PowerData_RT brt = (PowerData_RT) bd_al.get(n); sql_str = sql_str + " WHEN " + brt.BattGroupId + " THEN " + brt.getGroupVol(); } sql_str = sql_str + " END, group_tmp = CASE BattGroupId "; for (int n = 0; n < bd_al.size(); n++) { PowerData_RT brt = (PowerData_RT) bd_al.get(n); sql_str = sql_str + " WHEN " + brt.BattGroupId + " THEN " + brt.getGroupTmp(); } sql_str = sql_str + " END, group_curr = CASE BattGroupId "; for (int n = 0; n < bd_al.size(); n++) { PowerData_RT brt = (PowerData_RT) bd_al.get(n); sql_str = sql_str + " WHEN " + brt.BattGroupId + " THEN " + brt.getTestCurr(); } sql_str = sql_str + " END, batt_state = CASE BattGroupId "; for (int n = 0; n < bd_al.size(); n++) { PowerData_RT brt = (PowerData_RT) bd_al.get(n); sql_str = sql_str + " WHEN " + brt.BattGroupId + " THEN " + brt.getBattState(); } sql_str = sql_str + " END, batt_test_type = CASE BattGroupId "; for (int n = 0; n < bd_al.size(); n++) { PowerData_RT brt = (PowerData_RT) bd_al.get(n); sql_str = sql_str + " WHEN " + brt.BattGroupId + " THEN " + brt.getBattTestType(); } sql_str = sql_str + " END, batt_test_starttime = CASE BattGroupId "; Date dt = new Date(); for (int n = 0; n < bd_al.size(); n++) { PowerData_RT brt = (PowerData_RT) bd_al.get(n); dt.setTime(brt.getTestStartTime()); sql_str = sql_str + " WHEN " + brt.BattGroupId + " THEN '" + Com.getDateTimeFormat(dt, "yyyy-MM-dd HH:mm:ss") + "'"; } sql_str = sql_str + " END, batt_test_recordtime = CASE BattGroupId "; for (int n = 0; n < bd_al.size(); n++) { PowerData_RT brt = (PowerData_RT) bd_al.get(n); dt.setTime(brt.getTestRecordTime()); sql_str = sql_str + " WHEN " + brt.BattGroupId + " THEN '" + Com.getDateTimeFormat(dt, "yyyy-MM-dd HH:mm:ss") + "'"; } sql_str = sql_str + " END, batt_test_tlong = CASE BattGroupId "; for (int n = 0; n < bd_al.size(); n++) { PowerData_RT brt = (PowerData_RT) bd_al.get(n); sql_str = sql_str + " WHEN " + brt.BattGroupId + " THEN " + brt.getTestTimeLong(); } sql_str = sql_str + " END, batt_test_cap = CASE BattGroupId "; for (int n = 0; n < bd_al.size(); n++) { PowerData_RT brt = (PowerData_RT) bd_al.get(n); sql_str = sql_str + " WHEN " + brt.BattGroupId + " THEN " + brt.getTestCap(); } sql_str = sql_str + " END, batt_real_cap = CASE BattGroupId "; for (int n = 0; n < bd_al.size(); n++) { PowerData_RT brt = (PowerData_RT) bd_al.get(n); sql_str = sql_str + " WHEN " + brt.BattGroupId + " THEN " + brt.getBattRealCap(); } sql_str = sql_str + " END, batt_rest_cap = CASE BattGroupId "; for (int n = 0; n < bd_al.size(); n++) { PowerData_RT brt = (PowerData_RT) bd_al.get(n); sql_str = sql_str + " WHEN " + brt.BattGroupId + " THEN " + brt.getBattRestCap(); } sql_str = sql_str + " END, batt_rest_power1_time = CASE BattGroupId "; for (int n = 0; n < bd_al.size(); n++) { PowerData_RT brt = (PowerData_RT) bd_al.get(n); sql_str = sql_str + " WHEN " + brt.BattGroupId + " THEN " + brt.getBattRestTime(); } sql_str = sql_str + " END WHERE BattGroupId IN ("; for (int n = 0; n < bd_al.size(); n++) { PowerData_RT brt = (PowerData_RT) bd_al.get(n); if (n > 0) { sql_str = sql_str + ","; } sql_str = sql_str + brt.BattGroupId; } sql_str = sql_str + ")"; sql.sqlMysqlExecute(sql_str); } catch (SQLException e) { e.printStackTrace(); } finally { sql.close_con(); } } public static void createServerState_RamDB_Table(MysqlConnPool conn_pool) { String sql_str0 = "DROP TABLE IF EXISTS `db_ram_db`.`tb_server_state`; "; String sql_str1 = "CREATE TABLE IF NOT EXISTS `db_ram_db`.`tb_server_state` ( `num` BIGINT NOT NULL AUTO_INCREMENT, `server_version` FLOAT NOT NULL DEFAULT 0, `server_datetime` DATETIME NOT NULL DEFAULT '1982-01-01 00:00:00', `max_mem` BIGINT NOT NULL DEFAULT 0, `total_mem` BIGINT NOT NULL DEFAULT 0, `free_men` BIGINT NOT NULL DEFAULT 0, `total_disc_space` BIGINT NOT NULL DEFAULT 0, `free_disc_space` BIGINT NOT NULL DEFAULT 0, `db_conn_max` INT NOT NULL DEFAULT 0, `db_conn_count` INT NOT NULL DEFAULT 0, PRIMARY KEY (`num`)) ENGINE=MEMORY DEFAULT CHARSET=utf8;"; String sql_str2 = "INSERT INTO `db_ram_db`.`tb_server_state`(server_version) VALUES (1.101)"; Sql_Mysql sql = new Sql_Mysql(conn_pool.getConn()); try { sql.sqlMysqlExecute(sql_str0); sql.sqlMysqlExecute(sql_str1); sql.sqlMysqlExecute(sql_str2); } catch (SQLException e) { e.printStackTrace(); } finally { sql.close_con(); } } public static void updateServerState_RamDB_Table(MysqlConnPool conn_pool) { Runtime rt = Runtime.getRuntime(); String path = System.getProperty("user.dir"); File diskPartition = new File(path.substring(0, path.indexOf(":") + 1)); long totalCapacity = diskPartition.getTotalSpace() / 1048576L; long usablePatitionSpace = diskPartition.getUsableSpace() / 1048576L; int conn_max = 0; int conn_count = 0; Sql_Mysql sql = new Sql_Mysql(conn_pool.getConn()); try { ResultSet res = sql.sqlMysqlQuery("show variables like 'max_connections'"); if (res.next()) { conn_max = res.getInt(2); } res = sql.sqlMysqlQuery("show status like 'Threads_connected'"); if (res.next()) { conn_count = res.getInt(2); } String sql_str = "UPDATE `db_ram_db`.`tb_server_state` SET server_datetime='" + Com.getDateTimeFormat(new Date(), "yyyy-MM-dd HH:mm:ss") + "'," + "max_mem=" + rt.maxMemory() + "," + "total_mem=" + rt.totalMemory() + "," + "free_men=" + rt.freeMemory() + "," + "total_disc_space=" + totalCapacity + "," + "free_disc_space=" + usablePatitionSpace + "," + "db_conn_max=" + conn_max + "," + "db_conn_count=" + conn_count; sql.sqlMysqlExecute(sql_str); sql.sqlMysqlUseDB("web_site"); if (sql.sqlMysqlCheckIfTableExist("tb_process_survey")) { String sql_str_1 = "UPDATE tb_process_survey SET ProcessTime='" + Com.getDateTimeFormat(new Date(), "yyyy-MM-dd HH:mm:ss") + "' " + " WHERE ProcessId=11001"; sql.sqlMysqlExecute(sql_str_1); } } catch (SQLException e) { e.printStackTrace(); } finally { sql.close_con(); } } public static boolean updateServerStartInfTo_RamDB_Table(MysqlConnPool conn_pool, double ver) { boolean res = false; Sql_Mysql sql = new Sql_Mysql(conn_pool.getConn()); try { sql.sqlMysqlUseDB("web_site"); if (sql.sqlMysqlCheckIfTableExist("tb_process_survey")) { String sql_str_1 = "UPDATE tb_process_survey SET Process_starttime='" + Com.getDateTimeFormat(new Date(), "yyyy-MM-dd HH:mm:ss") + "', " + " ProcessVersion='" + String.format("V%1.3f", new Object[] { Double.valueOf(ver) }) + "' " + " WHERE ProcessId=11001"; sql.sqlMysqlExecute(sql_str_1); res = true; } } catch (SQLException e) { res = false; e.printStackTrace(); } finally { sql.close_con(); } return res; } } /* * Location: * C:\Users\LiJun\Desktop\公司各种设备资料\9600显示模块相关文件\后台程序\2018-09-07\BattFBS9600XSP. * jar Qualified Name: com.battdata_rt.BattData_RT_RamDB_Thread_SQL JD-Core * Version: 0.6.2 */ BattMonitor_DB_Builder/src/com/battdata_rt/PowerData_RT_SQL.java
New file @@ -0,0 +1,516 @@ package com.battdata_rt; import com.base.Com; 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; public class PowerData_RT_SQL { public static void createBattData_RT_RamDB_Table(MysqlConnPool conn_pool, int bg_id, int batt_cnt) { String tb_name = "`db_ram_batt_rt`.`tb_batt_rtdata_" + bg_id + "`"; String sql_str0 = "DELETE FROM " + tb_name + " WHERE " + tb_name + ".num>0"; String sql_str1 = "CREATE TABLE IF NOT EXISTS " + tb_name + " " + "( `num` BIGINT NOT NULL AUTO_INCREMENT, " + "`BattGroupId` INT NOT NULL DEFAULT 0, " + "`rec_datetime` DATETIME NOT NULL DEFAULT '1982-01-01 00:00:00', " + "`mon_num` INT NOT NULL DEFAULT 0, " + "`mon_vol` FLOAT NOT NULL DEFAULT 0, " + "`mon_tmp` FLOAT NOT NULL DEFAULT 0, " + "`mon_res` FLOAT NOT NULL DEFAULT 0, " + "`mon_ser` FLOAT NOT NULL DEFAULT 0, " + "`mon_conn_res` FLOAT NOT NULL DEFAULT 0, " + "`mon_cap` FLOAT NOT NULL DEFAULT 0, " + "`batt_count` INT NOT NULL DEFAULT 0, " + "`online_vol` FLOAT NOT NULL DEFAULT 0, " + "`group_vol` FLOAT NOT NULL DEFAULT 0, " + "`group_tmp` FLOAT NOT NULL DEFAULT 0, " + "`group_curr` FLOAT NOT NULL DEFAULT 0, " + "`batt_state` INT NOT NULL DEFAULT 0, " + "`batt_test_type` INT NOT NULL DEFAULT 0, " + "`batt_test_starttime` DATETIME NOT NULL DEFAULT '1982-01-01 00:00:00', " + "`batt_test_recordtime` DATETIME NOT NULL DEFAULT '1982-01-01 00:00:00', " + "`batt_test_tlong` INT NOT NULL DEFAULT 0, " + "`batt_test_cap` FLOAT NOT NULL DEFAULT 0, " + "`batt_real_cap` FLOAT NOT NULL DEFAULT 0, " + "`batt_rest_cap` FLOAT NOT NULL DEFAULT 0, " + "`batt_rest_power1_time` INT NOT NULL DEFAULT 0, " + "`batt_rest_power2_time` INT NOT NULL DEFAULT 0, " + "INDEX index_BattGroupId (`BattGroupId`), " + "PRIMARY KEY (`num`)) " + "ENGINE=MEMORY DEFAULT CHARSET=utf8;"; String sql_str2 = "INSERT INTO " + tb_name + " " + "(BattGroupId," + "mon_num)" + " VALUES "; int cnt = 0; for (int mc = 0; mc < batt_cnt; mc++) { if (cnt > 0) { sql_str2 = sql_str2 + ","; } sql_str2 = sql_str2 + "(" + bg_id + "," + (mc + 1) + ")"; cnt++; } Sql_Mysql sql = new Sql_Mysql(conn_pool.getConn()); try { sql.sqlMysqlExecute(sql_str1); ResultSet res_t = sql.sqlMysqlQuery("SELECT COUNT(*) FROM " + tb_name); if (res_t.next()) { int cnt_row = res_t.getInt(1); if (cnt_row != batt_cnt) { sql.sqlMysqlExecute(sql_str0); sql.sqlMysqlExecute(sql_str2); } } else { sql.sqlMysqlExecute(sql_str2); } } catch (SQLException e) { e.printStackTrace(); } finally { sql.close_con(); } } public static void updateBattState_RT_RamDB_Table(MysqlConnPool conn_pool, PowerData_RT bd_rt) { Sql_Mysql sql = new Sql_Mysql(conn_pool.getConn()); try { Date dt_test_Start = new Date(); Date dt_record = new Date(); dt_test_Start.setTime(bd_rt.getTestStartTime()); dt_record.setTime(bd_rt.getTestRecordTime()); String sql_str = "UPDATE " + Sql_Mysql.Rt_State_Table + " SET record_time='" + Com.getDateTimeFormat(new Date(), "yyyy-MM-dd HH:mm:ss") + "'" + "," + " online_vol=" + bd_rt.getOnlineVol() + "," + " group_vol=" + bd_rt.getGroupVol() + "," + " group_tmp=" + bd_rt.getGroupTmp() + "," + " group_curr=" + bd_rt.getTestCurr() + "," + " batt_state=" + bd_rt.getNewBattState() + "," + " batt_test_type=" + bd_rt.getBattTestType() // + "," + " batt_test_starttime='" + Com.getDateTimeFormat(dt_test_Start, "yyyy-MM-dd HH:mm:ss") + "'" // + ","+ " batt_test_recordtime='" + Com.getDateTimeFormat(dt_record, "yyyy-MM-dd HH:mm:ss") + "'" + ","+ " batt_test_tlong=" + bd_rt.getTestTimeLong() + "," + " batt_test_cap=" + bd_rt.getTestCap() + "," + " batt_real_cap=" + bd_rt.getBattRealCap() //+ "," + " batt_rest_cap=" + bd_rt.getBattRestCap() // + "," + " batt_rest_power1_time=" + bd_rt.getBattRestTime() + " WHERE binf_id= " + bd_rt.BattGroupId; sql.sqlMysqlExecute(sql_str); bd_rt.mTestData.updateNewDataRCTime(new Date()); } catch (Exception e) { e.printStackTrace(); } finally { sql.close_con(); } } public static void updateBattData_RT_RamDB_Table(MysqlConnPool conn_pool, PowerData_RT bd_rt) { Sql_Mysql sql = new Sql_Mysql(conn_pool.getConn()); try { String sql_str = "UPDATE " + Sql_Mysql.Rt_Data_Table + " SET record_time='" + Com.getDateTimeFormat(new Date(), "yyyy-MM-dd HH:mm:ss") + "'"; float tmp_dt = 0.0F; String sql_str_vol = " "; for (int n = 0; n < bd_rt.MonCount; n++) { tmp_dt = ((MonVolData) bd_rt.al_MonVol.get(n)).monVol; if (((MonVolData) bd_rt.al_MonVol_RtOld.get(n)).monVol != tmp_dt) { ((MonVolData) bd_rt.al_MonVol_RtOld.get(n)).monVol = tmp_dt; sql_str_vol = sql_str_vol + " WHEN " + (n + 1) + " THEN " + String.format("%1.3f", new Object[] { Float.valueOf(tmp_dt) }); } } if (sql_str_vol.trim().length() > 1) { sql_str_vol = ", mon_vol = CASE mon_num " + sql_str_vol + " ELSE mon_vol END "; } String sql_str_tmp = " "; for (int n = 0; n < bd_rt.MonCount; n++) { tmp_dt = ((MonVolData) bd_rt.al_MonVol.get(n)).monTmp; if (((MonVolData) bd_rt.al_MonVol_RtOld.get(n)).monTmp != tmp_dt) { ((MonVolData) bd_rt.al_MonVol_RtOld.get(n)).monTmp = tmp_dt; sql_str_tmp = sql_str_tmp + " WHEN " + (n + 1) + " THEN " + String.format("%1.3f", new Object[] { Float.valueOf(tmp_dt) }); } } if (sql_str_tmp.trim().length() > 1) { sql_str_tmp = ", mon_tmp = CASE mon_num " + sql_str_tmp + " ELSE mon_tmp END "; } String sql_str_res = " "; for (int n = 0; n < bd_rt.MonCount; n++) { tmp_dt = ((MonVolData) bd_rt.al_MonVol.get(n)).monRes; if (((MonVolData) bd_rt.al_MonVol_RtOld.get(n)).monRes != tmp_dt) { ((MonVolData) bd_rt.al_MonVol_RtOld.get(n)).monRes = tmp_dt; sql_str_res = sql_str_res + " WHEN " + (n + 1) + " THEN " + String.format("%1.3f", new Object[] { Float.valueOf(tmp_dt) }); } } if (sql_str_res.trim().length() > 1) { sql_str_res = ", mon_res = CASE mon_num " + sql_str_res + " ELSE mon_res END "; } String sql_str_ser = " "; for (int n = 0; n < bd_rt.MonCount; n++) { tmp_dt = ((MonVolData) bd_rt.al_MonVol.get(n)).monSer; if (((MonVolData) bd_rt.al_MonVol_RtOld.get(n)).monSer != tmp_dt) { ((MonVolData) bd_rt.al_MonVol_RtOld.get(n)).monSer = tmp_dt; sql_str_ser = sql_str_ser + " WHEN " + (n + 1) + " THEN " + String.format("%1.3f", new Object[] { Float.valueOf(tmp_dt) }); } } if (sql_str_ser.trim().length() > 1) { sql_str_ser = ", mon_ser = CASE mon_num " + sql_str_ser + " ELSE mon_ser END "; } String sql_str_jh = " "; for (int n = 0; n < bd_rt.MonCount; n++) { tmp_dt = ((MonVolData) bd_rt.al_MonVol.get(n)).monJHcurr; if (((MonVolData) bd_rt.al_MonVol_RtOld.get(n)).monJHcurr != tmp_dt) { ((MonVolData) bd_rt.al_MonVol_RtOld.get(n)).monJHcurr = tmp_dt; sql_str_jh = sql_str_jh + " WHEN " + (n + 1) + " THEN " + String.format("%1.3f", new Object[] { Float.valueOf(tmp_dt) }); } } if (sql_str_jh.trim().length() > 1) { sql_str_jh = ", mon_JH_curr = CASE mon_num " + sql_str_jh + " ELSE mon_JH_curr END "; } String sql_str_2 = sql_str_vol + sql_str_tmp + sql_str_res + sql_str_ser + sql_str_jh; if (sql_str_2.trim().length() > 1) { sql_str_2 = sql_str_2 + " WHERE binf_id=" + bd_rt.BattGroupId; } else { sql_str_2 = " WHERE binf_id=" + bd_rt.BattGroupId; } sql_str = sql_str + sql_str_2; //System.out.println(sql_str); sql.sqlMysqlExecute(sql_str); } catch (Exception e) { e.printStackTrace(); } finally { sql.close_con(); } } public static void updateVersion_Infor_Table(MysqlConnPool conn_pool) { Sql_Mysql sql = new Sql_Mysql(conn_pool.getConn()); try { String BMS = "BMS_FBS9600_DISPLAY"; String VER = "v1.101"; String sql_str = "UPDATE web_site.tb_process_survey SET ProcessTime='" + Com.getDateTimeFormat(new Date(), "yyyy-MM-dd HH:mm:ss") + "'," + " Process_starttime='" + Com.getDateTimeFormat(new Date(), "yyyy-MM-dd HH:mm:ss") + "'," + "ProcessVersion='" + VER + "'" + " WHERE ProcessName='" + BMS + "' AND ServerName='" + BMS + "'"; sql.sqlMysqlExecute(sql_str); } catch (Exception e) { e.printStackTrace(); } finally { sql.close_con(); } } public static void updateThread_Time_Table(MysqlConnPool conn_pool) { String BMS = "BMS_FBS9600_DISPLAY"; Sql_Mysql sql = new Sql_Mysql(conn_pool.getConn()); try { String sql_str = "UPDATE web_site.tb_process_survey SET ProcessTime='" + Com.getDateTimeFormat(new Date(), "yyyy-MM-dd HH:mm:ss") + "'" + "WHERE ProcessName='" + BMS + "'AND ServerName='" + BMS + "'"; sql.sqlMysqlExecute(sql_str); } catch (Exception e) { e.printStackTrace(); } finally { sql.close_con(); } } public static String getCreateBattTestDataStr(String tb_name) { String sql_str = "CREATE TABLE IF NOT EXISTS " + tb_name + " " + "( `num` BIGINT NOT NULL AUTO_INCREMENT, " + "`BattGroupId` INT NOT NULL DEFAULT 0, " + "`test_record_count` INT NOT NULL DEFAULT 0, " + "`test_type` INT NOT NULL DEFAULT 0, " + "`data_new` BOOLEAN NOT NULL DEFAULT false, " + "`data_available` BOOLEAN NOT NULL DEFAULT false, " + "`record_num` INT NOT NULL DEFAULT 0, " + "`test_starttime` DATETIME NOT NULL DEFAULT '1982-01-01 00:00:00', " + "`record_time` DATETIME NOT NULL DEFAULT '1982-01-01 00:00:00', " + "`test_timelong` INT NOT NULL DEFAULT 0, " + "`online_vol` FLOAT NOT NULL DEFAULT 0, " + "`group_vol` FLOAT NOT NULL DEFAULT 0, " + "`test_curr` FLOAT NOT NULL DEFAULT 0, " + "`test_cap` FLOAT NOT NULL DEFAULT 0, " + "`mon_num` INT NOT NULL DEFAULT 0, " + "`mon_vol` FLOAT NOT NULL DEFAULT 0, " + "`mon_tmp` FLOAT NOT NULL DEFAULT 0, " + "INDEX index_test_record_count (`test_record_count`), " + "PRIMARY KEY (`num`));"; return sql_str; } public static String getInsertBattTestDataStr(PowerData_RT rt_data) { int mon_count = rt_data.MonCount; BattStatData tmp_test_data = rt_data.mTestData.clone(); String sql_str = "INSERT INTO tb_BattTestData_" + rt_data.BattGroupId + " " + "(BattGroupId, " + "test_record_count, " + "test_type, " + "data_new, " + "data_available, " + "record_num, " + "test_starttime, " + "record_time, " + "test_timelong, " + "online_vol, " + "group_vol, " + "test_curr, " + "test_cap, " + "mon_num, " + "mon_vol, " + "mon_tmp)" + " VALUES "; String sql_str_data = ""; for (int n = 0; n < mon_count; n++) { if ((n <= 0) || (rt_data.is_al_MonVol_History_New(n)) || (tmp_test_data.recordNum <= 2)) { if (n > 0) { sql_str_data = sql_str_data + ", "; } sql_str_data = sql_str_data + "(" + rt_data.BattGroupId + ", " + tmp_test_data.testRecordCount + ", " + tmp_test_data.battTestType_For_DataSave + ", " + true + ", " + true + ", " + (tmp_test_data.recordNum + 1) + ", " + "'" + Com.getDateTimeFormat(tmp_test_data.startTestTime, "yyyy-MM-dd HH:mm:ss") + "', " + "'" + Com.getDateTimeFormat(tmp_test_data.recordTime, "yyyy-MM-dd HH:mm:ss") + "', " + tmp_test_data.testTimeLong + ", " + tmp_test_data.onlineVol + ", " + tmp_test_data.groupVol + ", " + tmp_test_data.testCurr + ", " + tmp_test_data.testCap + ", " + (n + 1) + ", " + rt_data.get_al_MonVol_History(n) + ", " + ((MonVolData) rt_data.al_MonVol.get(n)).monTmp + ")"; } } return sql_str + sql_str_data; } public static ArrayList<String> getInsertOrUpdateBattTestDataStopStr(PowerData_RT rt_data) { ArrayList al_sql_str = new ArrayList(); int mon_count = rt_data.MonCount; BattStatData tmp_test_data = rt_data.mTestData.clone(); ArrayList tmp_mon_vol = rt_data.al_MonVol_History; rt_data.makeMaxMinMonVol(tmp_mon_vol); if (!rt_data.MysqlDataResInfTable_Exist) { String sql_str = "INSERT INTO tb_BattTestDataStop_" + rt_data.BattGroupId + " (BattGroupId, " + "test_record_count, " + "test_type, " + "data_new, " + "data_available, " + "record_num, " + "test_starttime, " + "record_time, " + "test_timelong, " + "group_vol, " + "test_curr, " + "test_cap, " + "mon_num, " + "mon_vol)" + " VALUES "; for (int n = 0; n < mon_count; n++) { if (n > 0) { sql_str = sql_str + ", "; } sql_str = sql_str + "(" + rt_data.BattGroupId + ", " + tmp_test_data.testRecordCount + ", " + tmp_test_data.battTestType_For_DataSave + ", " + true + ", " + true + ", " + (tmp_test_data.recordNum + 1) + ", " + "'" + Com.getDateTimeFormat(tmp_test_data.startTestTime, "yyyy-MM-dd HH:mm:ss") + "', " + "'" + Com.getDateTimeFormat(tmp_test_data.recordTime, "yyyy-MM-dd HH:mm:ss") + "', " + tmp_test_data.testTimeLong + ", " + tmp_test_data.groupVol + ", " + tmp_test_data.testCurr + ", " + tmp_test_data.testCap + ", " + (n + 1) + ", " + ((MonVolData) tmp_mon_vol.get(n)).monVol + ")"; } al_sql_str.add(sql_str); } else { String sql_str = "UPDATE tb_BattTestDataStop_" + rt_data.BattGroupId + " SET " + " data_new=" + true + ", " + "data_available=" + true + ", " + "record_num=" + (tmp_test_data.recordNum + 1) + ", " + "record_time='" + Com.getDateTimeFormat(tmp_test_data.recordTime, "yyyy-MM-dd HH:mm:ss") + "', " + "test_timelong=" + tmp_test_data.testTimeLong + ", " + "group_vol=" + tmp_test_data.groupVol + ", " + "test_curr=" + tmp_test_data.testCurrAbsMax + ", " + "test_cap=" + tmp_test_data.testCap + " " + " WHERE " + " BattGroupId=" + rt_data.BattGroupId + " AND " + " test_record_count=" + tmp_test_data.testRecordCount; al_sql_str.add(sql_str); String temp_str = ""; sql_str = "UPDATE tb_BattTestDataStop_" + rt_data.BattGroupId + " SET " + " mon_vol = CASE mon_num"; for (int n = 0; n < mon_count; n++) { if ((n <= 0) || (rt_data.is_al_MonVol_History_New(n)) || (tmp_test_data.recordNum <= 2)) { if (n > 0) { temp_str = temp_str + ","; } temp_str = temp_str + (n + 1); sql_str = sql_str + " WHEN " + (n + 1) + " THEN " + rt_data.get_al_MonVol_History(n); } } sql_str = sql_str + " END WHERE mon_num IN (" + temp_str + ")" + " AND BattGroupId=" + rt_data.BattGroupId + " AND " + " test_record_count=" + tmp_test_data.testRecordCount; al_sql_str.add(sql_str); } return al_sql_str; } public static String getInsertOrUpdateBattTestDataInfStr(PowerData_RT rt_data, int test_stoptype_t) { String sql_str = " "; BattStatData tmp_test_data = rt_data.mTestData.clone(); tmp_test_data.test_stoptype = test_stoptype_t; if (!rt_data.MysqlRecordInf_Exist) { sql_str = "INSERT INTO `db_batt_testdata`.`tb_batttestdata_inf` (BattGroupId, test_record_count, test_type, record_time_interval, data_new, data_available, record_num, test_starttime, test_starttype, record_time, test_timelong, test_stoptype, group_vol, test_curr, test_cap, max_monnum, max_monvol, min_monnum, min_monvol) VALUES (" + rt_data.BattGroupId + ", " + tmp_test_data.testRecordCount + ", " + tmp_test_data.battTestType_For_DataSave + ", " + rt_data.mSaveDataTimeInterval + ", " + true + ", " + true + ", " + (tmp_test_data.recordNum + 1) + ", " + "'" + Com.getDateTimeFormat(tmp_test_data.startTestTime, "yyyy-MM-dd HH:mm:ss") + "', " + tmp_test_data.testLoaderType + ", " + "'" + Com.getDateTimeFormat(tmp_test_data.recordTime, "yyyy-MM-dd HH:mm:ss") + "', " + tmp_test_data.testTimeLong + ", " + tmp_test_data.test_stoptype + ", " + tmp_test_data.groupVol + ", " + tmp_test_data.testCurr + ", " + tmp_test_data.testCap + ", " + rt_data.mMaxMonNum + ", " + rt_data.mMaxMonVol + ", " + rt_data.mMinMonNum + ", " + rt_data.mMinMonVol + ") "; } else { sql_str = "UPDATE `db_batt_testdata`.`tb_batttestdata_inf` SET test_type=" + tmp_test_data.battTestType_For_DataSave + ", " + "record_time_interval=" + rt_data.mSaveDataTimeInterval + ", " + "data_new=" + true + ", " + "data_available=" + true + ", " + "record_num=" + (tmp_test_data.recordNum + 1) + ", " + "test_starttime='" + Com.getDateTimeFormat(tmp_test_data.startTestTime, "yyyy-MM-dd HH:mm:ss") + "', " + "test_starttype=" + tmp_test_data.testLoaderType + ", " + "record_time='" + Com.getDateTimeFormat(tmp_test_data.recordTime, "yyyy-MM-dd HH:mm:ss") + "', " + "test_timelong=" + tmp_test_data.testTimeLong + ", " + "test_stoptype=" + tmp_test_data.test_stoptype + ", " + "group_vol=" + tmp_test_data.groupVol + ", " + "test_curr=" + tmp_test_data.testCurrAbsMax + ", " + "test_cap=" + tmp_test_data.testCap + ", " + "max_monnum=" + rt_data.mMaxMonNum + ", " + "max_monvol=" + rt_data.mMaxMonVol + ", " + "min_monnum=" + rt_data.mMinMonNum + ", " + "min_monvol=" + rt_data.mMinMonVol + " " + " WHERE " + " BattGroupId=" + rt_data.BattGroupId + " AND " + " test_record_count=" + tmp_test_data.testRecordCount; } return sql_str; } /************************************************************************************************/ public static int queryTestRecordCountMax_From_tb_batttestdata_inf(MysqlConnPool conn_pool, int bg_id) { int rec_count = 0; Sql_Mysql sql = new Sql_Mysql(conn_pool.getConn()); try { String sql_str = "SELECT MAX(test_record_count) FROM " + Sql_Mysql.Batt_Test_Inf_Table + " WHERE binf_id=" + bg_id; //System.out.println(sql_str); ResultSet rs_t = sql.sqlMysqlQuery(sql_str); if(rs_t.next()) { rec_count = rs_t.getInt(1); } } catch (SQLException e) { e.printStackTrace(); } finally { sql.close_con(); } return rec_count; } public static ArrayList<String> getDeleteBattTestDataStr(PowerData_RT rt_data) { ArrayList al_str = new ArrayList(); BattStatData tmp_test_data = rt_data.mTestData.clone(); String sql_str = "DELETE FROM tb_BattTestData_" + rt_data.BattGroupId + " WHERE test_record_count=" + tmp_test_data.testRecordCount; al_str.add(sql_str); sql_str = "DELETE FROM tb_BattTestDataStop_" + rt_data.BattGroupId + " WHERE test_record_count=" + tmp_test_data.testRecordCount; al_str.add(sql_str); sql_str = "DELETE FROM `db_batt_testdata`.`tb_batttestdata_inf` WHERE BattGroupId=" + rt_data.BattGroupId + " AND " + " test_record_count=" + tmp_test_data.testRecordCount; al_str.add(sql_str); return al_str; } public static void queryBattState_From_RT_Table(MysqlConnPool conn_pool, PowerData_RT rtdata) { Sql_Mysql sql = new Sql_Mysql(conn_pool.getConn()); try { String sql_str = "SELECT * FROM " + Sql_Mysql.Rt_State_Table + " WHERE BattGroupId=" + rtdata.BattGroupId; //System.out.println(sql_str); ResultSet rs_t = sql.sqlMysqlQuery(sql_str); if(rs_t.next()) { rtdata.mTestData.battTestState = rs_t.getByte("batt_test_type"); if((BattStatData.BATTDATA_DISCHARGE == rtdata.mTestData.battTestState) || (BattStatData.BATTDATA_CHARGE == rtdata.mTestData.battTestState)) { rtdata.mTestData.battTestType_For_DataSave = rtdata.mTestData.battTestState; rtdata.mTestData.testLoaderType = rs_t.getByte("test_loadertype"); rtdata.mTestData.recordNum = rs_t.getInt("test_recordnum"); rtdata.mTestData.onlineVol = rs_t.getFloat("online_vol"); rtdata.mTestData.groupVol = rs_t.getFloat("group_vol"); rtdata.mTestData.groupTmp = rs_t.getFloat("group_tmp"); rtdata.mTestData.testCurr = rs_t.getFloat("group_curr"); rtdata.mTestData.TestCurr_RT = rtdata.mTestData.testCurr; rtdata.mTestData.battState = rs_t.getByte("batt_state"); rtdata.mTestData.startTestTime.setTime(rs_t.getTimestamp("batt_test_starttime").getTime()); rtdata.mTestData.recordTime.setTime(rs_t.getTimestamp("batt_test_recordtime").getTime()); rtdata.mTestData.testTimeLong = rs_t.getInt("batt_test_tlong"); rtdata.mTestData.testCap = rs_t.getFloat("batt_test_cap"); rtdata.mTestData.battRealCap = rs_t.getFloat("batt_real_cap"); rtdata.mTestData.battRestCap = rs_t.getFloat("batt_rest_cap"); rtdata.mTestData.battRestTime = rs_t.getInt("batt_rest_power1_time"); } } } catch (SQLException e) { e.printStackTrace(); } finally { sql.close_con(); } } /** * 初始化电池组单体数据表 * @param battGroupId * @param monCount * @param m_Conn_Pool */ public static void checkBattRtData(int battGroupId, int monCount, MysqlConnPool pool) { Sql_Mysql sql = new Sql_Mysql(pool.getConn()); ResultSet res = null; try { if(monCount > 0) { res = sql.sqlMysqlQuery("SELECT MAX(mon_num) as max_monnum FROM db_real_batt.rt_data WHERE binf_id = " + battGroupId); if(res.next()) { //数据库中有记录 int max_monnum = res.getInt("max_monnum"); if(max_monnum > monCount) { //需要删除其中多余的单体 sql.sqlMysqlExecute("delete from " + Sql_Mysql.Rt_Data_Table + " where binf_id = " + battGroupId + " AND mon_num > " + monCount); } else if(max_monnum < monCount){ //需要添加新的单体 for(int n = max_monnum;n<monCount;n++) { res = sql.sqlMysqlQuery("insert into " + Sql_Mysql.Rt_Data_Table + "(binf_id,mon_num,record_time) values (" + battGroupId + ", " + (n+1) + ",'2000-01-01 00:00:00');"); } } }else { //数据库中一条记录都没有 for(int n = 0;n<monCount;n++) { res = sql.sqlMysqlQuery("insert into " + Sql_Mysql.Rt_Data_Table + "(binf_id,mon_num,record_time) values (" + battGroupId + ", " + (n+1) + ",'2000-01-01 00:00:00');"); } } }else { sql.sqlMysqlExecute("delete from " + Sql_Mysql.Rt_Data_Table + " where binf_id = " + battGroupId); } } catch (SQLException e) { e.printStackTrace(); } finally { if(null != res) { try { res.close(); } catch (SQLException e) { e.printStackTrace(); } } sql.close_con(); } } public static void checkBattRSData(int battGroupId, int monCount, MysqlConnPool pool) { Sql_Mysql sql = new Sql_Mysql(pool.getConn()); ResultSet res = null; try { if(monCount > 0) { } else { sql.sqlMysqlExecute("delete from " + Sql_Mysql.Rt_State_Table + " where binf_id = " + battGroupId + ";"); } } catch (SQLException e) { e.printStackTrace(); } finally { if(null != res) { try { res.close(); } catch (SQLException e) { e.printStackTrace(); } } sql.close_con(); } } // public static void get_MonData_From_BattData_RT_RamDB_Table(MysqlConnPool m_Conn_Pool, PowerData_RT rtdata) { // // TODO Auto-generated method stub // // } } BattMonitor_DB_Builder/src/com/battdata_rt/package-info.java
New file @@ -0,0 +1 @@ package com.battdata_rt; BattMonitor_DB_Builder/src/com/config/AppParam.java
New file @@ -0,0 +1,328 @@ package com.config; import com.sql.MysqlConnPool; import com.sql.Sql_Mysql; import java.io.PrintStream; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; public class AppParam { public static final String AppParamTableName = "tb_app_param"; public static final int AppParam_Discharge = 0; public static final int AppParam_Charge = 1; public static final int AppParam_PowerOff = 2; private MysqlConnPool m_Conn_Pool; private boolean MysqlDataTable_Exist = false; private MonitorParam m_MonitorParam = new MonitorParam(); public AppParam() { } public AppParam(MysqlConnPool pool) { this.m_Conn_Pool = pool; getAppParam(); } public void copyAppParam(AppParam param) { this.m_MonitorParam.discharge_SaveDataTimeInterval = param.m_MonitorParam.discharge_SaveDataTimeInterval; this.m_MonitorParam.discharge_TestTimeLongMinimum = param.m_MonitorParam.discharge_TestTimeLongMinimum; this.m_MonitorParam.discharge_BattTestGroupCountMax = param.m_MonitorParam.discharge_BattTestGroupCountMax; this.m_MonitorParam.discharge_MonVolChangeLevel = param.m_MonitorParam.discharge_MonVolChangeLevel; this.m_MonitorParam.discharge_TestDataRecordCountMax = param.m_MonitorParam.discharge_TestDataRecordCountMax; this.m_MonitorParam.charge_SaveDataTimeInterval = param.m_MonitorParam.charge_SaveDataTimeInterval; this.m_MonitorParam.charge_TestTimeLongMinimum = param.m_MonitorParam.charge_TestTimeLongMinimum; this.m_MonitorParam.charge_BattTestGroupCountMax = param.m_MonitorParam.charge_BattTestGroupCountMax; this.m_MonitorParam.charge_MonVolChangeLevel = param.m_MonitorParam.charge_MonVolChangeLevel; this.m_MonitorParam.charge_TestDataRecordCountMax = param.m_MonitorParam.charge_TestDataRecordCountMax; this.m_MonitorParam.poweroff_SaveDataTimeInterval = param.m_MonitorParam.poweroff_SaveDataTimeInterval; this.m_MonitorParam.poweroff_TestTimeLongMinimum = param.m_MonitorParam.poweroff_TestTimeLongMinimum; this.m_MonitorParam.poweroff_BattTestGroupCountMax = param.m_MonitorParam.poweroff_BattTestGroupCountMax; this.m_MonitorParam.poweroff_MonVolChangeLevel = param.m_MonitorParam.poweroff_MonVolChangeLevel; this.m_MonitorParam.poweroff_TestDataRecordCountMax = param.m_MonitorParam.poweroff_TestDataRecordCountMax; } public int getSaveDataTimeInterval(int type) { int val = 0; switch (type) { case 0: val = this.m_MonitorParam.discharge_SaveDataTimeInterval; break; case 1: val = this.m_MonitorParam.charge_SaveDataTimeInterval; break; case 2: val = this.m_MonitorParam.poweroff_SaveDataTimeInterval; } return val; } public float getMonVolChangeLevel(int type) { float val = 0.0F; switch (type) { case 0: val = this.m_MonitorParam.discharge_MonVolChangeLevel; break; case 1: val = this.m_MonitorParam.charge_MonVolChangeLevel; break; case 2: val = this.m_MonitorParam.poweroff_MonVolChangeLevel; } return val; } public int getTestTimeLongMinimum(int type) { int val = 0; switch (type) { case 0: val = this.m_MonitorParam.discharge_TestTimeLongMinimum; break; case 1: val = this.m_MonitorParam.charge_TestTimeLongMinimum; break; case 2: val = this.m_MonitorParam.poweroff_TestTimeLongMinimum; } return val; } public int getTestDataRecordCountMax(int type) { int val = 0; switch (type) { case 0: val = this.m_MonitorParam.discharge_TestDataRecordCountMax; break; case 1: val = this.m_MonitorParam.charge_TestDataRecordCountMax; break; case 2: val = this.m_MonitorParam.poweroff_TestDataRecordCountMax; } return val; } public int getBattTestGroupCountMax(int type) { int val = 0; switch (type) { case 0: val = this.m_MonitorParam.discharge_BattTestGroupCountMax; break; case 1: val = this.m_MonitorParam.charge_BattTestGroupCountMax; break; case 2: val = this.m_MonitorParam.poweroff_BattTestGroupCountMax; } return val; } public boolean getBattJunHengFN() { return this.m_MonitorParam.BattJunHengFN; } public void getAppParam() { Sql_Mysql sql = new Sql_Mysql(this.m_Conn_Pool.getConn()); try { sql.sqlMysqlUseDB("`db_param`"); if (!this.MysqlDataTable_Exist) { this.MysqlDataTable_Exist = sql.sqlMysqlCheckIfTableExist("tb_app_param"); } if (!this.MysqlDataTable_Exist) { System.out.println("tb_app_param is not exist, create it now..."); ArrayList al_sqlstr = new ArrayList(); String sql_str = "CREATE TABLE `tb_app_param` ( `num` INT NOT NULL AUTO_INCREMENT, `param_name` VARCHAR(50) NULL, `param_value` VARCHAR(50) NULL, `param_caption` VARCHAR(200) NULL, PRIMARY KEY (`num`));"; al_sqlstr.add(sql_str); sql_str = "INSERT INTO tb_app_param (param_name, param_value, param_caption) VALUES ('discharge_SaveDataTimeInterval', '10', 'discharge_TimeInterval for every data insert into db_batt_testdata by seconds'), ('discharge_MonVolChangeLevel', '0.05', 'discharge_MonVolChangeLevel for batt test data to save'), ('discharge_TestTimeLongMinimum', '1800', 'discharge_TestTimeLongMinimum for batttest data to store'), ('discharge_TestDataRecordCountMax', '10000', 'discharge_TestDataRecordCountMax for batttest data count to insert to mysql server'), ('discharge_BattTestGroupCountMax', '10', 'discharge_BattTestGroupCountMax for batttest thread count to work at the same time'), ('charge_SaveDataTimeInterval', '10', 'charge_TimeInterval for every data insert into db_batt_testdata by seconds'), ('charge_MonVolChangeLevel', '0.05', 'charge_MonVolChangeLevel for batt test data to save'), ('charge_TestTimeLongMinimum', '1800', 'charge_TestTimeLongMinimum for batttest data to store'), ('charge_TestDataRecordCountMax', '10000', 'charge_TestDataRecordCountMax for batttest data count to insert to mysql server'), ('charge_BattTestGroupCountMax', '10', 'charge_BattTestGroupCountMax for batttest thread count to work at the same time'), ('poweroff_SaveDataTimeInterval', '10', 'poweroff_TimeInterval for every data insert into db_batt_testdata by seconds'), ('poweroff_MonVolChangeLevel', '0.05', 'poweroff_MonVolChangeLevel for batt test data to save'), ('poweroff_TestTimeLongMinimum', '1800', 'poweroff_TestTimeLongMinimum for batttest data to store'), ('poweroff_TestDataRecordCountMax', '10000', 'poweroff_TestDataRecordCountMax for batttest data count to insert to mysql server'), ('poweroff_BattTestGroupCountMax', '10', 'poweroff_BattTestGroupCountMax for batttest thread count to work at the same time'), ('BattJunHengFN', 'false', 'BattJunHengFN for batt monomer to be balance')"; al_sqlstr.add(sql_str); for (int n = 0; n < al_sqlstr.size(); n++) { sql.sqlMysqlExecute((String) al_sqlstr.get(n)); } } String sql_str = "SELECT * FROM tb_app_param"; ResultSet res = sql.sqlMysqlQuery(sql_str); while (res.next()) { String pm_name = res.getString("param_name"); if (pm_name.equals("discharge_SaveDataTimeInterval")) this.m_MonitorParam.discharge_SaveDataTimeInterval = res.getInt("param_value"); else if (pm_name.equals("discharge_MonVolChangeLevel")) this.m_MonitorParam.discharge_MonVolChangeLevel = res.getFloat("param_value"); else if (pm_name.equals("discharge_TestTimeLongMinimum")) this.m_MonitorParam.discharge_TestTimeLongMinimum = res.getInt("param_value"); else if (pm_name.equals("discharge_TestDataRecordCountMax")) this.m_MonitorParam.discharge_TestDataRecordCountMax = res.getInt("param_value"); else if (pm_name.equals("discharge_BattTestGroupCountMax")) { this.m_MonitorParam.discharge_BattTestGroupCountMax = res.getInt("param_value"); } else if (pm_name.equals("charge_SaveDataTimeInterval")) this.m_MonitorParam.charge_SaveDataTimeInterval = res.getInt("param_value"); else if (pm_name.equals("charge_MonVolChangeLevel")) this.m_MonitorParam.charge_MonVolChangeLevel = res.getFloat("param_value"); else if (pm_name.equals("charge_TestTimeLongMinimum")) this.m_MonitorParam.charge_TestTimeLongMinimum = res.getInt("param_value"); else if (pm_name.equals("charge_TestDataRecordCountMax")) this.m_MonitorParam.charge_TestDataRecordCountMax = res.getInt("param_value"); else if (pm_name.equals("charge_BattTestGroupCountMax")) { this.m_MonitorParam.charge_BattTestGroupCountMax = res.getInt("param_value"); } else if (pm_name.equals("poweroff_SaveDataTimeInterval")) this.m_MonitorParam.poweroff_SaveDataTimeInterval = res.getInt("param_value"); else if (pm_name.equals("poweroff_MonVolChangeLevel")) this.m_MonitorParam.poweroff_MonVolChangeLevel = res.getFloat("param_value"); else if (pm_name.equals("poweroff_TestTimeLongMinimum")) this.m_MonitorParam.poweroff_TestTimeLongMinimum = res.getInt("param_value"); else if (pm_name.equals("poweroff_TestDataRecordCountMax")) this.m_MonitorParam.poweroff_TestDataRecordCountMax = res.getInt("param_value"); else if (pm_name.equals("poweroff_BattTestGroupCountMax")) { this.m_MonitorParam.poweroff_BattTestGroupCountMax = res.getInt("param_value"); } else if (pm_name.equals("BattJunHengFN")) this.m_MonitorParam.BattJunHengFN = res.getBoolean("param_value"); } } catch (SQLException e) { e.printStackTrace(); } finally { sql.close_con(); } if (this.m_MonitorParam.discharge_SaveDataTimeInterval < 5) this.m_MonitorParam.discharge_SaveDataTimeInterval = 5; if (this.m_MonitorParam.discharge_SaveDataTimeInterval > 600) this.m_MonitorParam.discharge_SaveDataTimeInterval = 600; if (this.m_MonitorParam.discharge_MonVolChangeLevel < 0.001D) this.m_MonitorParam.discharge_MonVolChangeLevel = 0.001F; if (this.m_MonitorParam.discharge_MonVolChangeLevel > 1.0F) this.m_MonitorParam.discharge_MonVolChangeLevel = 1.0F; if (this.m_MonitorParam.discharge_TestTimeLongMinimum < 60) this.m_MonitorParam.discharge_TestTimeLongMinimum = 60; if (this.m_MonitorParam.discharge_TestTimeLongMinimum > 3600) this.m_MonitorParam.discharge_TestTimeLongMinimum = 3600; if (this.m_MonitorParam.discharge_TestDataRecordCountMax < 5000) this.m_MonitorParam.discharge_TestDataRecordCountMax = 5000; if (this.m_MonitorParam.discharge_TestDataRecordCountMax > 20000) this.m_MonitorParam.discharge_TestDataRecordCountMax = 20000; if (this.m_MonitorParam.discharge_BattTestGroupCountMax < 10) this.m_MonitorParam.discharge_BattTestGroupCountMax = 10; if (this.m_MonitorParam.discharge_BattTestGroupCountMax > 350) this.m_MonitorParam.discharge_BattTestGroupCountMax = 350; if (this.m_MonitorParam.charge_SaveDataTimeInterval < 5) this.m_MonitorParam.charge_SaveDataTimeInterval = 5; if (this.m_MonitorParam.charge_SaveDataTimeInterval > 600) this.m_MonitorParam.charge_SaveDataTimeInterval = 600; if (this.m_MonitorParam.charge_MonVolChangeLevel < 0.001D) this.m_MonitorParam.charge_MonVolChangeLevel = 0.001F; if (this.m_MonitorParam.charge_MonVolChangeLevel > 1.0F) this.m_MonitorParam.charge_MonVolChangeLevel = 1.0F; if (this.m_MonitorParam.charge_TestTimeLongMinimum < 60) this.m_MonitorParam.charge_TestTimeLongMinimum = 60; if (this.m_MonitorParam.charge_TestTimeLongMinimum > 3600) this.m_MonitorParam.charge_TestTimeLongMinimum = 3600; if (this.m_MonitorParam.charge_TestDataRecordCountMax < 5000) this.m_MonitorParam.charge_TestDataRecordCountMax = 5000; if (this.m_MonitorParam.charge_TestDataRecordCountMax > 20000) this.m_MonitorParam.charge_TestDataRecordCountMax = 20000; if (this.m_MonitorParam.charge_BattTestGroupCountMax < 10) this.m_MonitorParam.charge_BattTestGroupCountMax = 10; if (this.m_MonitorParam.charge_BattTestGroupCountMax > 350) this.m_MonitorParam.charge_BattTestGroupCountMax = 350; if (this.m_MonitorParam.poweroff_SaveDataTimeInterval < 5) this.m_MonitorParam.poweroff_SaveDataTimeInterval = 5; if (this.m_MonitorParam.poweroff_SaveDataTimeInterval > 600) this.m_MonitorParam.poweroff_SaveDataTimeInterval = 600; if (this.m_MonitorParam.poweroff_MonVolChangeLevel < 0.001D) this.m_MonitorParam.poweroff_MonVolChangeLevel = 0.001F; if (this.m_MonitorParam.poweroff_MonVolChangeLevel > 1.0F) this.m_MonitorParam.poweroff_MonVolChangeLevel = 1.0F; if (this.m_MonitorParam.poweroff_TestTimeLongMinimum < 60) this.m_MonitorParam.poweroff_TestTimeLongMinimum = 60; if (this.m_MonitorParam.poweroff_TestTimeLongMinimum > 3600) this.m_MonitorParam.poweroff_TestTimeLongMinimum = 3600; if (this.m_MonitorParam.poweroff_TestDataRecordCountMax < 5000) this.m_MonitorParam.poweroff_TestDataRecordCountMax = 5000; if (this.m_MonitorParam.poweroff_TestDataRecordCountMax > 20000) this.m_MonitorParam.poweroff_TestDataRecordCountMax = 20000; if (this.m_MonitorParam.poweroff_BattTestGroupCountMax < 10) this.m_MonitorParam.poweroff_BattTestGroupCountMax = 10; if (this.m_MonitorParam.poweroff_BattTestGroupCountMax > 350) this.m_MonitorParam.poweroff_BattTestGroupCountMax = 350; } class MonitorParam { public int discharge_SaveDataTimeInterval = 10; public float discharge_MonVolChangeLevel = 0.05F; public int discharge_TestTimeLongMinimum = 1800; public int discharge_TestDataRecordCountMax = 10000; public int discharge_BattTestGroupCountMax = 10; public int charge_SaveDataTimeInterval = 10; public float charge_MonVolChangeLevel = 0.05F; public int charge_TestTimeLongMinimum = 1800; public int charge_TestDataRecordCountMax = 10000; public int charge_BattTestGroupCountMax = 10; public int poweroff_SaveDataTimeInterval = 10; public float poweroff_MonVolChangeLevel = 0.05F; public int poweroff_TestTimeLongMinimum = 1800; public int poweroff_TestDataRecordCountMax = 10000; public int poweroff_BattTestGroupCountMax = 10; public boolean BattJunHengFN = false; MonitorParam() { } @Override public String toString() { return "MonitorParam [discharge_SaveDataTimeInterval=" + discharge_SaveDataTimeInterval + ", discharge_MonVolChangeLevel=" + discharge_MonVolChangeLevel + ", discharge_TestTimeLongMinimum=" + discharge_TestTimeLongMinimum + ", discharge_TestDataRecordCountMax=" + discharge_TestDataRecordCountMax + ", discharge_BattTestGroupCountMax=" + discharge_BattTestGroupCountMax + ", charge_SaveDataTimeInterval=" + charge_SaveDataTimeInterval + ", charge_MonVolChangeLevel=" + charge_MonVolChangeLevel + ", charge_TestTimeLongMinimum=" + charge_TestTimeLongMinimum + ", charge_TestDataRecordCountMax=" + charge_TestDataRecordCountMax + ", charge_BattTestGroupCountMax=" + charge_BattTestGroupCountMax + ", poweroff_SaveDataTimeInterval=" + poweroff_SaveDataTimeInterval + ", poweroff_MonVolChangeLevel=" + poweroff_MonVolChangeLevel + ", poweroff_TestTimeLongMinimum=" + poweroff_TestTimeLongMinimum + ", poweroff_TestDataRecordCountMax=" + poweroff_TestDataRecordCountMax + ", poweroff_BattTestGroupCountMax=" + poweroff_BattTestGroupCountMax + ", BattJunHengFN=" + BattJunHengFN + "]"; } } } /* * Location: * C:\Users\LiJun\Desktop\公司各种设备资料\9600显示模块相关文件\后台程序\2018-09-07\BattFBS9600XSP. * jar Qualified Name: com.config.AppParam JD-Core Version: 0.6.2 */ BattMonitor_DB_Builder/src/com/sql/Sql_Mysql.java
@@ -51,13 +51,11 @@ public static final String PowerAlarm_param_Table = DB_PARAM + ".poweralarm_param"; //电源告警参数 /******************************* db_power_alarm ***************************************/ public static final String Power_Alarm_Table = DB_POWER_ALARM + ".`power_alarm`"; //电源实时告警 public static final String Power_Alarm_Cfg_Table = DB_POWER_ALARM + ".`power_alarm_cfg`"; //电源告警配置表 public static final String Power_Alarm_History_Table = DB_POWER_ALARM + ".`power_alarm_history`"; //电源历史告警 public static final String Power_Alarm_History_Suit_Table = DB_POWER_ALARM + ".power_alarm_history_"; //电源历史告警分表 public static final String Power_Alarm_Table = DB_POWER_ALARM + ".power_alarm"; //电源实时告警 public static final String Power_Alarm_Cfg_Table = DB_POWER_ALARM + ".power_alarm_cfg"; //电源告警配置表 /**********************************************************************/ public static final String Batt_Alarm_Table = DB_ALARM + ".batt_alarm"; //电源历史告警分表 public static final String Batt_Alarm_Table = DB_ALARM + ".batt_alarm"; //电源实时告警分表 /**********************************************************************/ //--------------------------------------------------------------------------------------------// BattMonitor_DB_Builder/src/com/sql/util/Db_Alarm.java
@@ -9,7 +9,10 @@ public static void init(MysqlConnPool pool) { createDb_Alarm(pool); } createBatt_Alarm_Table(pool); } public static void createDb_Alarm(MysqlConnPool pool) { @@ -20,4 +23,56 @@ e.printStackTrace(); } } /** * 创建 batt_alarm 数据库表 * @param conn */ public static void createBatt_Alarm_Table(MysqlConnPool pool) { Sql_Mysql sql = new Sql_Mysql(pool.getConn()); try { String sql_str_auto = "CREATE SEQUENCE IF NOT EXISTS " + Sql_Mysql.Batt_Alarm_Table + "_auto" + " INCREMENT 1" + " MINVALUE 1" + " MAXVALUE 9223372036854775807" + " START 1" + " CACHE 1;"; //创建自增序列 sql.sqlMysqlExecute(sql_str_auto); String sql_str = " CREATE TABLE IF NOT EXISTS " + Sql_Mysql.Batt_Alarm_Table + " " + "(num integer NOT NULL DEFAULT nextval('" + Sql_Mysql.Batt_Alarm_Table + "_auto'::regclass)," + " binf_id integer NOT NULL DEFAULT 1," + " alm_start_time timestamp without time zone NOT NULL DEFAULT '2000-01-01 00:00:00'::timestamp without time zone," + " mon_num integer NOT NULL DEFAULT 0," + " alm_id integer NOT NULL DEFAULT 0," + " alm_level integer NOT NULL DEFAULT 0," + " alm_value double precision NOT NULL DEFAULT '0'::double precision," + " alm_confirm integer NOT NULL DEFAULT 0," + " alm_confirm_time timestamp without time zone NOT NULL DEFAULT '2000-01-01 00:00:00'::timestamp without time zone," + " alm_type integer NOT NULL DEFAULT 1," + " PRIMARY KEY (num)" + ")"; sql.sqlMysqlExecute(sql_str); sql.sqlMysqlExecute("ALTER TABLE " + Sql_Mysql.Batt_Alarm_Table + " OWNER TO sysdba;"); sql.sqlMysqlExecute("COMMENT ON COLUMN " + Sql_Mysql.Batt_Alarm_Table + ".binf_id IS '电池组id';"); sql.sqlMysqlExecute("COMMENT ON COLUMN " + Sql_Mysql.Batt_Alarm_Table + ".alm_start_time IS '告警开始时间';"); sql.sqlMysqlExecute("COMMENT ON COLUMN " + Sql_Mysql.Batt_Alarm_Table + ".mon_num IS '告警单体编号';"); sql.sqlMysqlExecute("COMMENT ON COLUMN " + Sql_Mysql.Batt_Alarm_Table + ".alm_id IS '告警类型';"); sql.sqlMysqlExecute("COMMENT ON COLUMN " + Sql_Mysql.Batt_Alarm_Table + ".alm_level IS '告警等级';"); sql.sqlMysqlExecute("COMMENT ON COLUMN " + Sql_Mysql.Batt_Alarm_Table + ".alm_value IS '告警值';"); sql.sqlMysqlExecute("COMMENT ON COLUMN " + Sql_Mysql.Batt_Alarm_Table + ".alm_confirm IS '确认';"); sql.sqlMysqlExecute("COMMENT ON COLUMN " + Sql_Mysql.Batt_Alarm_Table + ".alm_confirm_time IS '确认时间';"); sql.sqlMysqlExecute("COMMENT ON COLUMN " + Sql_Mysql.Batt_Alarm_Table + ".alm_type IS '告警类型[1-上限告警 2-下限告警]';"); sql.sqlMysqlExecute("COMMENT ON TABLE " + Sql_Mysql.Batt_Alarm_Table + " IS '电池实时告警';"); } catch (Exception e) { e.printStackTrace(); } finally { sql.close_con(); } } } BattMonitor_DB_Builder/src/com/sql/util/Db_Param.java
@@ -29,7 +29,6 @@ String sql_str = " CREATE TABLE IF NOT EXISTS " + Sql_Mysql.PowerAlarm_param_Table + " " + "(num bigint NOT NULL DEFAULT nextval('" + Sql_Mysql.PowerAlarm_param_Table + "_auto'::regclass)," + " power_id integer NOT NULL DEFAULT 1," + " alm_id integer NOT NULL DEFAULT 1," + " alm_level integer NOT NULL DEFAULT 1," + " alm_en integer NOT NULL DEFAULT 1," + @@ -37,9 +36,7 @@ ")"; sql.sqlMysqlExecute(sql_str); sql.sqlMysqlExecute("ALTER TABLE " + Sql_Mysql.PowerAlarm_param_Table + " OWNER TO sysdba;"); sql.sqlMysqlExecute("COMMENT ON COLUMN " + Sql_Mysql.PowerAlarm_param_Table + ".alm_id IS '告警id';"); sql.sqlMysqlExecute("COMMENT ON COLUMN " + Sql_Mysql.PowerAlarm_param_Table + ".num IS '自增主键';"); sql.sqlMysqlExecute("COMMENT ON COLUMN " + Sql_Mysql.PowerAlarm_param_Table + ".power_id IS '电源ID';"); sql.sqlMysqlExecute("COMMENT ON COLUMN " + Sql_Mysql.PowerAlarm_param_Table + ".alm_id IS '电源告警ID';"); sql.sqlMysqlExecute("COMMENT ON COLUMN " + Sql_Mysql.PowerAlarm_param_Table + ".alm_level IS '告警等级';"); sql.sqlMysqlExecute("COMMENT ON COLUMN " + Sql_Mysql.PowerAlarm_param_Table + ".alm_en IS '告警使能[0-禁用 1-启用]';"); BattMonitor_DB_Builder/src/com/sql/util/Db_Power_Alarm.java
New file @@ -0,0 +1,117 @@ package com.sql.util; import java.sql.SQLException; import com.sql.MysqlConnPool; import com.sql.Sql_Mysql; /** * 电源告警数据库初始化 * @author DELL * */ public class Db_Power_Alarm { public static void init(MysqlConnPool pool) { createDb_Power_Alarm(pool); createPower_Alarm_Table(pool); createPower_Alarm_Cfg_Table(pool); } public static void createPower_Alarm_Cfg_Table(MysqlConnPool pool) { Sql_Mysql sql = new Sql_Mysql(pool.getConn()); try { String sql_str_auto = "CREATE SEQUENCE IF NOT EXISTS " + Sql_Mysql.Power_Alarm_Cfg_Table + "_auto" + " INCREMENT 1" + " MINVALUE 1" + " MAXVALUE 9223372036854775807" + " START 1" + " CACHE 1;"; //创建自增序列 sql.sqlMysqlExecute(sql_str_auto); String sql_str = " CREATE TABLE IF NOT EXISTS " + Sql_Mysql.Power_Alarm_Cfg_Table + " " + "(num bigint NOT NULL DEFAULT nextval('" + Sql_Mysql.Power_Alarm_Cfg_Table + "_auto'::regclass)," + " alm_id integer NOT NULL DEFAULT 0," + " alm_name character varying NOT NULL COLLATE pg_catalog.\"default\" DEFAULT ''::character varying," + " PRIMARY KEY (num)" + ")"; sql.sqlMysqlExecute(sql_str); sql.sqlMysqlExecute("ALTER TABLE " + Sql_Mysql.Power_Alarm_Cfg_Table + " OWNER TO sysdba;"); sql.sqlMysqlExecute("COMMENT ON COLUMN " + Sql_Mysql.Power_Alarm_Cfg_Table + ".num IS '自增主键';"); sql.sqlMysqlExecute("COMMENT ON COLUMN " + Sql_Mysql.Power_Alarm_Cfg_Table + ".alm_id IS '电源告警ID';"); sql.sqlMysqlExecute("COMMENT ON COLUMN " + Sql_Mysql.Power_Alarm_Cfg_Table + ".alm_name IS '电源告警名称';"); sql.sqlMysqlExecute("COMMENT ON TABLE " + Sql_Mysql.Power_Alarm_Cfg_Table + " IS '电源告警名称配置表';"); } catch (Exception e) { e.printStackTrace(); } finally { sql.close_con(); } } public static void createPower_Alarm_Table(MysqlConnPool pool) { Sql_Mysql sql = new Sql_Mysql(pool.getConn()); try { String sql_str_auto = "CREATE SEQUENCE IF NOT EXISTS " + Sql_Mysql.Power_Alarm_Table + "_auto" + " INCREMENT 1" + " MINVALUE 1" + " MAXVALUE 9223372036854775807" + " START 1" + " CACHE 1;"; //创建自增序列 sql.sqlMysqlExecute(sql_str_auto); String sql_str = " CREATE TABLE IF NOT EXISTS " + Sql_Mysql.Power_Alarm_Table + " " + "(num bigint NOT NULL DEFAULT nextval('" + Sql_Mysql.Power_Alarm_Table + "_auto'::regclass)," + " power_id integer NOT NULL DEFAULT 0," + " alm_id integer NOT NULL DEFAULT 0," + " alm_value double precision NOT NULL DEFAULT 0," + " alm_starttime timestamp without time zone NOT NULL DEFAULT '2000-01-01 00:00:00'::timestamp without time zone," + " alm_endtime timestamp without time zone NOT NULL DEFAULT '2000-01-01 00:00:00'::timestamp without time zone," + " alm_confirm_en integer NOT NULL DEFAULT 0," + " alm_confirm_time timestamp without time zone NOT NULL DEFAULT '2000-01-01 00:00:00'::timestamp without time zone," + " alm_level integer NOT NULL DEFAULT 1," + " PRIMARY KEY (num)" + ")"; sql.sqlMysqlExecute(sql_str); sql.sqlMysqlExecute("ALTER TABLE " + Sql_Mysql.Power_Alarm_Table + " OWNER TO sysdba;"); sql.sqlMysqlExecute("CREATE INDEX IF NOT EXISTS idx_power_id ON " + Sql_Mysql.Power_Alarm_Table + " USING btree (" + " power_id" + ") TABLESPACE pg_default ;"); sql.sqlMysqlExecute("CREATE INDEX IF NOT EXISTS idx_alm_id ON " + Sql_Mysql.Power_Alarm_Table + " USING btree (" + " alm_id " + ") TABLESPACE pg_default ;"); sql.sqlMysqlExecute("COMMENT ON COLUMN " + Sql_Mysql.Power_Alarm_Table + ".num IS '自增主键';"); sql.sqlMysqlExecute("COMMENT ON COLUMN " + Sql_Mysql.Power_Alarm_Table + ".power_id IS '电源ID';"); sql.sqlMysqlExecute("COMMENT ON COLUMN " + Sql_Mysql.Power_Alarm_Table + ".alm_id IS '电源告警ID';"); sql.sqlMysqlExecute("COMMENT ON COLUMN " + Sql_Mysql.Power_Alarm_Table + ".alm_value IS '告警值';"); sql.sqlMysqlExecute("COMMENT ON COLUMN " + Sql_Mysql.Power_Alarm_Table + ".alm_starttime IS '告警开始时间';"); sql.sqlMysqlExecute("COMMENT ON COLUMN " + Sql_Mysql.Power_Alarm_Table + ".alm_endtime IS '告警结束时间';"); sql.sqlMysqlExecute("COMMENT ON COLUMN " + Sql_Mysql.Power_Alarm_Table + ".alm_confirm_en IS '告警是否确认';"); sql.sqlMysqlExecute("COMMENT ON COLUMN " + Sql_Mysql.Power_Alarm_Table + ".alm_confirm_time IS '告警确认时间';"); sql.sqlMysqlExecute("COMMENT ON COLUMN " + Sql_Mysql.Power_Alarm_Table + ".alm_level IS '告警等级';"); sql.sqlMysqlExecute("COMMENT ON TABLE " + Sql_Mysql.Power_Alarm_Table + " IS '电源实时告警表';"); } catch (Exception e) { e.printStackTrace(); } finally { sql.close_con(); } } public static void createDb_Power_Alarm(MysqlConnPool pool) { Sql_Mysql sql = new Sql_Mysql(pool.getConn()); try { sql.sqlMysqlExecute("CREATE SCHEMA IF NOT EXISTS " + Sql_Mysql.DB_POWER_ALARM + " AUTHORIZATION sysdba"); } catch (SQLException e) { e.printStackTrace(); } } } BattMonitor_DB_Builder/src/main/main_BTS_DB_Builder.java
@@ -3,6 +3,7 @@ import java.util.Date; import com.base.Com; import com.battdata_rt.PowerData_RT_Array; import com.config.AppConfig; import com.sql.MysqlConnPool; import com.sql.Sql_Mysql; @@ -10,6 +11,7 @@ import com.sql.util.Db_Batt; import com.sql.util.Db_Dis_Batt; import com.sql.util.Db_Param; import com.sql.util.Db_Power_Alarm; public class main_BTS_DB_Builder { /**************************************************************************/ @@ -23,6 +25,8 @@ public static int MysqlServer_Port = DEF_MysqlServerFBS_Port; private static AppConfig m_AppConfig; private static PowerData_RT_Array GB_DataArray; private static MysqlConnPool GB_MysqlConnPool; @@ -65,6 +69,10 @@ sql_ck.close_con(); } GB_DataArray = new PowerData_RT_Array(m_AppConfig, GB_MysqlConnPool); GB_DataArray.initPowerDataRT_Inf(m_VersionNum); //初始化电池告警数据库 Db_Alarm.init(GB_MysqlConnPool); @@ -76,6 +84,11 @@ //初始化告警参数库 Db_Param.init(GB_MysqlConnPool); //初始化电源告警库 Db_Power_Alarm.init(GB_MysqlConnPool); GB_DataArray.checkBattRealData(); }