BattMonitor_FBS9100S_DischargePlan/bin/com/batt/dischargeplan/FBS9100_ComBase.classBinary files differ
BattMonitor_FBS9100S_DischargePlan/bin/com/sql/Sql_Mysql.classBinary files differ
BattMonitor_FBS9100S_DischargePlan/bin/com/version_inf/version_inf.txt
@@ -116,4 +116,8 @@ 1.该版本在之前基础上初步添加了放电计划规避时间 V1.203 edit at date 2020-06-18 lijun 1.修复之前放电计划不启动bug 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 @@ -648,11 +650,45 @@ public static long calculTimelong(Date start,Date end) { 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
@@ -106,19 +106,21 @@ 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_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_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 Dev_Restart_Plan_Table = WEB_Site + ".tb_dev_restart_plan"; //设备重启计划表 //--------------------------------------------------------------------------------------------// public Connection mysql_con; BattMonitor_FBS9100S_DischargePlan/src/com/version_inf/version_inf.txt
@@ -116,4 +116,8 @@ 1.该版本在之前基础上初步添加了放电计划规避时间 V1.203 edit at date 2020-06-18 lijun 1.修复之前放电计划不启动bug 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(); }