蓄电池监控管理平台数据库初始化程序
V1.56 edit at date 2021-06-08
1.新增用户登陆限制表'db_user.tb_user_limit'
2.用户表新增'login_type'[登陆状态]字段
3.新增南京送检蓄电池告警表'db_ram_db.tb_batt_rtalarm'和'db_ram_db.tb_batt_rsalarm'表的建表语句
6个文件已修改
199 ■■■■■ 已修改文件
BattMonitor_DB_Builder/bin/com/version_inf/version_inf.txt 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/src/com/battdata_rt/BattData_RT_RamDB_Thread_SQL.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/src/com/database_util/DB_Ram_db.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/src/com/database_util/DB_db_user.java 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/src/com/sql/Sql_Mysql.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/src/com/version_inf/version_inf.txt 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_DB_Builder/bin/com/version_inf/version_inf.txt
@@ -163,4 +163,9 @@
    1.'db_pwrdev_data_rt`.`tb_pwrdev_acdcdata' 表中新增温湿度传感器相关字段
    2.新增`db_ram_db`.`tb_lithium_data`表用于更新锂电池实时数据
    
V1.56 edit at date 2021-06-08
    1.新增用户登陆限制表'db_user.tb_user_limit'
    2.用户表新增'login_type'[登陆状态]字段
    3.新增南京送检蓄电池告警表'db_ram_db.tb_batt_rtalarm'和'db_ram_db.tb_batt_rsalarm'表的建表语句
    
