whyclxw
2020-09-10 338c7711539257b25bfbb374ba9284592802d226
修改
10个文件已修改
3428 ■■■■■ 已修改文件
ElectricalSystem_MonitorServer_2KW/src/com/electrical/Twokw/Electric_2Kw_ServerSocket_Thread.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_2KW/src/com/electrical/Twokw/Electric_Control_Single_2kw.java 142 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_2KW/src/com/electrical/Twokw/Electric_Rt_2kw.java 117 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_2KW/src/com/electrical/Twokw/Electric_inf_2kw.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_2KW/src/com/electrical/Twokw/Electrical_2KWTask_SQL.java 305 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_2KW/src/com/electrical/Twokw/Electrical_2KW_SocketClient_Thread.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_2KW/src/com/modbus/data/MyModbusFactory.java 78 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_2KW/src/com/modbus/data/MyModbusUtils.java 628 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_2KW/src/com/sql/Sql_Mysql.java 1817 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_2KW/src/main/main_ElectricalSystem_MonitorServer_2KW.java 208 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ElectricalSystem_MonitorServer_2KW/src/com/electrical/Twokw/Electric_2Kw_ServerSocket_Thread.java
@@ -1,5 +1,32 @@
package com.electrical.Twokw;
public class Electric_2Kw_ServerSocket_Thread {
import java.util.Date;
import java.util.List;
import com.base.Com;
import com.sql.MysqlConnPool;
public class Electric_2Kw_ServerSocket_Thread  implements Runnable{
    public List<Electric_inf_2kw> einfs;
    public MysqlConnPool conn_pool;
    public Electric_2Kw_ServerSocket_Thread(MysqlConnPool conn_pool,List<Electric_inf_2kw> einfs) {
        this.einfs = einfs;
        this.conn_pool = conn_pool;
    }
    @Override
    public void run() {
        // TODO Auto-generated method stub
        System.out.println(" Electric_2Kw_ServerSocket_Thread Start at " +Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
        for(int i = 0;i<einfs.size();i++) {
            //插入或更新2mw电源系统实时信息表
            Electrical_2KWTask_SQL.replace_electric2MW_rt(conn_pool, new Electric_Rt_2kw(einfs.get(i).electric2KW_id));
            //插入或更新2mw电源系统控制表
            Electrical_2KWTask_SQL.replace_electric2MW_Control(conn_pool, new Electric_Control_Single_2kw(einfs.get(i).electric2KW_id));
            Electrical_2KW_SocketClient_Thread thread = new Electrical_2KW_SocketClient_Thread(einfs.get(i),conn_pool);
            new Thread(thread).start();
        }
    }
}
ElectricalSystem_MonitorServer_2KW/src/com/electrical/Twokw/Electric_Control_Single_2kw.java
@@ -1,5 +1,11 @@
package com.electrical.Twokw;
import com.modbus.data.MyModbusMaster;
import com.modbus.data.MyModbusUtils;
import com.serotonin.modbus4j.BatchRead;
import com.serotonin.modbus4j.BatchResults;
import com.serotonin.modbus4j.code.DataType;
public class Electric_Control_Single_2kw {
      public int num ;//'主键',
      public int electric2KW_id ;//'电源id',
@@ -24,8 +30,13 @@
      public float brachdccurr ;// '分直流电流',
      public float brachdcvol ;// '分直流电压',
      
      public boolean control_en = false;
      
    public Electric_Control_Single_2kw(int electric2kw_id) {
        super();
        electric2KW_id = electric2kw_id;
    }
    public int getNum() {
        return num;
    }
@@ -42,189 +53,125 @@
        return consvolmode_chargecurr;
    }
    public void setConsvolmode_chargecurr(float consvolmode_chargecurr) {
        if(consvolmode_chargecurr > 0) {
            control_en = true;
        }
        this.consvolmode_chargecurr = consvolmode_chargecurr;
    }
    public float getChargecurr_five() {
        return chargecurr_five;
    }
    public void setChargecurr_five(float chargecurr_five) {
        if(chargecurr_five > 0) {
            control_en = true;
        }
        this.chargecurr_five = chargecurr_five;
    }
    public float getChargecurr_four() {
        return chargecurr_four;
    }
    public void setChargecurr_four(float chargecurr_four) {
        if(chargecurr_four > 0) {
            control_en = true;
        }
        this.chargecurr_four = chargecurr_four;
    }
    public float getChargecurr_three() {
        return chargecurr_three;
    }
    public void setChargecurr_three(float chargecurr_three) {
        if(chargecurr_three > 0) {
            control_en = true;
        }
        this.chargecurr_three = chargecurr_three;
    }
    public float getChargecurr_two() {
        return chargecurr_two;
    }
    public void setChargecurr_two(float chargecurr_two) {
        if(chargecurr_two > 0) {
            control_en = true;
        }
        this.chargecurr_two = chargecurr_two;
    }
    public float getChargecurr_one() {
        return chargecurr_one;
    }
    public void setChargecurr_one(float chargecurr_one) {
        if(chargecurr_one > 0) {
            control_en = true;
        }
        this.chargecurr_one = chargecurr_one;
    }
    public float getCurrset() {
        return currset;
    }
    public void setCurrset(float currset) {
        if(currset > 0) {
            control_en = true;
        }
        this.currset = currset;
    }
    public float getLocalgivecurr() {
        return localgivecurr;
    }
    public void setLocalgivecurr(float localgivecurr) {
        if(localgivecurr > 0) {
            control_en = true;
        }
        this.localgivecurr = localgivecurr;
    }
    public float getVolset() {
        return volset;
    }
    public void setVolset(float volset) {
        if(volset > 0) {
            control_en = true;
        }
        this.volset = volset;
    }
    public float getLocalgivevol() {
        return localgivevol;
    }
    public void setLocalgivevol(float localgivevol) {
        if(localgivevol > 0) {
            control_en = true;
        }
        this.localgivevol = localgivevol;
    }
    public float getControlangle() {
        return controlangle;
    }
    public void setControlangle(float controlangle) {
        if(controlangle > 0) {
            control_en = true;
        }
        this.controlangle = controlangle;
    }
    public float getStopchargevol_five() {
        return stopchargevol_five;
    }
    public void setStopchargevol_five(float stopchargevol_five) {
        if(stopchargevol_five > 0) {
            control_en = true;
        }
        this.stopchargevol_five = stopchargevol_five;
    }
    public float getStopchargevol_four() {
        return stopchargevol_four;
    }
    public void setStopchargevol_four(float stopchargevol_four) {
        if(stopchargevol_four > 0) {
            control_en = true;
        }
        this.stopchargevol_four = stopchargevol_four;
    }
    public float getStopchargevol_three() {
        return stopchargevol_three;
    }
    public void setStopchargevol_three(float stopchargevol_three) {
        if(stopchargevol_three > 0) {
            control_en = true;
        }
        this.stopchargevol_three = stopchargevol_three;
    }
    public float getStopchargevol_two() {
        return stopchargevol_two;
    }
    public void setStopchargevol_two(float stopchargevol_two) {
        if(stopchargevol_two > 0) {
            control_en = true;
        }
        this.stopchargevol_two = stopchargevol_two;
    }
    public float getStopchargevol_one() {
        return stopchargevol_one;
    }
    public void setStopchargevol_one(float stopchargevol_one) {
        if(stopchargevol_one > 0) {
            control_en = true;
        }
        this.stopchargevol_one = stopchargevol_one;
    }
    public float getAlldccurr() {
        return alldccurr;
    }
    public void setAlldccurr(float alldccurr) {
        if(alldccurr > 0) {
            control_en = true;
        }
        this.alldccurr = alldccurr;
    }
    public float getAlldcvol() {
        return alldcvol;
    }
    public void setAlldcvol(float alldcvol) {
        if(alldcvol > 0) {
            control_en = true;
        }
        this.alldcvol = alldcvol;
    }
    public float getBrachdccurr() {
        return brachdccurr;
    }
    public void setBrachdccurr(float brachdccurr) {
        if(brachdccurr > 0) {
            control_en = true;
        }
        this.brachdccurr = brachdccurr;
    }
    public float getBrachdcvol() {
        return brachdcvol;
    }
    public void setBrachdcvol(float brachdcvol) {
        if(brachdcvol > 0) {
            control_en = true;
        }
        this.brachdcvol = brachdcvol;
    }
    
