蓄电池监控管理平台数据库初始化程序
DELL
2024-12-12 690f171908a15508049251d7489f8ce519b54a8f
乌东德建表调整
23个文件已添加
7个文件已修改
3250 ■■■■■ 已修改文件
BattMonitor_DB_Builder/.settings/org.eclipse.core.resources.prefs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/bin/com/base/ComBase.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/bin/com/battdata_rt/BattStatData.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/bin/com/battdata_rt/MonVolData.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/bin/com/battdata_rt/PowerData_RT.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/bin/com/battdata_rt/PowerData_RT_Array.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/bin/com/battdata_rt/PowerData_RT_RamDB_Thread.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/bin/com/battdata_rt/PowerData_RT_RamDB_Thread_SQL.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/bin/com/battdata_rt/PowerData_RT_SQL.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/bin/com/battdata_rt/package-info.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/bin/com/config/AppParam$MonitorParam.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/bin/com/config/AppParam.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/bin/com/sql/util/Db_Alarm.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/bin/com/sql/util/Db_Param.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/bin/com/sql/util/Db_Power_Alarm.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/src/com/base/ComBase.java 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/src/com/battdata_rt/BattStatData.java 379 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/src/com/battdata_rt/MonVolData.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/src/com/battdata_rt/PowerData_RT.java 925 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/src/com/battdata_rt/PowerData_RT_Array.java 267 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/src/com/battdata_rt/PowerData_RT_RamDB_Thread.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/src/com/battdata_rt/PowerData_RT_RamDB_Thread_SQL.java 350 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/src/com/battdata_rt/PowerData_RT_SQL.java 516 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/src/com/battdata_rt/package-info.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/src/com/config/AppParam.java 328 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/src/com/sql/Sql_Mysql.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/src/com/sql/util/Db_Alarm.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/src/com/sql/util/Db_Param.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/src/com/sql/util/Db_Power_Alarm.java 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/src/main/main_BTS_DB_Builder.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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.class
Binary files differ
BattMonitor_DB_Builder/bin/com/battdata_rt/BattStatData.class
Binary files differ
BattMonitor_DB_Builder/bin/com/battdata_rt/MonVolData.class
Binary files differ
BattMonitor_DB_Builder/bin/com/battdata_rt/PowerData_RT.class
Binary files differ
BattMonitor_DB_Builder/bin/com/battdata_rt/PowerData_RT_Array.class
Binary files differ
BattMonitor_DB_Builder/bin/com/battdata_rt/PowerData_RT_RamDB_Thread.class
Binary files differ
BattMonitor_DB_Builder/bin/com/battdata_rt/PowerData_RT_RamDB_Thread_SQL.class
Binary files differ
BattMonitor_DB_Builder/bin/com/battdata_rt/PowerData_RT_SQL.class
Binary files differ
BattMonitor_DB_Builder/bin/com/battdata_rt/package-info.class
Binary files differ
BattMonitor_DB_Builder/bin/com/config/AppParam$MonitorParam.class
Binary files differ
BattMonitor_DB_Builder/bin/com/config/AppParam.class
Binary files differ
BattMonitor_DB_Builder/bin/com/sql/util/Db_Alarm.class
Binary files differ
BattMonitor_DB_Builder/bin/com/sql/util/Db_Param.class
Binary files differ
BattMonitor_DB_Builder/bin/com/sql/util/Db_Power_Alarm.class
Binary 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();
    }