BattMonitor_DB_Builder/src/com/battdata_rt/BattData_RT_RamDB_Thread_SQL.java
@@ -135,6 +135,33 @@
        }
        return maxMonNum;
    }
    /**
     * 查询当前电池组在    tb_batt_rtdata  表中最大单体数
     * @param conn_pool
     * @param battGroupId
     * @return
     */
    public static int seachBattRTAlarmMaxMonNum(MysqlConnPool conn_pool,int battGroupId){
        int maxMonNum = 0;
        String sql_str = " SELECT MAX(mon_num) as maxmon_num "
                + " FROM " + Sql_Mysql.Tb_Batt_RTAlarm_Table
                + " WHERE BattGroupId = " + battGroupId;
        Sql_Mysql sql = new Sql_Mysql(conn_pool.getConn());
        //System.out.println(sql_str);
        ResultSet rs = sql.sqlMysqlQuery(sql_str);
        try {
            if(rs.next()){
                maxMonNum = rs.getInt("maxmon_num");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally{
            sql.close_con();
        }
        return maxMonNum;
    }
    /************************************************************************************************/
    /************************************************************************************************/
    /************************************************************************************************/
BattMonitor_DB_Builder/src/com/database_util/DB_Ram_db.java
@@ -2,7 +2,10 @@
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
import com.base.Com;
import com.battdata_rt.BattData_RT_RamDB_Thread_SQL;
import com.sql.MysqlConnPool;
import com.sql.Sql_Mysql;
@@ -71,6 +74,11 @@
        createFBS9100_ChargerstateTable(pool, recreate);
        
        createTb_Lithium_DataTable(pool, recreate);
        //南京送检特有
        createTb_Batt_RTAlarm_Table(pool, recreate);
        //南京送检特有
        createTb_Batt_RSAlarm_Table(pool, recreate);
    }
    
    
@@ -1652,6 +1660,112 @@
        }
    }
    
    /**
     *     创建组端信息告警记录表
     * @param pool
     * @param recreate
     */
    public static void createTb_Batt_RSAlarm_Table(MysqlConnPool pool, boolean recreate) {
        String sql_str01 = " DROP TABLE IF EXISTS "+Sql_Mysql.Tb_Batt_RSAlarm_Table;
        String sql_str02 = "CREATE TABLE IF NOT EXISTS " + Sql_Mysql.Tb_Batt_RSAlarm_Table + " (" +
                "  `num` bigint(20) NOT NULL AUTO_INCREMENT ," +
                "  `BattGroupId` int(11) NOT NULL DEFAULT '1000001' COMMENT '电池组ID'," +
                "  `record_time` datetime NOT NULL DEFAULT '2000-01-01 00:00:00' COMMENT '记录时间'," +
                "  `groupvol_alm` tinyint(4) NOT NULL DEFAULT '0' COMMENT '组电压告警'," +
                "  `test_end_vol` float NOT NULL DEFAULT '0' COMMENT '测试终止电压'," +
                "  `test_end_cap` float NOT NULL DEFAULT '0' COMMENT '测试终止剩余容量'," +
                "  `test_timelong` int(11) NOT NULL DEFAULT '0' COMMENT '测试终止时间(秒)'," +
                "  PRIMARY KEY (`num`)," +
                "  KEY `index_BattGroupId` (`BattGroupId`) USING BTREE," +
                "  KEY `index_record_time` (`record_time`) USING BTREE" +
                ") ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            if(true == recreate) {
                sql.sqlMysqlExecute(sql_str01);
            }
            //System.out.println(sql_str02);
            sql.sqlMysqlExecute(sql_str02);
            //添加未录入电池组的组端信息
            String sql_str03 = "INSERT INTO " + Sql_Mysql.Tb_Batt_RSAlarm_Table + " (BattGroupId)" +
                    " SELECT BattGroupId FROM " + Sql_Mysql.BattInf_Table +
                    " WHERE BattGroupId NOT IN (SELECT BattGroupId FROM " + Sql_Mysql.Tb_Batt_RSAlarm_Table + ")";
            //System.out.println(sql_str03);
            sql.sqlMysqlExecute(sql_str03);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    /**
     *     创建单体信息告警记录表
     * @param pool
     * @param recreate
     */
    public static void createTb_Batt_RTAlarm_Table(MysqlConnPool pool, boolean recreate) {
        String sql_str01 = " DROP TABLE IF EXISTS "+Sql_Mysql.Tb_Batt_RTAlarm_Table;
        String sql_str02 = "CREATE TABLE IF NOT EXISTS " + Sql_Mysql.Tb_Batt_RTAlarm_Table + " (" +
                "  `num` bigint(20) NOT NULL AUTO_INCREMENT," +
                "  `BattGroupId` int(11) NOT NULL DEFAULT '1000001' COMMENT '电池组id'," +
                "  `record_time` datetime NOT NULL DEFAULT '2000-01-01 00:00:00' COMMENT '记录时间'," +
                "  `mon_num` int(11) NOT NULL DEFAULT '0' COMMENT '单体编号'," +
                "  `monvol_alm` tinyint(4) NOT NULL DEFAULT '0' COMMENT '单体电压告警'," +
                "  `montmp_alm` tinyint(4) NOT NULL DEFAULT '0' COMMENT '单体温度告警'," +
                "  `monres_alm` tinyint(4) NOT NULL DEFAULT '0' COMMENT '单体内阻告警'," +
                "  `monrestcap_alm` tinyint(4) NOT NULL DEFAULT '0' COMMENT '单体剩余容量告警'," +
                "  PRIMARY KEY (`num`)," +
                "  KEY `index_BattGroupId` (`BattGroupId`) USING BTREE," +
                "  KEY `index_record_time` (`record_time`) USING BTREE" +
                ") ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            if(true == recreate) {
                sql.sqlMysqlExecute(sql_str01);
            }
            sql.sqlMysqlExecute(sql_str02);
            ResultSet res_t = sql.sqlMysqlQuery("SELECT BattGroupId,MonCount FROM " + Sql_Mysql.BattInf_Table);
            while(res_t.next()) {
                int bg_id = res_t.getInt("BattGroupId");
                int mon_cnt = res_t.getInt("MonCount");
                if(mon_cnt > 0){
                    int max_monnum = BattData_RT_RamDB_Thread_SQL.seachBattRTAlarmMaxMonNum(pool,bg_id);            //当前电池组在 tb_batt_rtdata 表中的最大单体个数
                    if(mon_cnt > max_monnum){
                        //需要从max_monnum开始添加单体记录
                        String sql_str2 = "INSERT INTO " + Sql_Mysql.Tb_Batt_RTAlarm_Table + "(BattGroupId, mon_num)" + " VALUES ";
                        boolean isStart = true;
                        for(int mc = max_monnum; mc < mon_cnt; mc++) {
                            if(isStart) {
                                isStart = false;
                            }else{
                                sql_str2 += ",";
                            }
                            sql_str2 += "(" + bg_id + "," + (mc+1) + ")";
                        }
                        System.out.println("电池组"+bg_id+"从单体"+(max_monnum+1)+"开始在tb_batt_rtdata表中添加单体数据  at " + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
                        sql.sqlMysqlExecute(sql_str2);
                    }else if(mon_cnt < max_monnum){
                        //删除当前电池组中超过单体个数的数据
                        String sql_str2 = " DELETE FROM " + Sql_Mysql.Tb_Batt_RTAlarm_Table + " WHERE  BattGroupId = " +bg_id+ " AND mon_num > "+mon_cnt;
                        sql.sqlMysqlExecute(sql_str2);
                        System.out.println("电池组"+bg_id+"从单体"+(mon_cnt+1)+"开始删除tb_batt_rtdata单体数据 at "+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
                    }
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    
    /**
     *     创建   tb_fbs9100_chargerstate 表
BattMonitor_DB_Builder/src/com/database_util/DB_db_user.java
@@ -55,13 +55,7 @@
        
        createUser_Battgroup_Baojigroup_Table(pool, recreate);
        
        createUser_Limit_Table(pool, recreate);
    
    
    
@@ -846,6 +840,32 @@
        }
    }
    
    /**
     *
     */
    public static void createUser_Limit_Table(MysqlConnPool pool, boolean recreate) {
        String sql_str01 = " DROP TABLE IF EXISTS "+Sql_Mysql.User_Limit_Table;
        String sql_str02 = "CREATE TABLE  IF NOT EXISTS " + Sql_Mysql.User_Limit_Table + " (" +
                "  `id` int(11) NOT NULL AUTO_INCREMENT," +
                "  `userId` int(11) DEFAULT NULL," +
                "  `limitDuration` int(3) DEFAULT NULL COMMENT '限制时间,单位:秒'," +
                "  `loginTime` datetime DEFAULT NULL COMMENT '登录时间'," +
                "  PRIMARY KEY (`id`)" +
                ") ENGINE=InnoDB AUTO_INCREMENT=36 DEFAULT CHARSET=utf8;";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        try {
            if(true == recreate) {
                sql.sqlMysqlExecute(sql_str01);
            }
            sql.sqlMysqlExecute(sql_str02);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    /**
     * 创建线程手动启动工具表
     */
@@ -948,6 +968,15 @@
                sql.sqlMysqlExecute("ALTER TABLE " + Sql_Mysql.TB_UserInf 
                                + " ADD COLUMN `license` text DEFAULT NULL;");
            }
            //添加login_type[登陆状态]
            res = sql.sqlMysqlQuery("SELECT * FROM information_schema.columns"
                    + " WHERE table_schema='db_user'"
                    + " AND table_name='tb_user_inf'"
                    + " AND column_name='login_type'");
            if(false == res.next()) {
                sql.sqlMysqlExecute("ALTER TABLE " + Sql_Mysql.TB_UserInf
                                + " ADD COLUMN `login_type` tinyint(1) DEFAULT '1' COMMENT '登录类型:1-密码,2-人脸';");
            }
            res = sql.sqlMysqlQuery("SELECT COUNT(*) as num_count FROM " + Sql_Mysql.TB_UserInf);
            if(res.next()) {
                int count = res.getInt("num_count");
BattMonitor_DB_Builder/src/com/sql/Sql_Mysql.java
@@ -142,6 +142,10 @@
    public final static String FBS9100_ChargerstateTable = DB_RamDB + ".`tb_fbs9100_chargerstate`";                    //充电机
    public final static String Tb_Lithium_DataTable = DB_RamDB + ".`tb_lithium_data`";                                //锂电池数据表
    
    public final static String Tb_Batt_RSAlarm_Table = DB_RamDB + ".`tb_batt_rsalarm`";                                //锂电池数据表
    public final static String Tb_Batt_RTAlarm_Table = DB_RamDB + ".`tb_batt_rtalarm`";                                //锂电池数据表
    
    /**************************** db_user数据库 ***************************************************/
    public final static String User_Permitgroup_Table = DB_USER + ".`tb_user_permitgroup`";                                //权限表
@@ -165,6 +169,7 @@
    public final static String User_Battgroup_Baojigroup_Usr_Table = DB_USER + ".`tb_user_battgroup_baojigroup_usr`";                            //
    public final static String User_Battgroup_Baojigroup_Battgroup_Table = DB_USER + ".`tb_user_battgroup_baojigroup_battgroup`";                            //
    public final static String User_Battgroup_Baojigroup_Table = DB_USER + ".`tb_user_battgroup_baojigroup`";                            //
    public final static String User_Limit_Table = DB_USER + ".`tb_user_limit`";                            //
    
    
    
BattMonitor_DB_Builder/src/com/version_inf/version_inf.txt
@@ -163,4 +163,9 @@
    1.'db_pwrdev_data_rt`.`tb_pwrdev_acdcdata' 表中新增温湿度传感器相关字段
    2.新增`db_ram_db`.`tb_lithium_data`表用于更新锂电池实时数据
    
V1.56 edit at date 2021-06-08
    1.新增用户登陆限制表'db_user.tb_user_limit'
    2.用户表新增'login_type'[登陆状态]字段
    3.新增南京送检蓄电池告警表'db_ram_db.tb_batt_rtalarm'和'db_ram_db.tb_batt_rsalarm'表的建表语句