添加设备定期远程重启,以及启动放电计划前清空当前同省,市,区县,机房名称的设备的告警
3个文件已添加
11个文件已修改
329 ■■■■■ 已修改文件
BattMonitor_FBS9100S_DischargePlan/bin/com/batt/dischargeplan/FBS9100_ComBase.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_DischargePlan/bin/com/sql/Sql_Mysql.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_DischargePlan/bin/com/version_inf/version_inf.txt 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_DischargePlan/src/com/batt/dischargeplan/BattDischarge_plan.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_DischargePlan/src/com/batt/dischargeplan/Batt_Discharge_Plan_SQL.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_DischargePlan/src/com/batt/dischargeplan/Batt_Discharge_Plan_Thread.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_DischargePlan/src/com/batt/dischargeplan/FBS9100Param_SQL.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_DischargePlan/src/com/batt/dischargeplan/FBS9100_ComBase.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_DischargePlan/src/com/dev/restartplan/Dev_Restart_Plan.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_DischargePlan/src/com/dev/restartplan/Dev_Restart_Plan_Thread.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_DischargePlan/src/com/dev/restartplan/Dev_Restart_Plan_Thread_SQL.java 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_DischargePlan/src/com/sql/Sql_Mysql.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_DischargePlan/src/com/version_inf/version_inf.txt 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_DischargePlan/src/main/main_FBS9100S_DischargePlan.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9100S_DischargePlan/bin/com/batt/dischargeplan/FBS9100_ComBase.class
Binary files differ
BattMonitor_FBS9100S_DischargePlan/bin/com/sql/Sql_Mysql.class
Binary files differ
BattMonitor_FBS9100S_DischargePlan/bin/com/version_inf/version_inf.txt
@@ -117,3 +117,7 @@
    
V1.203 edit at date 2020-06-18 lijun
    1.修复之前放电计划不启动bug
V2.101 edit at date 2020-08-01 lijun
    1.添加设备定期远程重启功能
    2.执行放电计划时清除当前设备和同机房[省,市,区县,机房名称相同]下设备的告警[佛山版61850特有]