    public boolean isControl_en() {
        return control_en;
    }
    public void setControl_en(boolean control_en) {
        this.control_en = control_en;
    }
    @Override
    public String toString() {
        return "Electric_Control_Single_2kw [num=" + num + ", electric2KW_id=" + electric2KW_id
@@ -236,8 +183,65 @@
                + ", stopchargevol_four=" + stopchargevol_four + ", stopchargevol_three=" + stopchargevol_three
                + ", stopchargevol_two=" + stopchargevol_two + ", stopchargevol_one=" + stopchargevol_one
                + ", alldccurr=" + alldccurr + ", alldcvol=" + alldcvol + ", brachdccurr=" + brachdccurr
                + ", brachdcvol=" + brachdcvol + ", control_en=" + control_en + "]";
                + ", brachdcvol=" + brachdcvol + "]";
    }
    /**
     * 创建读取数据集合
     * @param master
     * @return
     */
    public BatchRead<Integer> createBatchRead(MyModbusMaster master){
        BatchRead<Integer> batch = new BatchRead<Integer>();
        batch.addLocator(0,MyModbusUtils.createBaseLocator(330, DataType.TWO_BYTE_INT_SIGNED,master));
        batch.addLocator(1,MyModbusUtils.createBaseLocator(319, DataType.TWO_BYTE_INT_SIGNED,master));
        batch.addLocator(2,MyModbusUtils.createBaseLocator(318, DataType.TWO_BYTE_INT_SIGNED,master));
        batch.addLocator(3,MyModbusUtils.createBaseLocator(317, DataType.TWO_BYTE_INT_SIGNED,master));
        batch.addLocator(4,MyModbusUtils.createBaseLocator(316, DataType.TWO_BYTE_INT_SIGNED,master));
        batch.addLocator(5,MyModbusUtils.createBaseLocator(315, DataType.TWO_BYTE_INT_SIGNED,master));
        batch.addLocator(6,MyModbusUtils.createBaseLocator(27, DataType.TWO_BYTE_INT_SIGNED,master));
        batch.addLocator(7,MyModbusUtils.createBaseLocator(25, DataType.TWO_BYTE_INT_SIGNED,master));
        batch.addLocator(8,MyModbusUtils.createBaseLocator(18, DataType.FOUR_BYTE_FLOAT,master));
        batch.addLocator(9,MyModbusUtils.createBaseLocator(16, DataType.FOUR_BYTE_FLOAT,master));
        batch.addLocator(10,MyModbusUtils.createBaseLocator(415, DataType.FOUR_BYTE_FLOAT,master));
        batch.addLocator(11,MyModbusUtils.createBaseLocator(328, DataType.TWO_BYTE_INT_SIGNED,master));
        batch.addLocator(12,MyModbusUtils.createBaseLocator(326, DataType.TWO_BYTE_INT_SIGNED,master));
        batch.addLocator(13,MyModbusUtils.createBaseLocator(324, DataType.TWO_BYTE_INT_SIGNED,master));
        batch.addLocator(14,MyModbusUtils.createBaseLocator(322, DataType.TWO_BYTE_INT_SIGNED,master));
        batch.addLocator(15,MyModbusUtils.createBaseLocator(320, DataType.TWO_BYTE_INT_SIGNED,master));
        batch.addLocator(16,MyModbusUtils.createBaseLocator(12, DataType.FOUR_BYTE_FLOAT,master));
        batch.addLocator(17,MyModbusUtils.createBaseLocator(10, DataType.FOUR_BYTE_FLOAT,master));
        batch.addLocator(18,MyModbusUtils.createBaseLocator(8, DataType.FOUR_BYTE_FLOAT,master));
        batch.addLocator(19,MyModbusUtils.createBaseLocator(6, DataType.FOUR_BYTE_FLOAT,master));
        return batch;
    }
    /**
     * 解析返回请求
     * @param res
     */
    public void putBatchResult(BatchResults<Integer> res) {
        if(res != null) {
            this.consvolmode_chargecurr= MyModbusUtils.readShortToFloat(res.getValue(0));
            this.chargecurr_five= MyModbusUtils.readShortToFloat(res.getValue(1));
            this.chargecurr_four= MyModbusUtils.readShortToFloat(res.getValue(2));
            this.chargecurr_three= MyModbusUtils.readShortToFloat(res.getValue(3));
            this.chargecurr_two= MyModbusUtils.readShortToFloat(res.getValue(4));
            this.chargecurr_one= MyModbusUtils.readShortToFloat(res.getValue(5));
            this.currset= MyModbusUtils.readShortToFloat(res.getValue(6));
            this.localgivecurr= MyModbusUtils.readShortToFloat(res.getValue(7));
            this.volset= (float)res.getValue(8);
            this.localgivevol= (float)res.getValue(9);
            this.controlangle= (float)res.getValue(10);
            this.stopchargevol_five= MyModbusUtils.readShortToFloat(res.getValue(11));
            this.stopchargevol_four= MyModbusUtils.readShortToFloat(res.getValue(12));
            this.stopchargevol_three= MyModbusUtils.readShortToFloat(res.getValue(13));
            this.stopchargevol_two= MyModbusUtils.readShortToFloat(res.getValue(14));
            this.stopchargevol_one= MyModbusUtils.readShortToFloat(res.getValue(15));
            this.alldccurr= (float)res.getValue(16);
            this.alldcvol= (float)res.getValue(17);
            this.brachdccurr= (float)res.getValue(18);
            this.brachdcvol= (float)res.getValue(19);
        }
    }
      
}
ElectricalSystem_MonitorServer_2KW/src/com/electrical/Twokw/Electric_Rt_2kw.java
@@ -1,29 +1,40 @@
package com.electrical.Twokw;
import com.modbus.data.MyModbusMaster;
import com.modbus.data.MyModbusUtils;
import com.serotonin.modbus4j.BatchRead;
import com.serotonin.modbus4j.BatchResults;
import com.serotonin.modbus4j.code.DataType;
public class Electric_Rt_2kw {
      private int num ;//'主键',
      private int electric2KW_id ;// '电源id',
      private int upper_pulse_block ;//'上位机脉冲封锁',
      private int consvolcurrstatus ;//'恒压恒流模式状态',
      private int constantvolflag ;//'4并或2串2并恒压标志位',
      private int main_circuit_connmode ;//'主电路连接模式',
      private int remote_start ;//'远程启动',
      private int fault_reset ;//'故障复位',
      private int conscurrswitch ;//'恒流切换',
      private float constantvol ;//'A机组4并或2串2并恒压',
      private int volset_confirm ;//'电压给定确认',
      private int currset_confirm ;//'电流给定确认',
      private int remote_stop ;//'远程停止',
      private int start_screen_set ;//'启动触摸屏给定',
      private int start_upper_set ;//'启动上位机给定',
      private int consvolswitch ;//'恒压切换',
      private int othermode ;//'4并或2串2并以外模式',
      private int consvol_distribution ;//'四串恒压电压分配位',
      private int local_remote_control ;//'就地远程控制状态',
      private int curve_charge_mode ;//'曲线充电模式状态',
      private int start_curve_charge_mode ;//'启动曲线充电模式',
      private int stop_curve_charge_mode ;//'停止曲线充电模式',
      private int note;//'',
      public int num ;//'主键',
      public int electric2KW_id ;// '电源id',
      public int upper_pulse_block ;//'上位机脉冲封锁',
      public int consvolcurrstatus ;//'恒压恒流模式状态',
      public int constantvolflag ;//'4并或2串2并恒压标志位',
      public int main_circuit_connmode ;//'主电路连接模式',
      public int remote_start ;//'远程启动',
      public int fault_reset ;//'故障复位',
      public int conscurrswitch ;//'恒流切换',
      public int constantvol ;//'A机组4并或2串2并恒压',
      public int volset_confirm ;//'电压给定确认',
      public int currset_confirm ;//'电流给定确认',
      public int remote_stop ;//'远程停止',
      public int start_screen_set ;//'启动触摸屏给定',
      public int start_upper_set ;//'启动上位机给定',
      public int consvolswitch ;//'恒压切换',
      public int othermode ;//'4并或2串2并以外模式',
      public int consvol_distribution ;//'四串恒压电压分配位',
      public int local_remote_control ;//'就地远程控制状态',
      public int curve_charge_mode ;//'曲线充电模式状态',
      public int start_curve_charge_mode ;//'启动曲线充电模式',
      public int stop_curve_charge_mode ;//'停止曲线充电模式',
      public int note;//'',
    public Electric_Rt_2kw(int electric2kw_id) {
        super();
        electric2KW_id = electric2kw_id;
    }
    public int getNum() {
        return num;
    }
@@ -81,7 +92,7 @@
    public float getConstantvol() {
        return constantvol;
    }
    public void setConstantvol(float constantvol) {
    public void setConstantvol(int constantvol) {
        this.constantvol = constantvol;
    }
    public int getVolset_confirm() {
@@ -177,5 +188,61 @@
                + "]";
    }
      
    /**
     * 创建读取数据集合
     * @param master
     * @return
     */
    public BatchRead<Integer> createBatchRead(MyModbusMaster master){
        BatchRead<Integer> batch = new BatchRead<Integer>();
        batch.addLocator(0,MyModbusUtils.createBaseLocator(80,master));
        batch.addLocator(1,MyModbusUtils.createBaseLocator(90,master));
        batch.addLocator(2,MyModbusUtils.createBaseLocator(91,master));
        batch.addLocator(3,MyModbusUtils.createBaseLocator(92,master));
        batch.addLocator(4,MyModbusUtils.createBaseLocator(112,master));
        batch.addLocator(5,MyModbusUtils.createBaseLocator(113,master));
        batch.addLocator(6,MyModbusUtils.createBaseLocator(114,master));
        batch.addLocator(7,MyModbusUtils.createBaseLocator(115,master));
        batch.addLocator(8,MyModbusUtils.createBaseLocator(116,master));
        batch.addLocator(9,MyModbusUtils.createBaseLocator(117,master));
        batch.addLocator(10,MyModbusUtils.createBaseLocator(118,master));
        batch.addLocator(11,MyModbusUtils.createBaseLocator(120,master));
        batch.addLocator(12,MyModbusUtils.createBaseLocator(121,master));
        batch.addLocator(13,MyModbusUtils.createBaseLocator(123,master));
        batch.addLocator(14,MyModbusUtils.createBaseLocator(125,master));
        batch.addLocator(15,MyModbusUtils.createBaseLocator(128,master));
        batch.addLocator(16,MyModbusUtils.createBaseLocator(161,master));
        batch.addLocator(17,MyModbusUtils.createBaseLocator(4640,master));
        batch.addLocator(18,MyModbusUtils.createBaseLocator(4641,master));
        batch.addLocator(19,MyModbusUtils.createBaseLocator(4642,master));
        return batch;
    }
    /**
     * 解析返回请求
     * @param res
     */
    public void putBatchResult(BatchResults<Integer> res) {
        if(res != null) {
            this.upper_pulse_block= MyModbusUtils.readBooleanToInt(res.getValue(0));
            this.consvolcurrstatus= MyModbusUtils.readBooleanToInt(res.getValue(1));
            this.constantvolflag= MyModbusUtils.readBooleanToInt(res.getValue(2));
            this.main_circuit_connmode= MyModbusUtils.readBooleanToInt(res.getValue(3));
            this.remote_start= MyModbusUtils.readBooleanToInt(res.getValue(4));
            this.fault_reset= MyModbusUtils.readBooleanToInt(res.getValue(5));
            this.conscurrswitch= MyModbusUtils.readBooleanToInt(res.getValue(6));
            this.constantvol= MyModbusUtils.readBooleanToInt(res.getValue(7));
            this.volset_confirm= MyModbusUtils.readBooleanToInt(res.getValue(8));
            this.currset_confirm= MyModbusUtils.readBooleanToInt(res.getValue(9));
            this.remote_stop= MyModbusUtils.readBooleanToInt(res.getValue(10));
            this.start_screen_set= MyModbusUtils.readBooleanToInt(res.getValue(11));
            this.start_upper_set= MyModbusUtils.readBooleanToInt(res.getValue(12));
            this.consvolswitch= MyModbusUtils.readBooleanToInt(res.getValue(13));
            this.othermode= MyModbusUtils.readBooleanToInt(res.getValue(14));
            this.consvol_distribution= MyModbusUtils.readBooleanToInt(res.getValue(15));
            this.local_remote_control= MyModbusUtils.readBooleanToInt(res.getValue(16));
            this.curve_charge_mode= MyModbusUtils.readBooleanToInt(res.getValue(17));
            this.start_curve_charge_mode= MyModbusUtils.readBooleanToInt(res.getValue(18));
            this.stop_curve_charge_mode= MyModbusUtils.readBooleanToInt(res.getValue(19));
        }
    }
}
ElectricalSystem_MonitorServer_2KW/src/com/electrical/Twokw/Electric_inf_2kw.java
@@ -1,12 +1,15 @@
package com.electrical.Twokw;
public class Electric_inf_2kw {
     private int  num ; //'主键',
     private int  electric2KW_id ; //'5001' COMMENT '电源id',
     private String electric2KW_ip ; //'127.0.0.1' COMMENT '电源ip',
     private String electric2KW_name ; //'A组' COMMENT '电源名称',
     private int electric2KW_type ; //'2' COMMENT '电源类型',
     private String note  ;//'',
    public int  num ; //'主键',
    public int  electric2KW_id ; //'5001' COMMENT '电源id',
    public String electric2KW_ip ; //'127.0.0.1' COMMENT '电源ip',
    public String electric2KW_name ; //'A组' COMMENT '电源名称',
    public int electric2KW_type ; //'2' COMMENT '电源类型',
    public String note  ;//'',
    public int getNum() {
        return num;
    }
ElectricalSystem_MonitorServer_2KW/src/com/electrical/Twokw/Electrical_2KWTask_SQL.java
@@ -1,5 +1,308 @@
package com.electrical.Twokw;
public class Electrical_2KWTask_SQL {
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import com.sql.MysqlConnPool;
import com.sql.Sql_Mysql;
public class Electrical_2KWTask_SQL {
    /**
     * 初始化数据库表
     * @param pool
     */
    public static void init(MysqlConnPool pool) {
        createDB_Electric2MWSystem(pool);
        createTb_electric2MW_inf(pool);
        //initTb_electric2MW_inf(pool);
        createTb_electric2MW_rt(pool);
        createTb_electric2MW_control(pool);
    }
    /**
     * 初始化负载信息表
     * @param pool
     */
    public static void initTb_electric2MW_inf(MysqlConnPool pool) {
        String sql_str= " replace INTO " + Sql_Mysql.Tb_electric2MW_inf + "(electric2KW_id,electric2KW_ip,electric2KW_name,electric2KW_type) VALUES(6001,'127.0.0.1','2MW','1'),(6002,'127.0.0.1','2MW','1')";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    /**
     * 创建2MW电源系统数据库
     * @param pool
     */
    public static void createDB_Electric2MWSystem(MysqlConnPool pool) {
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute("CREATE DATABASE IF NOT EXISTS " + Sql_Mysql.DB_Electric2MWSystem);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    /**
     * 创建2MW信息表
     * @param pool
     */
    public static void createTb_electric2MW_inf(MysqlConnPool pool) {
        String sql_str = "CREATE TABLE IF NOT EXISTS " + Sql_Mysql.Tb_electric2MW_inf + " (" +
                "  num bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键'," +
                "  electric2KW_id int(11) NOT NULL DEFAULT '5001' COMMENT '电源id'," +
                "  electric2KW_ip varchar(255) NOT NULL DEFAULT '127.0.0.1' COMMENT '电源ip'," +
                "  electric2KW_name varchar(255) NOT NULL DEFAULT 'A组' COMMENT '电源名称'," +
                "  electric2KW_type int(11) NOT NULL DEFAULT '2' COMMENT '电源类型'," +
                "  note varchar(255) NOT NULL DEFAULT ''," +
                "  PRIMARY KEY (num)," +
                "  UNIQUE KEY electric2KW_id_key (electric2KW_id) USING BTREE  " +
                ") ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    /**
     * 创建2MW实时信息表
     * @param pool
     */
    public static void createTb_electric2MW_rt(MysqlConnPool pool) {
        String sql_str = "CREATE TABLE IF NOT EXISTS " + Sql_Mysql.Tb_electric2MW_rt + " (" +
                "  num bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键'," +
                "  electric2KW_id int(11) NOT NULL DEFAULT '5001' COMMENT '电源id'," +
                "  upper_pulse_block int(11) NOT NULL DEFAULT '0' COMMENT '上位机脉冲封锁'," +
                "  consvolcurrstatus int(11) NOT NULL DEFAULT '0' COMMENT '恒压恒流模式状态'," +
                "  constantvolflag int(11) NOT NULL DEFAULT '0' COMMENT '4并或2串2并恒压标志位'," +
                "  main_circuit_connmode int(11) NOT NULL DEFAULT '0' COMMENT '主电路连接模式'," +
                "  remote_start int(11) NOT NULL DEFAULT '0' COMMENT '远程启动'," +
                "  fault_reset int(11) NOT NULL DEFAULT '0' COMMENT '故障复位'," +
                "  conscurrswitch int(11) NOT NULL DEFAULT '0' COMMENT '恒流切换'," +
                "  constantvol float NOT NULL DEFAULT '0' COMMENT 'A机组4并或2串2并恒压'," +
                "  volset_confirm int(11) NOT NULL DEFAULT '0' COMMENT '电压给定确认'," +
                "  currset_confirm int(11) NOT NULL DEFAULT '0' COMMENT '电流给定确认'," +
                "  remote_stop int(11) NOT NULL DEFAULT '0' COMMENT '远程停止'," +
                "  start_screen_set int(11) NOT NULL DEFAULT '0' COMMENT '启动触摸屏给定'," +
                "  start_upper_set int(11) NOT NULL DEFAULT '0' COMMENT '启动上位机给定'," +
                "  consvolswitch int(11) NOT NULL DEFAULT '0' COMMENT '恒压切换'," +
                "  othermode int(11) NOT NULL DEFAULT '0' COMMENT '4并或2串2并以外模式'," +
                "  consvol_distribution int(11) NOT NULL DEFAULT '0' COMMENT '四串恒压电压分配位'," +
                "   " +
                "  local_remote_control int(11) NOT NULL DEFAULT '0' COMMENT '就地远程控制状态'," +
                "  curve_charge_mode int(11) NOT NULL DEFAULT '0' COMMENT '曲线充电模式状态'," +
                "  start_curve_charge_mode int(11) NOT NULL DEFAULT '0' COMMENT '启动曲线充电模式'," +
                "  stop_curve_charge_mode int(11) NOT NULL DEFAULT '0' COMMENT '停止曲线充电模式'," +
                "   " +
                "  note varchar(255) NOT NULL DEFAULT ''," +
                "  PRIMARY KEY (num)," +
                "  UNIQUE KEY electric2KW_id_key (electric2KW_id) USING BTREE  " +
                ") ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    /**
     * 创建2MW控制信息表
     * @param pool
     */
    public static void createTb_electric2MW_control(MysqlConnPool pool) {
        String sql_str = "CREATE TABLE IF NOT EXISTS " + Sql_Mysql.Tb_electric2MW_control + " (" +
                "  num bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键'," +
                "  electric2KW_id int(11) NOT NULL DEFAULT '5001' COMMENT '电源id'," +
                "  consvolmode_chargecurr float NOT NULL DEFAULT '0' COMMENT '转为恒压模式充电电压值'," +
                "  chargecurr_five float NOT NULL DEFAULT '0' COMMENT '第5阶段充电电流值'," +
                "  chargecurr_four float NOT NULL DEFAULT '0' COMMENT '第4阶段充电电流值'," +
                "  chargecurr_three float NOT NULL DEFAULT '0' COMMENT '第3阶段充电电流值'," +
                "  chargecurr_two float NOT NULL DEFAULT '0' COMMENT '第2阶段充电电流值'," +
                "  chargecurr_one float NOT NULL DEFAULT '0' COMMENT '第1阶段充电电流值'," +
                "  currset float NOT NULL DEFAULT '0' COMMENT '电流设定值'," +
                "  localgivecurr float NOT NULL DEFAULT '0' COMMENT '当前给定电流'," +
                "  volset float NOT NULL DEFAULT '0' COMMENT '电压设定值'," +
                "  localgivevol float NOT NULL DEFAULT '0' COMMENT '当前给定电压'," +
                "  controlangle float NOT NULL DEFAULT '0' COMMENT '控制角'," +
                "  stopchargevol_five float NOT NULL DEFAULT '0' COMMENT '第5阶段充电终止电压'," +
                "  stopchargevol_four float NOT NULL DEFAULT '0' COMMENT '第4阶段充电终止电压'," +
                "  stopchargevol_three float NOT NULL DEFAULT '0' COMMENT '第3阶段充电终止电压'," +
                "  stopchargevol_two float NOT NULL DEFAULT '0' COMMENT '第2阶段充电终止电压'," +
                "  stopchargevol_one float NOT NULL DEFAULT '0' COMMENT '第1阶段充电终止电压'," +
                "   " +
                "  alldccurr float NOT NULL DEFAULT '0' COMMENT '总直流电流'," +
                "  alldcvol float NOT NULL DEFAULT '0' COMMENT '总直流电压'," +
                "  brachdccurr float NOT NULL DEFAULT '0' COMMENT '分直流电流'," +
                "  brachdcvol float NOT NULL DEFAULT '0' COMMENT '分直流电压'," +
                "   " +
                "  PRIMARY KEY (num)," +
                "  UNIQUE KEY electric2KW_id_key (electric2KW_id) USING BTREE " +
                ") ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    /**
     * 查询所有的2mw电源系统
     * @param pool
     * @param electric
     */
    public static void queryAllElectrical2MW(MysqlConnPool pool,List<Electric_inf_2kw> einfs) {
        String sql_str = " select * from " + Sql_Mysql.Tb_electric2MW_inf+ " order by electric2KW_id asc ";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        ResultSet res = null;
        try {
            res = sql.sqlMysqlQuery(sql_str);
            while(res.next()) {
                Electric_inf_2kw einf=new Electric_inf_2kw();
                einf.setElectric2KW_id(res.getInt("electric2kw_id"));
                einf.setElectric2KW_ip(res.getString("electric2kw_ip"));
                einf.setElectric2KW_name(res.getString("electric2kw_name"));
                einf.setElectric2KW_type(res.getInt("electric2kw_type"));
                einfs.add(einf);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            if(res != null) {
                try {
                    res.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            sql.close_con();
        }
    }
    //插入或更新2mw电源系统实时信息表
    public static void replace_electric2MW_rt(MysqlConnPool pool,Electric_Rt_2kw ert) {
        String sql_str = " replace into "+ Sql_Mysql.Tb_electric2MW_rt+"(electric2KW_id)  "
                + "  values("+ert.electric2KW_id+")";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    //插入或更新2mw电源系统信息表
    public static void replace_electric2MW_inf(MysqlConnPool pool,Electric_inf_2kw einf) {
        String sql_str = " replace into "+ Sql_Mysql.Tb_electric2MW_inf+"(electric2KW_id)  "
                + "  values("+einf.electric2KW_id+")";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    //插入或更新2mw电源控制信息表
    public static void replace_electric2MW_Control(MysqlConnPool pool,Electric_Control_Single_2kw econtrol) {
        String sql_str = " replace into "+ Sql_Mysql.Tb_electric2MW_control+"(electric2KW_id)  "
                + "  values("+econtrol.electric2KW_id+")";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    //更新2mw电源实时信息表
    public static void update_Electric_Rt_2KW(MysqlConnPool pool,Electric_Rt_2kw ert) {
        String sql_str = " UPDATE "+ Sql_Mysql.Tb_electric2MW_rt  +""
                + " SET upper_pulse_block = "+ert.upper_pulse_block+","
                + " consvolcurrstatus = "+ert.consvolcurrstatus+","
                + " constantvolflag = "+ert.constantvolflag+","
                + " main_circuit_connmode = "+ert.main_circuit_connmode+","
                + " remote_start = "+ert.remote_start+","
                + " fault_reset = "+ert.fault_reset+","
                + " conscurrswitch = "+ert.conscurrswitch+","
                + " constantvol = "+ert.constantvol+","
                + " volset_confirm = "+ert.volset_confirm+","
                + " currset_confirm = "+ert.currset_confirm+","
                + " remote_stop = "+ert.remote_stop+","
                + " start_screen_set = "+ert.start_screen_set+","
                + " start_upper_set = "+ert.start_upper_set+","
                + " consvolswitch = "+ert.consvolswitch+","
                + " othermode = "+ert.othermode+","
                + " consvol_distribution = "+ert.consvol_distribution+","
                + " local_remote_control = "+ert.local_remote_control+","
                + " curve_charge_mode = "+ert.curve_charge_mode+","
                + " start_curve_charge_mode = "+ert.start_curve_charge_mode+","
                + " stop_curve_charge_mode = "+ert.stop_curve_charge_mode+" "
                + " WHERE electric2KW_id = " + ert.electric2KW_id;
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    //更新2mw电源控制信息表
    public static void update_Electric_Control_2KW(MysqlConnPool pool,Electric_Control_Single_2kw econ) {
        String sql_str = " UPDATE "+ Sql_Mysql.Tb_electric2MW_control  +""
                + " SET consvolmode_chargecurr = "+econ.consvolmode_chargecurr+","
                + " chargecurr_five = "+econ.chargecurr_five+","
                + " chargecurr_four = "+econ.chargecurr_four+","
                + " chargecurr_three = "+econ.chargecurr_three+","
                + " chargecurr_two = "+econ.chargecurr_two+","
                + " chargecurr_one = "+econ.chargecurr_one+","
                + " currset = "+econ.currset+","
                + " localgivecurr = "+econ.localgivecurr+","
                + " volset = "+econ.volset+","
                + " localgivevol = "+econ.localgivevol+","
                + " controlangle = "+econ.controlangle+","
                + " stopchargevol_five = "+econ.stopchargevol_five+","
                + " stopchargevol_four = "+econ.stopchargevol_four+","
                + " stopchargevol_three = "+econ.stopchargevol_three+","
                + " stopchargevol_two = "+econ.stopchargevol_two+","
                + " stopchargevol_one = "+econ.stopchargevol_one+","
                + " alldccurr = "+econ.alldccurr+","
                + " alldcvol = "+econ.alldcvol+","
                + " brachdccurr = "+econ.brachdccurr+","
                + " brachdcvol = "+econ.brachdcvol+" "
                + " WHERE electric2KW_id = " + econ.electric2KW_id;
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
}
ElectricalSystem_MonitorServer_2KW/src/com/electrical/Twokw/Electrical_2KW_SocketClient_Thread.java
@@ -1,5 +1,92 @@
package com.electrical.Twokw;
public class Electrical_2KW_SocketClient_Thread {
import java.util.List;
import com.modbus.data.MyModbusMaster;
import com.modbus.data.MyModbusUtils;
import com.serotonin.modbus4j.BatchRead;
import com.serotonin.modbus4j.BatchResults;
import com.sql.MysqlConnPool;
public class Electrical_2KW_SocketClient_Thread implements Runnable{
    public MysqlConnPool conn_pool;
    public Electric_inf_2kw einf;
    public Electric_Rt_2kw ert;
    public Electric_Control_Single_2kw econ;
    public MyModbusMaster master;
    public Electrical_2KW_SocketClient_Thread(Electric_inf_2kw winf,MysqlConnPool conn_pool) {
        this.conn_pool = conn_pool;
        this.einf = winf;
        ert = new Electric_Rt_2kw(einf.electric2KW_id);
        econ = new Electric_Control_Single_2kw(einf.electric2KW_id);
        master = new MyModbusMaster(einf.getElectric2KW_ip(), MyModbusMaster.SLAVEID_DEFAULT);
    }
    @Override
    public void run() {
        int runCount = 0;
        while(true) {
            try {
                if(runCount %2 == 0) {
                    //*************************** 更新2MW系统实时信息******************************//*
                    readMutilElectric_Rt_2kw(master, ert);
                    Electrical_2KWTask_SQL.update_Electric_Rt_2KW(conn_pool, ert);
                    //**************************** 更新2MW系统控制信息 *****************************//*
                    readMutilElectric_Control_Single_2kw(master, econ);
                    Electrical_2KWTask_SQL.update_Electric_Control_2KW(conn_pool, econ);
                }
                /*if(runCount %4 == 0) {
                    //*************************** 读取2MW信息故障 ******************************//*
                    //readWaterAlarmData(master,walarm);
                    readMutilWaterAlarmData(master, walarm);
                    Water_Task_SQL.insertOrUpdateWater_alarmTable(conn_pool, listAlarm);
                }*/
                if(runCount%10 == 0) {
                    //更新当前设备ip
                    master.setTarget_ip(einf.electric2KW_ip);
                }
                if(runCount > 999900) {
                    runCount = 0;
                }
                runCount ++;
                Thread.sleep(200);
            } catch (Exception e) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e1) {
                    //e1.printStackTrace();
                }
                e.printStackTrace();
            }
        }
    }
    /**
     * 更新2MW电源系统实时状态信息
     * @param master
     * @param ert
     */
    public void readMutilElectric_Rt_2kw(MyModbusMaster master, Electric_Rt_2kw ert) {
        BatchRead<Integer> batch = ert.createBatchRead(master);
        BatchResults<Integer> res = MyModbusUtils.readMutilRegisters(batch, master);
        ert.putBatchResult(res);
    }
    /**
     * 更新2MW电源控制信息
     * @param master
     * @param econ
     */
    public void readMutilElectric_Control_Single_2kw(MyModbusMaster master, Electric_Control_Single_2kw econ) {
        BatchRead<Integer> batch = econ.createBatchRead(master);
        BatchResults<Integer> res = MyModbusUtils.readMutilRegisters(batch, master);
        econ.putBatchResult(res);
    }
}
ElectricalSystem_MonitorServer_2KW/src/com/modbus/data/MyModbusFactory.java
@@ -1,39 +1,39 @@
package com.modbus.data;
import com.serotonin.modbus4j.ModbusFactory;
import com.serotonin.modbus4j.ModbusMaster;
import com.serotonin.modbus4j.exception.ModbusInitException;
import com.serotonin.modbus4j.ip.IpParameters;
public class MyModbusFactory {
    private static final int SERVER_PORT = 502;                //服务端口
    static ModbusFactory modbusFactory;
    static {
        if (modbusFactory == null) {
            modbusFactory = new ModbusFactory();
        }
    }
    /**
     * 获取master
     *
     * @return
     * @throws ModbusInitException
     */
    public static ModbusMaster getMaster(IpParameters params){
        // modbusFactory.createRtuMaster(wapper);         //RTU 协议
        // modbusFactory.createUdpMaster(params);        //UDP 协议
        // modbusFactory.createAsciiMaster(wrapper);    //ASCII 协议
        params.setPort(SERVER_PORT);
        ModbusMaster master = modbusFactory.createTcpMaster(params, false);// TCP 协议
        try {
            master.setTimeout(2000);
            master.init();
        } catch (ModbusInitException e) {
            e.printStackTrace();
        }
        return master;
    }
}
package com.modbus.data;
import com.serotonin.modbus4j.ModbusFactory;
import com.serotonin.modbus4j.ModbusMaster;
import com.serotonin.modbus4j.exception.ModbusInitException;
import com.serotonin.modbus4j.ip.IpParameters;
public class MyModbusFactory {
    private static final int SERVER_PORT = 502;                //服务端口
    static ModbusFactory modbusFactory;
    static {
        if (modbusFactory == null) {
            modbusFactory = new ModbusFactory();
        }
    }
    /**
     * 获取master
     *
     * @return
     * @throws ModbusInitException
     */
    public static ModbusMaster getMaster(IpParameters params){
        // modbusFactory.createRtuMaster(wapper);         //RTU 协议
        // modbusFactory.createUdpMaster(params);        //UDP 协议
        // modbusFactory.createAsciiMaster(wrapper);    //ASCII 协议
        params.setPort(SERVER_PORT);
        ModbusMaster master = modbusFactory.createTcpMaster(params, true);// TCP 协议
        try {
            master.setTimeout(2000);
            master.init();
        } catch (ModbusInitException e) {
            e.printStackTrace();
        }
        return master;
    }
}
ElectricalSystem_MonitorServer_2KW/src/com/modbus/data/MyModbusUtils.java
@@ -1,286 +1,342 @@
package com.modbus.data;
import com.serotonin.modbus4j.ModbusMaster;
import com.serotonin.modbus4j.exception.ErrorResponseException;
import com.serotonin.modbus4j.exception.ModbusTransportException;
import com.serotonin.modbus4j.locator.BaseLocator;
import com.serotonin.modbus4j.msg.ModbusResponse;
import com.serotonin.modbus4j.msg.WriteCoilRequest;
import com.serotonin.modbus4j.msg.WriteCoilResponse;
import com.serotonin.modbus4j.msg.WriteCoilsRequest;
import com.serotonin.modbus4j.msg.WriteCoilsResponse;
import com.serotonin.modbus4j.msg.WriteRegisterRequest;
import com.serotonin.modbus4j.msg.WriteRegisterResponse;
import com.serotonin.modbus4j.msg.WriteRegistersRequest;
public class MyModbusUtils {
    /**
     * 读取[01 Coil Status 0x]类型 开关数据
     *
     * @param slaveId
     *            slaveId
     * @param offset
     *            位置
     * @return 读取值
     */
    public static Boolean readCoilStatus(int offset,MyModbusMaster master){
        // 01 Coil Status
        BaseLocator<Boolean> loc = BaseLocator.coilStatus(master.getSlaveId(), offset);
        Boolean value = null;;
        try {
            value = master.getMaster().getValue(loc);
        } catch (ModbusTransportException | ErrorResponseException e) {
            master.addErrorCount();
            //e.printStackTrace();
        }
        return value;
    }
    /**
     * 读取[02 Input Status 1x]类型 开关数据
     *
     * @param slaveId
     * @param offset
     * @return
     */
    public static Boolean readInputStatus(int offset,MyModbusMaster master){
        // 02 Input Status
        BaseLocator<Boolean> loc = BaseLocator.inputStatus(master.getSlaveId(), offset);
        Boolean value = null;;
        try {
            value = master.getMaster().getValue(loc);
        } catch (ModbusTransportException | ErrorResponseException e) {
            master.addErrorCount();
            //e.printStackTrace();
        }
        return value;
    }
    /**
     * 读取[03 Holding Register类型 2x]模拟量数据
     *
     * @param slaveId
     *            slave Id
     * @param offset
     *            位置
     * @param dataType
     *            数据类型,来自com.serotonin.modbus4j.code.DataType
     * @return
     */
    public static Number readHoldingRegister(int offset, int dataType,MyModbusMaster master){
        // 03 Holding Register类型数据读取
        BaseLocator<Number> loc = BaseLocator.holdingRegister(master.getSlaveId(), offset, dataType);
        Number value = null;
        try {
            value = master.getMaster().getValue(loc);
        } catch (ModbusTransportException | ErrorResponseException e) {
            //e.printStackTrace();
            master.addErrorCount();
        }
        return value;
    }
    /**
     * 读取[04 Input Registers 3x]类型 模拟量数据
     *
     * @param slaveId
     *            slaveId
     * @param offset
     *            位置
     * @param dataType
     *            数据类型,来自com.serotonin.modbus4j.code.DataType
     * @return 返回结果
     * @throws ModbusTransportException
     *             异常
     * @throws ErrorResponseException
     *             异常
     * @throws ModbusInitException
     *             异常
     */
    public static Number readInputRegisters(int offset, int dataType,MyModbusMaster master){
        // 04 Input Registers类型数据读取
        BaseLocator<Number> loc = BaseLocator.inputRegister(master.getSlaveId(), offset, dataType);
        Number value = null;
        try {
            value = master.getMaster().getValue(loc);
        } catch (ModbusTransportException | ErrorResponseException e) {
            //e.printStackTrace();
            master.addErrorCount();
        }
        return value;
    }
    /**
     * 批量读取使用方法
     *
     * @throws ModbusTransportException
     * @throws ErrorResponseException
     * @throws ModbusInitException
     */
    public static void batchRead() {
//        BatchRead<Integer> batch = new BatchRead<Integer>();
//
//        batch.addLocator(0, BaseLocator.holdingRegister(1, 1, DataType.FOUR_BYTE_FLOAT));
//        batch.addLocator(1, BaseLocator.inputStatus(1, 0));
//
//        ModbusMaster master = getMaster();
//
//        batch.setContiguousRequests(false);
//        BatchResults<Integer> results = master.send(batch);
//        System.out.println(results.getValue(0));
//        System.out.println(results.getValue(1));
    }
    /**
     * 写 [01 Coil Status(0x)]写一个 function ID = 5
     *
     * @param slaveId
     *            slave的ID
     * @param writeOffset
     *            位置
     * @param writeValue
     *            ֵ
     * @return 是否写入成功
     */
    public static boolean writeCoil(int writeOffset, boolean writeValue,MyModbusMaster master){
        // 获取master
        ModbusMaster tcpMaster = master.getMaster();
        // 创建请求
        // 发送请求并获取响应对象
        WriteCoilResponse response = null;
        try {
            WriteCoilRequest request = new WriteCoilRequest(master.getSlaveId(), writeOffset, writeValue);
            response = (WriteCoilResponse) tcpMaster.send(request);
        } catch (ModbusTransportException e) {
            e.printStackTrace();
        }
        if (response == null || response.isException()) {
            master.addErrorCount();
            return false;
        } else {
            return true;
        }
    }
    /**
     * 写[01 Coil Status(0x)] 写多个 function ID = 15
     *
     * @param slaveId
     *            slaveId
     * @param startOffset
     *            开始位置
     * @param bdata
     *            写入的数据
     * @return 是否写入成功
     */
    public static boolean writeCoils(int startOffset, boolean[] bdata,MyModbusMaster master) {
        // 获取master
        ModbusMaster tcpMaster = master.getMaster();
        // 创建请求
        WriteCoilsRequest request;
        WriteCoilsResponse response = null;
        try {
            request = new WriteCoilsRequest(master.getSlaveId(), startOffset, bdata);
            response = (WriteCoilsResponse) tcpMaster.send(request);
        } catch (ModbusTransportException e) {
            e.printStackTrace();
        }
        // 发送请求并获取响应对象
        if (response == null || response.isException()) {
            master.addErrorCount();
            return false;
        } else {
            return true;
        }
    }
    /***
     * 写[03 Holding Register(4x)] 写一个 function ID = 6
     *
     * @param slaveId
     * @param writeOffset
     * @param writeValue
     * @return
     */
    public static boolean writeRegister(int writeOffset, short writeValue,MyModbusMaster master){
        // 获取master
        ModbusMaster tcpMaster = master.getMaster();
        // 创建请求对象
        WriteRegisterRequest request;
        WriteRegisterResponse response = null;
        try {
            request = new WriteRegisterRequest(master.getSlaveId(), writeOffset, writeValue);
            response = (WriteRegisterResponse) tcpMaster.send(request);
        } catch (ModbusTransportException e) {
            e.printStackTrace();
        }
        if (response == null || response.isException()) {
            master.addErrorCount();
            return false;
        } else {
            return true;
        }
    }
    /**
     *
     * 写入[03 Holding Register(4x)]写多个 function ID=16
     *
     * @param slaveId
     *            modbus的slaveID
     * @param startOffset
     *            起始位置偏移量值
     * @param sdata
     *            写入的数据
     * @return 返回是否写入成功
     */
    public static boolean writeRegisters(int startOffset, short[] sdata,MyModbusMaster master){
        // 获取master
        ModbusMaster tcpMaster = master.getMaster();
        // 创建请求对象
        WriteRegistersRequest request;
        // 发送请求并获取响应对象
        ModbusResponse response = null;
        try {
            request = new WriteRegistersRequest(master.getSlaveId(), startOffset, sdata);
            response = tcpMaster.send(request);
        } catch (ModbusTransportException e) {
            e.printStackTrace();
        }
        if (response.isException()) {
            //log.error(response.getExceptionMessage());
            master.addErrorCount();
            return false;
        } else {
            return true;
        }
    }
    /**
     * 写入数字类型的模拟量(如:写入Float类型的模拟量、Double类型模拟量、整数类型Short、Integer、Long)
     *
     * @param slaveId
     * @param offset
     * @param value
     *            写入值,Number的子类,例如写入Float浮点类型,Double双精度类型,以及整型short,int,long
     * @param registerCount
     *            ,com.serotonin.modbus4j.code.DataType
     */
    public static void writeHoldingRegister(int offset, Number value, int dataType,MyModbusMaster master){
        // 获取master
        ModbusMaster tcpMaster = master.getMaster();
        // 类型
        BaseLocator<Number> locator = BaseLocator.holdingRegister(master.getSlaveId(), offset, dataType);
        try {
            tcpMaster.setValue(locator, value);
        } catch (ModbusTransportException | ErrorResponseException e) {
            e.printStackTrace();
        }
    }
}
package com.modbus.data;
import com.base.ComBase;
import com.serotonin.modbus4j.BatchRead;
import com.serotonin.modbus4j.BatchResults;
import com.serotonin.modbus4j.ModbusMaster;
import com.serotonin.modbus4j.exception.ErrorResponseException;
import com.serotonin.modbus4j.exception.ModbusTransportException;
import com.serotonin.modbus4j.locator.BaseLocator;
import com.serotonin.modbus4j.msg.ModbusResponse;
import com.serotonin.modbus4j.msg.WriteCoilRequest;
import com.serotonin.modbus4j.msg.WriteCoilResponse;
import com.serotonin.modbus4j.msg.WriteCoilsRequest;
import com.serotonin.modbus4j.msg.WriteCoilsResponse;
import com.serotonin.modbus4j.msg.WriteRegisterRequest;
import com.serotonin.modbus4j.msg.WriteRegisterResponse;
import com.serotonin.modbus4j.msg.WriteRegistersRequest;
public class MyModbusUtils {
    /**
     * 读取[01 Coil Status 0x]类型 开关数据
     *
     * @param slaveId
     *            slaveId
     * @param offset
     *            位置
     * @return 读取值
     */
    public static Boolean readCoilStatus(int offset,MyModbusMaster master){
        // 01 Coil Status
        BaseLocator<Boolean> loc = BaseLocator.coilStatus(master.getSlaveId(), offset);
        Boolean value = null;;
        try {
            value = master.getMaster().getValue(loc);
        } catch (ModbusTransportException | ErrorResponseException e) {
            master.addErrorCount();
            //e.printStackTrace();
        }
        return value;
    }
    /**
     * 读取[02 Input Status 1x]类型 开关数据
     *
     * @param slaveId
     * @param offset
     * @return
     */
    public static Boolean readInputStatus(int offset,MyModbusMaster master){
        // 02 Input Status
        BaseLocator<Boolean> loc = BaseLocator.inputStatus(master.getSlaveId(), offset);
        Boolean value = null;;
        try {
            value = master.getMaster().getValue(loc);
        } catch (ModbusTransportException | ErrorResponseException e) {
            master.addErrorCount();
            //e.printStackTrace();
        }
        return value;
    }
    /**
     * 读取[03 Holding Register类型 2x]模拟量数据
     *
     * @param slaveId
     *            slave Id
     * @param offset
     *            位置
     * @param dataType
     *            数据类型,来自com.serotonin.modbus4j.code.DataType
     * @return
     */
    public static Number readHoldingRegister(int offset, int dataType,MyModbusMaster master){
        // 03 Holding Register类型数据读取
        BaseLocator<Number> loc = BaseLocator.holdingRegister(master.getSlaveId(), offset, dataType);
        Number value = null;
        try {
            value = master.getMaster().getValue(loc);
        } catch (ModbusTransportException | ErrorResponseException e) {
            //e.printStackTrace();
            master.addErrorCount();
        }
        return value;
    }
    /**
     * 读取[04 Input Registers 3x]类型 模拟量数据
     *
     * @param slaveId
     *            slaveId
     * @param offset
     *            位置
     * @param dataType
     *            数据类型,来自com.serotonin.modbus4j.code.DataType
     * @return 返回结果
     * @throws ModbusTransportException
     *             异常
     * @throws ErrorResponseException
     *             异常
     * @throws ModbusInitException
     *             异常
     */
    public static Number readInputRegisters(int offset, int dataType,MyModbusMaster master){
        // 04 Input Registers类型数据读取
        BaseLocator<Number> loc = BaseLocator.inputRegister(master.getSlaveId(), offset, dataType);
        Number value = null;
        try {
            value = master.getMaster().getValue(loc);
        } catch (ModbusTransportException | ErrorResponseException e) {
            //e.printStackTrace();
            master.addErrorCount();
        }
        return value;
    }
    /**
     * 批量读取使用方法
     *
     * @throws ModbusTransportException
     * @throws ErrorResponseException
     * @throws ModbusInitException
     */
    public static void batchRead() {
//        BatchRead<Integer> batch = new BatchRead<Integer>();
//
//        batch.addLocator(0, BaseLocator.holdingRegister(1, 1, DataType.FOUR_BYTE_FLOAT));
//        batch.addLocator(1, BaseLocator.inputStatus(1, 0));
//
//        ModbusMaster master = getMaster();
//
//        batch.setContiguousRequests(false);
//        BatchResults<Integer> results = master.send(batch);
//        System.out.println(results.getValue(0));
//        System.out.println(results.getValue(1));
    }
    /**
     * 写 [01 Coil Status(0x)]写一个 function ID = 5
     *
     * @param slaveId
     *            slave的ID
     * @param writeOffset
     *            位置
     * @param writeValue
     *            ֵ
     * @return 是否写入成功
     */
    public static boolean writeCoil(int writeOffset, boolean writeValue,MyModbusMaster master){
        // 获取master
        ModbusMaster tcpMaster = master.getMaster();
        // 创建请求
        // 发送请求并获取响应对象
        WriteCoilResponse response = null;
        try {
            WriteCoilRequest request = new WriteCoilRequest(master.getSlaveId(), writeOffset, writeValue);
            response = (WriteCoilResponse) tcpMaster.send(request);
        } catch (ModbusTransportException e) {
            e.printStackTrace();
        }
        if (response == null || response.isException()) {
            master.addErrorCount();
            return false;
        } else {
            return true;
        }
    }
    /**
     * 写[01 Coil Status(0x)] 写多个 function ID = 15
     *
     * @param slaveId
     *            slaveId
     * @param startOffset
     *            开始位置
     * @param bdata
     *            写入的数据
     * @return 是否写入成功
     */
    public static boolean writeCoils(int startOffset, boolean[] bdata,MyModbusMaster master) {
        // 获取master
        ModbusMaster tcpMaster = master.getMaster();
        // 创建请求
        WriteCoilsRequest request;
        WriteCoilsResponse response = null;
        try {
            request = new WriteCoilsRequest(master.getSlaveId(), startOffset, bdata);
            response = (WriteCoilsResponse) tcpMaster.send(request);
        } catch (ModbusTransportException e) {
            e.printStackTrace();
        }
        // 发送请求并获取响应对象
        if (response == null || response.isException()) {
            master.addErrorCount();
            return false;
        } else {
            return true;
        }
    }
    /***
     * 写[03 Holding Register(4x)] 写一个 function ID = 6
     *
     * @param slaveId
     * @param writeOffset
     * @param writeValue
     * @return
     */
    public static boolean writeRegister(int writeOffset, short writeValue,MyModbusMaster master){
        // 获取master
        ModbusMaster tcpMaster = master.getMaster();
        // 创建请求对象
        WriteRegisterRequest request;
        WriteRegisterResponse response = null;
        try {
            request = new WriteRegisterRequest(master.getSlaveId(), writeOffset, writeValue);
            response = (WriteRegisterResponse) tcpMaster.send(request);
        } catch (ModbusTransportException e) {
            e.printStackTrace();
        }
        if (response == null || response.isException()) {
            master.addErrorCount();
            return false;
        } else {
            return true;
        }
    }
    /**
     *
     * 写入[03 Holding Register(4x)]写多个 function ID=16
     *
     * @param slaveId
     *            modbus的slaveID
     * @param startOffset
     *            起始位置偏移量值
     * @param sdata
     *            写入的数据
     * @return 返回是否写入成功
     */
    public static boolean writeRegisters(int startOffset, short[] sdata,MyModbusMaster master){
        // 获取master
        ModbusMaster tcpMaster = master.getMaster();
        // 创建请求对象
        WriteRegistersRequest request;
        // 发送请求并获取响应对象
        ModbusResponse response = null;
        try {
            request = new WriteRegistersRequest(master.getSlaveId(), startOffset, sdata);
            response = tcpMaster.send(request);
        } catch (ModbusTransportException e) {
            e.printStackTrace();
        }
        if (response.isException()) {
            //log.error(response.getExceptionMessage());
            master.addErrorCount();
            return false;
        } else {
            return true;
        }
    }
    /**
     * 写入数字类型的模拟量(如:写入Float类型的模拟量、Double类型模拟量、整数类型Short、Integer、Long)
     *
     * @param slaveId
     * @param offset
     * @param value
     *            写入值,Number的子类,例如写入Float浮点类型,Double双精度类型,以及整型short,int,long
     * @param registerCount
     *            ,com.serotonin.modbus4j.code.DataType
     */
    public static void writeHoldingRegister(int offset, Number value, int dataType,MyModbusMaster master){
        // 获取master
        ModbusMaster tcpMaster = master.getMaster();
        // 类型
        BaseLocator<Number> locator = BaseLocator.holdingRegister(master.getSlaveId(), offset, dataType);
        try {
            tcpMaster.setValue(locator, value);
        } catch (ModbusTransportException | ErrorResponseException e) {
            e.printStackTrace();
        }
    }
    public static BatchResults<Integer> readMutilRegisters(BatchRead<Integer> batch,MyModbusMaster master){
        batch.setContiguousRequests(false);
        try {
            return master.getMaster().send(batch);
        } catch (ModbusTransportException | ErrorResponseException e) {
            e.printStackTrace();
        }
        return null;
    }
    /**
     *     构造线圈读取节点
     * @param offset
     * @param master
     * @return
     */
    public static BaseLocator<?> createBaseLocator(int offset,MyModbusMaster master) {
        return BaseLocator.coilStatus(master.getSlaveId(), offset);
    }
    /**
     *     构造读取节点
     * @param offset
     * @param master
     * @return
     */
    public static BaseLocator<?> createBaseLocator(int offset,int datatype,MyModbusMaster master) {
        return BaseLocator.holdingRegister(master.getSlaveId(), offset, datatype);
    }
    /**
     *     读取float类型数据
     * @param obj    Short类型
     * @return
     */
    public static float readShortToFloat(Object obj) {
        return (float)ComBase.changeShortToInt((Short)obj);
    }
    /**
     *     读取int类型数据
     * @param obj    Short类型
     * @return
     */
    public static int readShortToInt(Object obj) {
        return ComBase.changeShortToInt((Short)obj);
    }
    /**
     *     读取Boolean类型数据
     * @param obj    Boolean类型
     * @return
     */
    public static int readBooleanToInt(Object obj) {
        return ((Boolean)obj?1:0);
    }
}
ElectricalSystem_MonitorServer_2KW/src/com/sql/Sql_Mysql.java
@@ -1,905 +1,912 @@
package com.sql;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import com.base.Com;
/**
 *     创建数据库以及表格
 * @author 军
 *
 */
public class Sql_Mysql
{
    //--------------------------------------------------------------------------------------------//
    final public static String DB_AppSys = "`db_app_sys`";
    final public static String DB_BATT_INF = "`db_battinf`";
    final public static String DB_BATT_TESTDATA = "`db_batt_testdata`";
    final public static String DB_PARAM = "`db_param`";
    final public static String DB_ALARM = "`db_alarm`";
    final public static String DB_USER = "`db_user`";
    final public static String DB_RamDB = "`db_ram_db`";
    final public static String DB_RamDB_BATT_RT = "`db_ram_batt_rt`";
    final public static String DB_LD9_TESTDATA = "`db_ld9_testdata`";
    final public static String WEB_Site = "web_site";
    final public static String DB_Equipstand = "`db_equipstand`";                                        //独立设备信息数据库
    final public static String DB_Equip_History = "`db_equip_history`";                                    //独立设备历史数据数据库
    final public static String DB_Equip_Alarm = "`db_equip_alarm`";
    final public static String DB_DynamicSystem = "`db_dynamicsystem`";
    final public static String DB_Elemachinery = "`db_elemachinery`";
    final public static String DB_Motor_Realhistory = "`db_motor_realhistory`";
    final public static String DB_ElectricSystem = "`db_electricsystem`";
    //--------------------------------------------------------------------------------------------//
    public final static String TB_HardDevSmsState = "tb_hard_dev_sms_state";
    //--------------------------------------------------------------------------------------------//
    public final static String TB_AppSys = "tb_app_sys";
    public final static String TB_BattTestDataInf = "tb_batttestdata_inf";
    public final static String TB_Ld9testdata_inf=DB_LD9_TESTDATA+".tb_ld9testdata_inf";
    public final static String TB_Ld9testdata=DB_LD9_TESTDATA+".tb_ld9testdata_";
    public final static String TB_Ld9testdatastop=DB_LD9_TESTDATA+".tb_ld9testdatastop_";
    public final static String TB_UserInf = "tb_user_inf";
    public final static String TB_UserLog = "tb_user_log";
    public final static String TB_UserBattGroup_BaoJiGroup = "tb_user_battgroup_baojigroup";
    public final static String TB_UserBattGroup_BaoJiGroup_BattGroup = "tb_user_battgroup_baojigroup_battgroup";
    public final static String TB_UserBattGroup_BaoJiGroup_Usr = "tb_user_battgroup_baojigroup_usr";
    public final static String TB_UserTaskTemplate = "tb_user_task_batt_template";
    public final static String TB_UserTask = "tb_user_task";
    public final static String TB_UserPaiXiu = "tb_user_paixiu";
    public final static String TB_UserListForTask = "tb_user_task_user_list";
    public final static String TB_UserTaskParam = "tb_user_task_param";
    public final static String TB_UserBattCkeckTask = "tb_user_task_batt_check";
    public final static String TB_UserBattTestTask = "tb_user_task_batt_test";
    public final static String TB_UserBattTaskChange = "tb_user_task_change";
    public final static String TB_UserSms = "tb_user_sms";
    public final static String TB_UserSmsFormat = "tb_user_sms_format";
    public final static String TB_UserPermitGroup = "tb_user_permitgroup";
    public final static String TB_UserPermitGroupData = "tb_user_permitgroup_data";
    public final static String TB_UserJieJiaRi = "tb_user_jiejiari";
    //--------------------------------------------------------------------------------------------//
    //--------------------------------------------------------------------------------------------//
    public final static String ServerState_Table = DB_RamDB + ".`tb_server_state`";
    public final static String BattRtData_Table = DB_RamDB + ".`tb_batt_rtdata`";
    public final static String BattRtState_Table = DB_RamDB + ".`tb_batt_rtstate`";
    public final static String LD9_State_Table =DB_RamDB+".tb_LD9_state";
    public final static String LD9_Setparam_Table =DB_RamDB+".tb_LD9_setparam";
    public final static String CInterfaceState_Table = DB_RamDB + ".`tb_cinterface_state`";
    public final static String HardDevSmsState_Table = DB_RamDB + ".`tb_hard_dev_sms_state`";
    public final static String FBS9100State_Table = DB_RamDB + ".`tb_fbs9100_state`";
    public final static String FBS9100S_DcDcState_Table = DB_RamDB + ".`tb_fbs9100s_dcdc_state`";
    public final static String FBS9100SetParam_Table = DB_RamDB + ".`tb_fbs9100_setparam`";
    public final static String FBS9100S_DFUState_Table = DB_RamDB + ".`tb_fbs9100s_DFU_state`";
    public final static String BMP7100State_Table = DB_RamDB + ".`tb_bpm7100_state`";
    public final static String FBS9600State_Table = DB_RamDB + ".`tb_fbs9600_state`";
    public final static String FBS9600SetParam_Table = DB_RamDB + ".`tb_fbs9600_setparam`";
    //public final static String FBS9600Param_Table = DB_RamDB + ".`tb_fbs9600_param`";
    public final static String SocketClientStateTable = DB_RamDB + ".`tb_socketclient_state`";
    public final static String RamDB_CMCC_POWER_Data = DB_RamDB + ".`cmcc_power_data`";
    public final static String RamLD9_UpdateStatue_Table = DB_RamDB + ".`tb_ld9_updatestatue`";                //9度设备升级表
    public final static String LD9_ConcentratorParam_Table = DB_RamDB + ".`tb_ld9_ConcentrateParam`";         //9度汇集器参数表
    public final static String LD9_ConcentratorState_Table = DB_RamDB + ".`tb_ld9_ConcentrateState`";         //9度汇集器状态表
    public final static String BTSGPRSState_Table = DB_RamDB + ".`tb_bts_gprs_state`";
    //--------------------------------------------------------------------------------------------//
    //--------------------------------------------------------------------------------------------//
    public final static String AppSys_Table = DB_AppSys + ".`tb_app_sys`";
    public final static String FBSDevStateChangeInf_Table = DB_AppSys + ".`tb_fbsdev_statechange_inf`";
    public final static String BattInf_Table = DB_BATT_INF + ".`tb_battinf`";
    public final static String BattCurrInf_Table = DB_BATT_INF + ".`tb_battcurr_inf`";
    public final static String BattMainInf_Table = DB_BATT_INF + ".`tb_batt_maint_inf`";
    public final static String BattMainProcess_Table = DB_BATT_INF + ".`tb_batt_maint_process`";
    public final static String BattTestDataInf_Table = DB_BATT_TESTDATA + ".`tb_batttestdata_inf`";
    public final static String BattResData_Table = DB_BATT_TESTDATA + ".`tb_BattResData`";
    public final static String BattResDataInf_Table = DB_BATT_TESTDATA + ".`tb_battresdata_inf`";
    public final static String UserInfTable = DB_USER + ".`tb_user_inf`";
    public final static String UserLogTable = DB_USER + ".`tb_user_log`";
    public final static String UserBattGroup_BaoJiGroup_Table = DB_USER + ".`tb_user_battgroup_baojigroup`";
    public final static String UserBattGroup_BaoJiGroup_BattGroupTable = DB_USER + ".`tb_user_battgroup_baojigroup_battgroup`";
    public final static String UserBattGroup_BaoJiGroup_UsrTable = DB_USER + ".`tb_user_battgroup_baojigroup_usr`";
    public final static String UserTaskTemplateTable = DB_USER + ".`tb_user_task_batt_template`";
    public final static String UserTaskTable = DB_USER + ".`tb_user_task`";
    public final static String UserPaiXiuTable = DB_USER + ".`tb_user_paixiu`";
    public final static String UserListForTaskTable = DB_USER + ".`tb_user_task_user_list`";
    public final static String UserTaskParamTable = DB_USER + ".`tb_user_task_param`";
    public final static String UserBattCheckTaskTable = DB_USER + ".`tb_user_task_batt_check`";
    public final static String UserBattTestTaskTable = DB_USER + ".`tb_user_task_batt_test`";
    public final static String UserBattTaskChangeTable = DB_USER + ".`tb_user_task_change`";
    public final static String UsrBattMaintCheck_Table = DB_USER + ".`tb_user_battmaint_check`";
    public final static String UsrBattMaintCheckProcess_Table = DB_USER + ".`tb_user_battmaint_check_process`";
    public final static String UserSmsTable = DB_USER + ".`tb_user_sms`";
    public final static String UserSmsFormatTable = DB_USER + ".`tb_user_sms_format`";
    public final static String UserPermitGroupTable = DB_USER + ".`tb_user_permitgroup`";
    public final static String UserPermitGroupDataTable = DB_USER + ".`tb_user_permitgroup_data`";
    public final static String UserJieJiaRiTable = DB_USER + ".`tb_user_jiejiari`";
    //--------------------------------------------------------------------------------------------//
    public final static String Tb_BattDischarge_ParamTable = WEB_Site+".tb_battdischarge_param";        //电池放电计划参数表
    public final static String Tb_BattMap_InformationTable = WEB_Site+".tb_battmap_information";        //电池定位信息表
    public final static String Tb_Batt_DevDischargeTable = WEB_Site+".tb_batt_devdischarge";            //几种运营商的电压电流情况表
    public final static String Tb_BattDischarge_PlanTable = WEB_Site+".tb_battdischarge_plan";            //电池放电计划表
    public final static String Tb_Batt_ElectricityTable = WEB_Site+".tb_batt_electricity";                //运营商设备的用电量表
    public final static String Tb_Batt_Devdischarge_ParamTable = WEB_Site+".tb_batt_devdischarge_param";    //运营商设备记录的参数表
    public final static String Tb_Batt_Devdischarge_CMTable = WEB_Site+".tb_batt_devdischarge_CM";            //移动每个时间戳的电压电流功率表
    public final static String Tb_Batt_Devdischarge_CTTable = WEB_Site+".tb_batt_devdischarge_CT";            //电信每个时间戳的电压电流功率表
    public final static String Tb_Batt_Devdischarge_CUTable = WEB_Site+".tb_batt_devdischarge_CU";            //联通每个时间戳的电压电流功率表
    public final static String Tb_CustomPageTable = WEB_Site + ".tb_custompage";                            //页面导航表
    public final static String Tb_Vip_UserTable = WEB_Site + ".tb_vip_user";                                //超级管理员表
    public final static String Tb_Batt_Param_LowTable = WEB_Site + ".tb_batt_param_low";                    //蓄电池各种告警更换参数表
    public final static String Tb_AnnounceTable = WEB_Site + ".tb_announce";                                //公告信息表
    public final static String Tb_ProcessSurvey = WEB_Site + ".tb_process_survey";                            //线程监控表
    //--------------------------------------------------------------------------------------------//
    public final static String Tb_Device_InfTable = DB_Equipstand + ".tb_device_inf";                        //独立设备-设备信息表
    public final static String Tb_DevData_Rt = DB_Equipstand + ".tb_devdata_rt_";                            //独立设备-实时状态表
    public final static String Tb_DevData_Rt_Cfg = DB_Equipstand + ".tb_devdata_rt_cfg";                    //独立设备-实时/历史状态配置表
    public final static String Tb_Devdata_Backup_Cfg = DB_Equipstand + ".tb_devdata_backup_cfg";            //独立设备-FTP文件备份信息表
    //--------------------------------------------------------------------------------------------//
    public final static String Tb_DevData_historyTable = DB_Equip_History + ".tb_devdata_history_";            //独立设备-历史实时数据记录表
    public final static String Tb_DevAlarm_Data = DB_Equip_Alarm + ".tb_devalarm_data_";                    //独立设备-实时告警数据记录表
    public final static String Tb_DevAlarm_Data_History = DB_Equip_Alarm + ".tb_devalarm_data_history_";    //独立设备-历史告警数据记录表
    //--------------------------------------------------------------------------------------------//
    public final static String Tb_Dynamicload_inf = DB_DynamicSystem + ".tb_dynamicload_inf";                //设备信息表
    public final static String Tb_Dynamicload_State_rt = DB_DynamicSystem + ".tb_dynamicload_state_rt";        //设备状态表
    public final static String Tb_Dynamicload_Button_Rt = DB_DynamicSystem +".tb_dynamicload_button_rt";    //按钮反馈表
    public final static String Tb_Dynamicload_Control = DB_DynamicSystem + ".tb_dynamicload_control";        //电源柜控制表
    //--------------------------------------------------------------------------------------------//
    public final static String Tb_Motor_inf = DB_Elemachinery + ".tb_motor_inf";                            //电机信息表
    public final static String Tb_Motor_control = DB_Elemachinery + ".tb_motor_control";                    //电机控制表
    public final static String Tb_Load_Motor_state = DB_Elemachinery + ".tb_load_motor_state";                //加载电机状态表
    public final static String Tb_Subject_Motor_state = DB_Elemachinery + ".tb_subject_motor_state";        //受试电机状态表
    public final static String Tb_Devalarm_Rt = DB_Elemachinery + ".tb_devalaram_rt";                        //电机实时告警记录表
    public final static String Tb_Devalarm_History = DB_Elemachinery + ".tb_devalaram_history";                //电机历史告警记录表
    public final static String Tb_Motor_Readdata = DB_Motor_Realhistory + ".tb_motor_readdata_";            //电机历史实时记录表
    //--------------------------------------------------------------------------------------------//
    /***            电源控制相关表                                        *****/
    public final static String Tb_Electric_Control_Single = DB_ElectricSystem + ".tb_electric_control_single";        //电源单点控制表
    public final static String Tb_Electric_Power = DB_ElectricSystem + ".tb_electric_power";                        //电源控制状态表
    public final static String Tb_Electric_Rt = DB_ElectricSystem + ".tb_electric_rt";
    public final static String Tb_Electric_State = DB_ElectricSystem + ".tb_electric_state";
    public final static String Tb_Electric_Switch = DB_ElectricSystem + ".tb_electric_switch";
    //--------------------------------------------------------------------------------------------//
    public Connection mysql_con;
    public Sql_Mysql(Connection conn)
    {
        mysql_con = conn;
    }
    /*
    public static Connection getConnection() throws SQLException, java.lang.ClassNotFoundException{
        String url = "jdbc:mysql://192.168.48.128:3306/studentinfo";
        Class.forName("com.mysql.jdbc.Driver");
        String userName = "root";
        String password = "lmx8688139";
        Connection con = DriverManager.getConnection(url,userName,password);
        return con;
    }
    */
    public void close_con()
    {
        try {
            mysql_con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    public void checkAndCreateDB() throws SQLException
    {
        sqlMysqlExecute("CREATE DATABASE IF NOT EXISTS " + DB_AppSys);
        sqlMysqlExecute("CREATE DATABASE IF NOT EXISTS " + DB_BATT_INF);
        sqlMysqlExecute("CREATE DATABASE IF NOT EXISTS " + DB_BATT_TESTDATA);
        sqlMysqlExecute("CREATE DATABASE IF NOT EXISTS " + DB_PARAM);
        sqlMysqlExecute("CREATE DATABASE IF NOT EXISTS " + DB_ALARM);
        sqlMysqlExecute("CREATE DATABASE IF NOT EXISTS " + DB_USER);
        sqlMysqlExecute("CREATE DATABASE IF NOT EXISTS " + DB_RamDB);
        sqlMysqlExecute("DROP DATABASE IF EXISTS " + DB_RamDB_BATT_RT);
        //sqlMysqlExecute("CREATE DATABASE IF NOT EXISTS " + DB_RamDB_BATT_RT);
        sqlMysqlExecute("CREATE DATABASE IF NOT EXISTS " + WEB_Site);
        String table_0 = "CREATE TABLE IF NOT EXISTS " + AppSys_Table
                        + " ( `num` INT NOT NULL AUTO_INCREMENT,"
                        + "`SqlDB_Version` FLOAT NOT NULL DEFAULT '1.0',"
                        + "`SqlDB_BackUpTime` DATETIME NOT NULL DEFAULT '2000-1-1 00:00:00',"
                        + "`SqlDB_BackUpManual_EN` BOOLEAN NOT NULL DEFAULT false, "
                        + "`AppServer_Version` FLOAT NOT NULL DEFAULT '1.0',"
                        + "`AppClient_Version` FLOAT NOT NULL DEFAULT '1.0',"
                        + "`AppName` VARCHAR(50) NOT NULL DEFAULT '0',"
                        + " PRIMARY KEY (`num`)) "
                        + " ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        String table_1 = "CREATE TABLE IF NOT EXISTS " + BattInf_Table
                        + " ( `num` INT NOT NULL AUTO_INCREMENT,"
                        + "`StationId` VARCHAR(20) NOT NULL DEFAULT '0',"
                        + "`StationName` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`StationName1` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`StationName2` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`StationName3` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`StationName4` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`StationName5` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`StationName6` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`StationName7` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`StationName8` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`StationName9` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`StationIP` VARCHAR(20) NOT NULL DEFAULT '0',"
                        + "`FBSDeviceId` BIGINT NOT NULL DEFAULT '0',"
                        + "`FBSDeviceIp` VARCHAR(50) NOT NULL DEFAULT '192.168.0.88',"
                        + "`FBSDeviceName` VARCHAR(100) NOT NULL DEFAULT '0',"
                        + "`GroupIndexInFBSDevice` INT NOT NULL DEFAULT '0',"
                        + "`BattModel` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`BattGroupId` INT NOT NULL DEFAULT '0',"
                        + "`BattGroupNum` INT NOT NULL DEFAULT '0',"
                        + "`BattGroupName` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`BattGroupName1` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`BattGroupName2` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`BattGroupName3` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`BattGroupName4` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`BattGroupName5` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`BattGroupName6` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`FloatVolLevel` FLOAT NOT NULL DEFAULT '1.12',"
                        + "`OfflineVolLevel` FLOAT NOT NULL DEFAULT '1.06',"
                        + "`BattFloatCurrent` FLOAT NOT NULL DEFAULT '0',"
                        + "`DeviceId` VARCHAR(20) NOT NULL DEFAULT '0',"
                        + "`DeviceName` VARCHAR(100) NOT NULL DEFAULT '0',"
                        + "`MonCount` INT NOT NULL DEFAULT '0',"
                        + "`MonCapStd` FLOAT NOT NULL DEFAULT '0',"
                        + "`MonVolStd` FLOAT NOT NULL DEFAULT '0',"
                        + "`MonResStd` FLOAT NOT NULL DEFAULT '0',"
                        + "`MonSerStd` FLOAT NOT NULL DEFAULT '0',"
                        + "`MonTmpStd` FLOAT NOT NULL DEFAULT '0',"
                        + "`MonVolLowToAvg` FLOAT NOT NULL DEFAULT '0',"
                        + "`MonNum` INT NOT NULL DEFAULT '0',"
                        + "`BattProducer` VARCHAR(45) NOT NULL DEFAULT '0',"
                        + "`BattProductDate` DATE NOT NULL DEFAULT '2006-07-06',"
                        + "`BattInUseDate` DATE NOT NULL DEFAULT '2006-07-06',"
                        + "`BattGuarantDayCount` INT NOT NULL DEFAULT '1095',"
                        + "`SignalId` VARCHAR(20) NOT NULL DEFAULT '0',"
                        + "`CInterFaceId` INT NOT NULL DEFAULT '0',"
                        + "`SignalName` VARCHAR(50) NOT NULL DEFAULT '0',"
                        + "INDEX index_station_id (`StationId`), "
                        + "INDEX index_battgroup_id (`BattGroupId`), "
                        + "INDEX index_station_name (`StationName`), "
                        + "INDEX index_battgroup_name (`BattGroupName`), "
                        + "PRIMARY KEY (`num`)) "
                        + "ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        String table_2 = "CREATE TABLE IF NOT EXISTS " + BattCurrInf_Table
                        + " ( `num` INT NOT NULL AUTO_INCREMENT,"
                        + "`StationId` VARCHAR(20) NOT NULL DEFAULT '0',"
                        + "`BattGroupId` VARCHAR(20) NOT NULL DEFAULT '0',"
                        + "`BattGroupName` VARCHAR(100) NOT NULL DEFAULT '0',"
                        + "`CurrDeviceId` VARCHAR(20) NOT NULL DEFAULT '0',"
                        + "`CurrDeviceName` VARCHAR(100) NOT NULL DEFAULT '0',"
                        + "`CurrValueId` VARCHAR(20) NOT NULL DEFAULT '0',"
                        + "`CurrValueName` VARCHAR(100) NOT NULL DEFAULT '0',"
                        + "PRIMARY KEY (`num`)) "
                        + "ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        String table_3 = "CREATE TABLE IF NOT EXISTS " + BattMainInf_Table
                        + " ( `num` BIGINT NOT NULL AUTO_INCREMENT, "
                        + "`BattGroupId` INT NOT NULL DEFAULT 0, "
                        + "`usr_id` INT NOT NULL DEFAULT 0, "
                        + "`fault_type_id` INT NOT NULL DEFAULT 0, "
                        + "`fault_type` VARCHAR(50) NOT NULL DEFAULT ' ', "
                        + "`fault_level` INT NOT NULL DEFAULT 0, "
                        + "`fault_caption` VARCHAR(200) NOT NULL DEFAULT ' ', "
                        + "`fault_time` DATETIME NOT NULL DEFAULT '2005-1-1 00:00:00', "
                        + "`record_uid` INT NOT NULL DEFAULT 0, "
                        + "`record_time` DATETIME NOT NULL DEFAULT '2005-1-1 00:00:00', "
                        + "`maint_time_limit` DATETIME NOT NULL DEFAULT '2005-1-1 00:00:00', "
                        + "`maint_type_id` INT NOT NULL DEFAULT 0, "
                        + "`maint_type` VARCHAR(50) NOT NULL DEFAULT ' ', "
                        + "`maint_result` VARCHAR(100) NOT NULL DEFAULT ' ', "
                        + "`maint_done` BOOLEAN NOT NULL DEFAULT false, "
                        + "`maint_done_time` DATETIME DEFAULT '2005-1-1 00:00:00', "
                        + "`maint_close` BOOLEAN NOT NULL DEFAULT false, "
                        + "`master_id` INT NOT NULL DEFAULT 0, "
                        + "`master_audit` INT NOT NULL DEFAULT 0, "                //领导审核
                        + "`appoint_uid` INT NOT NULL DEFAULT 0, "                 //指派给谁
                        + "`copy_uids` VARCHAR(200) NOT NULL DEFAULT ' ', "        //抄送给谁
                        + "`master_check` VARCHAR(100) NOT NULL DEFAULT ' ', "
                        + "`remark` VARCHAR(200) NOT NULL DEFAULT ' ', "
                        + "INDEX index_battgroup_id (`BattGroupId`), "
                        + "INDEX index_user_id (`usr_id`), "
                        + "INDEX index_fault_type_id (`fault_type_id`), "
                        + "INDEX index_maint_type_id (`maint_type_id`), "
                        + "PRIMARY KEY (`num`)) "
                        + "ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        String table_3_1 = "CREATE TABLE IF NOT EXISTS " + BattMainProcess_Table
                        + " ( `num` BIGINT NOT NULL AUTO_INCREMENT, "
                        + "`batt_maint_rec_id` BIGINT NOT NULL DEFAULT 0, "
                        + "`usr_id` INT NOT NULL DEFAULT 0, "
                        + "`work_caption` VARCHAR(200) NOT NULL DEFAULT ' ', "
                        + "`work_caption_time` DATETIME DEFAULT '2005-1-1 00:00:00', "
                        + "INDEX index_batt_maint_rec_id (`batt_maint_rec_id`), "
                        + " PRIMARY KEY (`num`)) "
                        + "ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        String table_3_2 = "CREATE TABLE IF NOT EXISTS " + UsrBattMaintCheck_Table
                        + " ( `num` BIGINT NOT NULL AUTO_INCREMENT, "
                        + "`StationId` INT NOT NULL DEFAULT 0, "
                        + "`usr_id` INT NOT NULL DEFAULT 0, "
                        + "`master_id` INT NOT NULL DEFAULT 0, "
                        + "`appoint_uid` INT NOT NULL DEFAULT 0, "                 //指派给谁
                        + "`copy_uids` VARCHAR(200) NOT NULL DEFAULT ' ', "        //抄送给谁
                        + "`task_type_id` INT NOT NULL DEFAULT 0, "
                        + "`task_level` INT NOT NULL DEFAULT 0, "
                        + "`task_caption` VARCHAR(200) NOT NULL DEFAULT ' ', "
                        + "`task_time_start` DATETIME NOT NULL DEFAULT '2005-1-1 00:00:00', "
                        + "`task_time_end` DATETIME NOT NULL DEFAULT '2005-1-1 00:00:00', "
                        + "`task_process` VARCHAR(200) NOT NULL DEFAULT ' ', "
                        + "`task_done` BOOLEAN NOT NULL DEFAULT false, "
                        + "`task_done_time` DATETIME DEFAULT '2005-1-1 00:00:00', "
                        + "`origin_usr_work_mark` INT NOT NULL DEFAULT 0, "
                        + "`task_done_confirm` BOOLEAN NOT NULL DEFAULT false, "
                        + "`master_audit` INT NOT NULL DEFAULT 0, "                //领导审核
                        + "`remark` VARCHAR(200) NOT NULL DEFAULT ' ', "
                        + "INDEX index_station_id (`StationId`), "
                        + "INDEX index_user_id (`usr_id`), "
                        + "INDEX index_task_type_id (`task_type_id`), "
                        + "PRIMARY KEY (`num`)) "
                        + "ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        String table_3_2_1 = "CREATE TABLE IF NOT EXISTS " + UsrBattMaintCheckProcess_Table
                        + " ( `num` BIGINT NOT NULL AUTO_INCREMENT, "
                        + "`task_rec_id` BIGINT NOT NULL DEFAULT 0, "
                        + "`usr_id` INT NOT NULL DEFAULT 0, "
                        + "`work_caption` VARCHAR(200) NOT NULL DEFAULT ' ', "
                        + "`work_caption_time` DATETIME DEFAULT '2005-1-1 00:00:00', "
                        + "INDEX index_task_rec_id (`task_rec_id`), "
                        + " PRIMARY KEY (`num`)) "
                        + "ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        String table_4 = "CREATE TABLE IF NOT EXISTS " + BattTestDataInf_Table
                        + " ( `num` BIGINT NOT NULL AUTO_INCREMENT, "
                        + "`BattGroupId` INT NOT NULL DEFAULT 0, "
                        + "`test_record_count` INT NOT NULL DEFAULT 0, "
                        + "`test_record_count_ex` INT NOT NULL DEFAULT 0, "
                        + "`test_type` INT NOT NULL DEFAULT 0, "
                        + "`record_time_interval` 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', "
                        + "`test_starttime_ex` DATETIME NOT NULL DEFAULT '1982-01-01 00:00:00', "
                        + "`test_starttype` INT NOT NULL DEFAULT 0, "
                        + "`record_time` DATETIME NOT NULL DEFAULT '1982-01-01 00:00:00', "
                        + "`test_timelong` INT NOT NULL DEFAULT 0, "
                        + "`test_stoptype` INT 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, "
                        + "`max_monnum` INT NOT NULL DEFAULT 0, "
                        + "`max_monvol` FLOAT NOT NULL DEFAULT 0, "
                        + "`min_monnum` INT NOT NULL DEFAULT 0, "
                        + "`min_monvol` FLOAT NOT NULL DEFAULT 0, "
                        + "`mon_num` INT NOT NULL DEFAULT 0, "
                        + "`mon_vol` FLOAT NOT NULL DEFAULT 0, "
                        + "`upload_usr_id` INT NOT NULL DEFAULT 0, "
                        + "`upload_data_ext` INT NOT NULL DEFAULT 0, "
                        + "`upload_client_type` INT NOT NULL DEFAULT 0, "
                        + "INDEX index_battgroup_id (`BattGroupId`), "
                        + "INDEX index_test_record_count (`test_record_count`), "
                        + "INDEX index_test_type (`test_type`), "
                        + "INDEX index_test_starttime (`test_starttime`), "
                        + "PRIMARY KEY (`num`)) "
                        + "ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        String table_5 = "CREATE TABLE IF NOT EXISTS " + BattResDataInf_Table
                        + " ( `num` BIGINT NOT NULL AUTO_INCREMENT, "
                        + "`BattGroupId` INT NOT NULL DEFAULT 0, "
                        + "`test_record_count` INT NOT NULL DEFAULT 0, "
                        + "`test_record_count_ex` 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, "
                        + "`test_starttime` DATETIME NOT NULL DEFAULT '1982-01-01 00:00:00', "
                        + "`test_starttime_ex` DATETIME NOT NULL DEFAULT '1982-01-01 00:00:00', "
                        + "`test_devtype` INT NOT NULL DEFAULT 0, "
                        + "`record_time` DATETIME NOT NULL DEFAULT '1982-01-01 00:00:00', "
                        + "`group_vol` FLOAT NOT NULL DEFAULT 0, "
                        + "`test_curr` FLOAT NOT NULL DEFAULT 0, "
                        + "`upload_usr_id` INT NOT NULL DEFAULT 0, "
                        + "`upload_client_type` INT NOT NULL DEFAULT 0, "
                        + "INDEX index_battgroup_id (`BattGroupId`), "
                        + "INDEX index_test_record_count (`test_record_count`), "
                        + "INDEX index_test_starttime (`test_starttime`), "
                        + "PRIMARY KEY (`num`)) "
                        + "ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        String table_6 = "DROP TABLE IF EXISTS " + SocketClientStateTable + "; ";
        String table_7 = "CREATE TABLE IF NOT EXISTS " + SocketClientStateTable
                        + "(`num` BIGINT NOT NULL AUTO_INCREMENT, "
                        + "`uId` INT NOT NULL DEFAULT 0, "
                        + "`client_type` INT NOT NULL DEFAULT 0, "
                        + "`client_id` BIGINT NOT NULL DEFAULT 0, "
                        + "`BattGroupId` INT NOT NULL DEFAULT 0, "
                        + "`client_is_connected` BOOLEAN NOT NULL DEFAULT false, "
                        + "`client_ip` VARCHAR(64) NOT NULL DEFAULT ' ', "
                        + "`client_conn_time` DATETIME NOT NULL DEFAULT '1980-01-01', "
                        + "`client_disconn_time` DATETIME NOT NULL DEFAULT '1980-01-01', "
                        + "INDEX index_user_id (`uId`), "
                        + "INDEX index_client_type (`client_type`), "
                        + "PRIMARY KEY (`num`)) "
                        + "ENGINE=MEMORY DEFAULT CHARSET=utf8;";
        String table_8 = "CREATE TABLE IF NOT EXISTS " + FBSDevStateChangeInf_Table
                        + "(`num` BIGINT NOT NULL AUTO_INCREMENT, "
                        + "`dev_id` INT NOT NULL DEFAULT 0, "
                        + "`rec_time` DATETIME NOT NULL DEFAULT '1980-01-01', "
                        + "`last_stat` INT NOT NULL DEFAULT 0, "
                        + "`now_stat` INT NOT NULL DEFAULT 0, "
                        + "`state_change_reason` INT NOT NULL DEFAULT 0, "
                        + "`dev_alarm` INT NOT NULL DEFAULT 0, "
                        + "INDEX index_dev_id (`dev_id`), "
                        + "PRIMARY KEY (`num`)) "
                        + "ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        //-------------------------------------------------------------------------------------//
        //-------------------------------------------------------------------------------------//
        sqlMysqlUseDB(Sql_Mysql.DB_AppSys);
        if(false == sqlMysqlCheckIfTableExist(TB_AppSys))
        {
            sqlMysqlExecute(table_0);
            sqlMysqlExecute("INSERT INTO " + Sql_Mysql.AppSys_Table
                                + " (AppName) VALUES ('蓄电池组综合管理系统')");
        }
        //-------------------------------------------------------------------------------------//
        {
            ResultSet rest = sqlMysqlQuery("SELECT AppServer_Version FROM " + Sql_Mysql.AppSys_Table);
            if(rest.next()) {
                float ser_version = rest.getFloat(1);
                if(ser_version < 1.387) {
                    sqlMysqlExecute("UPDATE " + Sql_Mysql.AppSys_Table + " SET AppServer_Version=1.388");
                    sqlMysqlExecute("USE db_batt_testdata");
                    sqlMysqlExecute("UPDATE tb_batttestdata_inf SET "
                                    + " test_starttime=date_sub(test_starttime, interval 1 month) "
                                    + " WHERE upload_usr_id>0");
                }
            }
        }
        //---------------------------------------------------------------------------------------------//
        ResultSet res0 = sqlMysqlQuery("SELECT * FROM information_schema.columns"
                                + " WHERE table_schema='db_app_sys'"
                                + " AND table_name='tb_app_sys'"
                                + " AND column_name='SqlDB_BackUpTime'");
        if(false == res0.next()) {
            sqlMysqlExecute("ALTER TABLE " + AppSys_Table
                            + " ADD COLUMN `SqlDB_BackUpTime` DATETIME NOT NULL DEFAULT '2000-1-1 00:00:00'"
                            + " AFTER `SqlDB_Version`,"
                            + " ADD COLUMN `SqlDB_BackUpManual_EN` BOOLEAN NOT NULL DEFAULT false"
                            + " AFTER `SqlDB_BackUpTime`");
        }
        res0 = sqlMysqlQuery("SELECT * FROM information_schema.columns"
                            + " WHERE table_schema='db_app_sys'"
                            + " AND table_name='tb_app_sys'"
                            + " AND column_name='SqlDB_BackUpManual_EN'");
        if(false == res0.next()) {
            sqlMysqlExecute("ALTER TABLE " + AppSys_Table
                            + " ADD COLUMN `SqlDB_BackUpManual_EN` BOOLEAN NOT NULL DEFAULT false"
                            + " AFTER `SqlDB_BackUpTime`");
        }
        //---------------------------------------------------------------------------------------------//
        sqlMysqlExecute(table_1);
        sqlMysqlExecute(table_2);
        sqlMysqlExecute(table_3);
        sqlMysqlExecute(table_3_1);
        sqlMysqlExecute(table_3_2);
        sqlMysqlExecute(table_3_2_1);
        sqlMysqlExecute(table_4);
        sqlMysqlExecute(table_5);
        sqlMysqlExecute(table_6);
        sqlMysqlExecute(table_7);
        sqlMysqlExecute(table_8);
        //---------------------------------------------------------------------------------------------//
        ResultSet res = sqlMysqlQuery("show index from " + BattInf_Table + " where column_name='BattGroupId'");
        if(false == res.next())
        {
            sqlMysqlExecute("ALTER TABLE " + BattInf_Table + " ADD INDEX `index_station_id` (`StationId` ASC);");
            sqlMysqlExecute("ALTER TABLE " + BattInf_Table + " ADD INDEX `index_battgroup_id` (`BattGroupId` ASC);");
            sqlMysqlExecute("ALTER TABLE " + BattInf_Table + " ADD INDEX `index_station_name` (`StationName` ASC);");
            sqlMysqlExecute("ALTER TABLE " + BattInf_Table + " ADD INDEX `index_battgroup_name` (`BattGroupName` ASC);");
        }
        //---------------------------------------------------------------------------------------------//
        //-------------------------------- 2017-06-06 by mxpopstar ------------------------------------//
                res = sqlMysqlQuery("SELECT * FROM information_schema.columns"
                                        + " WHERE table_schema='db_battinf'"
                                        + " AND table_name='tb_battinf'"
                                        + " AND column_name='BattGuarantDayCount'");
                if(false == res.next()) {
                    sqlMysqlExecute("ALTER TABLE " + BattInf_Table
                                    + " ADD COLUMN `BattGuarantDayCount` INT NOT NULL DEFAULT 1095 AFTER `BattInUseDate`");
                }
                //---------------------------------------------------------------------------------------------//
        //---------------------------------------------------------------------------------------------//
        res = sqlMysqlQuery("SELECT * FROM information_schema.columns"
                                + " WHERE table_schema='db_battinf'"
                                + " AND table_name='tb_batt_maint_inf'"
                                + " AND column_name='master_audit'");
        if(false == res.next()) {
            sqlMysqlExecute("ALTER TABLE " + BattMainInf_Table
                            + " ADD COLUMN `fault_type_id` INT NOT NULL DEFAULT 0 AFTER `usr_id`,"
                            + " ADD COLUMN `maint_type_id` INT NOT NULL DEFAULT 0 AFTER `maint_time_limit`,"
                            + " ADD COLUMN `master_audit` INT NOT NULL DEFAULT 0 AFTER `master_id`,"
                            + " ADD COLUMN `maint_close` BOOLEAN NOT NULL DEFAULT FALSE AFTER `maint_done_time`,"
                            + " ADD COLUMN `appoint_uid` INT NOT NULL DEFAULT 0 AFTER `master_audit`,"
                            + " ADD COLUMN `copy_uids` VARCHAR(200) NOT NULL DEFAULT ' ' AFTER `master_audit`");
        }
        //---------------------------------------------------------------------------------------------//
        //---------------------------------------------------------------------------------------------//
        res = sqlMysqlQuery("show index from " + BattTestDataInf_Table + " where column_name='test_starttime'");
        if(false == res.next())
        {
            sqlMysqlExecute("ALTER TABLE " + BattTestDataInf_Table + " ADD INDEX `index_test_record_count` (`test_record_count` ASC);");
            sqlMysqlExecute("ALTER TABLE " + BattTestDataInf_Table + " ADD INDEX `index_test_type` (`test_type` ASC);");
            sqlMysqlExecute("ALTER TABLE " + BattTestDataInf_Table + " ADD INDEX `index_test_starttime` (`test_starttime` ASC);");
        }
        //---------------------------------------------------------------------------------------------//
        //---------------------------------------------------------------------------------------------//
        res = sqlMysqlQuery("show index from " + BattResDataInf_Table + " where column_name='test_starttime'");
        if(false == res.next())
        {
            sqlMysqlExecute("ALTER TABLE " + BattResDataInf_Table + " ADD INDEX `index_test_record_count` (`test_record_count` ASC);");
            sqlMysqlExecute("ALTER TABLE " + BattResDataInf_Table + " ADD INDEX `index_test_type` (`test_type` ASC);");
            sqlMysqlExecute("ALTER TABLE " + BattResDataInf_Table + " ADD INDEX `index_test_starttime` (`test_starttime` ASC);");
        }
        //---------------------------------------------------------------------------------------------//
        res = sqlMysqlQuery("SELECT * FROM information_schema.columns"
                                        + " WHERE table_schema='db_batt_testdata'"
                                        + " AND table_name='tb_batttestdata_inf'"
                                        + " AND column_name='test_record_count_ex'");
        if(false == res.next())
        {
            sqlMysqlExecute("ALTER TABLE " + BattTestDataInf_Table
                            + " ADD COLUMN `test_record_count_ex` INT NOT NULL DEFAULT 0 AFTER `test_record_count`,"
                            + " ADD COLUMN `test_starttime_ex` DATETIME NOT NULL DEFAULT '1920-01-01 00:00:00' AFTER `test_starttime`,"
                            + " ADD COLUMN `upload_usr_id` INT NOT NULL DEFAULT 0 AFTER `mon_vol`");
        }
        //---------------------------------------------------------------------------------------------//
        //---------------------------------------------------------------------------------------------//
        res = sqlMysqlQuery("SELECT * FROM information_schema.columns"
                                                + " WHERE table_schema='db_batt_testdata'"
                                                + " AND table_name='tb_batttestdata_inf'"
                                                + " AND column_name='upload_data_ext'");
        if(false == res.next())
        {
            sqlMysqlExecute("ALTER TABLE " + BattTestDataInf_Table
                            + " ADD COLUMN `upload_data_ext` INT NOT NULL DEFAULT 0 AFTER `upload_usr_id`,"
                            + " ADD COLUMN `upload_client_type` INT NOT NULL DEFAULT 0 AFTER `upload_data_ext`");
            sqlMysqlExecute("ALTER TABLE " + BattResDataInf_Table
                            + " ADD COLUMN `upload_client_type` INT NOT NULL DEFAULT 0 AFTER `upload_usr_id`");
        }
        //---------------------------------------------------------------------------------------------//
        //----------------------------将num自增字段改为bigint类型---------------------------------------//
        res = sqlMysqlQuery("SELECT DATA_TYPE FROM information_schema.columns"
                                        + " WHERE table_schema='db_batt_testdata'"
                                        + " AND table_name='tb_batttestdata_inf'"
                                        + " AND column_name='num'");
        if(true == res.next()) {
            if(false == "bigint".equals(res.getString("DATA_TYPE").toLowerCase())) {
                sqlMysqlExecute("ALTER TABLE " + BattTestDataInf_Table + " MODIFY COLUMN num BIGINT NOT NULL AUTO_INCREMENT;");
                sqlMysqlExecute("ALTER TABLE " + BattResDataInf_Table + " MODIFY COLUMN num BIGINT NOT NULL AUTO_INCREMENT;");
            }
        }
        //---------------------------------------------------------------------------------------------//
    }
    //使用db数据库
    public void sqlMysqlUseDB(String db) throws SQLException
    {
        sqlMysqlExecute("use " + db);
    }
    //获取电池组机房的个数
    public int getBattStationCount()
    {
        int st_count = 0;
        try {
            sqlMysqlUseDB(Sql_Mysql.DB_BATT_INF);
            String sql_str = "SELECT DISTINCT StationId FROM " + BattInf_Table;
            ResultSet res = sqlMysqlQuery(sql_str);
            while(res.next())
            {
                st_count++;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return st_count;
    }
    /**
     * 检查tb表是否存在
     * @param tb
     * @return
     * @throws SQLException
     */
    public boolean sqlMysqlCheckIfTableExist(String tb) throws SQLException
    {
        String sql_str = "SHOW TABLES LIKE '" + tb + "'";
        ResultSet res = sqlMysqlQuery(sql_str);
        boolean exist = false;
        while(res.next())
        {
            exist = true;
            break;
        }
        return exist;
    }
    //执行sql语句
    public void sqlMysqlExecute(String sql_str) throws SQLException
    {
        Statement sql = mysql_con.createStatement();
        sql.setQueryTimeout(30);
        sql.execute(sql_str);
    }
    //在事物中执行多条sql语句
    public boolean makeManualCommit(ArrayList<String> al_sql_strs)
    {
        boolean exe_res = true;
        try {
            mysql_con.setAutoCommit(false);
            for(int n=0; n<al_sql_strs.size(); n++) {
                sqlMysqlExecute(al_sql_strs.get(n));
            }
            if(true == exe_res) {
                mysql_con.commit();
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            exe_res = false;
        } finally {
            try {
                if(false == exe_res) {
                    mysql_con.rollback();
                }
                mysql_con.setAutoCommit(true);
            } catch (SQLException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
        return exe_res;
    }
    //根据sql语句执行sql查询语句
    public ResultSet sqlMysqlQuery(String sql_str)
    {
        ResultSet res = null;
        try
        {
            Statement sql = mysql_con.createStatement();
            sql.setQueryTimeout(30);
            String query = sql_str;
            res =  sql.executeQuery(query);
        }
        catch(SQLException ex)
        {
            System.err.println("SQLException:" + ex.getMessage());
        }
        return res;
    }
    //根据sql语句执行sql更新语句
    public void sqlMysqlUpdate(String sql_str)
    {
        try
        {
            Statement sql = mysql_con.createStatement();
            sql.setQueryTimeout(30);
            String query = sql_str;
            sql.execute(query);
        }
        catch(SQLException ex)
        {
            System.out.println("SQLException:" + ex.getMessage());
        }
    }
    //根据电池组id 获取机房名称
    public String getStationName(int bg_id)
    {
        String stname = " ";
        String sql_str = "SELECT DISTINCT StationName FROM "
                            + Sql_Mysql.BattInf_Table + " WHERE BattGroupId=" + bg_id;
        ResultSet res = sqlMysqlQuery(sql_str);
        try {
            if(res.next())
            {
                stname = res.getString("StationName");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return stname;
    }
    //根据电池组id 获取电池组名称
    public String getBattGroupName(int bg_id)
    {
        String bgname = " ";
        String sql_str = "SELECT DISTINCT BattGroupName FROM "
                            + Sql_Mysql.BattInf_Table + " WHERE BattGroupId=" + bg_id;
        ResultSet res = sqlMysqlQuery(sql_str);
        try {
            if(res.next())
            {
                bgname = res.getString("BattGroupName");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return bgname;
    }
    //根据用户的id获取用户的名称
    public String getUsrName(int uid)
    {
        String usrname = " ";
        String sql_str = "SELECT uName FROM " + Sql_Mysql.UserInfTable + " WHERE uId=" + uid;
        ResultSet res = sqlMysqlQuery(sql_str);
        try {
            if(res.next())
            {
                usrname = res.getString("uName");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return usrname;
    }
    //根据format_type 获取format_str 的样式
    public String getTaskSmsFormatStr(String format_type)
    {
        String str = "";
        String sql_str = "SELECT DISTINCT "
                        + Sql_Mysql.UserSmsFormatTable + ".format_str"
                        + " FROM " + Sql_Mysql.UserSmsFormatTable
                        + " WHERE "
                        + Sql_Mysql.UserSmsFormatTable + ".format_type='" + format_type + "'";
        ResultSet sql_res = sqlMysqlQuery(sql_str);
        try {
            if(sql_res.next())
            {
                str = sql_res.getString("format_str");
            }
        } catch (SQLException e1) {
            // TODO Auto-generated catch block
            //e1.printStackTrace();
        }
        return str;
    }
    //根据作业id获取作业的名称
    public String getUsrTaskName(int taskid)
    {
        String taskname = " ";
        String sql_str = "SELECT task_name FROM " + Sql_Mysql.UserTaskTable + " WHERE task_id=" + taskid;
        ResultSet res = sqlMysqlQuery(sql_str);
        try {
            if(res.next()) {
                taskname = res.getString("task_name");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return taskname;
    }
    //根据作业id获取用户作业的创建时间
    public String getUsrTaskCreateTime(int taskid)
    {
        String taskcreatetime = " ";
        String sql_str = "SELECT task_create_date FROM " + Sql_Mysql.UserTaskTable + " WHERE task_id=" + taskid;
        ResultSet res = sqlMysqlQuery(sql_str);
        try {
            if(res.next())
            {
                taskcreatetime = Com.getDateTimeFormat(res.getTimestamp("task_create_date"), Com.DTF_YMDhms);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return taskcreatetime;
    }
    //获取新创建的记录的testrecordcount的值
    public int getBattTestRecordCountNew(int bg_id, String table)
    {
        int count = 0;
        boolean res_exe = true;
        String sql_str0 = "SELECT test_record_count_ex FROM " + table
                            + " WHERE BattGroupId=" + bg_id  + " FOR UPDATE";
        String sql_str1 = "UPDATE " + table + " SET test_record_count_ex=test_record_count+1"
                            + " WHERE BattGroupId=" + bg_id;
        String sql_str2 = "SELECT MAX(test_record_count_ex) FROM " + table
                            + " WHERE BattGroupId=" + bg_id;
        String sql_str3 = "INSERT INTO " + table + " (BattGroupId,test_record_count, test_record_count_ex) "
                            + " VALUES (" + bg_id + "," + 1 + "," + 1 + ")";
        try {
            mysql_con.setAutoCommit(false);
            ResultSet res = sqlMysqlQuery(sql_str0);
            if(res.next()) {
                sqlMysqlExecute(sql_str1);
                res = sqlMysqlQuery(sql_str2);
                if(res.next()) {
                    count = res.getInt(1);
                }
            } else {
                count = 1;
                sqlMysqlExecute(sql_str3);
            }
            mysql_con.commit();
        } catch (SQLException e) {
            e.printStackTrace();
            res_exe = false;
        } finally {
            if(false == res_exe) {
                try {
                    mysql_con.rollback();
                    mysql_con.setAutoCommit(true);
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
        return count;
    }
}
package com.sql;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import com.base.Com;
/**
 *     创建数据库以及表格
 * @author 军
 *
 */
public class Sql_Mysql
{
    //--------------------------------------------------------------------------------------------//
    final public static String DB_AppSys = "`db_app_sys`";
    final public static String DB_BATT_INF = "`db_battinf`";
    final public static String DB_BATT_TESTDATA = "`db_batt_testdata`";
    final public static String DB_PARAM = "`db_param`";
    final public static String DB_ALARM = "`db_alarm`";
    final public static String DB_USER = "`db_user`";
    final public static String DB_RamDB = "`db_ram_db`";
    final public static String DB_RamDB_BATT_RT = "`db_ram_batt_rt`";
    final public static String DB_LD9_TESTDATA = "`db_ld9_testdata`";
    final public static String WEB_Site = "web_site";
    final public static String DB_Equipstand = "`db_equipstand`";                                        //独立设备信息数据库
    final public static String DB_Equip_History = "`db_equip_history`";                                    //独立设备历史数据数据库
    final public static String DB_Equip_Alarm = "`db_equip_alarm`";
    final public static String DB_DynamicSystem = "`db_dynamicsystem`";
    final public static String DB_Elemachinery = "`db_elemachinery`";
    final public static String DB_Motor_Realhistory = "`db_motor_realhistory`";
    final public static String DB_ElectricSystem = "`db_electricsystem`";
    final public static String DB_Electric2MWSystem = "`db_electric2mwsystem`";
    //--------------------------------------------------------------------------------------------//
    public final static String TB_HardDevSmsState = "tb_hard_dev_sms_state";
    //--------------------------------------------------------------------------------------------//
    public final static String TB_AppSys = "tb_app_sys";
    public final static String TB_BattTestDataInf = "tb_batttestdata_inf";
    public final static String TB_Ld9testdata_inf=DB_LD9_TESTDATA+".tb_ld9testdata_inf";
    public final static String TB_Ld9testdata=DB_LD9_TESTDATA+".tb_ld9testdata_";
    public final static String TB_Ld9testdatastop=DB_LD9_TESTDATA+".tb_ld9testdatastop_";
    public final static String TB_UserInf = "tb_user_inf";
    public final static String TB_UserLog = "tb_user_log";
    public final static String TB_UserBattGroup_BaoJiGroup = "tb_user_battgroup_baojigroup";
    public final static String TB_UserBattGroup_BaoJiGroup_BattGroup = "tb_user_battgroup_baojigroup_battgroup";
    public final static String TB_UserBattGroup_BaoJiGroup_Usr = "tb_user_battgroup_baojigroup_usr";
    public final static String TB_UserTaskTemplate = "tb_user_task_batt_template";
    public final static String TB_UserTask = "tb_user_task";
    public final static String TB_UserPaiXiu = "tb_user_paixiu";
    public final static String TB_UserListForTask = "tb_user_task_user_list";
    public final static String TB_UserTaskParam = "tb_user_task_param";
    public final static String TB_UserBattCkeckTask = "tb_user_task_batt_check";
    public final static String TB_UserBattTestTask = "tb_user_task_batt_test";
    public final static String TB_UserBattTaskChange = "tb_user_task_change";
    public final static String TB_UserSms = "tb_user_sms";
    public final static String TB_UserSmsFormat = "tb_user_sms_format";
    public final static String TB_UserPermitGroup = "tb_user_permitgroup";
    public final static String TB_UserPermitGroupData = "tb_user_permitgroup_data";
    public final static String TB_UserJieJiaRi = "tb_user_jiejiari";
    //--------------------------------------------------------------------------------------------//
    //--------------------------------------------------------------------------------------------//
    public final static String ServerState_Table = DB_RamDB + ".`tb_server_state`";
    public final static String BattRtData_Table = DB_RamDB + ".`tb_batt_rtdata`";
    public final static String BattRtState_Table = DB_RamDB + ".`tb_batt_rtstate`";
    public final static String LD9_State_Table =DB_RamDB+".tb_LD9_state";
    public final static String LD9_Setparam_Table =DB_RamDB+".tb_LD9_setparam";
    public final static String CInterfaceState_Table = DB_RamDB + ".`tb_cinterface_state`";
    public final static String HardDevSmsState_Table = DB_RamDB + ".`tb_hard_dev_sms_state`";
    public final static String FBS9100State_Table = DB_RamDB + ".`tb_fbs9100_state`";
    public final static String FBS9100S_DcDcState_Table = DB_RamDB + ".`tb_fbs9100s_dcdc_state`";
    public final static String FBS9100SetParam_Table = DB_RamDB + ".`tb_fbs9100_setparam`";
    public final static String FBS9100S_DFUState_Table = DB_RamDB + ".`tb_fbs9100s_DFU_state`";
    public final static String BMP7100State_Table = DB_RamDB + ".`tb_bpm7100_state`";
    public final static String FBS9600State_Table = DB_RamDB + ".`tb_fbs9600_state`";
    public final static String FBS9600SetParam_Table = DB_RamDB + ".`tb_fbs9600_setparam`";
    //public final static String FBS9600Param_Table = DB_RamDB + ".`tb_fbs9600_param`";
    public final static String SocketClientStateTable = DB_RamDB + ".`tb_socketclient_state`";
    public final static String RamDB_CMCC_POWER_Data = DB_RamDB + ".`cmcc_power_data`";
    public final static String RamLD9_UpdateStatue_Table = DB_RamDB + ".`tb_ld9_updatestatue`";                //9度设备升级表
    public final static String LD9_ConcentratorParam_Table = DB_RamDB + ".`tb_ld9_ConcentrateParam`";         //9度汇集器参数表
    public final static String LD9_ConcentratorState_Table = DB_RamDB + ".`tb_ld9_ConcentrateState`";         //9度汇集器状态表
    public final static String BTSGPRSState_Table = DB_RamDB + ".`tb_bts_gprs_state`";
    //--------------------------------------------------------------------------------------------//
    //--------------------------------------------------------------------------------------------//
    public final static String AppSys_Table = DB_AppSys + ".`tb_app_sys`";
    public final static String FBSDevStateChangeInf_Table = DB_AppSys + ".`tb_fbsdev_statechange_inf`";
    public final static String BattInf_Table = DB_BATT_INF + ".`tb_battinf`";
    public final static String BattCurrInf_Table = DB_BATT_INF + ".`tb_battcurr_inf`";
    public final static String BattMainInf_Table = DB_BATT_INF + ".`tb_batt_maint_inf`";
    public final static String BattMainProcess_Table = DB_BATT_INF + ".`tb_batt_maint_process`";
    public final static String BattTestDataInf_Table = DB_BATT_TESTDATA + ".`tb_batttestdata_inf`";
    public final static String BattResData_Table = DB_BATT_TESTDATA + ".`tb_BattResData`";
    public final static String BattResDataInf_Table = DB_BATT_TESTDATA + ".`tb_battresdata_inf`";
    public final static String UserInfTable = DB_USER + ".`tb_user_inf`";
    public final static String UserLogTable = DB_USER + ".`tb_user_log`";
    public final static String UserBattGroup_BaoJiGroup_Table = DB_USER + ".`tb_user_battgroup_baojigroup`";
    public final static String UserBattGroup_BaoJiGroup_BattGroupTable = DB_USER + ".`tb_user_battgroup_baojigroup_battgroup`";
    public final static String UserBattGroup_BaoJiGroup_UsrTable = DB_USER + ".`tb_user_battgroup_baojigroup_usr`";
    public final static String UserTaskTemplateTable = DB_USER + ".`tb_user_task_batt_template`";
    public final static String UserTaskTable = DB_USER + ".`tb_user_task`";
    public final static String UserPaiXiuTable = DB_USER + ".`tb_user_paixiu`";
    public final static String UserListForTaskTable = DB_USER + ".`tb_user_task_user_list`";
    public final static String UserTaskParamTable = DB_USER + ".`tb_user_task_param`";
    public final static String UserBattCheckTaskTable = DB_USER + ".`tb_user_task_batt_check`";
    public final static String UserBattTestTaskTable = DB_USER + ".`tb_user_task_batt_test`";
    public final static String UserBattTaskChangeTable = DB_USER + ".`tb_user_task_change`";
    public final static String UsrBattMaintCheck_Table = DB_USER + ".`tb_user_battmaint_check`";
    public final static String UsrBattMaintCheckProcess_Table = DB_USER + ".`tb_user_battmaint_check_process`";
    public final static String UserSmsTable = DB_USER + ".`tb_user_sms`";
    public final static String UserSmsFormatTable = DB_USER + ".`tb_user_sms_format`";
    public final static String UserPermitGroupTable = DB_USER + ".`tb_user_permitgroup`";
    public final static String UserPermitGroupDataTable = DB_USER + ".`tb_user_permitgroup_data`";
    public final static String UserJieJiaRiTable = DB_USER + ".`tb_user_jiejiari`";
    //--------------------------------------------------------------------------------------------//
    public final static String Tb_BattDischarge_ParamTable = WEB_Site+".tb_battdischarge_param";        //电池放电计划参数表
    public final static String Tb_BattMap_InformationTable = WEB_Site+".tb_battmap_information";        //电池定位信息表
    public final static String Tb_Batt_DevDischargeTable = WEB_Site+".tb_batt_devdischarge";            //几种运营商的电压电流情况表
    public final static String Tb_BattDischarge_PlanTable = WEB_Site+".tb_battdischarge_plan";            //电池放电计划表
    public final static String Tb_Batt_ElectricityTable = WEB_Site+".tb_batt_electricity";                //运营商设备的用电量表
    public final static String Tb_Batt_Devdischarge_ParamTable = WEB_Site+".tb_batt_devdischarge_param";    //运营商设备记录的参数表
    public final static String Tb_Batt_Devdischarge_CMTable = WEB_Site+".tb_batt_devdischarge_CM";            //移动每个时间戳的电压电流功率表
    public final static String Tb_Batt_Devdischarge_CTTable = WEB_Site+".tb_batt_devdischarge_CT";            //电信每个时间戳的电压电流功率表
    public final static String Tb_Batt_Devdischarge_CUTable = WEB_Site+".tb_batt_devdischarge_CU";            //联通每个时间戳的电压电流功率表
    public final static String Tb_CustomPageTable = WEB_Site + ".tb_custompage";                            //页面导航表
    public final static String Tb_Vip_UserTable = WEB_Site + ".tb_vip_user";                                //超级管理员表
    public final static String Tb_Batt_Param_LowTable = WEB_Site + ".tb_batt_param_low";                    //蓄电池各种告警更换参数表
    public final static String Tb_AnnounceTable = WEB_Site + ".tb_announce";                                //公告信息表
    public final static String Tb_ProcessSurvey = WEB_Site + ".tb_process_survey";                            //线程监控表
    //--------------------------------------------------------------------------------------------//
    public final static String Tb_Device_InfTable = DB_Equipstand + ".tb_device_inf";                        //独立设备-设备信息表
    public final static String Tb_DevData_Rt = DB_Equipstand + ".tb_devdata_rt_";                            //独立设备-实时状态表
    public final static String Tb_DevData_Rt_Cfg = DB_Equipstand + ".tb_devdata_rt_cfg";                    //独立设备-实时/历史状态配置表
    public final static String Tb_Devdata_Backup_Cfg = DB_Equipstand + ".tb_devdata_backup_cfg";            //独立设备-FTP文件备份信息表
    //--------------------------------------------------------------------------------------------//
    public final static String Tb_DevData_historyTable = DB_Equip_History + ".tb_devdata_history_";            //独立设备-历史实时数据记录表
    public final static String Tb_DevAlarm_Data = DB_Equip_Alarm + ".tb_devalarm_data_";                    //独立设备-实时告警数据记录表
    public final static String Tb_DevAlarm_Data_History = DB_Equip_Alarm + ".tb_devalarm_data_history_";    //独立设备-历史告警数据记录表
    //--------------------------------------------------------------------------------------------//
    public final static String Tb_Dynamicload_inf = DB_DynamicSystem + ".tb_dynamicload_inf";                //设备信息表
    public final static String Tb_Dynamicload_State_rt = DB_DynamicSystem + ".tb_dynamicload_state_rt";        //设备状态表
    public final static String Tb_Dynamicload_Button_Rt = DB_DynamicSystem +".tb_dynamicload_button_rt";    //按钮反馈表
    public final static String Tb_Dynamicload_Control = DB_DynamicSystem + ".tb_dynamicload_control";        //电源柜控制表
    //--------------------------------------------------------------------------------------------//
    public final static String Tb_Motor_inf = DB_Elemachinery + ".tb_motor_inf";                            //电机信息表
    public final static String Tb_Motor_control = DB_Elemachinery + ".tb_motor_control";                    //电机控制表
    public final static String Tb_Load_Motor_state = DB_Elemachinery + ".tb_load_motor_state";                //加载电机状态表
    public final static String Tb_Subject_Motor_state = DB_Elemachinery + ".tb_subject_motor_state";        //受试电机状态表
    public final static String Tb_Devalarm_Rt = DB_Elemachinery + ".tb_devalaram_rt";                        //电机实时告警记录表
    public final static String Tb_Devalarm_History = DB_Elemachinery + ".tb_devalaram_history";                //电机历史告警记录表
    public final static String Tb_Motor_Readdata = DB_Motor_Realhistory + ".tb_motor_readdata_";            //电机历史实时记录表
    //--------------------------------------------------------------------------------------------//
    /***            电源控制相关表                                        *****/
    public final static String Tb_Electric_Control_Single = DB_ElectricSystem + ".tb_electric_control_single";        //电源单点控制表
    public final static String Tb_Electric_Power = DB_ElectricSystem + ".tb_electric_power";                        //电源控制状态表
    public final static String Tb_Electric_Rt = DB_ElectricSystem + ".tb_electric_rt";
    public final static String Tb_Electric_State = DB_ElectricSystem + ".tb_electric_state";
    public final static String Tb_Electric_Switch = DB_ElectricSystem + ".tb_electric_switch";
    /***            2MW电源相关表                                                                            *****/
    public final static String Tb_electric2MW_rt = DB_Electric2MWSystem + ".tb_electric2MW_rt";
    public final static String Tb_electric2MW_inf = DB_Electric2MWSystem + ".tb_electric2MW_inf";
    public final static String Tb_electric2MW_control = DB_Electric2MWSystem + ".tb_electric2MW_control";
    //--------------------------------------------------------------------------------------------//
    public Connection mysql_con;
    public Sql_Mysql(Connection conn)
    {
        mysql_con = conn;
    }
    /*
    public static Connection getConnection() throws SQLException, java.lang.ClassNotFoundException{
        String url = "jdbc:mysql://192.168.48.128:3306/studentinfo";
        Class.forName("com.mysql.jdbc.Driver");
        String userName = "root";
        String password = "lmx8688139";
        Connection con = DriverManager.getConnection(url,userName,password);
        return con;
    }
    */
    public void close_con()
    {
        try {
            mysql_con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    public void checkAndCreateDB() throws SQLException
    {
        sqlMysqlExecute("CREATE DATABASE IF NOT EXISTS " + DB_AppSys);
        sqlMysqlExecute("CREATE DATABASE IF NOT EXISTS " + DB_BATT_INF);
        sqlMysqlExecute("CREATE DATABASE IF NOT EXISTS " + DB_BATT_TESTDATA);
        sqlMysqlExecute("CREATE DATABASE IF NOT EXISTS " + DB_PARAM);
        sqlMysqlExecute("CREATE DATABASE IF NOT EXISTS " + DB_ALARM);
        sqlMysqlExecute("CREATE DATABASE IF NOT EXISTS " + DB_USER);
        sqlMysqlExecute("CREATE DATABASE IF NOT EXISTS " + DB_RamDB);
        sqlMysqlExecute("DROP DATABASE IF EXISTS " + DB_RamDB_BATT_RT);
        //sqlMysqlExecute("CREATE DATABASE IF NOT EXISTS " + DB_RamDB_BATT_RT);
        sqlMysqlExecute("CREATE DATABASE IF NOT EXISTS " + WEB_Site);
        String table_0 = "CREATE TABLE IF NOT EXISTS " + AppSys_Table
                        + " ( `num` INT NOT NULL AUTO_INCREMENT,"
                        + "`SqlDB_Version` FLOAT NOT NULL DEFAULT '1.0',"
                        + "`SqlDB_BackUpTime` DATETIME NOT NULL DEFAULT '2000-1-1 00:00:00',"
                        + "`SqlDB_BackUpManual_EN` BOOLEAN NOT NULL DEFAULT false, "
                        + "`AppServer_Version` FLOAT NOT NULL DEFAULT '1.0',"
                        + "`AppClient_Version` FLOAT NOT NULL DEFAULT '1.0',"
                        + "`AppName` VARCHAR(50) NOT NULL DEFAULT '0',"
                        + " PRIMARY KEY (`num`)) "
                        + " ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        String table_1 = "CREATE TABLE IF NOT EXISTS " + BattInf_Table
                        + " ( `num` INT NOT NULL AUTO_INCREMENT,"
                        + "`StationId` VARCHAR(20) NOT NULL DEFAULT '0',"
                        + "`StationName` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`StationName1` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`StationName2` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`StationName3` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`StationName4` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`StationName5` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`StationName6` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`StationName7` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`StationName8` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`StationName9` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`StationIP` VARCHAR(20) NOT NULL DEFAULT '0',"
                        + "`FBSDeviceId` BIGINT NOT NULL DEFAULT '0',"
                        + "`FBSDeviceIp` VARCHAR(50) NOT NULL DEFAULT '192.168.0.88',"
                        + "`FBSDeviceName` VARCHAR(100) NOT NULL DEFAULT '0',"
                        + "`GroupIndexInFBSDevice` INT NOT NULL DEFAULT '0',"
                        + "`BattModel` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`BattGroupId` INT NOT NULL DEFAULT '0',"
                        + "`BattGroupNum` INT NOT NULL DEFAULT '0',"
                        + "`BattGroupName` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`BattGroupName1` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`BattGroupName2` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`BattGroupName3` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`BattGroupName4` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`BattGroupName5` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`BattGroupName6` VARCHAR(100) NOT NULL DEFAULT ' ',"
                        + "`FloatVolLevel` FLOAT NOT NULL DEFAULT '1.12',"
                        + "`OfflineVolLevel` FLOAT NOT NULL DEFAULT '1.06',"
                        + "`BattFloatCurrent` FLOAT NOT NULL DEFAULT '0',"
                        + "`DeviceId` VARCHAR(20) NOT NULL DEFAULT '0',"
                        + "`DeviceName` VARCHAR(100) NOT NULL DEFAULT '0',"
                        + "`MonCount` INT NOT NULL DEFAULT '0',"
                        + "`MonCapStd` FLOAT NOT NULL DEFAULT '0',"
                        + "`MonVolStd` FLOAT NOT NULL DEFAULT '0',"
                        + "`MonResStd` FLOAT NOT NULL DEFAULT '0',"
                        + "`MonSerStd` FLOAT NOT NULL DEFAULT '0',"
                        + "`MonTmpStd` FLOAT NOT NULL DEFAULT '0',"
                        + "`MonVolLowToAvg` FLOAT NOT NULL DEFAULT '0',"
                        + "`MonNum` INT NOT NULL DEFAULT '0',"
                        + "`BattProducer` VARCHAR(45) NOT NULL DEFAULT '0',"
                        + "`BattProductDate` DATE NOT NULL DEFAULT '2006-07-06',"
                        + "`BattInUseDate` DATE NOT NULL DEFAULT '2006-07-06',"
                        + "`BattGuarantDayCount` INT NOT NULL DEFAULT '1095',"
                        + "`SignalId` VARCHAR(20) NOT NULL DEFAULT '0',"
                        + "`CInterFaceId` INT NOT NULL DEFAULT '0',"
                        + "`SignalName` VARCHAR(50) NOT NULL DEFAULT '0',"
                        + "INDEX index_station_id (`StationId`), "
                        + "INDEX index_battgroup_id (`BattGroupId`), "
                        + "INDEX index_station_name (`StationName`), "
                        + "INDEX index_battgroup_name (`BattGroupName`), "
                        + "PRIMARY KEY (`num`)) "
                        + "ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        String table_2 = "CREATE TABLE IF NOT EXISTS " + BattCurrInf_Table
                        + " ( `num` INT NOT NULL AUTO_INCREMENT,"
                        + "`StationId` VARCHAR(20) NOT NULL DEFAULT '0',"
                        + "`BattGroupId` VARCHAR(20) NOT NULL DEFAULT '0',"
                        + "`BattGroupName` VARCHAR(100) NOT NULL DEFAULT '0',"
                        + "`CurrDeviceId` VARCHAR(20) NOT NULL DEFAULT '0',"
                        + "`CurrDeviceName` VARCHAR(100) NOT NULL DEFAULT '0',"
                        + "`CurrValueId` VARCHAR(20) NOT NULL DEFAULT '0',"
                        + "`CurrValueName` VARCHAR(100) NOT NULL DEFAULT '0',"
                        + "PRIMARY KEY (`num`)) "
                        + "ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        String table_3 = "CREATE TABLE IF NOT EXISTS " + BattMainInf_Table
                        + " ( `num` BIGINT NOT NULL AUTO_INCREMENT, "
                        + "`BattGroupId` INT NOT NULL DEFAULT 0, "
                        + "`usr_id` INT NOT NULL DEFAULT 0, "
                        + "`fault_type_id` INT NOT NULL DEFAULT 0, "
                        + "`fault_type` VARCHAR(50) NOT NULL DEFAULT ' ', "
                        + "`fault_level` INT NOT NULL DEFAULT 0, "
                        + "`fault_caption` VARCHAR(200) NOT NULL DEFAULT ' ', "
                        + "`fault_time` DATETIME NOT NULL DEFAULT '2005-1-1 00:00:00', "
                        + "`record_uid` INT NOT NULL DEFAULT 0, "
                        + "`record_time` DATETIME NOT NULL DEFAULT '2005-1-1 00:00:00', "
                        + "`maint_time_limit` DATETIME NOT NULL DEFAULT '2005-1-1 00:00:00', "
                        + "`maint_type_id` INT NOT NULL DEFAULT 0, "
                        + "`maint_type` VARCHAR(50) NOT NULL DEFAULT ' ', "
                        + "`maint_result` VARCHAR(100) NOT NULL DEFAULT ' ', "
                        + "`maint_done` BOOLEAN NOT NULL DEFAULT false, "
                        + "`maint_done_time` DATETIME DEFAULT '2005-1-1 00:00:00', "
                        + "`maint_close` BOOLEAN NOT NULL DEFAULT false, "
                        + "`master_id` INT NOT NULL DEFAULT 0, "
                        + "`master_audit` INT NOT NULL DEFAULT 0, "                //领导审核
                        + "`appoint_uid` INT NOT NULL DEFAULT 0, "                 //指派给谁
                        + "`copy_uids` VARCHAR(200) NOT NULL DEFAULT ' ', "        //抄送给谁
                        + "`master_check` VARCHAR(100) NOT NULL DEFAULT ' ', "
                        + "`remark` VARCHAR(200) NOT NULL DEFAULT ' ', "
                        + "INDEX index_battgroup_id (`BattGroupId`), "
                        + "INDEX index_user_id (`usr_id`), "
                        + "INDEX index_fault_type_id (`fault_type_id`), "
                        + "INDEX index_maint_type_id (`maint_type_id`), "
                        + "PRIMARY KEY (`num`)) "
                        + "ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        String table_3_1 = "CREATE TABLE IF NOT EXISTS " + BattMainProcess_Table
                        + " ( `num` BIGINT NOT NULL AUTO_INCREMENT, "
                        + "`batt_maint_rec_id` BIGINT NOT NULL DEFAULT 0, "
                        + "`usr_id` INT NOT NULL DEFAULT 0, "
                        + "`work_caption` VARCHAR(200) NOT NULL DEFAULT ' ', "
                        + "`work_caption_time` DATETIME DEFAULT '2005-1-1 00:00:00', "
                        + "INDEX index_batt_maint_rec_id (`batt_maint_rec_id`), "
                        + " PRIMARY KEY (`num`)) "
                        + "ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        String table_3_2 = "CREATE TABLE IF NOT EXISTS " + UsrBattMaintCheck_Table
                        + " ( `num` BIGINT NOT NULL AUTO_INCREMENT, "
                        + "`StationId` INT NOT NULL DEFAULT 0, "
                        + "`usr_id` INT NOT NULL DEFAULT 0, "
                        + "`master_id` INT NOT NULL DEFAULT 0, "
                        + "`appoint_uid` INT NOT NULL DEFAULT 0, "                 //指派给谁
                        + "`copy_uids` VARCHAR(200) NOT NULL DEFAULT ' ', "        //抄送给谁
                        + "`task_type_id` INT NOT NULL DEFAULT 0, "
                        + "`task_level` INT NOT NULL DEFAULT 0, "
                        + "`task_caption` VARCHAR(200) NOT NULL DEFAULT ' ', "
                        + "`task_time_start` DATETIME NOT NULL DEFAULT '2005-1-1 00:00:00', "
                        + "`task_time_end` DATETIME NOT NULL DEFAULT '2005-1-1 00:00:00', "
                        + "`task_process` VARCHAR(200) NOT NULL DEFAULT ' ', "
                        + "`task_done` BOOLEAN NOT NULL DEFAULT false, "
                        + "`task_done_time` DATETIME DEFAULT '2005-1-1 00:00:00', "
                        + "`origin_usr_work_mark` INT NOT NULL DEFAULT 0, "
                        + "`task_done_confirm` BOOLEAN NOT NULL DEFAULT false, "
                        + "`master_audit` INT NOT NULL DEFAULT 0, "                //领导审核
                        + "`remark` VARCHAR(200) NOT NULL DEFAULT ' ', "
                        + "INDEX index_station_id (`StationId`), "
                        + "INDEX index_user_id (`usr_id`), "
                        + "INDEX index_task_type_id (`task_type_id`), "
                        + "PRIMARY KEY (`num`)) "
                        + "ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        String table_3_2_1 = "CREATE TABLE IF NOT EXISTS " + UsrBattMaintCheckProcess_Table
                        + " ( `num` BIGINT NOT NULL AUTO_INCREMENT, "
                        + "`task_rec_id` BIGINT NOT NULL DEFAULT 0, "
                        + "`usr_id` INT NOT NULL DEFAULT 0, "
                        + "`work_caption` VARCHAR(200) NOT NULL DEFAULT ' ', "
                        + "`work_caption_time` DATETIME DEFAULT '2005-1-1 00:00:00', "
                        + "INDEX index_task_rec_id (`task_rec_id`), "
                        + " PRIMARY KEY (`num`)) "
                        + "ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        String table_4 = "CREATE TABLE IF NOT EXISTS " + BattTestDataInf_Table
                        + " ( `num` BIGINT NOT NULL AUTO_INCREMENT, "
                        + "`BattGroupId` INT NOT NULL DEFAULT 0, "
                        + "`test_record_count` INT NOT NULL DEFAULT 0, "
                        + "`test_record_count_ex` INT NOT NULL DEFAULT 0, "
                        + "`test_type` INT NOT NULL DEFAULT 0, "
                        + "`record_time_interval` 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', "
                        + "`test_starttime_ex` DATETIME NOT NULL DEFAULT '1982-01-01 00:00:00', "
                        + "`test_starttype` INT NOT NULL DEFAULT 0, "
                        + "`record_time` DATETIME NOT NULL DEFAULT '1982-01-01 00:00:00', "
                        + "`test_timelong` INT NOT NULL DEFAULT 0, "
                        + "`test_stoptype` INT 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, "
                        + "`max_monnum` INT NOT NULL DEFAULT 0, "
                        + "`max_monvol` FLOAT NOT NULL DEFAULT 0, "
                        + "`min_monnum` INT NOT NULL DEFAULT 0, "
                        + "`min_monvol` FLOAT NOT NULL DEFAULT 0, "
                        + "`mon_num` INT NOT NULL DEFAULT 0, "
                        + "`mon_vol` FLOAT NOT NULL DEFAULT 0, "
                        + "`upload_usr_id` INT NOT NULL DEFAULT 0, "
                        + "`upload_data_ext` INT NOT NULL DEFAULT 0, "
                        + "`upload_client_type` INT NOT NULL DEFAULT 0, "
                        + "INDEX index_battgroup_id (`BattGroupId`), "
                        + "INDEX index_test_record_count (`test_record_count`), "
                        + "INDEX index_test_type (`test_type`), "
                        + "INDEX index_test_starttime (`test_starttime`), "
                        + "PRIMARY KEY (`num`)) "
                        + "ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        String table_5 = "CREATE TABLE IF NOT EXISTS " + BattResDataInf_Table
                        + " ( `num` BIGINT NOT NULL AUTO_INCREMENT, "
                        + "`BattGroupId` INT NOT NULL DEFAULT 0, "
                        + "`test_record_count` INT NOT NULL DEFAULT 0, "
                        + "`test_record_count_ex` 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, "
                        + "`test_starttime` DATETIME NOT NULL DEFAULT '1982-01-01 00:00:00', "
                        + "`test_starttime_ex` DATETIME NOT NULL DEFAULT '1982-01-01 00:00:00', "
                        + "`test_devtype` INT NOT NULL DEFAULT 0, "
                        + "`record_time` DATETIME NOT NULL DEFAULT '1982-01-01 00:00:00', "
                        + "`group_vol` FLOAT NOT NULL DEFAULT 0, "
                        + "`test_curr` FLOAT NOT NULL DEFAULT 0, "
                        + "`upload_usr_id` INT NOT NULL DEFAULT 0, "
                        + "`upload_client_type` INT NOT NULL DEFAULT 0, "
                        + "INDEX index_battgroup_id (`BattGroupId`), "
                        + "INDEX index_test_record_count (`test_record_count`), "
                        + "INDEX index_test_starttime (`test_starttime`), "
                        + "PRIMARY KEY (`num`)) "
                        + "ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        String table_6 = "DROP TABLE IF EXISTS " + SocketClientStateTable + "; ";
        String table_7 = "CREATE TABLE IF NOT EXISTS " + SocketClientStateTable
                        + "(`num` BIGINT NOT NULL AUTO_INCREMENT, "
                        + "`uId` INT NOT NULL DEFAULT 0, "
                        + "`client_type` INT NOT NULL DEFAULT 0, "
                        + "`client_id` BIGINT NOT NULL DEFAULT 0, "
                        + "`BattGroupId` INT NOT NULL DEFAULT 0, "
                        + "`client_is_connected` BOOLEAN NOT NULL DEFAULT false, "
                        + "`client_ip` VARCHAR(64) NOT NULL DEFAULT ' ', "
                        + "`client_conn_time` DATETIME NOT NULL DEFAULT '1980-01-01', "
                        + "`client_disconn_time` DATETIME NOT NULL DEFAULT '1980-01-01', "
                        + "INDEX index_user_id (`uId`), "
                        + "INDEX index_client_type (`client_type`), "
                        + "PRIMARY KEY (`num`)) "
                        + "ENGINE=MEMORY DEFAULT CHARSET=utf8;";
        String table_8 = "CREATE TABLE IF NOT EXISTS " + FBSDevStateChangeInf_Table
                        + "(`num` BIGINT NOT NULL AUTO_INCREMENT, "
                        + "`dev_id` INT NOT NULL DEFAULT 0, "
                        + "`rec_time` DATETIME NOT NULL DEFAULT '1980-01-01', "
                        + "`last_stat` INT NOT NULL DEFAULT 0, "
                        + "`now_stat` INT NOT NULL DEFAULT 0, "
                        + "`state_change_reason` INT NOT NULL DEFAULT 0, "
                        + "`dev_alarm` INT NOT NULL DEFAULT 0, "
                        + "INDEX index_dev_id (`dev_id`), "
                        + "PRIMARY KEY (`num`)) "
                        + "ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        //-------------------------------------------------------------------------------------//
        //-------------------------------------------------------------------------------------//
        sqlMysqlUseDB(Sql_Mysql.DB_AppSys);
        if(false == sqlMysqlCheckIfTableExist(TB_AppSys))
        {
            sqlMysqlExecute(table_0);
            sqlMysqlExecute("INSERT INTO " + Sql_Mysql.AppSys_Table
                                + " (AppName) VALUES ('蓄电池组综合管理系统')");
        }
        //-------------------------------------------------------------------------------------//
        {
            ResultSet rest = sqlMysqlQuery("SELECT AppServer_Version FROM " + Sql_Mysql.AppSys_Table);
            if(rest.next()) {
                float ser_version = rest.getFloat(1);
                if(ser_version < 1.387) {
                    sqlMysqlExecute("UPDATE " + Sql_Mysql.AppSys_Table + " SET AppServer_Version=1.388");
                    sqlMysqlExecute("USE db_batt_testdata");
                    sqlMysqlExecute("UPDATE tb_batttestdata_inf SET "
                                    + " test_starttime=date_sub(test_starttime, interval 1 month) "
                                    + " WHERE upload_usr_id>0");
                }
            }
        }
        //---------------------------------------------------------------------------------------------//
        ResultSet res0 = sqlMysqlQuery("SELECT * FROM information_schema.columns"
                                + " WHERE table_schema='db_app_sys'"
                                + " AND table_name='tb_app_sys'"
                                + " AND column_name='SqlDB_BackUpTime'");
        if(false == res0.next()) {
            sqlMysqlExecute("ALTER TABLE " + AppSys_Table
                            + " ADD COLUMN `SqlDB_BackUpTime` DATETIME NOT NULL DEFAULT '2000-1-1 00:00:00'"
                            + " AFTER `SqlDB_Version`,"
                            + " ADD COLUMN `SqlDB_BackUpManual_EN` BOOLEAN NOT NULL DEFAULT false"
                            + " AFTER `SqlDB_BackUpTime`");
        }
        res0 = sqlMysqlQuery("SELECT * FROM information_schema.columns"
                            + " WHERE table_schema='db_app_sys'"
                            + " AND table_name='tb_app_sys'"
                            + " AND column_name='SqlDB_BackUpManual_EN'");
        if(false == res0.next()) {
            sqlMysqlExecute("ALTER TABLE " + AppSys_Table
                            + " ADD COLUMN `SqlDB_BackUpManual_EN` BOOLEAN NOT NULL DEFAULT false"
                            + " AFTER `SqlDB_BackUpTime`");
        }
        //---------------------------------------------------------------------------------------------//
        sqlMysqlExecute(table_1);
        sqlMysqlExecute(table_2);
        sqlMysqlExecute(table_3);
        sqlMysqlExecute(table_3_1);
        sqlMysqlExecute(table_3_2);
        sqlMysqlExecute(table_3_2_1);
        sqlMysqlExecute(table_4);
        sqlMysqlExecute(table_5);
        sqlMysqlExecute(table_6);
        sqlMysqlExecute(table_7);
        sqlMysqlExecute(table_8);
        //---------------------------------------------------------------------------------------------//
        ResultSet res = sqlMysqlQuery("show index from " + BattInf_Table + " where column_name='BattGroupId'");
        if(false == res.next())
        {
            sqlMysqlExecute("ALTER TABLE " + BattInf_Table + " ADD INDEX `index_station_id` (`StationId` ASC);");
            sqlMysqlExecute("ALTER TABLE " + BattInf_Table + " ADD INDEX `index_battgroup_id` (`BattGroupId` ASC);");
            sqlMysqlExecute("ALTER TABLE " + BattInf_Table + " ADD INDEX `index_station_name` (`StationName` ASC);");
            sqlMysqlExecute("ALTER TABLE " + BattInf_Table + " ADD INDEX `index_battgroup_name` (`BattGroupName` ASC);");
        }
        //---------------------------------------------------------------------------------------------//
        //-------------------------------- 2017-06-06 by mxpopstar ------------------------------------//
                res = sqlMysqlQuery("SELECT * FROM information_schema.columns"
                                        + " WHERE table_schema='db_battinf'"
                                        + " AND table_name='tb_battinf'"
                                        + " AND column_name='BattGuarantDayCount'");
                if(false == res.next()) {
                    sqlMysqlExecute("ALTER TABLE " + BattInf_Table
                                    + " ADD COLUMN `BattGuarantDayCount` INT NOT NULL DEFAULT 1095 AFTER `BattInUseDate`");
                }
                //---------------------------------------------------------------------------------------------//
        //---------------------------------------------------------------------------------------------//
        res = sqlMysqlQuery("SELECT * FROM information_schema.columns"
                                + " WHERE table_schema='db_battinf'"
                                + " AND table_name='tb_batt_maint_inf'"
                                + " AND column_name='master_audit'");
        if(false == res.next()) {
            sqlMysqlExecute("ALTER TABLE " + BattMainInf_Table
                            + " ADD COLUMN `fault_type_id` INT NOT NULL DEFAULT 0 AFTER `usr_id`,"
                            + " ADD COLUMN `maint_type_id` INT NOT NULL DEFAULT 0 AFTER `maint_time_limit`,"
                            + " ADD COLUMN `master_audit` INT NOT NULL DEFAULT 0 AFTER `master_id`,"
                            + " ADD COLUMN `maint_close` BOOLEAN NOT NULL DEFAULT FALSE AFTER `maint_done_time`,"
                            + " ADD COLUMN `appoint_uid` INT NOT NULL DEFAULT 0 AFTER `master_audit`,"
                            + " ADD COLUMN `copy_uids` VARCHAR(200) NOT NULL DEFAULT ' ' AFTER `master_audit`");
        }
        //---------------------------------------------------------------------------------------------//
        //---------------------------------------------------------------------------------------------//
        res = sqlMysqlQuery("show index from " + BattTestDataInf_Table + " where column_name='test_starttime'");
        if(false == res.next())
        {
            sqlMysqlExecute("ALTER TABLE " + BattTestDataInf_Table + " ADD INDEX `index_test_record_count` (`test_record_count` ASC);");
            sqlMysqlExecute("ALTER TABLE " + BattTestDataInf_Table + " ADD INDEX `index_test_type` (`test_type` ASC);");
            sqlMysqlExecute("ALTER TABLE " + BattTestDataInf_Table + " ADD INDEX `index_test_starttime` (`test_starttime` ASC);");
        }
        //---------------------------------------------------------------------------------------------//
        //---------------------------------------------------------------------------------------------//
        res = sqlMysqlQuery("show index from " + BattResDataInf_Table + " where column_name='test_starttime'");
        if(false == res.next())
        {
            sqlMysqlExecute("ALTER TABLE " + BattResDataInf_Table + " ADD INDEX `index_test_record_count` (`test_record_count` ASC);");
            sqlMysqlExecute("ALTER TABLE " + BattResDataInf_Table + " ADD INDEX `index_test_type` (`test_type` ASC);");
            sqlMysqlExecute("ALTER TABLE " + BattResDataInf_Table + " ADD INDEX `index_test_starttime` (`test_starttime` ASC);");
        }
        //---------------------------------------------------------------------------------------------//
        res = sqlMysqlQuery("SELECT * FROM information_schema.columns"
                                        + " WHERE table_schema='db_batt_testdata'"
                                        + " AND table_name='tb_batttestdata_inf'"
                                        + " AND column_name='test_record_count_ex'");
        if(false == res.next())
        {
            sqlMysqlExecute("ALTER TABLE " + BattTestDataInf_Table
                            + " ADD COLUMN `test_record_count_ex` INT NOT NULL DEFAULT 0 AFTER `test_record_count`,"
                            + " ADD COLUMN `test_starttime_ex` DATETIME NOT NULL DEFAULT '1920-01-01 00:00:00' AFTER `test_starttime`,"
                            + " ADD COLUMN `upload_usr_id` INT NOT NULL DEFAULT 0 AFTER `mon_vol`");
        }
        //---------------------------------------------------------------------------------------------//
        //---------------------------------------------------------------------------------------------//
        res = sqlMysqlQuery("SELECT * FROM information_schema.columns"
                                                + " WHERE table_schema='db_batt_testdata'"
                                                + " AND table_name='tb_batttestdata_inf'"
                                                + " AND column_name='upload_data_ext'");
        if(false == res.next())
        {
            sqlMysqlExecute("ALTER TABLE " + BattTestDataInf_Table
                            + " ADD COLUMN `upload_data_ext` INT NOT NULL DEFAULT 0 AFTER `upload_usr_id`,"
                            + " ADD COLUMN `upload_client_type` INT NOT NULL DEFAULT 0 AFTER `upload_data_ext`");
            sqlMysqlExecute("ALTER TABLE " + BattResDataInf_Table
                            + " ADD COLUMN `upload_client_type` INT NOT NULL DEFAULT 0 AFTER `upload_usr_id`");
        }
        //---------------------------------------------------------------------------------------------//
        //----------------------------将num自增字段改为bigint类型---------------------------------------//
        res = sqlMysqlQuery("SELECT DATA_TYPE FROM information_schema.columns"
                                        + " WHERE table_schema='db_batt_testdata'"
                                        + " AND table_name='tb_batttestdata_inf'"
                                        + " AND column_name='num'");
        if(true == res.next()) {
            if(false == "bigint".equals(res.getString("DATA_TYPE").toLowerCase())) {
                sqlMysqlExecute("ALTER TABLE " + BattTestDataInf_Table + " MODIFY COLUMN num BIGINT NOT NULL AUTO_INCREMENT;");
                sqlMysqlExecute("ALTER TABLE " + BattResDataInf_Table + " MODIFY COLUMN num BIGINT NOT NULL AUTO_INCREMENT;");
            }
        }
        //---------------------------------------------------------------------------------------------//
    }
    //使用db数据库
    public void sqlMysqlUseDB(String db) throws SQLException
    {
        sqlMysqlExecute("use " + db);
    }
    //获取电池组机房的个数
    public int getBattStationCount()
    {
        int st_count = 0;
        try {
            sqlMysqlUseDB(Sql_Mysql.DB_BATT_INF);
            String sql_str = "SELECT DISTINCT StationId FROM " + BattInf_Table;
            ResultSet res = sqlMysqlQuery(sql_str);
            while(res.next())
            {
                st_count++;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return st_count;
    }
    /**
     * 检查tb表是否存在
     * @param tb
     * @return
     * @throws SQLException
     */
    public boolean sqlMysqlCheckIfTableExist(String tb) throws SQLException
    {
        String sql_str = "SHOW TABLES LIKE '" + tb + "'";
        ResultSet res = sqlMysqlQuery(sql_str);
        boolean exist = false;
        while(res.next())
        {
            exist = true;
            break;
        }
        return exist;
    }
    //执行sql语句
    public void sqlMysqlExecute(String sql_str) throws SQLException
    {
        Statement sql = mysql_con.createStatement();
        sql.setQueryTimeout(30);
        sql.execute(sql_str);
    }
    //在事物中执行多条sql语句
    public boolean makeManualCommit(ArrayList<String> al_sql_strs)
    {
        boolean exe_res = true;
        try {
            mysql_con.setAutoCommit(false);
            for(int n=0; n<al_sql_strs.size(); n++) {
                sqlMysqlExecute(al_sql_strs.get(n));
            }
            if(true == exe_res) {
                mysql_con.commit();
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            exe_res = false;
        } finally {
            try {
                if(false == exe_res) {
                    mysql_con.rollback();
                }
                mysql_con.setAutoCommit(true);
            } catch (SQLException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
        return exe_res;
    }
    //根据sql语句执行sql查询语句
    public ResultSet sqlMysqlQuery(String sql_str)
    {
        ResultSet res = null;
        try
        {
            Statement sql = mysql_con.createStatement();
            sql.setQueryTimeout(30);
            String query = sql_str;
            res =  sql.executeQuery(query);
        }
        catch(SQLException ex)
        {
            System.err.println("SQLException:" + ex.getMessage());
        }
        return res;
    }
    //根据sql语句执行sql更新语句
    public void sqlMysqlUpdate(String sql_str)
    {
        try
        {
            Statement sql = mysql_con.createStatement();
            sql.setQueryTimeout(30);
            String query = sql_str;
            sql.execute(query);
        }
        catch(SQLException ex)
        {
            System.out.println("SQLException:" + ex.getMessage());
        }
    }
    //根据电池组id 获取机房名称
    public String getStationName(int bg_id)
    {
        String stname = " ";
        String sql_str = "SELECT DISTINCT StationName FROM "
                            + Sql_Mysql.BattInf_Table + " WHERE BattGroupId=" + bg_id;
        ResultSet res = sqlMysqlQuery(sql_str);
        try {
            if(res.next())
            {
                stname = res.getString("StationName");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return stname;
    }
    //根据电池组id 获取电池组名称
    public String getBattGroupName(int bg_id)
    {
        String bgname = " ";
        String sql_str = "SELECT DISTINCT BattGroupName FROM "
                            + Sql_Mysql.BattInf_Table + " WHERE BattGroupId=" + bg_id;
        ResultSet res = sqlMysqlQuery(sql_str);
        try {
            if(res.next())
            {
                bgname = res.getString("BattGroupName");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return bgname;
    }
    //根据用户的id获取用户的名称
    public String getUsrName(int uid)
    {
        String usrname = " ";
        String sql_str = "SELECT uName FROM " + Sql_Mysql.UserInfTable + " WHERE uId=" + uid;
        ResultSet res = sqlMysqlQuery(sql_str);
        try {
            if(res.next())
            {
                usrname = res.getString("uName");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return usrname;
    }
    //根据format_type 获取format_str 的样式
    public String getTaskSmsFormatStr(String format_type)
    {
        String str = "";
        String sql_str = "SELECT DISTINCT "
                        + Sql_Mysql.UserSmsFormatTable + ".format_str"
                        + " FROM " + Sql_Mysql.UserSmsFormatTable
                        + " WHERE "
                        + Sql_Mysql.UserSmsFormatTable + ".format_type='" + format_type + "'";
        ResultSet sql_res = sqlMysqlQuery(sql_str);
        try {
            if(sql_res.next())
            {
                str = sql_res.getString("format_str");
            }
        } catch (SQLException e1) {
            // TODO Auto-generated catch block
            //e1.printStackTrace();
        }
        return str;
    }
    //根据作业id获取作业的名称
    public String getUsrTaskName(int taskid)
    {
        String taskname = " ";
        String sql_str = "SELECT task_name FROM " + Sql_Mysql.UserTaskTable + " WHERE task_id=" + taskid;
        ResultSet res = sqlMysqlQuery(sql_str);
        try {
            if(res.next()) {
                taskname = res.getString("task_name");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return taskname;
    }
    //根据作业id获取用户作业的创建时间
    public String getUsrTaskCreateTime(int taskid)
    {
        String taskcreatetime = " ";
        String sql_str = "SELECT task_create_date FROM " + Sql_Mysql.UserTaskTable + " WHERE task_id=" + taskid;
        ResultSet res = sqlMysqlQuery(sql_str);
        try {
            if(res.next())
            {
                taskcreatetime = Com.getDateTimeFormat(res.getTimestamp("task_create_date"), Com.DTF_YMDhms);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return taskcreatetime;
    }
    //获取新创建的记录的testrecordcount的值
    public int getBattTestRecordCountNew(int bg_id, String table)
    {
        int count = 0;
        boolean res_exe = true;
        String sql_str0 = "SELECT test_record_count_ex FROM " + table
                            + " WHERE BattGroupId=" + bg_id  + " FOR UPDATE";
        String sql_str1 = "UPDATE " + table + " SET test_record_count_ex=test_record_count+1"
                            + " WHERE BattGroupId=" + bg_id;
        String sql_str2 = "SELECT MAX(test_record_count_ex) FROM " + table
                            + " WHERE BattGroupId=" + bg_id;
        String sql_str3 = "INSERT INTO " + table + " (BattGroupId,test_record_count, test_record_count_ex) "
                            + " VALUES (" + bg_id + "," + 1 + "," + 1 + ")";
        try {
            mysql_con.setAutoCommit(false);
            ResultSet res = sqlMysqlQuery(sql_str0);
            if(res.next()) {
                sqlMysqlExecute(sql_str1);
                res = sqlMysqlQuery(sql_str2);
                if(res.next()) {
                    count = res.getInt(1);
                }
            } else {
                count = 1;
                sqlMysqlExecute(sql_str3);
            }
            mysql_con.commit();
        } catch (SQLException e) {
            e.printStackTrace();
            res_exe = false;
        } finally {
            if(false == res_exe) {
                try {
                    mysql_con.rollback();
                    mysql_con.setAutoCommit(true);
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
        return count;
    }
}
ElectricalSystem_MonitorServer_2KW/src/main/main_ElectricalSystem_MonitorServer_2KW.java
@@ -1,99 +1,109 @@
package main;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Date;
import com.base.Com;
import com.config.AppConfig;
import com.config.AppParam;
import com.sql.MysqlConnPool;
public class main_ElectricalSystem_MonitorServer_2KW {
    /**************************************************************************/
    /**************************************************************************/
    /**************************************************************************/
    /**************************************************************************/
    /**************************************************************************/
    public final static boolean app_debug = false;
    public final static double m_VersionNum = 1.102;
    public final static String m_Version = "Welcome To Use main_ElectricalSystem_MonitorServer_2KW V"
                                            + m_VersionNum ;
    /**************************************************************************/
    /**************************************************************************/
    public static final int MysqlServer_Port = 3360;
    private static AppConfig m_AppConfig;
    private static MysqlConnPool GB_MysqlConnPool;
    public static AppParam GB_App_Param;
     /*********************************************************************************************/
    /*********************************************************************************************/
    public static void main(String[] args) {
        String ver = m_Version;
        System.out.println("main_MonitorServer_Motor Server Started At DateTime: " + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
        //创建config.xml文件
        m_AppConfig = new AppConfig();
        System.out.println("SQLserver IP:" + m_AppConfig.getMysqlServerIp() + ", port: "+MysqlServer_Port);
        //初始化连接池中的各种参数信息
        GB_MysqlConnPool = new MysqlConnPool(m_AppConfig.getMysqlServerIp(), MysqlServer_Port,
                                                100);
        //创建tb_app_param表,并且设置表中的数据
        GB_App_Param = new AppParam(GB_MysqlConnPool);
        checkingMySQLServerStart();                //检测数据库服务是否启动
        /*********************************************************************************/
        /*********************************************************************************/
        while(true) {
            try {
                Thread.sleep(5000);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        /*********************************************************************************/
    }
    public static void checkingMySQLServerStart(){
        int MysqlServer_Port = 3360;
        System.out.println("IP:"+m_AppConfig.getMysqlServerIp()+"port"+MysqlServer_Port);
        //初始化连接池中的各种参数信息        m_AppConfig.getMysqlServerIp()
        GB_MysqlConnPool = new MysqlConnPool(m_AppConfig.getMysqlServerIp(), MysqlServer_Port, 5);
        while(true){
            Connection conn = null;
            try {
                System.out.println(" 开始检测数据库连接 "+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
                conn =  GB_MysqlConnPool.getConn();
                if(conn != null){
                    System.out.println("检测数据库连接成功");
                    break;
                }
            } catch (Exception e) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e1) {
                    e1.printStackTrace();
                }
                System.out.println(" MySQL_FBSDEV not Start ... ");
            } finally {
                if(conn != null) {
                    try {
                        conn.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
}
package main;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.base.Com;
import com.config.AppConfig;
import com.config.AppParam;
import com.electrical.Twokw.Electric_2Kw_ServerSocket_Thread;
import com.electrical.Twokw.Electric_inf_2kw;
import com.electrical.Twokw.Electrical_2KWTask_SQL;
import com.sql.MysqlConnPool;
public class main_ElectricalSystem_MonitorServer_2KW {
    /**************************************************************************/
    /**************************************************************************/
    /**************************************************************************/
    /**************************************************************************/
    /**************************************************************************/
    public final static boolean app_debug = false;
    public final static double m_VersionNum = 1.102;
    public final static String m_Version = "Welcome To Use main_ElectricalSystem_MonitorServer_2KW V"
                                            + m_VersionNum ;
    /**************************************************************************/
    /**************************************************************************/
    public static final int MysqlServer_Port = 3360;
    private static AppConfig m_AppConfig;
    private static MysqlConnPool GB_MysqlConnPool;
    public static AppParam GB_App_Param;
    public static List<Electric_inf_2kw> einfs=new ArrayList<Electric_inf_2kw>();
     /*********************************************************************************************/
    /*********************************************************************************************/
    public static void main(String[] args) {
        String ver = m_Version;
        System.out.println("main_MonitorServer_Motor Server Started At DateTime: " + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
        //创建config.xml文件
        m_AppConfig = new AppConfig();
        System.out.println("SQLserver IP:" + m_AppConfig.getMysqlServerIp() + ", port: "+MysqlServer_Port);
        //初始化连接池中的各种参数信息
        GB_MysqlConnPool = new MysqlConnPool(m_AppConfig.getMysqlServerIp(), MysqlServer_Port,
                                                100);
        //创建tb_app_param表,并且设置表中的数据
        GB_App_Param = new AppParam(GB_MysqlConnPool);
        checkingMySQLServerStart();                //检测数据库服务是否启动
        /*********************************************************************************/
        /************************************************************************einfs********/
        //初始化建库建数据表
        Electrical_2KWTask_SQL.init(GB_MysqlConnPool);
        //获取所有的2MW电源信息
        Electrical_2KWTask_SQL.queryAllElectrical2MW(GB_MysqlConnPool, einfs);
        //System.out.println(einfs.toString());
        //2MW通讯读取数据线程
        Electric_2Kw_ServerSocket_Thread server=new Electric_2Kw_ServerSocket_Thread(GB_MysqlConnPool,einfs);
        new Thread(server).start();
        while(true) {
            try {
                Thread.sleep(5000);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        /*********************************************************************************/
    }
    public static void checkingMySQLServerStart(){
        int MysqlServer_Port = 3360;
        System.out.println("IP:"+m_AppConfig.getMysqlServerIp()+"port"+MysqlServer_Port);
        //初始化连接池中的各种参数信息        m_AppConfig.getMysqlServerIp()
        GB_MysqlConnPool = new MysqlConnPool(m_AppConfig.getMysqlServerIp(), MysqlServer_Port, 5);
        while(true){
            Connection conn = null;
            try {
                System.out.println(" 开始检测数据库连接 "+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
                conn =  GB_MysqlConnPool.getConn();
                if(conn != null){
                    System.out.println("检测数据库连接成功");
                    break;
                }
            } catch (Exception e) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e1) {
                    e1.printStackTrace();
                }
                System.out.println(" MySQL_FBSDEV not Start ... ");
            } finally {
                if(conn != null) {
                    try {
                        conn.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
}