This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
nms-nmsserver/src/com/nms/server/bean/DetectInfo.java

404 lines
15 KiB
Java
Raw Normal View History

2018-09-27 16:17:06 +08:00
package com.nms.server.bean;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import com.fang.U;
import com.nms.server.common.Common;
import com.nms.server.common.Config;
import com.nms.server.dao.OracleToMysql;
public class DetectInfo {
public static final int SEQID = 0; //seqId
public static final int SETINFOID = 1; //监测设置ID
public static final int CHECKTYPE = 2; //监测类别
public static final int PROCESS = 3; //进程名称(监测类别设置名称)
public static final int STARTTIME = 4; //监测服务启动时间
public static final int DELAYTIME = 5; //检测时延(秒)
public static final int CHECKTIME = 6; //本次检测时间
public static final int CURRENTTIMES = 7; //尝试次数
public static final int NEXTCHECKTIME = 8; //下次计划监测时间
public static final int ARRIVETIME = 9;
public static final int STATE = 10; //执行状态是否成功是否正常
public static final int SHOWNUMS = 11; //告警序列(数据)
public static final int PLEVEL = 12; //告警级别(数据)
public static final int PVALUE = 13; //告 警 值(数据)
public static final int DSINFO = 14; //状态信息(描述信息)
public static final int PDATA = 15; //性能数据
public static final int DETAILS = 16;//详细参数
public static final int DELYFLAG = 17; //是否解析详细参数标志
public static final int URGENTLEVEL =18 ; //紧急级别
public static final int ALARMINFO =19 ;//告警信息
public static final int SENDEMAILFLAG =20;//邮件发送标志
public static final int STATECHANGEFLAG =21;//状态变更标志
public static final int STATUSCHANGTIME = 22;//状态变更时间
public static final int EMAILINFO = 23;//邮件信息
public static final int DISKINFOLIST = 24; // net 特殊格式追加详细信息
public static final int NETINFOLIST =25; // net 特殊格式追加详细信息
public static final int APPENDWARNINGINFO = 26;//延迟数据,追加告警信息
//public static final int DSB = 27;//存放字节数字格式的监测数据,用于解析异常时,存监测数据到硬盘的时候用
/**
* 以下属性用于记录原监测数据
*/
public static final int VALID = 27;
public static final int DETECTIONINFOID = 28;
public static final int WAITTIME = 29;
/**
* 从解析之后数据恢复成原数据时使用
*/
public static final int SHOWNUMLIST = 30;
public static final int PLEVELLIST = 31;
public static final int ALARMLIST = 32;
/**
* detect_queue key
*/
public static final String INFO_KEY = "INFO";
public static final String DISK_STR_KEY = "DISK_STR";
public static final String NET_STR_KEY = "NET_STR";
/**
* 详细表中的外键字段名
*/
public static final String DETECTION_INFO_ID = "DETECTION_INFO_ID";
public static final String DETECTION_INFO="detection_info";
/*
* 该字段是针对同一时间点多条具体数据写多个文件比如网卡监测多个网卡问题
*/
private List<String> detailDatas = new LinkedList<String>();
/*
* 针对公共数据的描述信息
*/
private String descInfo;
/**
* 尝试次数 小于最大尝试次数
*/
private int testTimes;
/**
* 监测时间
*/
private long checkTime;
/*
* 该字段是针对一条数据关联的其他表的数据写入到一个文件的 String 是解析标识 List<String[]>是多条数据String[]存入表中的数据
* 系统信息监测数据中有网卡数量网卡数量关联着其他表表中又有多个字段如网卡名称IP子网掩码等等
*/
private Map<String, List<String[]>> relatedDatas;
public List<String> getDetailDatas() {
return detailDatas;
}
public void setDetailDatas(List<String> detailDatas) {
this.detailDatas = detailDatas;
}
public String getDescInfo() {
return descInfo;
}
public void setDescInfo(String descInfo) {
this.descInfo = descInfo;
}
public Map<String, List<String[]>> getRelatedDatas() {
return relatedDatas;
}
public void setRelatedDatas(Map<String, List<String[]>> relatedDatas) {
this.relatedDatas = relatedDatas;
}
public int getTestTimes() {
return testTimes;
}
public void setTestTimes(int testTimes) {
this.testTimes = testTimes;
}
public long getCheckTime() {
return checkTime;
}
public void setCheckTime(long checkTime) {
this.checkTime = checkTime;
}
/**
* DETECTION_INFO insert sql
* @return
*/
public static String getInsertInfoSql(){
String insertInfoSql = "";
if(Common.SEQUENCE.get(DetectInfo.DETECTION_INFO)!=null){
insertInfoSql = "INSERT INTO DETECTION_INFO (ID, DETECTION_SET_INFO_ID, DETECTION_STATE_INFO, " +
"PERFORMACE_DATA, CURRENT_TIMES, START_TIME, DELAY_TIME, NEXT_CHECK_TIME, " +
"POLICE_LEVEL, DATA_CHECK_TIME, DATA_ARRIVE_TIME, DETECTIONED_STATE, " +
"DATA_CHECK_TIME_DIGITAL, DATA_ARRIVE_TIME_DIGITAL, SEQ_ID, POLICE_EMERGENT,STATUS_CHANGE_TIME,SEQUENCE)"
+" VALUES (?, ?, ?, ?, ?, to_date(?,'yyyy-mm-dd hh24:mi:ss'), ?, to_date(?,'yyyy-mm-dd hh24:mi:ss'), ?, to_date(?,'yyyy-mm-dd hh24:mi:ss'), to_date(?,'yyyy-mm-dd hh24:mi:ss'), ?, ?, ?, ?, ?,to_date(?,'yyyy-mm-dd hh24:mi:ss'),?)";
}else{
insertInfoSql = "INSERT INTO DETECTION_INFO (ID, DETECTION_SET_INFO_ID, DETECTION_STATE_INFO, " +
"PERFORMACE_DATA, CURRENT_TIMES, START_TIME, DELAY_TIME, NEXT_CHECK_TIME, " +
"POLICE_LEVEL, DATA_CHECK_TIME, DATA_ARRIVE_TIME, DETECTIONED_STATE, " +
"DATA_CHECK_TIME_DIGITAL, DATA_ARRIVE_TIME_DIGITAL, SEQ_ID, POLICE_EMERGENT,STATUS_CHANGE_TIME)"
+" VALUES (?, ?, ?, ?, ?, to_date(?,'yyyy-mm-dd hh24:mi:ss'), ?, to_date(?,'yyyy-mm-dd hh24:mi:ss'), ?, to_date(?,'yyyy-mm-dd hh24:mi:ss'), to_date(?,'yyyy-mm-dd hh24:mi:ss'), ?, ?, ?, ?, ?,to_date(?,'yyyy-mm-dd hh24:mi:ss'))";
}
return OracleToMysql.trans(insertInfoSql);
}
/**
* 组织detail表的insert语句
* @param fieldNames
* @param detailTableName
* @param tempMap
* @return
*/
public static String createDetailSql(List<String> fieldNames,
String detailTableName, Map<String, String> tempMap) {
String insertDetailSql;
StringBuffer preSql = new StringBuffer();
StringBuffer sufSql = new StringBuffer();
preSql.append(",DETECTION_INFO_ID");
sufSql.append(",?");
fieldNames.add("DETECTION_INFO_ID");
for(String tempField : tempMap.keySet()){
fieldNames.add(tempField);
preSql.append("," + tempField);
sufSql.append(",?");
}
insertDetailSql = "insert into "+detailTableName +" ( "+ preSql.substring(1) +" ) values (" + sufSql.substring(1) +" )";
return insertDetailSql;
}
/**
* 计算 detection_info 及详细表的关联主键
* @param checkTime 监测时间
* @param seqId 节点id
* @param setId 监测设置id
* @return 10位时间戳 + 5位 seqId + 3位 setId
*/
public static String computeId(String checkTime,String seqId,String setId){
if(U.Strs.isAllNotBlank(checkTime,seqId,setId)){
StringBuilder sb = new StringBuilder();
checkTime = checkTime.substring(checkTime.length() -10);//截取时间戳 后10位
sb.append("00000");
sb.append(seqId);
seqId = sb.substring(sb.length()-5);// seqId 占 5位
sb.delete(0, sb.length());//清空sb
sb.append("000");
sb.append(setId);
setId = sb.substring(sb.length() - 3); // set info id 占 3位
sb.setLength(0);
sb.append(checkTime);
sb.append(seqId);
sb.append(setId);
return sb.toString();
}
return null;
}
/**
* 监测设置查询权限 1 2 3 的邮件列表 sql
* @return
*/
public static String getDetecEmailListOf123Sql(){
StringBuilder sb = new StringBuilder();
sb.append(" select distinct c.id, xyj1.email ");
sb.append(" from xt_yh_jbxx xyj1, ");
sb.append(" (select dsi.id, ',' || dsi.contact_user_ids || ',' as ids ");
sb.append(" from detection_set_info dsi ");
sb.append(" where dsi.contact_user_ids is not null) c ");
sb.append(" where c.ids like ('%,' || xyj1.yhid || ',%') ");
sb.append(" and xyj1.email is not null ");
sb.append(" union ");
sb.append(" (select distinct dsi.id,xyj.email ");
sb.append(" from detection_set_info dsi ");
sb.append(" left join xt_js_jbxx xjj ");
sb.append(" on dsi.create_usergroup_id = xjj.jsbh ");
sb.append(" left join xt_yh_js_index xyji ");
sb.append(" on xjj.jsbh = xyji.jsbh ");
sb.append(" left join xt_yh_jbxx xyj ");
sb.append(" on xyj.yhid = xyji.yhid ");
sb.append(" where xyj.is_receiveemail = '0' ");
sb.append(" and xjj.zxbz = 0 ");
sb.append(" and xjj.type = 1 ");
sb.append(" and xyj.zxbz = 0 ");
sb.append(" and dsi.view_level = 2 ");
sb.append(" and xyj.email is not null ");
sb.append(" and dsi.create_usergroup_id is not null ");
sb.append(" and dsi.contact_user_ids is null) ");
sb.append(" union ");
sb.append(" ( ");
sb.append(" select distinct dsi.id,xyj.email from detection_set_info dsi ");
sb.append(" left join gorup_system_table gst ");
sb.append(" on gst.system_id = dsi.system_id ");
sb.append(" left join xt_js_jbxx xjj ");
sb.append(" on gst.user_group_id = xjj.jsbh ");
sb.append(" left join xt_yh_js_index xyji ");
sb.append(" on xjj.jsbh = xyji.jsbh ");
sb.append(" left join xt_yh_jbxx xyj ");
sb.append(" on xyji.yhid = xyj.yhid ");
sb.append(" where xyj.is_receiveemail = '0' ");
sb.append(" and xjj.zxbz = 0 ");
sb.append(" and xjj.type = 1 ");
sb.append(" and xyj.zxbz = 0 ");
sb.append(" and dsi.view_level = 3 ");
sb.append(" and xyj.email is not null ");
sb.append(" and dsi.contact_user_ids is null ");
sb.append(" ) ");
return OracleToMysql.trans(sb.toString());
}
/**
* 监测设置查看权限为 4 邮件列表 sql
* @return
*/
public static String getDetecEmailListOf4Sql(){
StringBuilder sb = new StringBuilder();
sb.append(" select distinct nt.seq_id ,xyj.email");
sb.append(" from xt_yh_jbxx xyj ");
sb.append(" left join xt_yh_js_index xyji ");
sb.append(" on xyji.yhid = xyj.yhid ");
sb.append(" left join xt_js_jbxx xjj ");
sb.append(" on xjj.jsbh = xyji.jsbh ");
sb.append(" left join gorup_system_table gst ");
sb.append(" on gst.user_group_id = xjj.jsbh ");
sb.append(" left join system_table st ");
sb.append(" on st.system_id = gst.system_id ");
sb.append(" left join node_table nt ");
sb.append(" on nt.system_id = gst.system_id ");
sb.append(" left join nodegroup_table ngt ");
sb.append(" on ngt.group_id = nt.node_group_id ");
sb.append(" where xyj.is_receiveemail = '0' ");
sb.append(" and nt.node_state = 0 ");
sb.append(" and ngt.is_valid = 1 ");
sb.append(" and st.system_state = 0 ");
sb.append(" and xjj.zxbz = 0 ");
sb.append(" and xjj.type = 1 ");
sb.append(" and xyj.zxbz = 0 ");
return sb.toString();
}
/**
* detection_info 表的 insert 语句
* @return
*/
public static String getInsertDetectInfoSql(){
String insertInfoSql="";
if(Common.SEQUENCE.get(DetectInfo.DETECTION_INFO)==null){
insertInfoSql = "INSERT INTO DETECTION_INFO (ID, DETECTION_SET_INFO_ID, DETECTION_STATE_INFO, " +
"PERFORMACE_DATA, CURRENT_TIMES, START_TIME, DELAY_TIME, NEXT_CHECK_TIME, " +
"POLICE_LEVEL, DATA_CHECK_TIME, DATA_ARRIVE_TIME, DETECTIONED_STATE, " +
"DATA_CHECK_TIME_DIGITAL, DATA_ARRIVE_TIME_DIGITAL, SEQ_ID, POLICE_EMERGENT)"
+" VALUES (?, ?, ?, ?, ?, to_date(?,'yyyy-mm-dd hh24:mi:ss'), ?, to_date(?,'yyyy-mm-dd hh24:mi:ss'), ?, to_date(?,'yyyy-mm-dd hh24:mi:ss'), to_date(?,'yyyy-mm-dd hh24:mi:ss'), ?, ?, ?, ?, ?)";
}else{
insertInfoSql = "INSERT INTO DETECTION_INFO (ID, DETECTION_SET_INFO_ID, DETECTION_STATE_INFO, " +
"PERFORMACE_DATA, CURRENT_TIMES, START_TIME, DELAY_TIME, NEXT_CHECK_TIME, " +
"POLICE_LEVEL, DATA_CHECK_TIME, DATA_ARRIVE_TIME, DETECTIONED_STATE, " +
"DATA_CHECK_TIME_DIGITAL, DATA_ARRIVE_TIME_DIGITAL, SEQ_ID, POLICE_EMERGENT,SEQUENCE)"
+" VALUES (?, ?, ?, ?, ?, to_date(?,'yyyy-mm-dd hh24:mi:ss'), ?, to_date(?,'yyyy-mm-dd hh24:mi:ss'), ?, to_date(?,'yyyy-mm-dd hh24:mi:ss'), to_date(?,'yyyy-mm-dd hh24:mi:ss'), ?, ?, ?, ?, ?,?)";
}
return OracleToMysql.trans(insertInfoSql);
}
/**
* detection_warning 表的insert 语句
* @return
*/
public static String getInsertWarningSql(){
//插入warning表
String insertWaringSql = "INSERT INTO DETECTION_INFO_WARNING (DETECTION_INFO_ID, DETECTION_SET_INFO_ID, DETECTION_STATE_INFO, " +
2018-09-27 16:17:06 +08:00
"PERFORMACE_DATA, CURRENT_TIMES, START_TIME, DELAY_TIME, NEXT_CHECK_TIME, " +
"POLICE_LEVEL, DATA_CHECK_TIME, DATA_ARRIVE_TIME, DETECTIONED_STATE, " +
"DATA_CHECK_TIME_DIGITAL, DATA_ARRIVE_TIME_DIGITAL, SEQ_ID, POLICE_EMERGENT)"
+" VALUES (?, ?, ?, ?, ?, to_date(?,'yyyy-mm-dd hh24:mi:ss'), ?, to_date(?,'yyyy-mm-dd hh24:mi:ss'), ?, to_date(?,'yyyy-mm-dd hh24:mi:ss'), to_date(?,'yyyy-mm-dd hh24:mi:ss'), ?, ?, ?, ?, ?)";
return OracleToMysql.trans(insertWaringSql);
}
/**
* email_info 表的insert语句
* @return
*/
public static String getInsertEmailSql(){
//插入email_table表
String insertEmailSql = " insert into email_table (to_address,action_type,content,send_flag,action_ip,action_date,action_desc,send_level,CREATE_TIME)" +
" values(?,?,?,?,?,to_date(?,'yyyy-mm-dd hh24:mi:ss'),?,?,to_date(?,'yyyy-mm-dd hh24:mi:ss'))";
return OracleToMysql.trans(insertEmailSql);
}
/**
* 更新状态变更时间
* @return
*/
public static String getUpdateStatusSql(){
String sql = "update detection_info_new din set din.status_change_time =to_date(?,'yyyy-mm-dd hh24:mi:ss') where din.seq_id=?";
return OracleToMysql.trans(sql);
}
public static String getSaveToNewSql(){
String sql=" insert into detection_info_new(detection_set_info_id ,detection_state_info ,"
+ "performace_data ,current_times ,start_time ,wait_time ,delay_time ,next_check_time ,"
+ "police_level ,data_check_time ,data_arrive_time ,detectioned_state ,"
+ "status_change_time ,seq_id ,detection_info_id,data_check_time_digital,data_arrive_time_digital ,"
+ "POLICE_EMERGENT ) VALUES"
+"(?,?,"
+ "?,?,to_date(?,'yyyy-mm-dd hh24:mi:ss'),?,?,to_date(?,'yyyy-mm-dd hh24:mi:ss'),"
+ "?,to_date(?,'yyyy-mm-dd hh24:mi:ss'),to_date(?,'yyyy-mm-dd hh24:mi:ss'),?,"
+ "to_date(?,'yyyy-mm-dd hh24:mi:ss'),?,?,?,?,?)";
return OracleToMysql.trans(sql);
}
public static String getUpdateToNewSql(){
String sql=" update detection_info_new din set "
+"din.detection_state_info = ?"
+", din.performace_data = ?"
+", din.current_times = ?"
+", din.start_time = to_date(?,'yyyy-mm-dd hh24:mi:ss')"
+", din.wait_time = ?"
+" , din.delay_time = ?"
+" , din.next_check_time = to_date(?,'yyyy-mm-dd hh24:mi:ss')"
+" , din.police_level = ?"
+" , din.data_check_time = to_date(?,'yyyy-mm-dd hh24:mi:ss')"
+" , din.data_arrive_time = to_date(?,'yyyy-mm-dd hh24:mi:ss')"
+", din.detectioned_state = ?"
+" , din.status_change_time = to_date(?,'yyyy-mm-dd hh24:mi:ss')"
+" , detection_info_id = ?"
+" ,data_check_time_digital = ?"
+" ,data_arrive_time_digital = ?"
+" ,POLICE_EMERGENT = ?"
+" where din.detection_set_info_id = ?"
+" and din.seq_id = ?";
return OracleToMysql.trans(sql);
}
public static String getChangeWarningInfoSql(){
String sql="update detection_info_warning set valid =0 where SEQ_ID=? and DETECTION_SET_INFO_ID=? and valid=1";
return OracleToMysql.trans(sql);
}
}