BattMonitor_FBS9100S_DischargePlan/src/com/batt/dischargeplan/BattDischarge_plan.java
@@ -257,7 +257,7 @@
        if(preset_monvol <= 0) {
            return false;
        }
        if(preset_groupvol <36) {
        if(preset_groupvol <34) {
            return false;
        }
        if(preset_curr < 5) {
@@ -285,5 +285,4 @@
                + ", preset_monvol=" + preset_monvol + ", preset_groupvol=" + preset_groupvol + ", preset_curr="
                + preset_curr + ", preset_mon=" + preset_mon + ", note=" + note + "]";
    }
}
BattMonitor_FBS9100S_DischargePlan/src/com/batt/dischargeplan/Batt_Discharge_Plan_SQL.java
@@ -324,6 +324,8 @@
        return list;
    }
    
    /**
     * 判断设备的连接是否正常
     * @param con_pool
@@ -649,10 +651,44 @@
        return (end.getTime() - start.getTime())/1000;
    }
    /**
     * 清除相同机房下的设备的告警
     */
    public static void clearSameStation(MysqlConnPool pool,int dev_id) {
        String sql_str = "SELECT DISTINCT(tb_battinf.FBSDeviceId) " +
                " FROM "+Sql_Mysql.BattInf_Table+",(SELECT * FROM "+Sql_Mysql.BattInf_Table+" WHERE FBSDeviceId = " + dev_id + ") as tmp " +
                " WHERE tb_battinf.StationName1 = tmp.StationName1 AND tb_battinf.StationName2 = tmp.StationName2 " +
                " AND tb_battinf.StationName5 = tmp.StationName5 AND tb_battinf.StationName3 = tmp.StationName3 ";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        ResultSet res = null;
        try {
            res = sql.sqlMysqlQuery(sql_str);
            while(res.next()) {
                int FBSDeviceId = res.getInt("FBSDeviceId");
                //System.out.println(FBSDeviceId);
                FBS9100Param_SQL.sendCmdToFBS9100Dev(pool,FBSDeviceId,FBS9100_ComBase.CMD_ClearSysAlarm);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(res != null) {
                try {
                    res.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            sql.close_con();
        }
    }
    public static void main(String[] args) {
        MysqlConnPool m_Conn_Pool = new MysqlConnPool("118.89.139.230", 3360, 5);
        System.out.println(m_Conn_Pool);
        MysqlConnPool m_Conn_Pool = new MysqlConnPool("127.0.0.1", 3360, 5);
        //System.out.println(m_Conn_Pool);
        //createBattDischarge_PlanTable(m_Conn_Pool);
        System.out.println(checkAvoidTime(m_Conn_Pool));
        //System.out.println(checkAvoidTime(m_Conn_Pool));
        clearSameStation(m_Conn_Pool, 618500001);
    }
}
BattMonitor_FBS9100S_DischargePlan/src/com/batt/dischargeplan/Batt_Discharge_Plan_Thread.java
@@ -84,6 +84,8 @@
                                    //读取设备参数
                                    boolean getdevParam = FBS9100Param_SQL.sendCmdToFBS9100Dev(con_pool,plan.getDev_id(),FBS9100_ComBase.CMD_GetDischargeParm);
                                    if(getdevParam){
                                        //清除当前设备告警
                                        Batt_Discharge_Plan_SQL.clearSameStation(con_pool, plan.getDev_id());
                                        //System.out.println("获取放电参数成功");
                                        //修改数据库中的放电参数
                                        boolean upSetParam = FBS9100Param_SQL.updateFbs9100ParamTable(con_pool, plan);
@@ -94,7 +96,7 @@
                                            boolean setDev_param = FBS9100Param_SQL.sendCmdToFBS9100Dev(con_pool,plan.getDev_id(), FBS9100_ComBase.CMD_SetDischargeParm);
                                            if(setDev_param){
                                                //System.out.println("设置设备的放电参数成功");
                                                sleep(10000);
                                                sleep(5000);
                                                //启动设备的放电
                                                boolean planisStart = FBS9100Param_SQL.sendCmdToFBS9100Dev(con_pool,plan.getDev_id(), FBS9100_ComBase.CMD_Start);
                                                if(planisStart){                                            
BattMonitor_FBS9100S_DischargePlan/src/com/batt/dischargeplan/FBS9100Param_SQL.java
@@ -86,6 +86,8 @@
            case FBS9100_ComBase.CMD_Stop: m_cmd_ack = FBS9100_ComBase.CMD_StopAck; break;
            case FBS9100_ComBase.CMD_SetDischargeParm: m_cmd_ack = FBS9100_ComBase.CMD_SetDischargeParmAck; break;
            case FBS9100_ComBase.CMD_GetDischargeParm: m_cmd_ack = FBS9100_ComBase.CMD_GetDischargeParmAck; break;
            case FBS9100_ComBase.CMD_ResetSystem:m_cmd_ack = FBS9100_ComBase.CMD_ResetSystemAck;break;
            case FBS9100_ComBase.CMD_ClearSysAlarm:m_cmd_ack = FBS9100_ComBase.CMD_ClearSysAlarm_ACK;break;
            default: return false;
        }
        boolean res_exe = false;
@@ -97,7 +99,7 @@
        {
            sql_str = "SELECT op_cmd FROM " + Sql_Mysql.FBS9100SetParam_Table +
                      " WHERE dev_id='" + idaddr + "'";
            for(int n=0; n<20; n++)
            for(int n=0; n<40; n++)
            {
                ResultSet res = sql.sqlMysqlQuery(sql_str);
                try {
BattMonitor_FBS9100S_DischargePlan/src/com/batt/dischargeplan/FBS9100_ComBase.java
@@ -8,7 +8,8 @@
    public static final int     CMD_NULL                        =    0x00;
    //----------------------------------------------------------------------------
    //------------ 重启FBS9100设备 ------------------------------------------------
    public static final int     CMD_ResetSystem                    =     0x10;
    public static final int     CMD_ResetSystem                    =     0x10;            //重启
    public static final int     CMD_ResetSystemAck                =     0x0F;//15        //重启成功
    //------------ 升级FBS9100软件 ------------------------------------------------
    public static final int     CMD_SystemUpdate                =    0x11;
    //----------------------------------------------------------------------------
@@ -110,6 +111,9 @@
    public static final int        DataType_GrpVol                    =    0x05;
    public static final int        DataType_Curr                    =    0x06;
    //------------------------------------------------------------------------------
    //-------------- 清除61850告警     --------------------------------------------------
    public static final int        CMD_ClearSysAlarm               =   0xB8;                    //清除告警
    public static final int        CMD_ClearSysAlarm_ACK           =   0xB9;                    //清除告警成功
    //------------------------------------------------------------------------------
    public static byte changeIntToByte(int data)
    {
BattMonitor_FBS9100S_DischargePlan/src/com/dev/restartplan/Dev_Restart_Plan.java
New file
@@ -0,0 +1,50 @@
package com.dev.restartplan;
import java.util.Date;
public class Dev_Restart_Plan {
    public int dev_id;                    //设备id
    public Date restart_starttime;        //重启开始时间
    public Date last_restarttime;        //上一次重启时间
    public int restart_cycle;            //重启周期(单位:天)
    public int restart_en;                //重启使能[0:不启用;1:启用]
    public String note;
    public int getDev_id() {
        return dev_id;
    }
    public Date getRestart_starttime() {
        return restart_starttime;
    }
    public int getRestart_cycle() {
        return restart_cycle;
    }
    public int getRestart_en() {
        return restart_en;
    }
    public String getNote() {
        return note;
    }
    public void setDev_id(int dev_id) {
        this.dev_id = dev_id;
    }
    public void setRestart_starttime(Date restart_starttime) {
        this.restart_starttime = restart_starttime;
    }
    public void setRestart_cycle(int restart_cycle) {
        this.restart_cycle = restart_cycle;
    }
    public void setRestart_en(int restart_en) {
        this.restart_en = restart_en;
    }
    public void setNote(String note) {
        this.note = note;
    }
    public Date getLast_restarttime() {
        return last_restarttime;
    }
    public void setLast_restarttime(Date last_restarttime) {
        this.last_restarttime = last_restarttime;
    }
}
BattMonitor_FBS9100S_DischargePlan/src/com/dev/restartplan/Dev_Restart_Plan_Thread.java
New file
@@ -0,0 +1,47 @@
package com.dev.restartplan;
import java.util.Date;
import java.util.List;
import com.base.Com;
import com.batt.dischargeplan.FBS9100Param_SQL;
import com.batt.dischargeplan.FBS9100_ComBase;
import com.sql.MysqlConnPool;
public class Dev_Restart_Plan_Thread implements Runnable{
    public MysqlConnPool pool;
    public Dev_Restart_Plan_Thread(MysqlConnPool pool){
        this.pool = pool;
    }
    @Override
    public void run() {
        System.out.println(" Dev_Restart_Plan_Thread Start at " + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
        while(true) {
            try {
                //查询需要重启的设备
                List<Dev_Restart_Plan> plans = Dev_Restart_Plan_Thread_SQL.queryEffectRestartPlan(pool);
                for(int i = 0;i < plans.size();i++) {
                    //System.out.println(plans.get(i).dev_id+" 开始重启");
                    //开始重启当前设备
                    if(FBS9100Param_SQL.sendCmdToFBS9100Dev(pool, plans.get(i).dev_id, FBS9100_ComBase.CMD_ResetSystem)) {
                        System.out.println(plans.get(i).dev_id+" 定时远程重启成功  "+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
                        //重启成功
                        plans.get(i).setLast_restarttime(new Date());
                    }
                }
                Dev_Restart_Plan_Thread_SQL.updateRestartPlan(pool,plans);
                Thread.sleep(2000);
            } catch (Exception e) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e1) {
                    e1.printStackTrace();
                }
                e.printStackTrace();
            }
        }
    }
}
BattMonitor_FBS9100S_DischargePlan/src/com/dev/restartplan/Dev_Restart_Plan_Thread_SQL.java
New file
@@ -0,0 +1,150 @@
package com.dev.restartplan;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.base.Com;
import com.sql.MysqlConnPool;
import com.sql.Sql_Mysql;
public class Dev_Restart_Plan_Thread_SQL {
    public static void init(MysqlConnPool pool) {
        //创建设备重启计划表
        createDev_Restart_PlanTable(pool);
    }
    /**
     *
     * 创建设备重启计划表
     * @param pool
     * @param recreate
     */
    public static void createDev_Restart_PlanTable(MysqlConnPool pool) {
        String sql_str = "CREATE TABLE IF NOT EXISTS " + Sql_Mysql.Dev_Restart_Plan_Table + " (" +
                "  num bigint(20) NOT NULL AUTO_INCREMENT," +
                "  dev_id int(11) NOT NULL DEFAULT '0' COMMENT '设备id'," +
                "  restart_starttime datetime NOT NULL DEFAULT '2000-01-01 00:00:00' COMMENT '重启开始时间'," +
                "  last_restarttime datetime NOT NULL DEFAULT '2000-01-01 00:00:00' COMMENT '上一次重启时间'," +
                "  restart_cycle int(11) NOT NULL DEFAULT '1' COMMENT '重启周期'," +
                "  restart_en int(11) NOT NULL DEFAULT '0' COMMENT '重启使能  0:不启用 ;1:启用'," +
                "  note varchar(255) NOT NULL DEFAULT '' COMMENT '备用'," +
                "  PRIMARY KEY (`num`)," +
                "  UNIQUE KEY `index_dev_id` (`dev_id`) USING BTREE" +
                ") ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        ResultSet res =null;
        try {
            sql.sqlMysqlExecute(sql_str);
            //添加上一次重启时间字段
            res = sql.sqlMysqlQuery("SELECT * FROM information_schema.columns"
                    + " WHERE table_schema='web_site'"
                    + " AND table_name='tb_dev_restart_plan'"
                    + " AND column_name='last_restarttime'");
            if(false == res.next()) {
                sql.sqlMysqlExecute("ALTER TABLE " + Sql_Mysql.Dev_Restart_Plan_Table
                        + " ADD COLUMN last_restarttime datetime NOT NULL DEFAULT '2000-01-01 00:00:00' COMMENT '上一次重启时间';");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    /**
     * 查询有效的放电计划数据
     * @param pool
     * @return
     */
    public static List<Dev_Restart_Plan> queryEffectRestartPlan(MysqlConnPool pool){
        String sql_str = " SELECT * FROM " + Sql_Mysql.Dev_Restart_Plan_Table +
                         " WHERE restart_en =1 AND dev_id in(" +
                            "SELECT FBSDeviceId FROM " + Sql_Mysql.BattInf_Table +
                         ")";
        List<Dev_Restart_Plan> plans = new ArrayList<Dev_Restart_Plan>();
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        ResultSet res = null;
        try {
            res = sql.sqlMysqlQuery(sql_str);
            Dev_Restart_Plan plan;
            while(res.next()) {
                plan = new Dev_Restart_Plan();
                plan.setDev_id(res.getInt("dev_id"));
                plan.setRestart_cycle(res.getInt("restart_cycle"));
                plan.setRestart_starttime(res.getTimestamp("restart_starttime"));
                plan.setLast_restarttime(res.getTimestamp("last_restarttime"));
                plan.setRestart_en(res.getInt("restart_en"));
                long timelong = calculTimelong(plan.restart_starttime, new Date());
                if(timelong < 0) {
                    //计划开始时间尚未到,跳过当前计划
                    continue;
                }else {
                    long lastlong = calculTimelong(plan.last_restarttime, new Date());
                    //执行中的放电计划(包含已经完成的放电放电计划)
                    int day_count =(int) timelong / (60*60*24);                //和计划时间开始相差多少天
                    int sec_count = (int) timelong%(60*60*24);                //和计划时间相差秒数
                    int circle = day_count / plan.restart_cycle;
                    int remain = day_count % plan.restart_cycle;
                    //相隔天数为周期的整数倍,并且在2分钟内时;并且2分钟内没有重启成功过设备
                    if(remain == 0 && sec_count <120 && lastlong > 120) {
                        plans.add(plan);
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(res != null) {
                try {
                    res.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            sql.close_con();
        }
        return plans;
    }
    /**
     *     更新当前设备重启计划上一次重启时间
     * @param pool
     * @param plans
     */
    public static void updateRestartPlan(MysqlConnPool pool, List<Dev_Restart_Plan> plans) {
        if(plans.size() > 0) {
            String sql_str = "";
            for(int i=0;i<plans.size();i++) {
                Dev_Restart_Plan plan = plans.get(i);
                sql_str += " UPDATE "+Sql_Mysql.Dev_Restart_Plan_Table+" SET last_restarttime = '"+Com.getDateTimeFormat(plan.last_restarttime, Com.DTF_YMDhms)+"' WHERE dev_id = "+plan.dev_id+";";
            }
            Sql_Mysql sql = new Sql_Mysql(pool.getConn());
            try {
                sql.sqlMysqlExecute(sql_str);
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                sql.close_con();
            }
        }
    }
    //返回指定时间间隔间的秒数
    public static long calculTimelong(Date start,Date end) {
        return (end.getTime() - start.getTime())/1000;
    }
}
BattMonitor_FBS9100S_DischargePlan/src/com/sql/Sql_Mysql.java
@@ -119,6 +119,8 @@
    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 Dev_Restart_Plan_Table = WEB_Site + ".tb_dev_restart_plan";                    //设备重启计划表
    //--------------------------------------------------------------------------------------------//
    public Connection mysql_con;
    
BattMonitor_FBS9100S_DischargePlan/src/com/version_inf/version_inf.txt
@@ -117,3 +117,7 @@
    
V1.203 edit at date 2020-06-18 lijun
    1.修复之前放电计划不启动bug
V2.101 edit at date 2020-08-01 lijun
    1.添加设备定期远程重启功能
    2.执行放电计划时清除当前设备和同机房[省,市,区县,机房名称相同]下设备的告警[佛山版61850特有]
BattMonitor_FBS9100S_DischargePlan/src/main/main_FBS9100S_DischargePlan.java
@@ -10,6 +10,8 @@
import com.batt.dischargeplan.Batt_Discharge_Plan_Thread;
import com.config.AppConfig;
import com.config.AppParam;
import com.dev.restartplan.Dev_Restart_Plan_Thread;
import com.dev.restartplan.Dev_Restart_Plan_Thread_SQL;
import com.sql.MysqlConnPool;
import com.sql.Sql_Mysql;
@@ -27,7 +29,7 @@
    /**************************************************************************/
    /**************************************************************************/
    public final static boolean app_debug = false;
    public final static float m_VersionNum = (float) 1.203;
    public final static float m_VersionNum = (float) 2.101;
    public final static String m_Version = "Welcome To Use FBS9100S Discharge Plan Monitor V" + m_VersionNum + " RC_20170505";
    /**************************************************************************/
    /**************************************************************************/
@@ -187,7 +189,7 @@
        /*********************************************************************************/
        /*********************************************************************************/
        /*********************************************************************************/
        Dev_Restart_Plan_Thread_SQL.init(GB_MysqlConnPool);
        
        
        Batt_Discharge_Plan_SQL.createBattDischargePlanTable(GB_MysqlConnPool);
@@ -199,13 +201,18 @@
        Batt_Discharge_Plan_Thread     batt_discharge_plan_thread = new Batt_Discharge_Plan_Thread(GB_MysqlConnPool,allstates);
        batt_discharge_plan_thread.start();
        
        Dev_Restart_Plan_Thread restart = new Dev_Restart_Plan_Thread(GB_MysqlConnPool);
        new Thread(restart).start();
        //修改线程的启动时间以及软件版本号
        Batt_Discharge_Plan_SQL.updateServerStartInfTo_RamDB_Table(GB_MysqlConnPool,m_VersionNum);
        
        while(true)
        {
            try {
                Thread.sleep(1000);
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }