package nis.nms.web.actions.detection; import java.io.PrintWriter; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.apache.struts2.config.Result; import org.apache.struts2.config.Results; import com.nis.util.StringUtil; import net.sf.json.JSONArray; import nis.nms.bean.DiSysteminfo; import nis.nms.bean.DiSysteminfoDisk; import nis.nms.bean.DiSysteminfoNet; import nis.nms.core.Constants; import nis.nms.domains.CheckTypeInfo; import nis.nms.domains.DataPoliceRelation; import nis.nms.domains.DetectionInfoNew; import nis.nms.domains.DetectionInfoWarning; import nis.nms.domains.DetectionSetInfo; import nis.nms.domains.Metadata; import nis.nms.domains.MetadataDictionaryVO; import nis.nms.domains.NodeTable; import nis.nms.domains.NodegroupTable; import nis.nms.domains.OptionTable; import nis.nms.domains.VDetectionInfoNew; import nis.nms.service.CommonService; import nis.nms.util.BaseAction; import nis.nms.util.Constant; import nis.nms.util.DateUtil; import nis.nms.util.ExportUtils; import nis.nms.util.Page; @SuppressWarnings("unchecked") @Results({ @Result(name = "queryMonitorDataInfo", value = "/page/detection/monitorData/monitorInfoList.jsp"), @Result(name = "vqueryMonitorDataInfo", value = "/page/detection/monitorData/vmonitorInfoList.jsp"), @Result(name = "queryMonitorDataInfoNew", value = "/page/detection/monitorData/monitorInfoListNew.jsp"), @Result(name = "queryMonitorDataInfoNewTopo", value = "/page/detection/monitorData/monitorInfoListNewTopo.jsp"), @Result(name = "queryMonitorDataInfoChild", value = "/page/detection/monitorData/monitorInfoListNewChild.jsp"), @Result(name = "queryServerMonitorDataInfoNew", value = "/page/detection/monitorData/serverMonitorInfoListNew.jsp"), @Result(name = "queryServerMonitorDataInfoChild", value = "/page/detection/monitorData/serverMonitorInfoListChild.jsp"), @Result(name = "queryAbnormalSet", value = "/page/detection/monitorData/monitorInfoList_abnormalSet.jsp"), @Result(name = "queryAbnormalSetChild", value = "/page/detection/monitorData/monitorInfoList_abnormalSetChild.jsp"), @Result(name = "detailMonitorDataInfo", value = "/page/detection/monitorData/detailMonitor.jsp"), @Result(name = "drawMonitorInfo", value = "/page/detection/monitorData/drawMonitorInfo.jsp"), @Result(name = "drawSnmpMonitorInfo", value = "/page/detection/monitorData/drawSnmpMonitorInfo.jsp"), @Result(name = "drawSpecialMonitorInfo", value = "/page/detection/monitorData/drawSpecialMonitorInfo.jsp"), @Result(name = "drawSwitchportMonitorInfo", value = "/page/detection/monitorData/drawSwitchportMonitorInfo.jsp"), @Result(name = "queryNE", value = "/page/detection/monitorData/monitorNEList.jsp"), @Result(name = "queryNEChild", value = "/page/detection/monitorData/monitorNEListChild.jsp"), @Result(name = "showDetectionInfo", value = "/page/detection/monitorData/detectionInfoList.jsp"), @Result(name = "showDetectionInfoChild", value = "/page/detection/monitorData/detectionInfoListChild.jsp"), @Result(name = "detailWarning", value = "/page/detection/monitorData/detailWarning.jsp"), @Result(name = "queryEmergent", value = "/page/detection/monitorData/queryEmergent.jsp"), @Result(name = "queryEmergentNew", value = "/page/detection/monitorData/queryEmergentNew.jsp"), @Result(name = "queryEmergentChild", value = "/page/detection/monitorData/queryEmergentChild.jsp"), @Result(name = "select_plug", value = "/page/detection/monitorData/select_plug.jsp") }) public class MonitorDataAction extends BaseAction { private Logger logger = Logger.getLogger(MonitorDataAction.class); private static final long serialVersionUID = 1L; private CommonService commonService; private int pageNo = 1; private int pageSize = getDefaultPageSize(); // 每页显示的记录条数 private Page page; private int pageNoSub = 1; private int pageSizeSub = this.getDefaultPageSize(); // 每页显示的记录条数 private Page pageSub; private String action; private List detectionInfoNewList; private Long[] ids; private DetectionInfoNew detectionInfoNew; private VDetectionInfoNew vdetectionInfoNew; private String dsiId; private String ctId; // private CheckTypeInfo checkTypeInfo; private String jsonStr; private List vnodeIpGroupList; private List nodeIpGroupListNew; private List allCheckTypeInfo; private List metadataList; private String metaId; private String nodeIp; private String sqId; // 查询条件 private String cip; private String nodeIpRange;// IP段 private String nodeGroupStr;// 节点组 名称 private List allNodeGroupInfo = new ArrayList(); private String ctn; private Integer checkType; private String stateInfo; private String startTime; private String endTime; private String sTime; private String eTime; private String status; private String flag; private String lineNames; private List dataList; private String drIndex; private NodeTable nodeTable; // 请求类型为topo 表示来源于拓扑图展示时点击灯泡查询节点组下的节点检测情况 private String requestType; private String nodeGroupId; private String nodeGroupName = ""; private String nodeId; // 监测数据与异常设备公用详情页面、曲线图页面,返回时的标识。 // type为空:服务器检测,type=1:网元检测 type=2:异常网元 private String type; private String showHistory; private List detectionInfoWarningList; private DetectionInfoWarning detectionInfoWarning; // 进入告警信息列表的入口:switch,表示从监测网元信息进入,空则从告警菜单进入 private String entry; private String detectId; private String seqId; private String ip; private String pid; private String nameFlag; private String isLeaf; private String picId; private String queryParConditionDisplay; private String queryChildConditionDisplay; private String nodeType; private String tableName; private String pIden; private String dct; private String police_emergent; private String police_level; private int mypageNo; private int mypageSize; private String queryNEChild; private String detectionSetInfoId; /** * 入口,action=(query queryNE queryAbnormalSet)几乎是统一业务逻辑,修改时同步修改 */ @Override public String executeAction() throws Exception { String resultpage = ""; if ("query".equals(this.action)) { queryCheckTypeInfo(); // 如果是拓扑图过来的请求 走queryMonitorDataInfoNewForTopo逻辑 if (!StringUtil.isBlank(requestType) && requestType.equals("topo")) { queryMonitorDataInfoNewForTopo(); resultpage = "queryMonitorDataInfoNew"; } else if(!StringUtil.isBlank(requestType) && requestType.equals("newTopo")){ queryMonitorDataInfoNewForTopoDetail(); resultpage = "queryMonitorDataInfoNewTopo"; } else { this.queryServerMonitorDataInfoNew();// 服务器监测 resultpage = "queryServerMonitorDataInfoNew"; } } else if ("queryChild".equals(this.action)) { queryCheckTypeInfo(); if (!StringUtil.isBlank(requestType) && requestType.equals("topo")) { queryMonitorDataInfoNewForTopo(); resultpage = "queryMonitorDataInfoChild"; } else { this.queryServerMonitorDataInfoNew();// 服务器监测-自动加载 resultpage = "queryServerMonitorDataInfoChild"; } } else if ("detail".equals(this.action)) { resultpage = this.detailMonitorDataInfo(); } else if ("drawPic".equals(this.action)) { resultpage = this.ajaxDrawDateSource(); } else if ("queryAbnormalSet".equals(this.action)) { // 详情、时序图页面标识监测数据与异常设备菜单 type = "2"; queryCheckTypeInfo(); resultpage = this.queryAbnormalSet();// 异常服务器监测查询 } else if ("queryChildForAbnormalSet".equals(this.action)) { type = "2"; queryCheckTypeInfo(); resultpage = this.queryAbnormalSetChild();// 异常服务器拖动滚动条,动态加载数据 } else if ("queryNE".equals(this.action)) { // 详情、时序图页面标识监测数据与异常设备菜单 type = "1"; queryCheckTypeInfo(); this.queryNE(); resultpage = "queryNE"; } else if ("queryNEChild".equals(this.action)) { type = "1"; queryCheckTypeInfo(); this.queryNE(); resultpage = "queryNEChild"; } else if ("showDetectionInfo".equals(this.action)) { if ("warning".equals(flag) || "queryAllConfigLevel".equals(flag)) { tableName = "detection_info_warning"; } else { tableName = "detection_info"; } showHistory = "history"; queryCheckTypeInfo(); this.showDetectionInfo(); resultpage = "showDetectionInfo"; } else if ("showDetectionInfoChild".equals(this.action)) { if ("warning".equals(flag) || "queryAllConfigLevel".equals(flag)) { tableName = "detection_info_warning"; } else { tableName = "detection_info"; } showHistory = "history"; queryCheckTypeInfo(); this.showDetectionInfo(); resultpage = "showDetectionInfoChild"; } else if ("detailWarning".equals(this.action)) { queryCheckTypeInfo(); resultpage = this.detailWarning(); } else if ("emportCurrentXls".equals(this.action)) { resultpage = emportCurrentXls();// 服务器监测:导出当前页 } else if ("emportAllXls".equals(this.action)) { resultpage = emportAllXls();// 服务器监测:导出所有 } else if ("emportCurrentXlsAbnormalSet".equals(this.action)) { resultpage = emportCurrentXlsAbnormalSet(); } else if ("emportAllXlsAbnormalSet".equals(this.action)) { resultpage = emportAllXlsAbnormalSet(); } else if ("queryEmergent".equals(this.action)) { // 拓扑图,查询紧急告警 queryEmergent(); resultpage = "queryEmergent"; } else if ("queryEmergentDetail".equals(this.action)) { // 拓扑图,查询紧急告警 modify 2018/07/18 th queryEmergentDetail(); resultpage = "queryEmergentNew"; } else if ("queryEmergentChild".equals(this.action)) { queryEmergent();// 拓扑图,查询紧急告警子页面 resultpage = "queryEmergentChild"; }else if("queryEmergentChildDetail".equals(this.action)){ queryEmergentDetail();// 拓扑图,查询紧急告警子页面 modify 2018/07/18 th resultpage = "queryEmergentNew"; } else if ("emportCurrentXlsForTopo".equals(this.action)) { resultpage = emportCurrentXlsForTopo(); } else if ("emportAllXlsForTopo".equals(this.action)) { resultpage = emportAllXlsForTopo(); } /* * else { queryCheckTypeInfo(); resultpage = * queryServerMonitorDataInfoNew(); } */ return resultpage; } // 当前页导出 程辉 2013-5-8新增 public String emportCurrentXlsAbnormalSet() { try { StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append( " select distinct din.id,nt.node_ip,cti.check_type_name1,dsi.PROCESS_IDEN_NAME,din.detectioned_state"); sqlBuffer.append( ",to_char(din.data_check_time,'yyyy-MM-dd HH24:mi:Ss'),'',din.current_times,replace(din.detection_state_info,'$@$',''),to_char(din.status_change_time,'yyyy-MM-dd HH24:mi:Ss')"); sqlBuffer.append( ",dsi.id dsiiId,cti.id ctiId,din.seq_id sqId,nt.node_system_type nodeSysType,nvl(checkTypeCharState.charStateNum,0) charStateNum,nt.node_type nodeType,nt.ipn ipn"); sqlBuffer.append(" from DETECTION_INFO_NEW din"); sqlBuffer.append(" left join DETECTION_SET_INFO dsi"); sqlBuffer.append(" on din.detection_set_info_id = dsi.id"); sqlBuffer.append(" left join check_type_info cti"); sqlBuffer.append(" on dsi.check_type_id = cti.id"); sqlBuffer.append( " left join (select distinct node_ip,seq_id,node_system_type,node_type,node_state,system_id,ipn from NODE_TABLE) nt"); sqlBuffer.append(" on din.seq_id = nt.seq_id"); // ------------2013-1-23 hyx // 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------start sqlBuffer.append(" left join "); sqlBuffer.append( " (select md.check_type_id as ctId,count(*) as charStateNum from metadata md where md.chart_state=0 group by md.check_type_id) checkTypeCharState "); sqlBuffer.append(" on checkTypeCharState.ctId=cti.id "); sqlBuffer.append( " where nt.node_ip is not null and nt.node_state = 0 and dsi.detection_set_state ='1' and cti.crete_state=0 and din.valid=1 AND din.detectioned_state in('0','-1') ");// 只显示有效的数据:din.valid=1 if (!this.getAdminMark()) { sqlBuffer.append(" and nt.system_id = "); sqlBuffer.append(this.getSystemID()); } if (cip != null && !"".equals(cip) && !"null".equals(cip)) { sqlBuffer.append(" and nt.node_ip = '" + cip + "'"); } if (ctn != null && !"".equals(ctn)) { sqlBuffer.append(" and cti.id =" + ctn); } if (!this.getAdminMark()) { sqlBuffer.append(" and (((( cti.view_level=1 and cti.user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( cti.view_level=2 and cti.group_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or cti.view_level=3 ) and cti.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (cti.view_level=4 )"); sqlBuffer.append(") "); sqlBuffer.append("and (((( dsi.view_level=1 and dsi.create_user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( dsi.view_level=2 and dsi.create_usergroup_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or dsi.view_level=3 ) and dsi.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (dsi.view_level=4 )"); sqlBuffer.append(") and dsi.detection_set_state=1 and cti.crete_state=0 "); } sqlBuffer.append(" order by ipn ASC,cti.id ASC, dsi.id ASC"); System.out.println("sqlBuffer:" + sqlBuffer.toString()); page = this.commonService.findByPageForSql(sqlBuffer.toString(), pageNo, pageSize); List detectionInfoList; // 最新状态信息集合 detectionInfoList = (List) page.getResult(); detectionInfoList = changeValue(detectionInfoList, false); for (int j = 0; j < detectionInfoList.size(); j++) { if (detectionInfoList.get(j)[5] != null && detectionInfoList.get(j)[9] != null) { detectionInfoList.get(j)[6] = this.getPersistTime( DateUtil.getDateD(detectionInfoList.get(j)[5].toString()), DateUtil.getDateD(detectionInfoList.get(j)[9].toString())); } if (detectionInfoList.get(j)[4] != null && detectionInfoList.get(j)[4].equals("-1")) { detectionInfoList.get(j)[4] = getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.exception_n81i"); } if (detectionInfoList.get(j)[4] != null && detectionInfoList.get(j)[4].equals("0")) { detectionInfoList.get(j)[4] = getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.unnormal_n81i"); } if (detectionInfoList.get(j)[4] != null && detectionInfoList.get(j)[4].equals("1")) { detectionInfoList.get(j)[4] = getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.normal_n81i"); } } String[] title = { getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.hostname_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.checkType_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.setName_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.state_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.lastCheckTime_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.duration_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.attempt_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.stateInfo_n81i") }; String[] colu = { "1", "2", "3", "4", "5", "6", "7", "8" }; ExportUtils m = new ExportUtils(); m.setAutoSizeColumn(true); m.exportExcel(getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.deviceException_n81i"), detectionInfoList, title, colu); } catch (Exception e) { logger.error(e.getStackTrace()); e.printStackTrace(); } return null; } // 导出全部 程辉 2013-5-8新增 public String emportAllXlsAbnormalSet() { try { StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append( " select distinct din.id,nt.node_ip,cti.check_type_name1,dsi.PROCESS_IDEN_NAME,din.detectioned_state"); sqlBuffer.append( ",to_char(din.data_check_time,'yyyy-MM-dd HH24:mi:Ss'),'',din.current_times,replace(din.detection_state_info,'$@$',''),to_char(din.status_change_time,'yyyy-MM-dd HH24:mi:Ss')"); sqlBuffer.append( ",dsi.id dsiiId,cti.id ctiId,din.seq_id sqId,nt.node_system_type nodeSysType,nvl(checkTypeCharState.charStateNum,0) charStateNum,nt.node_type nodeType,nt.ipn ipn"); sqlBuffer.append(" from DETECTION_INFO_NEW din"); sqlBuffer.append(" left join DETECTION_SET_INFO dsi"); sqlBuffer.append(" on din.detection_set_info_id = dsi.id"); sqlBuffer.append(" left join check_type_info cti"); sqlBuffer.append(" on dsi.check_type_id = cti.id"); sqlBuffer.append( " left join (select distinct node_ip,seq_id,node_system_type,node_type,node_state,system_id,ipn from NODE_TABLE) nt"); sqlBuffer.append(" on din.seq_id = nt.seq_id"); // ------------2013-1-23 hyx // 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------start sqlBuffer.append(" left join "); sqlBuffer.append( " (select md.check_type_id as ctId,count(*) as charStateNum from metadata md where md.chart_state=0 group by md.check_type_id) checkTypeCharState "); sqlBuffer.append(" on checkTypeCharState.ctId=cti.id "); sqlBuffer.append( " where nt.node_ip is not null and nt.node_state = 0 and dsi.detection_set_state ='1' and cti.crete_state=0 and din.valid=1 AND din.detectioned_state in('0','-1') ");// 只显示有效的数据:din.valid=1 if (!this.getAdminMark()) { sqlBuffer.append(" and nt.system_id = "); sqlBuffer.append(this.getSystemID()); } if (cip != null && !"".equals(cip) && !"null".equals(cip)) { sqlBuffer.append(" and nt.node_ip = '" + cip + "'"); } if (ctn != null && !"".equals(ctn)) { sqlBuffer.append(" and cti.id =" + ctn); } if (!this.getAdminMark()) { sqlBuffer.append(" and (((( cti.view_level=1 and cti.user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( cti.view_level=2 and cti.group_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or cti.view_level=3 ) and cti.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (cti.view_level=4 )"); sqlBuffer.append(") "); sqlBuffer.append("and (((( dsi.view_level=1 and dsi.create_user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( dsi.view_level=2 and dsi.create_usergroup_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or dsi.view_level=3 ) and dsi.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (dsi.view_level=4 )"); sqlBuffer.append(") and dsi.detection_set_state=1 and cti.crete_state=0 "); } sqlBuffer.append(" order by ipn ASC,cti.id ASC, dsi.id ASC"); List detectionInfoList = this.commonService.executeSQL(sqlBuffer.toString()); detectionInfoList = changeValue(detectionInfoList, false); for (int j = 0; j < detectionInfoList.size(); j++) { if (detectionInfoList.get(j)[5] != null && detectionInfoList.get(j)[9] != null) { detectionInfoList.get(j)[6] = this.getPersistTime( DateUtil.getDateD(detectionInfoList.get(j)[5].toString()), DateUtil.getDateD(detectionInfoList.get(j)[9].toString())); } if (detectionInfoList.get(j)[4] != null && detectionInfoList.get(j)[4].equals("-1")) { detectionInfoList.get(j)[4] = getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.exception_n81i"); } if (detectionInfoList.get(j)[4] != null && detectionInfoList.get(j)[4].equals("0")) { detectionInfoList.get(j)[4] = getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.unnormal_n81i"); } if (detectionInfoList.get(j)[4] != null && detectionInfoList.get(j)[4].equals("1")) { detectionInfoList.get(j)[4] = getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.normal_n81i"); } } String[] title = { getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.hostname_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.checkType_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.setName_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.state_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.lastCheckTime_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.duration_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.attempt_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.stateInfo_n81i") }; String[] colu = { "1", "2", "3", "4", "5", "6", "7", "8" }; ExportUtils m = new ExportUtils(); m.setAutoSizeColumn(true); m.exportExcel(getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.deviceException_n81i"), detectionInfoList, title, colu); } catch (Exception e) { logger.error(e.getStackTrace()); e.printStackTrace(); } return null; } // topo导出当前页面 public String emportCurrentXlsForTopo() { try { StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append( " select distinct din.id,nt.node_ip,cti.check_type_name1,dsi.PROCESS_IDEN_NAME,din.detectioned_state detectioned_state"); sqlBuffer.append( ",to_char(din.data_check_time,'yyyy-MM-dd HH24:mi:Ss'),'',din.current_times,din.detection_state_info,to_char(din.status_change_time,'yyyy-MM-dd HH24:mi:Ss')"); sqlBuffer.append( ",dsi.id dsiiId,cti.id ctiId,din.seq_id sqId,nt.node_system_type nodeSysType,nvl(checkTypeCharState.charStateNum,0) charStateNum,nt.node_type nodeType,nt.ipn ipn"); sqlBuffer.append(",din.police_emergent police_emergent,din.police_level police_level"); sqlBuffer.append(" from DETECTION_INFO_NEW din"); sqlBuffer.append(" left join DETECTION_SET_INFO dsi"); sqlBuffer.append(" on din.detection_set_info_id = dsi.id"); sqlBuffer.append(" left join check_type_info cti"); sqlBuffer.append(" on dsi.check_type_id = cti.id"); // @2018-3-9 fang 修改 首先查询符合条件的id,在拼接sql,适配mysql String groupIdSql = "select group_id from nodegroup_table t where 1=1 "; String ids = this.commonService.getGroupIdStartWith(groupIdSql, "t.group_id = " + nodeGroupId); /* * sqlBuffer. * append(" left join (select distinct node_ip,seq_id,node_system_type,node_type,node_state,system_id ,ipn from NODE_TABLE WHERE node_group_id in" * + * "(select t.group_id from nodegroup_table t start with t.group_id =" * + nodeGroupId + * " connect by prior t.group_id = t.parent_group_id)) nt"); */ sqlBuffer .append(" left join (select distinct node_ip,seq_id,node_system_type,node_type,node_state,system_id ,ipn from NODE_TABLE WHERE node_group_id in" + "(" + ids + ")) nt"); sqlBuffer.append(" on din.seq_id = nt.seq_id"); sqlBuffer.append(" left join "); sqlBuffer.append( " (select md.check_type_id as ctId,count(*) as charStateNum from metadata md where md.chart_state=0 group by md.check_type_id) checkTypeCharState "); sqlBuffer.append(" on checkTypeCharState.ctId=cti.id "); sqlBuffer.append( " where nt.node_ip is not null and nt.node_state = 0 and dsi.detection_set_state ='1' and cti.crete_state=0 and din.valid=1");// 只显示有效的数据:din.valid=1 if (!this.getAdminMark()) { sqlBuffer.append(" and nt.system_id = "); sqlBuffer.append(this.getSystemID()); } if (cip != null && !"".equals(cip) && !"null".equals(cip)) { sqlBuffer.append(" and nt.node_ip like '%" + cip + "%'"); } if (ctn != null && !"".equals(ctn)) { sqlBuffer.append(" and Upper(cti.Check_Type_Name1) like '%" + ctn.toUpperCase() + "%'"); } if (StringUtils.isNotBlank(stateInfo)) { sqlBuffer.append(" and din.detection_state_info like '%" + stateInfo + "%'"); } if (!this.getAdminMark()) { sqlBuffer.append(" and (((( cti.view_level=1 and cti.user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( cti.view_level=2 and cti.group_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or cti.view_level=3 ) and cti.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (cti.view_level=4 )"); sqlBuffer.append(") "); sqlBuffer.append("and (((( dsi.view_level=1 and dsi.create_user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( dsi.view_level=2 and dsi.create_usergroup_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or dsi.view_level=3 ) and dsi.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (dsi.view_level=4 )"); sqlBuffer.append(") and dsi.detection_set_state=1 and cti.crete_state=0 "); } sqlBuffer.append(" ORDER by detectioned_state, police_emergent, police_level"); System.out.println("sqlBuffer:" + sqlBuffer.toString()); page = this.commonService.findByPageForSql(sqlBuffer.toString(), pageNo, pageSize, null); List detectionInfoList; // 最新状态信息集合 detectionInfoList = (List) page.getResult(); detectionInfoList = changeValue(detectionInfoList, false); for (int j = 0; j < detectionInfoList.size(); j++) { if (detectionInfoList.get(j)[5] != null && detectionInfoList.get(j)[9] != null) { detectionInfoList.get(j)[6] = this.getPersistTime( DateUtil.getDateD(detectionInfoList.get(j)[5].toString()), DateUtil.getDateD(detectionInfoList.get(j)[9].toString())); } if (detectionInfoList.get(j)[4] != null && detectionInfoList.get(j)[4].equals("-1")) { detectionInfoList.get(j)[4] = getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.exception_n81i"); } if (detectionInfoList.get(j)[4] != null && detectionInfoList.get(j)[4].equals("0")) { detectionInfoList.get(j)[4] = getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.unnormal_n81i"); } if (detectionInfoList.get(j)[4] != null && detectionInfoList.get(j)[4].equals("1")) { detectionInfoList.get(j)[4] = getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.normal_n81i"); } } String[] title = { getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.hostname_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.checkType_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.setName_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.state_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.lastCheckTime_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.duration_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.attempt_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.stateInfo_n81i") }; String[] colu = { "1", "2", "3", "4", "5", "6", "7", "8" }; String url = "monitorData.do?action=query&cip=" + cip + "&ctn=" + ctn + "&stateInfo=" + stateInfo + "&pageSize=" + pageSize + "&pageNo=" + pageNo + "&requestType=topo&nodeGroupId=" + nodeGroupId; ExportUtils m = new ExportUtils(); m.setAutoSizeColumn(true); m.exportExcel(url, getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.detecateData_n81i"), detectionInfoList, title, colu); } catch (Exception e) { logger.error(e.getStackTrace()); e.printStackTrace(); outHtmlString(""); } return null; } // 当前页导出 程辉 2013-5-8新增 public String emportCurrentXls() { try { StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append( " select distinct din.id,nt.node_ip,cti.check_type_name1,dsi.PROCESS_IDEN_NAME,din.detectioned_state"); sqlBuffer.append( ",to_char(din.data_check_time,'yyyy-MM-dd HH24:mi:Ss'),'',din.current_times,replace(din.detection_state_info,'$@$',''),to_char(din.status_change_time,'yyyy-MM-dd HH24:mi:Ss')"); sqlBuffer.append( ",dsi.id dsiiId,cti.id ctiId,din.seq_id sqId,nt.node_system_type nodeSysType,nvl(checkTypeCharState.charStateNum,0) charStateNum,nt.node_type nodeType,nt.ipn ipn,decode(cti.check_type_name,'NMSClient',-1,cti.id) ctiId1"); sqlBuffer.append(" from DETECTION_INFO_NEW din"); sqlBuffer.append(" left join DETECTION_SET_INFO dsi"); sqlBuffer.append(" on din.detection_set_info_id = dsi.id"); sqlBuffer.append(" left join check_type_info cti"); sqlBuffer.append(" on dsi.check_type_id = cti.id"); sqlBuffer.append( " left join (select distinct node_ip,seq_id,node_system_type,node_type,node_state,system_id ,ipn from NODE_TABLE "); if (nodeGroupStr != null && !"".equals(nodeGroupStr) && !"null".equals(nodeGroupStr)) { // 节点组模糊名称不为空,则根据节点组名称,模糊查询所有节点组,再依次查找其下面的节点,得到节点id // @2018-3-9 fang 修改 首先查询符合条件的id,在拼接sql,适配mysql String groupIdSql = "select group_id from nodegroup_table t where 1=1 "; String ids = this.commonService.getGroupIdStartWith(groupIdSql, "lower(group_name) like lower('%" + nodeGroupStr + "%')"); /* * sqlBuffer. * append(" right join (select distinct ngt.group_id from nodegroup_table ngt start with lower(ngt.group_name) like lower('%" * + nodeGroupStr + * "%') connect by prior group_id=parent_group_id ) ngt on node_group_id=ngt.group_id" * ); */ sqlBuffer .append(" right join (select distinct ngt.group_id from nodegroup_table ngt where ngt.group_id in (" + ids + ") ) ngt on node_group_id=ngt.group_id"); } sqlBuffer.append(") nt on din.seq_id = nt.seq_id"); // ------------2013-1-23 hyx // 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------start sqlBuffer.append(" left join "); sqlBuffer.append( " (select md.check_type_id as ctId,count(*) as charStateNum from metadata md where md.chart_state=0 group by md.check_type_id) checkTypeCharState "); sqlBuffer.append(" on checkTypeCharState.ctId=cti.id "); // ------------2013-1-23 hyx // 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------end sqlBuffer.append(" where nt.node_ip is not null AND nt.node_type =" + nodeType + " and nt.node_state = 0 and dsi.detection_set_state ='1' and cti.crete_state=0 and din.valid=1");// 只显示有效的数据:din.valid=1 if (!this.getAdminMark()) { sqlBuffer.append(" and nt.system_id = "); sqlBuffer.append(this.getSystemID()); } if (cip != null && !"".equals(cip) && !"null".equals(cip)) { sqlBuffer.append(" and nt.node_ip like '%" + cip.trim() + "%'"); } if (nodeIpRange != null && !"".equals(nodeIpRange) && !"null".equals(nodeIpRange)) { sqlBuffer.append(" and nt.node_ip like '" + nodeIpRange + "%'"); } if (ctn != null && !"".equals(ctn)) { // sqlBuffer.append(" and cti.id =" + ctn); sqlBuffer.append(" and Upper(cti.Check_Type_Name1) like '%" + ctn.toUpperCase() + "%'"); } if (StringUtils.isNotBlank(stateInfo)) { sqlBuffer.append(" and din.detection_state_info like '%" + stateInfo + "%'"); } if (!this.getAdminMark()) { sqlBuffer.append(" and (((( cti.view_level=1 and cti.user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( cti.view_level=2 and cti.group_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or cti.view_level=3 ) and cti.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (cti.view_level=4 )"); sqlBuffer.append(") "); sqlBuffer.append("and (((( dsi.view_level=1 and dsi.create_user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( dsi.view_level=2 and dsi.create_usergroup_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or dsi.view_level=3 ) and dsi.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (dsi.view_level=4 )"); sqlBuffer.append(") and dsi.detection_set_state=1 and cti.crete_state=0 "); } sqlBuffer.append(" order by ipn ASC,ctiId1 ASC, dsi.id ASC"); page = this.commonService.findByPageForSql(sqlBuffer.toString(), pageNo, pageSize); List detectionInfoList; // 最新状态信息集合 detectionInfoList = (List) page.getResult(); detectionInfoList = changeValue(detectionInfoList, false); for (int j = 0; j < detectionInfoList.size(); j++) { if (detectionInfoList.get(j)[5] != null && detectionInfoList.get(j)[9] != null) { detectionInfoList.get(j)[6] = this.getPersistTime( DateUtil.getDateD(detectionInfoList.get(j)[5].toString()), DateUtil.getDateD(detectionInfoList.get(j)[9].toString())); } if (detectionInfoList.get(j)[4] != null && detectionInfoList.get(j)[4].equals("-1")) { detectionInfoList.get(j)[4] = getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.exception_n81i"); } if (detectionInfoList.get(j)[4] != null && detectionInfoList.get(j)[4].equals("0")) { detectionInfoList.get(j)[4] = getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.unnormal_n81i"); } if (detectionInfoList.get(j)[4] != null && detectionInfoList.get(j)[4].equals("1")) { detectionInfoList.get(j)[4] = getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.normal_n81i"); } } String[] title = { getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.hostname_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.checkType_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.setName_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.state_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.lastCheckTime_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.duration_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.attempt_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.stateInfo_n81i") }; String[] colu = { "1", "2", "3", "4", "5", "6", "7", "8" }; String pageType = this.getRequest().getParameter("pageType"); String url = ""; if ("query".equals(pageType)) { url = "monitorData.do?action=query&cip=" + cip + "&nodeGroupStr=" + nodeGroupStr + "&ctn=" + ctn + "&stateInfo=" + stateInfo + "&pageSize=" + pageSize + "&pageNo=" + pageNo; } else if ("queryNE".equals(pageType)) { url = "monitorData.do?action=queryNE&cip=" + cip + "&ctn=" + ctn + "&stateInfo=" + stateInfo + "&pageSize=" + pageSize + "&pageNo=" + pageNo; } ExportUtils m = new ExportUtils(); m.setAutoSizeColumn(true); m.exportExcel(url, getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.detecateData_n81i"), detectionInfoList, title, colu); } catch (Exception e) { logger.error(e.getStackTrace()); e.printStackTrace(); } return null; } public String emportAllXlsForTopo() { try { StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append( " select distinct din.id,nt.node_ip,cti.check_type_name1,dsi.PROCESS_IDEN_NAME,din.detectioned_state detectioned_state"); sqlBuffer.append( ",to_char(din.data_check_time,'yyyy-MM-dd HH24:mi:Ss'),'',din.current_times,din.detection_state_info,to_char(din.status_change_time,'yyyy-MM-dd HH24:mi:Ss')"); sqlBuffer.append( ",dsi.id dsiiId,cti.id ctiId,din.seq_id sqId,nt.node_system_type nodeSysType,nvl(checkTypeCharState.charStateNum,0) charStateNum,nt.node_type nodeType,nt.ipn ipn"); sqlBuffer.append(",din.police_emergent police_emergent,din.police_level police_level"); sqlBuffer.append(" from DETECTION_INFO_NEW din"); sqlBuffer.append(" left join DETECTION_SET_INFO dsi"); sqlBuffer.append(" on din.detection_set_info_id = dsi.id"); sqlBuffer.append(" left join check_type_info cti"); sqlBuffer.append(" on dsi.check_type_id = cti.id"); // @2018-3-9 fang 修改 首先查询符合条件的id,在拼接sql,适配mysql String groupIdSql = "select group_id from nodegroup_table t where 1=1 "; String ids = this.commonService.getGroupIdStartWith(groupIdSql, "t.group_id = " + nodeGroupId); /* * sqlBuffer. * append(" left join (select distinct node_ip,seq_id,node_system_type,node_type,node_state,system_id ,ipn from NODE_TABLE WHERE node_group_id in" * + * "(select t.group_id from nodegroup_table t start with t.group_id =" * + nodeGroupId + * " connect by prior t.group_id = t.parent_group_id)) nt"); */ sqlBuffer .append(" left join (select distinct node_ip,seq_id,node_system_type,node_type,node_state,system_id ,ipn from NODE_TABLE WHERE node_group_id in" + "(" + ids + ")) nt"); sqlBuffer.append(" on din.seq_id = nt.seq_id"); sqlBuffer.append(" left join "); sqlBuffer.append( " (select md.check_type_id as ctId,count(*) as charStateNum from metadata md where md.chart_state=0 group by md.check_type_id) checkTypeCharState "); sqlBuffer.append(" on checkTypeCharState.ctId=cti.id "); sqlBuffer.append( " where nt.node_ip is not null and nt.node_state = 0 and dsi.detection_set_state ='1' and cti.crete_state=0 and din.valid=1");// 只显示有效的数据:din.valid=1 if (!this.getAdminMark()) { sqlBuffer.append(" and nt.system_id = "); sqlBuffer.append(this.getSystemID()); } if (cip != null && !"".equals(cip) && !"null".equals(cip)) { sqlBuffer.append(" and nt.node_ip like '%" + cip + "%'"); } if (ctn != null && !"".equals(ctn)) { sqlBuffer.append(" and Upper(cti.Check_Type_Name1) like '%" + ctn.toUpperCase() + "%'"); } if (StringUtils.isNotBlank(stateInfo)) { sqlBuffer.append(" and din.detection_state_info like '%" + stateInfo + "%'"); } if (!this.getAdminMark()) { sqlBuffer.append(" and (((( cti.view_level=1 and cti.user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( cti.view_level=2 and cti.group_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or cti.view_level=3 ) and cti.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (cti.view_level=4 )"); sqlBuffer.append(") "); sqlBuffer.append("and (((( dsi.view_level=1 and dsi.create_user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( dsi.view_level=2 and dsi.create_usergroup_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or dsi.view_level=3 ) and dsi.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (dsi.view_level=4 )"); sqlBuffer.append(") and dsi.detection_set_state=1 and cti.crete_state=0 "); } sqlBuffer.append(" ORDER by detectioned_state, police_emergent, police_level"); System.out.println("sqlBuffer:" + sqlBuffer.toString()); List detectionInfoList = this.commonService.executeSQL(sqlBuffer.toString()); detectionInfoList = changeValue(detectionInfoList, false); for (int j = 0; j < detectionInfoList.size(); j++) { if (detectionInfoList.get(j)[5] != null && detectionInfoList.get(j)[9] != null) { detectionInfoList.get(j)[6] = this.getPersistTime( DateUtil.getDateD(detectionInfoList.get(j)[5].toString()), DateUtil.getDateD(detectionInfoList.get(j)[9].toString())); } if (detectionInfoList.get(j)[4] != null && detectionInfoList.get(j)[4].equals("-1")) { detectionInfoList.get(j)[4] = getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.exception_n81i"); } if (detectionInfoList.get(j)[4] != null && detectionInfoList.get(j)[4].equals("0")) { detectionInfoList.get(j)[4] = getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.unnormal_n81i"); } if (detectionInfoList.get(j)[4] != null && detectionInfoList.get(j)[4].equals("1")) { detectionInfoList.get(j)[4] = getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.normal_n81i"); } } String[] title = { getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.hostname_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.checkType_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.setName_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.state_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.lastCheckTime_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.duration_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.attempt_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.stateInfo_n81i") }; String[] colu = { "1", "2", "3", "4", "5", "6", "7", "8" }; String url = "monitorData.do?action=query&cip=" + cip + "&ctn=" + ctn + "&stateInfo=" + stateInfo + "&pageSize=" + pageSize + "&pageNo=" + pageNo + "&requestType=topo&nodeGroupId=" + nodeGroupId; ExportUtils m = new ExportUtils(); m.setAutoSizeColumn(true); m.exportExcel(url, getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.detecateData_n81i"), detectionInfoList, title, colu); } catch (Exception e) { logger.error(e.getStackTrace()); e.printStackTrace(); outHtmlString(""); } return null; } // 导出全部 程辉 2013-5-8新增 public String emportAllXls() { try { StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append( " select distinct din.id,nt.node_ip,cti.check_type_name1,dsi.PROCESS_IDEN_NAME,din.detectioned_state"); sqlBuffer.append( ",to_char(din.data_check_time,'yyyy-MM-dd HH24:mi:Ss'),'',din.current_times,replace(din.detection_state_info,'$@$',''),to_char(din.status_change_time,'yyyy-MM-dd HH24:mi:Ss')"); sqlBuffer.append( ",dsi.id dsiiId,cti.id ctiId,din.seq_id sqId,nt.node_system_type nodeSysType,nvl(checkTypeCharState.charStateNum,0) charStateNum,nt.node_type nodeType,nt.ipn ipn"); sqlBuffer.append(" from DETECTION_INFO_NEW din"); sqlBuffer.append(" left join DETECTION_SET_INFO dsi"); sqlBuffer.append(" on din.detection_set_info_id = dsi.id"); sqlBuffer.append(" left join check_type_info cti"); sqlBuffer.append(" on dsi.check_type_id = cti.id"); sqlBuffer.append( " left join (select distinct node_ip,seq_id,node_system_type,node_type,node_state,system_id ,ipn from NODE_TABLE "); if (nodeGroupStr != null && !"".equals(nodeGroupStr) && !"null".equals(nodeGroupStr)) { // 节点组模糊名称不为空,则根据节点组名称,模糊查询所有节点组,再依次查找其下面的节点,得到节点id // @2018-3-9 fang 修改 首先查询符合条件的id,在拼接sql,适配mysql String groupIdSql = "select group_id from nodegroup_table t where 1=1 "; String ids = this.commonService.getGroupIdStartWith(groupIdSql, "lower(group_name) like lower('%" + nodeGroupStr + "%')"); /* * sqlBuffer. * append(" right join (select distinct ngt.group_id from nodegroup_table ngt start with lower(ngt.group_name) like lower('%" * + nodeGroupStr + * "%') connect by prior group_id=parent_group_id ) ngt on node_group_id=ngt.group_id" * ); */ sqlBuffer .append(" right join (select distinct ngt.group_id from nodegroup_table ngt where ngt.group_id in (" + ids + ") ) ngt on node_group_id=ngt.group_id"); } sqlBuffer.append(") nt on din.seq_id = nt.seq_id"); // ------------2013-1-23 hyx // 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------start sqlBuffer.append(" left join "); sqlBuffer.append( " (select md.check_type_id as ctId,count(*) as charStateNum from metadata md where md.chart_state=0 group by md.check_type_id) checkTypeCharState "); sqlBuffer.append(" on checkTypeCharState.ctId=cti.id "); // ------------2013-1-23 hyx // 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------end sqlBuffer.append(" where nt.node_ip is not null AND nt.node_type =" + nodeType + " and nt.node_state = 0 and dsi.detection_set_state ='1' and cti.crete_state=0 and din.valid=1");// 只显示有效的数据:din.valid=1 if (!this.getAdminMark()) { sqlBuffer.append(" and nt.system_id = "); sqlBuffer.append(this.getSystemID()); } if (cip != null && !"".equals(cip) && !"null".equals(cip)) { sqlBuffer.append(" and nt.node_ip like '%" + cip.trim() + "%'"); } if (nodeIpRange != null && !"".equals(nodeIpRange) && !"null".equals(nodeIpRange)) { sqlBuffer.append(" and nt.node_ip like '" + nodeIpRange + "%'"); } if (ctn != null && !"".equals(ctn)) { // sqlBuffer.append(" and cti.id =" + ctn); sqlBuffer.append(" and Upper(cti.Check_Type_Name1) like '%" + ctn.toUpperCase() + "%'"); } if (StringUtils.isNotBlank(stateInfo)) { sqlBuffer.append(" and din.detection_state_info like '%" + stateInfo + "%'"); } if (!this.getAdminMark()) { sqlBuffer.append(" and (((( cti.view_level=1 and cti.user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( cti.view_level=2 and cti.group_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or cti.view_level=3 ) and cti.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (cti.view_level=4 )"); sqlBuffer.append(") "); sqlBuffer.append("and (((( dsi.view_level=1 and dsi.create_user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( dsi.view_level=2 and dsi.create_usergroup_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or dsi.view_level=3 ) and dsi.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (dsi.view_level=4 )"); sqlBuffer.append(") and dsi.detection_set_state=1 and cti.crete_state=0 "); } sqlBuffer.append(" order by ipn"); List detectionInfoList = this.commonService.executeSQL(sqlBuffer.toString()); detectionInfoList = changeValue(detectionInfoList, false); for (int j = 0; j < detectionInfoList.size(); j++) { if (detectionInfoList.get(j)[5] != null && detectionInfoList.get(j)[9] != null) { detectionInfoList.get(j)[6] = this.getPersistTime( DateUtil.getDateD(detectionInfoList.get(j)[5].toString()), DateUtil.getDateD(detectionInfoList.get(j)[9].toString())); } if (detectionInfoList.get(j)[4] != null && detectionInfoList.get(j)[4].equals("-1")) { detectionInfoList.get(j)[4] = getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.exception_n81i"); } if (detectionInfoList.get(j)[4] != null && detectionInfoList.get(j)[4].equals("0")) { detectionInfoList.get(j)[4] = getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.unnormal_n81i"); } if (detectionInfoList.get(j)[4] != null && detectionInfoList.get(j)[4].equals("1")) { detectionInfoList.get(j)[4] = getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.normal_n81i"); } } String[] title = { getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.hostname_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.checkType_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.setName_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.state_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.lastCheckTime_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.duration_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.attempt_n81i"), getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.stateInfo_n81i") }; String[] colu = { "1", "2", "3", "4", "5", "6", "7", "8" }; String pageType = this.getRequest().getParameter("pageType"); String url = ""; if ("query".equals(pageType)) { url = "monitorData.do?action=query&cip=" + cip + "&nodeGroupStr=" + nodeGroupStr + "&ctn=" + ctn + "&stateInfo=" + stateInfo + "&pageSize=" + pageSize + "&pageNo=" + pageNo; } else if ("queryNE".equals(pageType)) { url = "monitorData.do?action=queryNE&cip=" + cip + "&ctn=" + ctn + "&stateInfo=" + stateInfo + "&pageSize=" + pageSize + "&pageNo=" + pageNo; } ExportUtils m = new ExportUtils(); m.setAutoSizeColumn(true); m.exportExcel(url, getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.detecateData_n81i"), detectionInfoList, title, colu); } catch (Exception e) { logger.error(e.getStackTrace()); e.printStackTrace(); } return null; } public String[] checkLins(Metadata metadata, CheckTypeInfo checkTypeInfo, Object[] sortFiledType, String dsiId, String seqId, String lines) { String[] retu = new String[2]; try { String[] linStrings = lines.split(",");// 选择的端口,可能是多个 String temp = ""; String source = "select max(to_char(data_check_time,'yyyy-mm-dd HH24:mi')) maxTime," + sortFiledType[0] + " from " + checkTypeInfo.getTableName() + " t where " + metadata.getFiledName() + " is not null" // +" and t.data_check_time >= trunc(sysdate-30)" + " and t.detection_info_id in " + "(select d.id from detection_info d where d.detection_set_info_id=" + dsiId + " and d.seq_id = " + seqId + ")"; if (null != startTime && !startTime.equals("") && null != endTime && !endTime.equals("")) { source += " and to_char(data_check_time,'yyyy-mm-dd')>= '" + startTime + "' and to_char(data_check_time,'yyyy-mm-dd')<='" + endTime + "'"; } else { source += " and t.data_check_time >= trunc(sysdate-1) "; } if (sortFiledType[1].toString().equals("NUMBER") || sortFiledType[1].toString().equals("Number")) { temp = lines.substring(0, lines.length() - 1); source += " and " + sortFiledType[0] + " in (" + temp + ") group by " + sortFiledType[0] + " order by maxTime desc"; } else if (sortFiledType[1].toString().indexOf("VARCHAR2") != -1) { for (int i = 0; i < linStrings.length; i++) { temp += "'" + linStrings[i] + "',"; } temp = temp.substring(0, temp.length() - 1); source += " and " + sortFiledType[0] + " in (" + temp + ") group by " + sortFiledType[0] + " order by maxTime desc"; } List lastList = this.commonService.executeSQL(source); // ------------------以上确定最后一个数据点---------------------------- if (lastList != null && lastList.size() > 0) { Object[] row = (Object[]) lastList.get(0); String lastSource = "select * from ( select to_char(data_check_time,'yyyy-mm-dd HH24:mi')," + metadata.getFiledName() + " from " + checkTypeInfo.getTableName() + " t where " + metadata.getFiledName() + " is not null" // +" and t.data_check_time >= trunc(sysdate-30)" + " and t.detection_info_id in " + "(select d.id from detection_info d where d.detection_set_info_id=" + dsiId + " and d.seq_id = " + seqId + ")"; if (null != startTime && !startTime.equals("") && null != endTime && !endTime.equals("")) { lastSource += " and to_char(data_check_time,'yyyy-mm-dd')>= '" + startTime + "' and to_char(data_check_time,'yyyy-mm-dd')<='" + endTime + "'"; } else { lastSource += " and t.data_check_time >= trunc(sysdate-1) "; } if (sortFiledType[1].toString().equals("NUMBER") || sortFiledType[1].toString().equals("Number")) { lastSource += " and " + sortFiledType[0] + " = " + row[1] + " order by data_check_time desc) ttt "; } else if (sortFiledType[1].toString().indexOf("VARCHAR2") != -1) { lastSource += " and " + sortFiledType[0] + " = '" + row[1] + "' order by data_check_time desc) ttt "; } /* lastSource += " where rownum < 21"; */ // @2018年4月10日18:45:00 fang 修改rownum 适配 mysql // if (Constant.IS_MYSQL) { // lastSource = lastSource + " limit 20"; // } else { // lastSource += " where rownum < 21 "; // } // System.out.println("------NoFirstInSource--------sql:" + // lastSource); List lineSourceList = this.commonService.executeSQL(lastSource); Object[] rowLast = (Object[]) lineSourceList.get(lineSourceList.size() - 1);// 最后一个 // 返回的格式为:第一个:name(分类标志) 2:最小时间 retu[0] = row[1].toString(); retu[1] = rowLast[0].toString(); } } catch (Exception e) { e.printStackTrace(); } return retu; } public String getSnmpSource() { String mId = this.getRequest().getParameter("metaId"); String dsiId = this.getRequest().getParameter("dId"); String ctId = this.getRequest().getParameter("cId"); String seqId = this.getRequest().getParameter("seqId"); String lines = this.getRequest().getParameter("lns"); String type = this.getRequest().getParameter("type"); String detectionSetInfoId=this.getRequest().getParameter("detectionSetInfoId"); System.out.println("mId:" + mId); System.out.println("dsiId:" + dsiId); System.out.println("ctId:" + ctId); System.out.println("seqId:" + seqId); System.out.println("lines:" + lines); System.out.println("type:" + type); String policeValSQL = ""; List policeValue = null; Map result1 = new HashMap(); // 预警值 int policeVal = 0; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); List> returnList = new ArrayList>(); NodeTable nt = null; try { CheckTypeInfo checkTypeInfo = (CheckTypeInfo) this.commonService.get(CheckTypeInfo.class, Long.parseLong(ctId)); Metadata metadata = (Metadata) this.commonService.get(Metadata.class, Long.parseLong(mId)); List nts = this.commonService.find("from NodeTable where seqId=" + Long.parseLong(seqId)); if (nts != null && nts.size() > 0) { nt = nts.get(0); } // 判断是否是特殊统计字段 DetectionSetInfo dsi = (DetectionSetInfo) this.commonService.get(DetectionSetInfo.class, Long.parseLong(dsiId)); // public part---------------------------begin-------------------- // 预警线 policeValSQL = "select police_value from data_police_relation where detection_set_info_id=" + dsiId + " and metadata_id=" + metadata.getId(); policeValue = this.commonService.executeSQL(policeValSQL); if (policeValue != null && policeValue.size() > 0) { // policeVal=((BigDecimal)policeValue.get(0)).intValue(); policeVal = Integer.parseInt(policeValue.get(0).toString()); } // 如果预警值不等于0则画预警线 if (policeVal != 0) { result1.put("policeVal", policeVal); } if (metadata.getFiledComments() != null && !"".equals(metadata.getFiledComments())) { if (nt != null) { result1.put("xtitle", nt.getNodeIp() + "_" + dsi.getProcessIdenName() + " " + checkTypeInfo.getCheckTypeName1() + ":" + metadata.getFiledComments() + getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.cartogram_n81i")); } else { result1.put("xtitle", dsi.getProcessIdenName() + " " + checkTypeInfo.getCheckTypeName1() + ":" + metadata.getFiledComments() + getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.cartogram_n81i")); } result1.put("ytitle", metadata.getFiledComments()); } else { if (nt != null) { result1.put("xtitle", nt.getNodeIp() + "_" + dsi.getProcessIdenName() + " " + checkTypeInfo.getCheckTypeName() + ":" + metadata.getFiledName().replace("_", " ") + getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.cartogram_n81i")); } else { result1.put("xtitle", dsi.getProcessIdenName() + " " + checkTypeInfo.getCheckTypeName() + ":" + metadata.getFiledName().replace("_", " ") + getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.cartogram_n81i")); } result1.put("ytitle", metadata.getFiledName().replace("_", " ")); } returnList.add(result1); // public part---------------------------end---------------------- // 得到分类标识字段 String sort_sign = "select t.filed_name,t.filed_type from metadata t where t.check_type_id =" + ctId + " and t.sort_sign =0"; List sortList = this.commonService.executeSQL(sort_sign); if (sortList != null && sortList.size() > 0) { Object[] sortFiledType = (Object[]) sortList.get(0); Map result = new HashMap(); List> line = new ArrayList>(); // 选择checkBox画图 if (lines != null && !lines.equals("")) { String[] linStrings = lines.split(","); for (int i = 0; i < linStrings.length; i++) { String[] cbStrings = checkLins(metadata, checkTypeInfo, sortFiledType, dsiId, seqId, linStrings[i]); String source = ""; if (linStrings[i].equals(cbStrings[0])) {// 这是最后的那个 source = "select * from ( select to_char(data_check_time,'yyyy-mm-dd HH24:mi') checkTime," + metadata.getFiledName() + " from " + checkTypeInfo.getTableName() + " t where " + metadata.getFiledName() + " is not null" // + // " and t.data_check_time >= // to_date(to_char((sysdate-4),'yyyy-mm-dd'),'yyyy-mm-dd // hh24:mi')"+ // +" and t.data_check_time >= // trunc(sysdate-30)" // + " and rownum <= 20" + " and t.detection_info_id in " + "(select d.id from detection_info d where d.detection_set_info_id=" + dsiId + " and d.seq_id = " + seqId + ")"; if (null != startTime && !startTime.equals("") && null != endTime && !endTime.equals("")) { source += " and to_char(data_check_time,'yyyy-mm-dd')>= '" + startTime + "' and to_char(data_check_time,'yyyy-mm-dd')<='" + endTime + "'"; } else { source += " and t.data_check_time >= trunc(sysdate-0) "; } if (sortFiledType[1].toString().equals("NUMBER") || sortFiledType[1].toString().equals("Number")) { source += " and " + sortFiledType[0] + " = " + linStrings[i].toString() + " ) tttt order by checkTime desc"; } else if (sortFiledType[1].toString().indexOf("VARCHAR2") != -1) { source += " and " + sortFiledType[0] + " = '" + linStrings[i].toString() + "' ) tttt order by checkTime desc"; } /* source += " where rownum < 21"; */ // @2018年4月10日18:45:00 fang 修改rownum 适配 mysql // if (Constant.IS_MYSQL) { // source = source + " limit 20"; // } else { // source += " where rownum < 21 "; // } } else { source = "select * from ( select to_char(data_check_time,'yyyy-mm-dd HH24:mi') checkTime," + metadata.getFiledName() + " from " + checkTypeInfo.getTableName() + " t where " + metadata.getFiledName() + " is not null" // +" and t.data_check_time >= // trunc(sysdate-30)" + " and t.detection_info_id in " + "(select d.id from detection_info d where d.detection_set_info_id=" + dsiId + " and d.seq_id = " + seqId + ")"; if (null != startTime && !startTime.equals("") && null != endTime && !endTime.equals("")) { source += " and to_char(data_check_time,'yyyy-mm-dd')>= '" + startTime + "' and to_char(data_check_time,'yyyy-mm-dd')<='" + endTime + "'"; } else { source += " and t.data_check_time >= trunc(sysdate-0) "; } if (sortFiledType[1].toString().equals("NUMBER") || sortFiledType[1].toString().equals("Number")) { source += " and " + sortFiledType[0] + " = " + linStrings[i].toString(); } else if (sortFiledType[1].toString().indexOf("VARCHAR2") != -1) { source += " and " + sortFiledType[0] + " = '" + linStrings[i].toString() + "'"; } // 判断是否有返回 如果有则加入查询条件 如果无 则不加 if (null != cbStrings[1] && !cbStrings[1].equals("")) { /* * source += * " and t.data_check_time >= to_date('" + * cbStrings[1] + * "','yyyy-mm-dd HH24:mi') order by data_check_time desc) where rownum < 21" * ; */ source += " and t.data_check_time >= to_date('" + cbStrings[1] + "','yyyy-mm-dd HH24:mi') ) tttt order by checkTime desc"; // @2018年4月10日18:45:00 fang 修改rownum 适配 mysql // if (Constant.IS_MYSQL) { // source = source + " limit 20"; // } else { // source += " where rownum < 21 "; // } } else { /* * source += * " order by data_check_time desc) where rownum < 21" * ; */ source += " order by data_check_time desc) tttt "; // @2018年4月10日18:45:00 fang 修改rownum 适配 mysql // if (Constant.IS_MYSQL) { // source = source + " limit 20"; // } else { // source += " where rownum < 21 "; // } } } System.out.println("------NoFirstInSource--------sql:" + source); List lineSourceList = this.commonService.executeSQL(source); List data = new ArrayList(); // 封装一条拆线 Map chart = new HashMap(); if (lineSourceList.size() > 0) { for (int j = 0; j < lineSourceList.size(); j++) { Object[] row = (Object[]) lineSourceList.get(j); Object[] tmp = new Object[2]; tmp[0] = (sdf.parse((String) row[0])).getTime(); if (row[1] instanceof BigDecimal) { tmp[1] = ((BigDecimal) row[1]).setScale(2, BigDecimal.ROUND_HALF_UP); } else { tmp[1] = row[1]; } data.add(tmp); } } // 封装一条折线--------------------------------------2013 1.23 chart.put("name", linStrings[i].toString()); chart.put("data", data); line.add(chart); result.put("lines", line); } } else { // 封装一条拆线 Map chart = new HashMap(); // 得到数据表中所有该分类标识的值 String getAllSort = "select distinct " + sortFiledType[0].toString() + " from " + checkTypeInfo.getTableName() + " where " + sortFiledType[0].toString() + " is not null and seq_id=" + seqId + " and DETECTION_SET_INFO_ID= "+dsiId+" order by " + sortFiledType[0].toString(); dataList = this.commonService.executeSQL(getAllSort); if (dataList != null && dataList.size() > 0) { String source = "select * from (select to_char(data_check_time,'yyyy-mm-dd HH24:mi') checkTime," + metadata.getFiledName() + " from " + checkTypeInfo.getTableName() + " t where " + metadata.getFiledName() + " is not null" // + " and t.data_check_time >= // trunc(sysdate-30)" + " and t.detection_info_id in " + "(select d.id from detection_info d where d.detection_set_info_id=" + dsiId + " and d.seq_id = " + seqId + ")"; if (null != startTime && !startTime.equals("") && null != endTime && !endTime.equals("")) { source += " and to_char(data_check_time,'yyyy-mm-dd')>= '" + startTime + "' and to_char(data_check_time,'yyyy-mm-dd')<='" + endTime + "'"; } else { source += " and t.data_check_time >= trunc(sysdate-0) "; } if (sortFiledType[1].toString().equals("NUMBER") || sortFiledType[1].toString().equals("Number")) { source += " and " + sortFiledType[0] + " = " + dataList.get(0).toString() + " ) order by checkTime desc"; } else if (sortFiledType[1].toString().indexOf("VARCHAR2") != -1) { source += " and " + sortFiledType[0] + " = '" + dataList.get(0).toString() + "' ) ttt order by checkTime desc"; } /* source += " where rownum < 21"; */ // @2018年4月10日18:45:00 fang 修改rownum 适配 mysql // if (Constant.IS_MYSQL) { // source = source + " limit 20"; // } else { // source += " where rownum < 21 "; // } System.out.println("------source--------sql:" + source); List lineSourceList = this.commonService.executeSQL(source); List data = new ArrayList(); if (lineSourceList.size() > 0) { for (int j = 0; j < lineSourceList.size(); j++) { Object[] row = (Object[]) lineSourceList.get(j); Object[] tmp = new Object[2]; tmp[0] = (sdf.parse((String) row[0])).getTime(); if (row[1] instanceof BigDecimal) { tmp[1] = ((BigDecimal) row[1]).setScale(2, BigDecimal.ROUND_HALF_UP); } else { tmp[1] = row[1]; } data.add(tmp); } } // 封装一条折线--------------------------------------2013 1.23 chart.put("name", dataList.get(0).toString()); chart.put("data", data); line.add(chart); result.put("lines", line); } else { // 封装一条折线--------------------------------------2013 1.23 chart.put("name", ""); chart.put("data", ""); line.add(chart); result.put("lines", line); } } returnList.add(result); } // for (int i = 0; i < dataList.size(); i++) { // String source = "select to_char(data_check_time,'yyyy-mm-dd // HH24:mi')," // + metadata.getFiledName() // + " from " // + checkTypeInfo.getTableName() // + " t where " // + metadata.getFiledName() // + " is not null" // + // // " and t.data_check_time >= // to_date(to_char((sysdate-4),'yyyy-mm-dd'),'yyyy-mm-dd hh24:mi')"+ // " and t.data_check_time >= trunc(sysdate-30)" // + " and rownum <= 20" // + " and t.detection_info_id in " // + "(select d.id from detection_info d where // d.detection_set_info_id=" // + dsiId + " and d.seq_id = " + seqId + ")"; // // if (sortFiledType[1].toString().equals("NUMBER") || // sortFiledType[1].toString().equals("Number")) { // source += " and " + sortFiledType[0] + " = " // + dataList.get(i).toString() // + " order by data_check_time desc"; // } else if (sortFiledType[1].toString().indexOf("VARCHAR2") != -1) // { // source += " and " + sortFiledType[0] + " = '" // + dataList.get(i).toString() // + "' order by data_check_time desc"; // } else { // // } // System.out.println("------source--------sql:" + source); // List lineSourceList = this.commonService.executeSQL(source); // // List data = new ArrayList(); // // // 封装一条拆线 // Map chart = new HashMap(); // // if (lineSourceList.size() > 0) { // for (int j = 0; j < lineSourceList.size(); j++) { // Object[] row = (Object[]) lineSourceList.get(j); // Object[] tmp = new Object[2]; // tmp[0] = (sdf.parse((String) row[0])).getTime(); // if(row[1] instanceof BigDecimal) { // tmp[1] = ((BigDecimal) row[1]).setScale(2, // BigDecimal.ROUND_HALF_UP); // }else { // tmp[1] = row[1]; // // } // data.add(tmp); // } // // } // // 封装一条折线--------------------------------------2013 1.23 // chart.put("name", dataList.get(i).toString()); // chart.put("data", data); // line.add(chart); // result.put("lines", line); // } // // returnList.add(result); // // } String jsonStr = JSONArray.fromObject(returnList).toString(); System.out.println(jsonStr); this.getResponse().setCharacterEncoding("utf-8"); PrintWriter printWriter = this.getResponse().getWriter(); printWriter.write(jsonStr); printWriter.close(); printWriter = null; } catch (Exception e) { logger.error(e.getStackTrace()); e.printStackTrace(); if (!StringUtil.isBlank(type) && type.equals("1")) { outHtmlString( ""); } else { outHtmlString( ""); } } return null; } private void queryMonitorDataInfoNewForTopo() { if (mypageNo > 0 && mypageSize > 0) { pageNo = mypageNo; pageSize = mypageSize; } try { StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append( " select distinct din.id,nt.node_ip,cti.check_type_name1,dsi.PROCESS_IDEN_NAME,din.detectioned_state detectioned_state"); sqlBuffer.append( ",to_char(din.data_check_time,'yyyy-MM-dd HH24:mi:Ss'),'',din.current_times,din.detection_state_info,to_char(din.status_change_time,'yyyy-MM-dd HH24:mi:Ss')"); sqlBuffer.append( ",dsi.id dsiiId,cti.id ctiId,din.seq_id sqId,nt.node_system_type nodeSysType,nvl(checkTypeCharState.charStateNum,0) charStateNum,nt.node_type nodeType,nt.ipn ipn"); sqlBuffer.append(",din.police_emergent police_emergent,din.police_level police_level"); sqlBuffer.append(" from DETECTION_INFO_NEW din"); sqlBuffer.append(" left join DETECTION_SET_INFO dsi"); sqlBuffer.append(" on din.detection_set_info_id = dsi.id"); sqlBuffer.append(" left join check_type_info cti"); sqlBuffer.append(" on dsi.check_type_id = cti.id"); // @2018-3-9 fang 修改 首先查询符合条件的id,在拼接sql,适配mysql String groupIdSql = "select group_id from nodegroup_table t where 1=1 "; String ids = this.commonService.getGroupIdStartWith(groupIdSql, "t.group_id = " + nodeGroupId); /* * sqlBuffer. * append(" left join (select distinct node_ip,seq_id,node_system_type,node_type,node_state,system_id ,ipn from NODE_TABLE WHERE node_group_id in" * + * "(select t.group_id from nodegroup_table t start with t.group_id =" * + nodeGroupId + * " connect by prior t.group_id = t.parent_group_id)) nt"); */ sqlBuffer .append(" left join (select distinct node_ip,seq_id,node_system_type,node_type,node_state,system_id ,ipn from NODE_TABLE WHERE node_group_id in" + "(" + ids + ")) nt"); sqlBuffer.append(" on din.seq_id = nt.seq_id"); // ------------2013-1-23 hyx // 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------start sqlBuffer.append(" left join "); sqlBuffer.append( " (select md.check_type_id as ctId,count(*) as charStateNum from metadata md where md.chart_state=0 group by md.check_type_id) checkTypeCharState "); sqlBuffer.append(" on checkTypeCharState.ctId=cti.id "); // ------------2013-1-23 hyx // 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------end // sqlBuffer.append(""); sqlBuffer.append( " where nt.node_ip is not null and nt.node_state = 0 and dsi.detection_set_state ='1' and cti.crete_state=0 and din.valid=1");// 只显示有效的数据:din.valid=1 if (!this.getAdminMark()) { sqlBuffer.append(" and nt.system_id = "); sqlBuffer.append(this.getSystemID()); } if (cip != null && !"".equals(cip) && !"null".equals(cip)) { sqlBuffer.append(" and nt.node_ip like '%" + cip.trim() + "%'"); } if (ctn != null && !"".equals(ctn)) { sqlBuffer.append(" and Upper(cti.Check_Type_Name1) like '%" + ctn.toUpperCase() + "%'"); } if (StringUtils.isNotBlank(stateInfo)) { sqlBuffer.append(" and din.detection_state_info like '%" + stateInfo + "%'"); } if (!this.getAdminMark()) { sqlBuffer.append(" and (((( cti.view_level=1 and cti.user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( cti.view_level=2 and cti.group_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or cti.view_level=3 ) and cti.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (cti.view_level=4 )"); sqlBuffer.append(") "); sqlBuffer.append("and (((( dsi.view_level=1 and dsi.create_user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( dsi.view_level=2 and dsi.create_usergroup_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or dsi.view_level=3 ) and dsi.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (dsi.view_level=4 )"); sqlBuffer.append(") and dsi.detection_set_state=1 and cti.crete_state=0 "); } sqlBuffer.append(" ORDER by detectioned_state, police_emergent, police_level"); System.out.println("sqlBuffer:" + sqlBuffer.toString()); page = this.commonService.findByPageForSql(sqlBuffer.toString(), pageNo, pageSize, null); List detectionInfoList; // 最新状态信息集合 detectionInfoList = (List) page.getResult(); detectionInfoList = changeValue(detectionInfoList, false); // 检测类别查询条件不为空时 查询出来的结果,先判断握手是否成功,如果握手状态异常则查出来的状态也是异常 if (!StringUtil.isBlank(ctn)) { changeStatus(detectionInfoList, ctn); } nodeIpGroupListNew = changeShowList(detectionInfoList, false); if (StringUtils.isNotBlank(nodeGroupId)) { NodegroupTable ngt = (NodegroupTable) this.commonService.get(NodegroupTable.class, Long.parseLong(nodeGroupId.trim())); nodeGroupName = ngt == null ? "" : ngt.getGroupName(); } } catch (Exception e) { logger.error(e.getStackTrace()); e.printStackTrace(); outHtmlString(""); } } private String queryMonitorDataInfoNewForTopoChild() { try { StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append( " select distinct din.id,nt.node_ip,cti.check_type_name1,dsi.PROCESS_IDEN_NAME,din.detectioned_state detectioned_state"); sqlBuffer.append( ",to_char(din.data_check_time,'yyyy-MM-dd HH24:mi:Ss'),'',din.current_times,din.detection_state_info,to_char(din.status_change_time,'yyyy-MM-dd HH24:mi:Ss')"); sqlBuffer.append( ",dsi.id dsiiId,cti.id ctiId,din.seq_id sqId,nt.node_system_type nodeSysType,nvl(checkTypeCharState.charStateNum,0) charStateNum,nt.node_type nodeType,nt.ipn ipn"); sqlBuffer.append(",din.police_emergent police_emergent,din.police_level police_level"); sqlBuffer.append(" from DETECTION_INFO_NEW din"); sqlBuffer.append(" left join DETECTION_SET_INFO dsi"); sqlBuffer.append(" on din.detection_set_info_id = dsi.id"); sqlBuffer.append(" left join check_type_info cti"); sqlBuffer.append(" on dsi.check_type_id = cti.id"); // @2018-3-9 fang 修改 首先查询符合条件的id,在拼接sql,适配mysql String groupIdSql = "select group_id from nodegroup_table t where 1=1 "; String ids = this.commonService.getGroupIdStartWith(groupIdSql, "t.group_id = " + nodeGroupId); /* * sqlBuffer. * append(" left join (select distinct node_ip,seq_id,node_system_type,node_type,node_state,system_id ,ipn from NODE_TABLE WHERE node_group_id in " * + * "(select t.group_id from nodegroup_table t start with t.group_id =" * + nodeGroupId + * " connect by prior t.group_id = t.parent_group_id)) nt"); */ sqlBuffer .append(" left join (select distinct node_ip,seq_id,node_system_type,node_type,node_state,system_id ,ipn from NODE_TABLE WHERE node_group_id in " + "(" + ids + ")) nt"); sqlBuffer.append(" on din.seq_id = nt.seq_id"); // ------------2013-1-23 hyx // 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------start sqlBuffer.append(" left join "); sqlBuffer.append( " (select md.check_type_id as ctId,count(*) as charStateNum from metadata md where md.chart_state=0 group by md.check_type_id) checkTypeCharState "); sqlBuffer.append(" on checkTypeCharState.ctId=cti.id "); // ------------2013-1-23 hyx // 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------end // sqlBuffer.append(""); sqlBuffer.append( " where nt.node_ip is not null and nt.node_state = 0 and dsi.detection_set_state ='1' and cti.crete_state=0 and din.valid=1");// 只显示有效的数据:din.valid=1 if (!this.getAdminMark()) { sqlBuffer.append(" and nt.system_id = "); sqlBuffer.append(this.getSystemID()); } if (cip != null && !"".equals(cip) && !"null".equals(cip)) { sqlBuffer.append(" and nt.node_ip = '" + cip + "'"); } if (ctn != null && !"".equals(ctn)) { sqlBuffer.append(" and Upper(cti.Check_Type_Name1) like '%" + ctn.toUpperCase() + "%'"); } if (!this.getAdminMark()) { sqlBuffer.append(" and (((( cti.view_level=1 and cti.user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( cti.view_level=2 and cti.group_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or cti.view_level=3 ) and cti.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (cti.view_level=4 )"); sqlBuffer.append(") "); sqlBuffer.append("and (((( dsi.view_level=1 and dsi.create_user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( dsi.view_level=2 and dsi.create_usergroup_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or dsi.view_level=3 ) and dsi.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (dsi.view_level=4 )"); sqlBuffer.append(") and dsi.detection_set_state=1 and cti.crete_state=0 "); } sqlBuffer.append(" ORDER by detectioned_state, police_emergent, police_level"); System.out.println("sqlBuffer:" + sqlBuffer.toString()); page = this.commonService.findByPageForSql(sqlBuffer.toString(), pageNo, pageSize, null); List detectionInfoList; // 最新状态信息集合 detectionInfoList = (List) page.getResult(); detectionInfoList = changeValue(detectionInfoList, false); // 检测类别查询条件不为空时 查询出来的结果,先判断握手是否成功,如果握手状态异常则查出来的状态也是异常 if (!StringUtil.isBlank(ctn)) { changeStatus(detectionInfoList, ctn); } nodeIpGroupListNew = changeShowList(detectionInfoList, false); } catch (Exception e) { logger.error(e.getStackTrace()); e.printStackTrace(); outHtmlString(""); } return "queryMonitorDataInfoChild"; } /** * * 拓扑图来源,查询紧急告警-服务器 * * @author jinshujuan Jun 18, 2013 * @version 1.0 * @return */ private void queryEmergent() { if (mypageNo > 0 && mypageSize > 0) { pageNo = mypageNo; pageSize = mypageSize; } try { StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append( " select distinct din.id,nt.node_ip,cti.check_type_name1,dsi.PROCESS_IDEN_NAME,din.detectioned_state detectioned_state"); sqlBuffer.append( ",to_char(din.data_check_time,'yyyy-MM-dd HH24:mi:Ss'),'',din.current_times,din.detection_state_info,to_char(din.status_change_time,'yyyy-MM-dd HH24:mi:Ss')"); sqlBuffer.append( ",dsi.id dsiiId,cti.id ctiId,din.seq_id sqId,nt.node_system_type nodeSysType,nvl(checkTypeCharState.charStateNum,0) charStateNum,nt.node_type nodeType,nt.ipn ipn"); sqlBuffer.append(",din.police_emergent police_emergent,din.police_level police_level"); sqlBuffer.append(" from DETECTION_INFO_NEW din"); sqlBuffer.append(" left join DETECTION_SET_INFO dsi"); sqlBuffer.append(" on din.detection_set_info_id = dsi.id"); sqlBuffer.append(" left join check_type_info cti"); sqlBuffer.append(" on dsi.check_type_id = cti.id"); // @2018-3-9 fang 修改 首先查询符合条件的id,在拼接sql,适配mysql String groupIdSql = "select group_id from nodegroup_table t where 1=1 "; String ids = this.commonService.getGroupIdStartWith(groupIdSql, "t.group_id = " + nodeGroupId); /* * sqlBuffer. * append(" left join (select distinct node_ip,seq_id,node_system_type,node_type,node_state,system_id ,ipn from NODE_TABLE WHERE node_group_id in " * + * "(select t.group_id from nodegroup_table t start with t.group_id =" * + nodeGroupId + * " connect by prior t.group_id = t.parent_group_id)) nt"); */ sqlBuffer .append(" left join (select distinct node_ip,seq_id,node_system_type,node_type,node_state,system_id ,ipn from NODE_TABLE WHERE node_group_id in " + "(" + ids + ")) nt"); sqlBuffer.append(" on din.seq_id = nt.seq_id"); // ------------2013-1-23 hyx // 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------start sqlBuffer.append(" left join "); sqlBuffer.append( " (select md.check_type_id as ctId,count(*) as charStateNum from metadata md where md.chart_state=0 group by md.check_type_id) checkTypeCharState "); sqlBuffer.append(" on checkTypeCharState.ctId=cti.id "); // ------------2013-1-23 hyx // 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------end sqlBuffer.append( " where nt.node_ip is not null and nt.node_state = 0 and dsi.detection_set_state ='1' and cti.crete_state=0 and din.valid=1 and din.DETECTIONED_STATE<>1 AND din.POLICE_EMERGENT=0");// 只显示有效的数据:din.valid=1 if (!this.getAdminMark()) { sqlBuffer.append(" and nt.system_id = "); sqlBuffer.append(this.getSystemID()); } if (cip != null && !"".equals(cip) && !"null".equals(cip)) { sqlBuffer.append(" and nt.node_ip like '%" + cip.trim() + "%'"); } if (ctn != null && !"".equals(ctn)) { sqlBuffer.append(" and Upper(cti.Check_Type_Name1) like '%" + ctn.toUpperCase() + "%'"); } if (!this.getAdminMark()) { sqlBuffer.append(" and (((( cti.view_level=1 and cti.user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( cti.view_level=2 and cti.group_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or cti.view_level=3 ) and cti.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (cti.view_level=4 )"); sqlBuffer.append(") "); sqlBuffer.append("and (((( dsi.view_level=1 and dsi.create_user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( dsi.view_level=2 and dsi.create_usergroup_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or dsi.view_level=3 ) and dsi.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (dsi.view_level=4 )"); sqlBuffer.append(") and dsi.detection_set_state=1 and cti.crete_state=0 "); } sqlBuffer.append(" ORDER by detectioned_state, police_emergent, police_level"); System.out.println("sqlBuffer:" + sqlBuffer.toString()); page = this.commonService.findByPageForSql(sqlBuffer.toString(), pageNo, pageSize, null); List detectionInfoList; // 最新状态信息集合 detectionInfoList = (List) page.getResult(); detectionInfoList = changeValue(detectionInfoList, false); // 检测类别查询条件不为空时 查询出来的结果,先判断握手是否成功,如果握手状态异常则查出来的状态也是异常 if (!StringUtil.isBlank(ctn)) { changeStatus(detectionInfoList, ctn); } nodeIpGroupListNew = changeShowList(detectionInfoList, false); // if(StringUtils.isNotBlank(nodeGroupId)) { // NodegroupTable ngt = // (NodegroupTable)this.commonService.get(NodegroupTable.class, // Long.parseLong(nodeGroupId.trim())); // nodeGroupName = ngt==null?"":ngt.getGroupName(); // }else { // nodeGroupName = ""; // } } catch (Exception e) { logger.error(e.getStackTrace()); e.printStackTrace(); outHtmlString(""); } } /** * * TODO 为了共用页面 将结果转换为 List格式 * * @author jinshujuan Jun 18, 2013 * @version 1.0 * @param detectionInfoList * @param b * @return */ private List changeShowList(List detectionInfoList, boolean b) { List detecInfoGroupListNew = new ArrayList(); try { for (Object[] objects : detectionInfoList) { List listSoNews = new ArrayList(); objects[6] = this.getPersistTime(DateUtil.getDateD(objects[5].toString()), DateUtil.getDateD(objects[9].toString())); listSoNews.add(objects); detecInfoGroupListNew.add(listSoNews); } } catch (Exception e) { e.printStackTrace(); } return detecInfoGroupListNew; } private void queryNodeGroupInfo() { try { String hql = "from NodegroupTable where 1=1 "; if (!this.getAdminMark()) {// 非admin登录时才进行权限控制 // 权限控制----------------------------------------------------begin // 如果当前登录选择了业务系统,则只做和本业务系统相关的操作 if (this.getSystemID() != null) { hql += " and systemId = " + this.getSystemID(); } // 1 发布人查看,2 发布人所在组查看,3 系统内全部人员可看 hql += " and ("; hql += " (viewLevel=1 and createUserId=" + this.getUserID() + ")"; hql += " or (viewLevel=2 and createUsergroupId in (select jsbh from XtYhJsIndex " + " where type=1 and yhbh='" + this.getUser().getYhbh() + "') )"; if (this.getSystemID() != null) { hql += " or (viewLevel=3 and systemId=" + this.getSystemID() + ")"; } else { hql += " or (viewLevel=3 and systemId in" + " (select systemId from GorupSystemTable where userGroupId in" + " (select jsbh from XtYhJsIndex where type=1 and yhbh='" + this.getUser().getYhbh() + "')" + " ) )"; } hql += ")"; // 权限控制----------------------------------------------------end } hql += " order by groupLevel asc,showIndex asc"; allNodeGroupInfo = this.commonService.find(hql.toString()); } catch (Exception e) { e.printStackTrace(); logger.error(e.getStackTrace()); } } private void queryCheckTypeInfo() { try { /* * String hql = ""; if (this.getAdminMark()) * {// 如果是admin登陆则无限制 hql = "from CheckTypeInfo where 1=1 and * isSchedule<>2"; } else { // 权限控制--------begin String sqlparam = " * or (t.viewLevel=4 )"; hql = "from CheckTypeInfo t where 1=1 and * isSchedule<>2 and (( t.viewLevel=1 and t.userId=" + * this.getUserID() + ")" + " or ( t.viewLevel=2 and t.groupId in * (select x.jsbh from XtYhJsIndex x where x.yhbh='" + * this.getUser().getYhbh() + "' and x.type = 1)) or (t.viewLevel=3 * and t.systemId = " + this.getSystemID() + ")" + sqlparam + ") "; * // ----------------end } hql += " and creteState = 0 order by * isSchedule asc , createTime asc"; * * allCheckTypeInfo = this.commonService.find(hql); */ StringBuffer hql = new StringBuffer(); if (this.getAdminMark()) {// 如果是admin登陆则无限制 hql.append("from CheckTypeInfo where isSchedule<>2 "); } else { // 权限控制--------begin hql.append("from CheckTypeInfo t where isSchedule<>2 and (( t.viewLevel=1 and t.userId="); hql.append(this.getUserID()); hql.append(" and t.systemId =" + this.getSystemID() + ")"); hql.append(" or ( t.viewLevel=2 and t.groupId in (select x.jsbh from XtYhJsIndex x where x.yhbh='"); hql.append(this.getUser().getYhbh()); hql.append("' and x.type = 1) and t.systemId = " + this.getSystemID() + ") or (t.viewLevel=3 and t.systemId = " + this.getSystemID() + ")"); hql.append(" or (t.viewLevel=4 )"); hql.append(") "); hql.append(" and t.id in (select dst.checkTypeInfo from DetectionSetInfo dst where dst.detectionSetState=1)"); // ----------------end } hql.append( " and creteState = 0 order by decode(isSchedule,0,0,2,0,1,1,2) asc ,decode(isSnmp,2,0,null,0,1) asc, ID asc"); allCheckTypeInfo = this.commonService.find(hql.toString()); System.out.println("..."); } catch (Exception e) { e.printStackTrace(); logger.error(e.getStackTrace()); } } // 添加此方法主要考虑使用HQL查询会因为表之间的关联关系而导致一条记录多次查询,故修改为sql查询。 public void queryServerMonitorDataInfoNew() { if (mypageNo > 0 && mypageSize > 0) { pageNo = mypageNo; pageSize = mypageSize; } try { StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append( " select distinct din.id,nt.node_ip,cti.check_type_name1,dsi.PROCESS_IDEN_NAME,din.detectioned_state"); sqlBuffer.append( ",to_char(din.data_check_time,'yyyy-MM-dd HH24:mi:Ss'),'',din.current_times,din.detection_state_info,to_char(din.status_change_time,'yyyy-MM-dd HH24:mi:Ss')"); sqlBuffer.append( ",dsi.id dsiiId,cti.id ctiId,din.seq_id sqId,nt.node_system_type nodeSysType,nvl(checkTypeCharState.charStateNum,0) charStateNum,nt.node_type nodeType,nt.ipn ipn,decode(cti.check_type_name,'NMSClient',-1,cti.id) ctiId1,nt.special_server_type"); sqlBuffer.append(" from DETECTION_INFO_NEW din"); sqlBuffer.append(" left join DETECTION_SET_INFO dsi"); sqlBuffer.append(" on din.detection_set_info_id = dsi.id"); sqlBuffer.append(" left join check_type_info cti"); sqlBuffer.append(" on dsi.check_type_id = cti.id"); sqlBuffer.append( " left join (select distinct node_ip,seq_id,node_system_type,node_type,node_state,system_id ,ipn,special_server_type from NODE_TABLE "); if (nodeGroupStr != null && !"".equals(nodeGroupStr) && !"null".equals(nodeGroupStr)) { // 节点组模糊名称不为空,则根据节点组名称,模糊查询所有节点组,再依次查找其下面的节点,得到节点id // @2018-3-9 fang 修改 首先查询符合条件的id,在拼接sql,适配mysql String groupIdSql = "select group_id from nodegroup_table t where 1=1 "; String ids = this.commonService.getGroupIdStartWith(groupIdSql, "lower(group_name) like lower('%" + nodeGroupStr + "%')"); /* * sqlBuffer. * append(" right join (select distinct ngt.group_id from nodegroup_table ngt start with lower(ngt.group_name) like lower('%" * + nodeGroupStr + * "%') connect by prior group_id=parent_group_id ) ngt on node_group_id=ngt.group_id" * ); */ sqlBuffer .append(" right join (select distinct ngt.group_id from nodegroup_table ngt where ngt.group_id in (" + ids + ")) ngt on node_group_id=ngt.group_id"); } sqlBuffer.append(") nt on din.seq_id = nt.seq_id"); // ------------2013-1-23 hyx // 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------start sqlBuffer.append(" left join "); sqlBuffer.append( " (select md.check_type_id as ctId,count(*) as charStateNum from metadata md where md.chart_state=0 group by md.check_type_id) checkTypeCharState "); sqlBuffer.append(" on checkTypeCharState.ctId=cti.id "); // ------------2013-1-23 hyx // 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------end // sqlBuffer.append(""); sqlBuffer.append( " where nt.node_ip is not null AND nt.node_type =0 and nt.node_state = 0 and dsi.detection_set_state ='1' and cti.crete_state=0 and din.valid=1");// 只显示有效的数据:din.valid=1 if (!this.getAdminMark()) { sqlBuffer.append(" and nt.system_id = "); sqlBuffer.append(this.getSystemID()); } if (cip != null && !"".equals(cip) && !"null".equals(cip)) { sqlBuffer.append(" and nt.node_ip like '%" + cip.trim() + "%'"); } if (ctn != null && !"".equals(ctn)) { // sqlBuffer.append(" and cti.id =" + ctn); sqlBuffer.append(" and Upper(cti.Check_Type_Name1) like '%" + ctn.toUpperCase() + "%'"); } if (checkType != null && checkType != -1) { sqlBuffer.append(" and cti.id =" + checkType); } if (StringUtils.isNotBlank(stateInfo)) { sqlBuffer.append(" and din.detection_state_info like '%" + stateInfo + "%'"); } if (!this.getAdminMark()) { // 权限控制------begin // String sqlparam = " or (cti.view_level=4 )"; /* * sqlBuffer .append("and (( cti.view_level=1 and cti.user_id=" * + this.getUserID() + ")" + " or ( cti.view_level=2 and * cti.group_id in (select x.jsbh from Xt_Yh_Js_Index x where * x.yhbh='" + this.getUser().getYhbh() + "' and x.type = 1)) or * (cti.view_level=3 and cti.system_id = " + this.getSystemID() * + ")" + sqlparam + ") "); */ // -------------end sqlBuffer.append(" and (((( cti.view_level=1 and cti.user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( cti.view_level=2 and cti.group_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or cti.view_level=3 ) and cti.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (cti.view_level=4 )"); sqlBuffer.append(") "); sqlBuffer.append("and (((( dsi.view_level=1 and dsi.create_user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( dsi.view_level=2 and dsi.create_usergroup_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or dsi.view_level=3 ) and dsi.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (dsi.view_level=4 )"); sqlBuffer.append(") and dsi.detection_set_state=1 and cti.crete_state=0 "); } sqlBuffer.append(" order by ipn ASC,ctiId1 ASC, dsi.id ASC"); System.out.println("sqlBuffer:" + sqlBuffer.toString()); page = this.commonService.findByPageForSql(sqlBuffer.toString(), pageNo, pageSize, null); List detectionInfoList; // 最新状态信息集合 detectionInfoList = (List) page.getResult(); detectionInfoList = changeValue(detectionInfoList, false); // 检测类别查询条件不为空时 查询出来的结果,先判断握手是否成功,如果握手状态异常则查出来的状态也是异常 if (!StringUtil.isBlank(ctn)) { changeStatus(detectionInfoList, ctn); } nodeIpGroupListNew = getNodeIpGroupListNew(detectionInfoList, false); } catch (Exception e) { logger.error(e.getStackTrace()); e.printStackTrace(); outHtmlString( ""); } } /** * * 检测类别查询条件不为空时 对查询结果的状态特殊处理 * * @author jinshujuan May 30, 2013 * @version 1.0 * @param detectionInfoList * @param ctn2 */ private void changeStatus(List detectionInfoList, String checkType) { try { // 如果checkType 是握手检测则跳过 String hql = " from CheckTypeInfo where checkTypeName1 like '%" + checkType + "%'"; List checkTypeInfos = commonService.find(hql); if (checkTypeInfos == null || checkTypeInfos.size() == 0) { return; } // 如果是握手检测跳过 if (checkTypeInfos.get(0).getCheckTypeName().equals("NMSClient")) { return; } // 获取握手检测类别的ID hql = "select id from CheckTypeInfo where checkTypeName='NMSClient'"; List idsList = commonService.find(hql); if (idsList == null || idsList.size() == 0) { return; } long checkTypeId = Long.parseLong(idsList.get(0).toString()); for (Object[] objects : detectionInfoList) { String seqId = objects[12].toString(); String sql = "SELECT t1.detectioned_state from DETECTION_INFO_NEW t1 WHERE t1.seq_id=" + seqId + " AND t1.detection_set_info_id IN (SELECT t.id from DETECTION_SET_INFO t WHERE t.check_type_id=" + checkTypeId + " AND t.detection_set_state=1 ) ORDER BY t1.data_arrive_time DESC"; List statusList = commonService.executeSQL(sql); if (statusList != null && statusList.size() > 0) { // status = 1说明握手正常 String status = statusList.get(0) == null ? "" : statusList.get(0).toString(); // 握手状态不正常status in (0 -1) 修改检测状态、持续时间 if (!status.equals("1")) { // 3是界面展示的临时状态 存在于用检测类别查询时,该节点的握手检测异常状态时,其状态设置为3 页面不展示 objects[4] = "3"; } } } } catch (Exception e) { e.printStackTrace(); } } public String queryServerMonitorDataInfoChild() { try { StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append( " select distinct din.id,nt.node_ip,cti.check_type_name1,dsi.PROCESS_IDEN_NAME,din.detectioned_state"); sqlBuffer.append( ",to_char(din.data_check_time,'yyyy-MM-dd HH24:mi:Ss'),'',din.current_times,din.detection_state_info,to_char(din.status_change_time,'yyyy-MM-dd HH24:mi:Ss')"); sqlBuffer.append( ",dsi.id dsiiId,cti.id ctiId,din.seq_id sqId,nt.node_system_type nodeSysType,nvl(checkTypeCharState.charStateNum,0) charStateNum,nt.node_type nodeType,nt.ipn ipn ,decode(cti.check_type_name,'NMSClient',-1,cti.id) ctiId1"); sqlBuffer.append(" from DETECTION_INFO_NEW din"); sqlBuffer.append(" left join DETECTION_SET_INFO dsi"); sqlBuffer.append(" on din.detection_set_info_id = dsi.id"); sqlBuffer.append(" left join check_type_info cti"); sqlBuffer.append(" on dsi.check_type_id = cti.id"); sqlBuffer.append( " left join (select distinct node_ip,seq_id,node_system_type,node_type,node_state,system_id ,ipn from NODE_TABLE "); if (nodeGroupStr != null && !"".equals(nodeGroupStr) && !"null".equals(nodeGroupStr)) { // 节点组模糊名称不为空,则根据节点组名称,模糊查询所有节点组,再依次查找其下面的节点,得到节点id // @2018-3-9 fang 修改 首先查询符合条件的id,在拼接sql,适配mysql String groupIdSql = "select group_id from nodegroup_table t where 1=1 "; String ids = this.commonService.getGroupIdStartWith(groupIdSql, "lower(group_name) like lower('%" + nodeGroupStr + "%')"); sqlBuffer .append(" right join (select distinct ngt.group_id from nodegroup_table ngt where ngt.group_id in (" + ids + ") ) ngt on node_group_id=ngt.group_id"); } sqlBuffer.append(") nt on din.seq_id = nt.seq_id"); // ------------2013-1-23 hyx // 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------start sqlBuffer.append(" left join "); sqlBuffer.append( " (select md.check_type_id as ctId,count(*) as charStateNum from metadata md where md.chart_state=0 group by md.check_type_id) checkTypeCharState "); sqlBuffer.append(" on checkTypeCharState.ctId=cti.id "); // ------------2013-1-23 hyx // 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------end // sqlBuffer.append(""); sqlBuffer.append( " where nt.node_ip is not null AND nt.node_type =0 and nt.node_state = 0 and dsi.detection_set_state ='1' and cti.crete_state=0 and din.valid=1");// 只显示有效的数据:din.valid=1 if (!this.getAdminMark()) { sqlBuffer.append(" and nt.system_id = "); sqlBuffer.append(this.getSystemID()); } // sqlBuffer.append(""); // sqlBuffer.append(" "); if (cip != null && !"".equals(cip) && !"null".equals(cip)) { sqlBuffer.append(" and nt.node_ip = '" + cip + "'"); // sqlBuffer.append(" and instr(nt.node_ip,'"+cip.trim()+"') // <> 0"); } if (nodeIpRange != null && !"".equals(nodeIpRange) && !"null".equals(nodeIpRange)) { sqlBuffer.append(" and nt.node_ip like '" + nodeIpRange + "%'"); } if (ctn != null && !"".equals(ctn)) { // sqlBuffer.append(" and cti.id =" + ctn); sqlBuffer.append(" and Upper(cti.Check_Type_Name1) like '%" + ctn.toUpperCase() + "%'"); } if (!this.getAdminMark()) { sqlBuffer.append(" and (((( cti.view_level=1 and cti.user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( cti.view_level=2 and cti.group_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or cti.view_level=3 ) and cti.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (cti.view_level=4 )"); sqlBuffer.append(") "); sqlBuffer.append("and (((( dsi.view_level=1 and dsi.create_user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( dsi.view_level=2 and dsi.create_usergroup_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or dsi.view_level=3 ) and dsi.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (dsi.view_level=4 )"); sqlBuffer.append(") and dsi.detection_set_state=1 and cti.crete_state=0 "); } sqlBuffer.append(" order by ipn ASC,ctiId1 ASC, dsi.id ASC"); System.out.println("sqlBuffer:" + sqlBuffer.toString()); page = this.commonService.findByPageForSql(sqlBuffer.toString(), pageNo, pageSize, null); List detectionInfoList; // 最新状态信息集合 detectionInfoList = (List) page.getResult(); detectionInfoList = changeValue(detectionInfoList, false); // 检测类别查询条件不为空时 查询出来的结果,先判断握手是否成功,如果握手状态异常则查出来的状态也是异常 if (!StringUtil.isBlank(ctn)) { changeStatus(detectionInfoList, ctn); } nodeIpGroupListNew = getNodeIpGroupListNew(detectionInfoList, false); } catch (Exception e) { logger.error(e.getStackTrace()); e.printStackTrace(); outHtmlString( ""); } return "queryServerMonitorDataInfoChild"; } public List changeValue(List list, boolean falg) throws Exception { Map> maps = (Map>) this.getRequest().getSession() .getServletContext().getAttribute("troubles"); int index = 8; if (falg) { index++; } if (maps != null && maps.size() > 0) { if (maps.containsKey(this.getSystemID())) {// 判断系统id Map mapCode = maps.get(this.getSystemID());// key: // code // value: // desc Set keys = mapCode.keySet(); for (int j = 0; j < list.size(); j++) { for (Iterator it = keys.iterator(); it.hasNext();) { if (list.get(j)[index] != null && !"".equals(list.get(j)[index])) { if (it.next().toString().equals(list.get(j)[index].toString())) { list.get(j)[index] = mapCode.get(it.next()); break; } } else { list.get(j)[index] = ""; break; } } } } } return list; } public String getDrawDateSource() { return "drawMonitorInfo"; } public String ajaxDrawDateSource() { String resu = ""; try { String dsiId = this.getRequest().getParameter("dsiId"); // String ctId = this.getRequest().getParameter("checkTypeId"); // String seqId = this.getRequest().getParameter("sqId"); sqId = this.getRequest().getParameter("sqId"); ctId = this.getRequest().getParameter("checkTypeId"); detectionSetInfoId=this.getRequest().getParameter("detectionSetInfoId"); System.out.println("dsiId:" + dsiId); System.out.println("ctId:" + ctId); System.out.println("seqId:" + sqId); CheckTypeInfo checkTypeInfo = (CheckTypeInfo) this.commonService.get(CheckTypeInfo.class, Long.parseLong(ctId)); String tString = "select * from metadata where table_name = " + "(select table_name from check_type_info where id=" + "(select check_type_id from detection_set_info where id=" + dsiId + ")) " + " and chart_state = '0'"; // " and chart_state = '0' // or id in(select metadata_id from data_police_relation // where police_state = '0' and detection_set_info_id="+dsiId+")"; System.out.println("huatu:" + tString); metadataList = this.commonService.executeSQL(tString, Metadata.class); // 针对多项监测都使用分类标识,所以取消判断是否为snmp监控 // if (checkTypeInfo.getIsSnmp() != null // && (checkTypeInfo.getIsSnmp() == 0 || checkTypeInfo // .getIsSnmp() == 1)) { // return this.checkLineNum(ctId,dsiId,seqId); // 得到分类标识字段 String sort_sign = "select t.filed_name,t.filed_type from metadata t where t.check_type_id =" + ctId + " and t.sort_sign =0"; List sortList = this.commonService.executeSQL(sort_sign); if (sortList != null && sortList.size() > 0) { Object[] sortFiledType = (Object[]) sortList.get(0); // 得到数据表中所有该分类标识的值 String getAllSort = "select distinct " + sortFiledType[0].toString() + " from " + checkTypeInfo.getTableName() + " where " + sortFiledType[0].toString() + " is not null and seq_id =" + sqId + " and DETECTION_SET_INFO_ID="+dsiId+" order by " + sortFiledType[0].toString(); // List sortValues = this.commonService.executeSQL(getAllSort); dataList = this.commonService.executeSQL(getAllSort); if (checkTypeInfo.getCheckTypeName().toLowerCase().equals("net")) { resu = "drawSpecialMonitorInfo"; } else if (checkTypeInfo.getCheckTypeName().toLowerCase().equals("switchport")) {// 交换机监测:端口 resu = "drawSwitchportMonitorInfo";// drawSwitchportMonitorInfo:选择多个端口时,显示多个端口之和的一条曲线 } else { resu = "drawSnmpMonitorInfo"; } } else { resu = "drawMonitorInfo"; } } catch (Exception e) { e.printStackTrace(); logger.error(e.getStackTrace()); outHtmlString( ""); } return resu; } public String getSpecialSource() { String mId = this.getRequest().getParameter("metaId"); String dsiId = this.getRequest().getParameter("dId"); String ctId = this.getRequest().getParameter("cId"); String seqId = this.getRequest().getParameter("seqId"); String lines = this.getRequest().getParameter("lns"); String type = this.getRequest().getParameter("type"); String policeValSQL = ""; List policeValue = null; Map result1 = new HashMap(); // 预警值 int policeVal = 0; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); List> returnList = new ArrayList>(); NodeTable nt = null; try { CheckTypeInfo checkTypeInfo = (CheckTypeInfo) this.commonService.get(CheckTypeInfo.class, Long.parseLong(ctId)); Metadata metadata = (Metadata) this.commonService.get(Metadata.class, Long.parseLong(mId)); List nts = this.commonService.find("from NodeTable where seqId=" + Long.parseLong(seqId)); if (nts != null && nts.size() > 0) { nt = nts.get(0); } int specialFlag = 0; // 0 非特殊数据 1字节速度特殊数据 2包速度特殊数据 String specialColumn = ""; if (checkTypeInfo != null && StringUtils.isNotBlank(checkTypeInfo.getCheckTypeName())) { if (checkTypeInfo.getCheckTypeName().toLowerCase().equals("switchport")) { // net监测类别 if (metadata.getFiledName().toLowerCase().equals("inoctetsspeed")) { specialFlag = 1; specialColumn = "Data_64_FLag,decode(Ifhighspeed,null,ifspeed,0,ifspeed,ifhighspeed*1024*1024) ifhighspeedbps," + metadata.getFiledName() + ",ifInOctets"; } else if (metadata.getFiledName().toLowerCase().equals("outoctetsspeed")) { specialFlag = 1; specialColumn = "Data_64_FLag,decode(Ifhighspeed,null,ifspeed,0,ifspeed,ifhighspeed*1024*1024) ifhighspeedbps," + metadata.getFiledName() + ",ifOutOctets"; } else if (metadata.getFiledName().toLowerCase().equals("inpktsspeed")) { specialFlag = 2; specialColumn = "Data_64_FLag,decode(Ifhighspeed,null,ifspeed,0,ifspeed,ifhighspeed*1024*1024) ifhighspeedbps," + metadata.getFiledName() + ",ifInUcastPkts,ifInNUcastPkts,IFINOCTETS"; } else if (metadata.getFiledName().toLowerCase().equals("outpktsspeed")) { specialFlag = 2; specialColumn = "Data_64_FLag,decode(Ifhighspeed,null,ifspeed,0,ifspeed,ifhighspeed*1024*1024) ifhighspeedbps," + metadata.getFiledName() + ",ifOutUcastPkts,ifOutNUcastPkts,IFOUTOCTETS"; } else { specialFlag = 0; specialColumn = metadata.getFiledName(); } } else if (checkTypeInfo.getCheckTypeName().toLowerCase().equals("net")) {// switchport // 监测类别 if (metadata.getFiledName().toLowerCase().equals("rx_bps")) { // 输入bps(单位:bps) specialFlag = 1; specialColumn = "0 data64flag,decode(speed,0,0,null,0,speed*1024*1024)," + metadata.getFiledName() + ",rx_bytes"; } else if (metadata.getFiledName().toLowerCase().equals("tx_bps")) { // 输出bps(单位:bps) specialFlag = 1; specialColumn = "0 data64flag,decode(speed,0,0,null,0,speed*1024*1024)," + metadata.getFiledName() + ",tx_bytes"; } else if (metadata.getFiledName().toLowerCase().equals("rx_pps")) { // 输入pps(每秒接收包数) specialFlag = 2; specialColumn = "0 data64flag,decode(speed,0,0,null,0,speed*1024*1024)," + metadata.getFiledName() + ",rx_packets,0,RX_BYTES"; } else if (metadata.getFiledName().toLowerCase().equals("tx_pps")) { // 输出pps(每秒发出包数) specialFlag = 2; specialColumn = "0 data64flag,decode(speed,0,0,null,0,speed*1024*1024)," + metadata.getFiledName() + ",tx_packets,0,TX_BYTES "; } else { specialFlag = 0; specialColumn = metadata.getFiledName(); } } } DetectionSetInfo dsi = (DetectionSetInfo) this.commonService.get(DetectionSetInfo.class, Long.parseLong(dsiId)); // public part---------------------------begin-------------------- // 预警线 policeValSQL = "select police_value from data_police_relation where detection_set_info_id=" + dsiId + " and metadata_id=" + metadata.getId(); policeValue = this.commonService.executeSQL(policeValSQL); if (policeValue != null && policeValue.size() > 0) { // policeVal=((BigDecimal)policeValue.get(0)).intValue(); policeVal = Integer.parseInt(policeValue.get(0).toString()); } // 如果预警值不等于0则画预警线 if (policeVal != 0) { result1.put("policeVal", policeVal); } if (metadata.getFiledComments() != null && !"".equals(metadata.getFiledComments())) { if (nt != null) { result1.put("xtitle", nt.getNodeIp() + "_" + dsi.getProcessIdenName() + " " + checkTypeInfo.getCheckTypeName1() + ":" + metadata.getFiledComments() + getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.cartogram_n81i")); } else { result1.put("xtitle", dsi.getProcessIdenName() + " " + checkTypeInfo.getCheckTypeName1() + ":" + metadata.getFiledComments() + getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.cartogram_n81i")); } result1.put("ytitle", metadata.getFiledComments()); } else { if (nt != null) { result1.put("xtitle", nt.getNodeIp() + "_" + dsi.getProcessIdenName() + " " + checkTypeInfo.getCheckTypeName() + ":" + metadata.getFiledName().replace("_", " ") + getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.cartogram_n81i")); } else { result1.put("xtitle", dsi.getProcessIdenName() + " " + checkTypeInfo.getCheckTypeName() + ":" + metadata.getFiledName().replace("_", " ") + getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.cartogram_n81i")); } result1.put("ytitle", metadata.getFiledName().replace("_", " ")); } returnList.add(result1); // public part---------------------------end---------------------- // 得到分类标识字段 String sort_sign = "select t.filed_name,t.filed_type from metadata t where t.check_type_id =" + ctId + " and t.sort_sign =0"; List sortList = this.commonService.executeSQL(sort_sign); Object[] objs = null; List dataPoint = new ArrayList(); if (sortList != null && sortList.size() > 0) { Object[] sortFiledType = (Object[]) sortList.get(0); Map result = new HashMap(); List> line = new ArrayList>(); // 选择checkBox画图 if (lines != null && !lines.equals("")) { String[] linStrings = lines.split(","); for (int i = 0; i < linStrings.length; i++) { String[] cbStrings = checkLins(metadata, checkTypeInfo, sortFiledType, dsiId, seqId, linStrings[i]); String source = ""; if (linStrings[i].equals(cbStrings[0])) {// 这是最后的那个 source = "select * from ( select data_check_time_digital ," + specialColumn + " from " + checkTypeInfo.getTableName() + " t where " + metadata.getFiledName() + " is not null" // + // " and t.data_check_time >= // to_date(to_char((sysdate-4),'yyyy-mm-dd'),'yyyy-mm-dd // hh24:mi')"+ // +" and t.data_check_time >= // trunc(sysdate-30)" // + " and rownum <= 20" + " and t.detection_set_info_id=" + dsiId + " and t.seq_id = " + seqId + " "; if (null != startTime && !startTime.equals("") && null != endTime && !endTime.equals("")) { source += " and to_char(data_check_time,'yyyy-mm-dd')>= '" + startTime + "' and to_char(data_check_time,'yyyy-mm-dd')<='" + endTime + "'"; } else { source += " and t.data_check_time >= trunc(sysdate-0) "; } if (sortFiledType[1].toString().equals("NUMBER") || sortFiledType[1].toString().equals("Number")) { source += " and " + sortFiledType[0] + " = " + linStrings[i].toString() + " ) ttt "; } else if (sortFiledType[1].toString().indexOf("VARCHAR2") != -1) { source += " and " + sortFiledType[0] + " = '" + linStrings[i].toString() + "' ) ttt "; } /* * source += * " where rownum < 21 order by data_check_time_digital asc" * ; */ // @2018年4月10日18:45:00 fang 修改rownum 适配 mysql if (Constant.IS_MYSQL) { // source = source + " order by data_check_time_digital desc limit 20"; source = source + " order by data_check_time_digital desc "; } else { // source += " where rownum < 21 order by data_check_time_digital desc"; source += " order by data_check_time_digital desc"; } } else { source = "select * from ( select data_check_time_digital," + specialColumn + " from " + checkTypeInfo.getTableName() + " t where " + metadata.getFiledName() + " is not null" // +" and t.data_check_time >= // trunc(sysdate-30)" + " and t.Detection_Set_Info_Id =" + dsiId + " and t.seq_id = " + seqId + " "; if (null != startTime && !startTime.equals("") && null != endTime && !endTime.equals("")) { source += " and to_char(data_check_time,'yyyy-mm-dd')>= '" + startTime + "' and to_char(data_check_time,'yyyy-mm-dd')<='" + endTime + "'"; } else { source += " and t.data_check_time >= trunc(sysdate-0) "; } if (sortFiledType[1].toString().equals("NUMBER") || sortFiledType[1].toString().equals("Number")) { source += " and " + sortFiledType[0] + " = " + linStrings[i].toString(); } else if (sortFiledType[1].toString().indexOf("VARCHAR2") != -1) { source += " and " + sortFiledType[0] + " = '" + linStrings[i].toString() + "'"; } // 判断是否有返回 如果有则加入查询条件 如果无 则不加 if (null != cbStrings[1] && !cbStrings[1].equals("")) { /* * source += * " and t.data_check_time >= to_date('" + * cbStrings[1] + * "','yyyy-mm-dd HH24:mi') order by data_check_time_digital desc) where rownum < 21 order by data_check_time_digital asc" * ; */ source += " and t.data_check_time >= to_date('" + cbStrings[1] + "','yyyy-mm-dd HH24:mi') ) ttt "; // @2018年4月10日18:45:00 fang 修改rownum 适配 mysql if (Constant.IS_MYSQL) { // source = source + " order by data_check_time_digital desc limit 20"; source = source + " order by data_check_time_digital desc "; } else { // source += " where rownum < 21 order by data_check_time_digital desc"; source += " order by data_check_time_digital desc"; } } else { /* * source += * " order by data_check_time_digital desc) where rownum < 21 order by data_check_time_digital asc" * ; */ source += " ) ttt "; // @2018年4月10日18:45:00 fang 修改rownum 适配 mysql if (Constant.IS_MYSQL) { // source = source + " order by data_check_time_digital desc limit 20"; source = source + " order by data_check_time_digital desc "; } else { // source += " where rownum < 21 order by data_check_time_digital desc"; source += " order by data_check_time_digital desc"; } } } source = "select * from ("+source+") tt order by data_check_time_digital"; System.out.println("------NoFirstInSource--------sql:" + source); List lineSourceList = this.commonService.executeSQL(source); // 展示数据封装处理 if (specialFlag == 1) { // 字节特殊数据 再次处理 objs = commonService.bitSpeedSourceList(lineSourceList, dsi.getCheckGap() * 60 * 1000); } else if (specialFlag == 2) { // 包特殊数据 再次处理 objs = commonService.pktSpeedSourceList(lineSourceList, dsi.getCheckGap() * 60 * 1000); } else { // 整理为数据格式 if (lineSourceList.size() > 0) { for (int j = 0; j < lineSourceList.size(); j++) { Object[] row = (Object[]) lineSourceList.get(j); Object[] tmp = new Object[2]; tmp[0] = ((BigDecimal) row[0]).longValue(); if (row[1] instanceof BigDecimal) { tmp[1] = ((BigDecimal) row[1]).setScale(2, BigDecimal.ROUND_HALF_UP); } else { tmp[1] = row[1]; } dataPoint.add(tmp); } } } this.getRequest().setAttribute("lineStr", linStrings[i].toString()); // 封装一条拆线 Map specialchart1 = new HashMap(); specialchart1.put("name", linStrings[i].toString() + getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.avg_n81i")); specialchart1.put("data", objs != null ? objs[0] : null); // 封装一条拆线 Map specialchart2 = new HashMap(); specialchart2.put("name", getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.moment_n81i")); specialchart2.put("data", objs != null ? objs[1] : null); // 封装一条拆线 Map chart = new HashMap(); // 封装一条折线--------------------------------------2013 1.23 chart.put("name", linStrings[i].toString()); chart.put("data", dataPoint); line.add(specialchart1); line.add(specialchart2); line.add(chart); result.put("lines", line); } } else { // 封装一条拆线 Map chart = new HashMap(); // 得到数据表中所有该分类标识的值 String getAllSort = "select distinct " + sortFiledType[0].toString() + " from " + checkTypeInfo.getTableName() + " where " + sortFiledType[0].toString() + " is not null and seq_id=" + seqId + " and DETECTION_SET_INFO_ID="+dsiId+" order by " + sortFiledType[0].toString(); dataList = this.commonService.executeSQL(getAllSort); if (dataList != null && dataList.size() > 0) { String source = "select * from (select data_check_time_digital," + specialColumn + " from " + checkTypeInfo.getTableName() + " t where " + metadata.getFiledName() + " is not null" // + " and t.data_check_time >= // trunc(sysdate-30)" + " and t.Detection_Set_Info_Id = " + dsiId + " and t.seq_id = " + seqId; if (null != startTime && !startTime.equals("") && null != endTime && !endTime.equals("")) { source += " and to_char(data_check_time,'yyyy-mm-dd')>= '" + startTime + "' and to_char(data_check_time,'yyyy-mm-dd')<='" + endTime + "'"; } else { source += " and t.data_check_time >= trunc(sysdate-0) "; } if (sortFiledType[1].toString().equals("NUMBER") || sortFiledType[1].toString().equals("Number")) { source += " and " + sortFiledType[0] + " = " + dataList.get(0).toString() + " )"; } else if (sortFiledType[1].toString().indexOf("VARCHAR2") != -1) { source += " and " + sortFiledType[0] + " = '" + dataList.get(0).toString() + "' )"; } /* * source += * " where rownum < 21 order by data_check_time_digital asc" * ; */ // @2018年4月10日18:45:00 fang 修改rownum 适配 mysql if (Constant.IS_MYSQL) { // source = source + " order by data_check_time_digital asc limit 20"; source = source + " order by data_check_time_digital asc "; } else { // source += " where rownum < 21 order by data_check_time_digital asc";// 查询最近时间的21条数据 source += " order by data_check_time_digital asc";// 查询最近时间的21条数据 } source = "select * from ("+source+") tt order by data_check_time_digital"; System.out.println("------source--------sql:" + source); List lineSourceList = this.commonService.executeSQL(source); // 展示数据封装处理 if (specialFlag == 1) { // 字节特殊数据 再次处理 objs = commonService.bitSpeedSourceList(lineSourceList, dsi.getCheckGap() * 60 * 1000); } else if (specialFlag == 2) { // 包特殊数据 再次处理 objs = commonService.pktSpeedSourceList(lineSourceList, dsi.getCheckGap() * 60 * 1000); } else { // 整理为数据格式 for (int j = 0; j < lineSourceList.size(); j++) { Object[] row = (Object[]) lineSourceList.get(j); Object[] tmp = new Object[2]; tmp[0] = ((BigDecimal) row[0]).longValue(); if (row[1] instanceof BigDecimal) { tmp[1] = ((BigDecimal) row[1]).setScale(2, BigDecimal.ROUND_HALF_UP); } else { tmp[1] = row[1]; } dataPoint.add(tmp); } } this.getRequest().setAttribute("lineStr", dataList.get(0).toString()); // 封装一条拆线 Map specialchart1 = new HashMap(); specialchart1.put("name", dataList.get(0).toString() + getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.avg_n81i")); specialchart1.put("data", objs != null ? objs[0] : null); // 封装一条拆线 Map specialchart2 = new HashMap(); specialchart2.put("name", getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.moment_n81i")); specialchart2.put("data", objs != null ? objs[1] : null); // 封装一条折线--------------------------------------2013 1.23 chart.put("name", dataList.get(0).toString()); chart.put("data", dataPoint); line.add(specialchart1); line.add(specialchart2); line.add(chart); result.put("lines", line); } else { // 封装一条折线--------------------------------------2013 1.23 chart.put("name", ""); chart.put("data", ""); line.add(chart); result.put("lines", line); } } returnList.add(result); } // for (int i = 0; i < dataList.size(); i++) { // String source = "select to_char(data_check_time,'yyyy-mm-dd // HH24:mi')," // + metadata.getFiledName() // + " from " // + checkTypeInfo.getTableName() // + " t where " // + metadata.getFiledName() // + " is not null" // + // // " and t.data_check_time >= // to_date(to_char((sysdate-4),'yyyy-mm-dd'),'yyyy-mm-dd hh24:mi')"+ // " and t.data_check_time >= trunc(sysdate-30)" // + " and rownum <= 20" // + " and t.detection_info_id in " // + "(select d.id from detection_info d where // d.detection_set_info_id=" // + dsiId + " and d.seq_id = " + seqId + ")"; // // if (sortFiledType[1].toString().equals("NUMBER") || // sortFiledType[1].toString().equals("Number")) { // source += " and " + sortFiledType[0] + " = " // + dataList.get(i).toString() // + " order by data_check_time desc"; // } else if (sortFiledType[1].toString().indexOf("VARCHAR2") != -1) // { // source += " and " + sortFiledType[0] + " = '" // + dataList.get(i).toString() // + "' order by data_check_time desc"; // } else { // // } // System.out.println("------source--------sql:" + source); // List lineSourceList = this.commonService.executeSQL(source); // // List data = new ArrayList(); // // // 封装一条拆线 // Map chart = new HashMap(); // // if (lineSourceList.size() > 0) { // for (int j = 0; j < lineSourceList.size(); j++) { // Object[] row = (Object[]) lineSourceList.get(j); // Object[] tmp = new Object[2]; // tmp[0] = (sdf.parse((String) row[0])).getTime(); // if(row[1] instanceof BigDecimal) { // tmp[1] = ((BigDecimal) row[1]).setScale(2, // BigDecimal.ROUND_HALF_UP); // }else { // tmp[1] = row[1]; // // } // data.add(tmp); // } // // } // // 封装一条折线--------------------------------------2013 1.23 // chart.put("name", dataList.get(i).toString()); // chart.put("data", data); // line.add(chart); // result.put("lines", line); // } // // returnList.add(result); // // } this.getRequest().setAttribute("specialFlag", specialFlag); // 0 // 非特殊字段 // 1 // 特殊字段 String jsonStr = JSONArray.fromObject(returnList).toString(); System.out.println(jsonStr); this.getResponse().setCharacterEncoding("utf-8"); PrintWriter printWriter = this.getResponse().getWriter(); printWriter.write(jsonStr); printWriter.close(); printWriter = null; } catch (Exception e) { logger.error(e.getStackTrace()); e.printStackTrace(); if (!StringUtil.isBlank(type) && type.equals("1")) { outHtmlString( ""); } else { outHtmlString( ""); } } return null; } public static void main(String[] args) { Date a = new Date(1381383780091l); System.out.println(a); Date b = new Date(1381384080092l); System.out.println(b); } /** * 逻辑:网元监测列表,只针对switchport监测 一个节点 + 一个监测类别 + 一个监测设置 + 一个字段 + 一个分类标识的多个值 * 1.根据当前字段,组织查询的内容 2.告警线:查询当前字段是否有告警值,如果有,且不为0,则画告警线 3.查询分类字段(只有一个字段):端口名 * * returnList:result1(告警线) + result(数据线) * * @author hyx Sep 23, 2013 */ public String getSwitchportSource() { String mId = this.getRequest().getParameter("metaId"); String dsiId = this.getRequest().getParameter("dId"); String ctId = this.getRequest().getParameter("cId"); String seqId = this.getRequest().getParameter("seqId"); String lines = this.getRequest().getParameter("lns");// 选中端口:未选中端口时,为undefined if ("undefined".equalsIgnoreCase(lines) || "null".equalsIgnoreCase(lines)) { lines = ""; } List> returnList = new ArrayList>();// 最终返回的数据 try { CheckTypeInfo checkTypeInfo = (CheckTypeInfo) this.commonService.get(CheckTypeInfo.class, Long.parseLong(ctId));// 监测类别 DetectionSetInfo dsi = (DetectionSetInfo) this.commonService.get(DetectionSetInfo.class, Long.parseLong(dsiId)); Metadata metadata = (Metadata) this.commonService.get(Metadata.class, Long.parseLong(mId));// 展示的字段 List nts = this.commonService.find("from NodeTable where seqId=" + Long.parseLong(seqId));// 当前节点 NodeTable nt = (nts != null && nts.size() > 0) ? nts.get(0) : null; if (checkTypeInfo != null && dsi != null && metadata != null && nt != null) { // 根据当前展示曲线的字段,组织查询的内容 int specialFlag = 0; // 0 非特殊数据 1字节速度特殊数据 2包速度特殊数据 String specialColumn = ""; if (StringUtils.isNotBlank(metadata.getFiledName())) { if (metadata.getFiledName().toLowerCase().equals("inoctetsspeed")) {// 输入速度 specialFlag = 1; specialColumn = "Data_64_FLag,sum(decode(Ifhighspeed,null,ifspeed,0,ifspeed,ifhighspeed*1024*1024)) ifhighspeedbps,sum(" + metadata.getFiledName() + "),sum(ifInOctets)"; } else if (metadata.getFiledName().toLowerCase().equals("outoctetsspeed")) {// 输出速度 specialFlag = 1; specialColumn = "Data_64_FLag,sum(decode(Ifhighspeed,null,ifspeed,0,ifspeed,ifhighspeed*1024*1024)) ifhighspeedbps,sum(" + metadata.getFiledName() + "),sum(ifOutOctets)"; } else if (metadata.getFiledName().toLowerCase().equals("inpktsspeed")) {// 收包速率 specialFlag = 2; specialColumn = "Data_64_FLag,sum(decode(Ifhighspeed,null,ifspeed,0,ifspeed,ifhighspeed*1024*1024)) ifhighspeedbps,sum(" + metadata.getFiledName() + "),sum(ifInUcastPkts),sum(ifInNUcastPkts),sum(IFINOCTETS)"; } else if (metadata.getFiledName().toLowerCase().equals("outpktsspeed")) {// 发包速率 specialFlag = 2; specialColumn = "Data_64_FLag,sum(decode(Ifhighspeed,null,ifspeed,0,ifspeed,ifhighspeed*1024*1024)) ifhighspeedbps,sum(" + metadata.getFiledName() + "),sum(ifOutUcastPkts),sum(ifOutNUcastPkts),sum(IFOUTOCTETS)"; } else { specialFlag = 0; specialColumn = "sum(" + metadata.getFiledName() + ")"; } } // 预警线 public // part---------------------------begin-------------------- String policeValSQL = "select police_value from data_police_relation where detection_set_info_id=" + dsiId + " and metadata_id=" + metadata.getId(); List policeValue = this.commonService.executeSQL(policeValSQL); Map result1 = new HashMap();// 预警线数据 if (policeValue != null && policeValue.size() > 0) { int policeVal = Integer.parseInt(policeValue.get(0).toString()); result1.put("policeVal", policeVal);// 之前为什么预警值为0的时候不画线?如果设置的值就是0呢? } if (metadata.getFiledComments() != null && !"".equals(metadata.getFiledComments())) { if (nt != null) { result1.put("xtitle", nt.getNodeIp() + "_" + dsi.getProcessIdenName() + " " + checkTypeInfo.getCheckTypeName1() + ":" + metadata.getFiledComments() + getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.cartogram_n81i")); } else { result1.put("xtitle", dsi.getProcessIdenName() + " " + checkTypeInfo.getCheckTypeName1() + ":" + metadata.getFiledComments() + getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.cartogram_n81i")); } result1.put("ytitle", metadata.getFiledComments()); } else { if (nt != null) { result1.put("xtitle", nt.getNodeIp() + "_" + dsi.getProcessIdenName() + " " + checkTypeInfo.getCheckTypeName() + ":" + metadata.getFiledName().replace("_", " ") + getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.cartogram_n81i")); } else { result1.put("xtitle", dsi.getProcessIdenName() + " " + checkTypeInfo.getCheckTypeName() + ":" + metadata.getFiledName().replace("_", " ") + getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.cartogram_n81i")); } result1.put("ytitle", metadata.getFiledName().replace("_", " ")); } returnList.add(result1); // 预警线 public // part---------------------------end---------------------- // 得到分类标识字段 String sort_sign = "select t.filed_name,t.filed_type from metadata t where t.check_type_id =" + ctId + " and t.sort_sign =0"; List sortList = this.commonService.executeSQL(sort_sign); Object[] objs = null; List dataPoint = new ArrayList(); if (sortList != null && sortList.size() > 0) { Object[] sortFiledType = (Object[]) sortList.get(0); Map result = new HashMap(); List> line = new ArrayList>(); // 选择checkBox画图 if (lines != null && !lines.equals("")) { if (lines.endsWith(",")) { lines = lines.substring(0, lines.length() - 1); } String[] linStrings = lines.split(","); // 其实就是为了统一多条曲线时,曲线的起始时间点:先找到监测时间最新的端口,再找到这个端口的一天内的21条数据内的最小时间,其它端口的起始时间取自于这个最小时间 String[] cbStrings = checkLins(metadata, checkTypeInfo, sortFiledType, dsiId, seqId, lines);// 选中端口的最新的监测时间的端口的,最远的监测时间 String linesLink = linkToString(linStrings, ",", "'");// lines要在checkLins方法后再做加单引号的处理,因为checkLins方法里单个处理了 // for (int i = 0; i < linStrings.length; i++) { String source = ""; source = "select * from ( select data_check_time_digital ," + specialColumn + " from " + checkTypeInfo.getTableName() + " t where " + metadata.getFiledName() + " is not null" + " and t.detection_set_info_id=" + dsiId + " and t.seq_id = " + seqId + " "; if (null != startTime && !startTime.equals("") && null != endTime && !endTime.equals("")) { source += " and to_char(data_check_time,'yyyy-mm-dd')>= '" + startTime + "' and to_char(data_check_time,'yyyy-mm-dd')<='" + endTime + "'"; } else { source += " and t.data_check_time >= trunc(sysdate-1) "; } if (sortFiledType[1].toString().equals("NUMBER") || sortFiledType[1].toString().equals("Number")) { source += " and " + sortFiledType[0] + " in( " + linesLink + ")"; } else if (sortFiledType[1].toString().indexOf("VARCHAR2") != -1) { source += " and " + sortFiledType[0] + " in (" + linesLink + ")"; } // ------------------- // 判断是否有返回 如果有则加入查询条件 如果无 则不加;其实就是为了统一多条曲线时,曲线的起始时间点 if (null != cbStrings[1] && !cbStrings[1].equals("")) { source += " and t.data_check_time >= to_date('" + cbStrings[1] + "','yyyy-mm-dd HH24:mi')"; } if (specialFlag == 1 || specialFlag == 2) { source += " group by t.data_check_time_digital,t.data_64_flag "; } else if (specialFlag == 0) { source += " group by t.data_check_time_digital "; } /* * source += * " order by data_check_time_digital desc) where rownum < 21 order by data_check_time_digital asc" * ; */ source += " order by data_check_time_digital desc) tttt "; // @2018年4月10日18:45:00 fang 修改rownum 适配 mysql if (Constant.IS_MYSQL) { source = source + " order by data_check_time_digital asc limit 20"; } else { source += " where rownum < 21 order by data_check_time_digital asc";// 查询最近时间的21条数据 } System.out.println("------NoFirstInSource--------sql:" + source); List lineSourceList = this.commonService.executeSQL(source); // 展示数据封装处理 if (specialFlag == 1) { // 字节特殊数据 再次处理 objs = commonService.bitSpeedSourceList(lineSourceList, dsi.getCheckGap() * 60 * 1000); } else if (specialFlag == 2) { // 包特殊数据 再次处理 objs = commonService.pktSpeedSourceList(lineSourceList, dsi.getCheckGap() * 60 * 1000); } else { // 整理为数据格式 if (lineSourceList.size() > 0) { for (int j = 0; j < lineSourceList.size(); j++) { Object[] row = (Object[]) lineSourceList.get(j); Object[] tmp = new Object[2]; tmp[0] = ((BigDecimal) row[0]).longValue(); if (row[1] instanceof BigDecimal) { tmp[1] = ((BigDecimal) row[1]).setScale(2, BigDecimal.ROUND_HALF_UP); } else { tmp[1] = row[1]; } dataPoint.add(tmp); } } } this.getRequest().setAttribute("lineStr", lines); // 封装一条拆线 Map specialchart1 = new HashMap(); if (lines.length() > 80) { lines = lines.substring(0, lines.indexOf(",", 50)) + "..."; } String avgStr = ""; String pointStr = ""; String charStr = ""; if (lines.contains(",")) {// 多个端口 avgStr = getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.avgStr_n81i"); pointStr = getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.pointStr_n81i"); charStr = getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.charStr_n81i"); } else { avgStr = getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.avg_n81i"); pointStr = getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.moment_n81i"); } specialchart1.put("name", lines + avgStr); specialchart1.put("data", objs != null ? objs[0] : null); // 封装一条拆线 Map specialchart2 = new HashMap(); specialchart2.put("name", pointStr); specialchart2.put("data", objs != null ? objs[1] : null); // 封装一条拆线 Map chart = new HashMap(); // 封装一条折线--------------------------------------2013 1.23 chart.put("name", lines + charStr); chart.put("data", dataPoint); line.add(specialchart1); line.add(specialchart2); line.add(chart); result.put("lines", line); // } } else {// 界面未选择多选框时,默认取第一个端口的曲线图 // 封装一条拆线 Map chart = new HashMap(); // 得到数据表中所有该分类标识的值:对于交换机端口监测,即所有的端口名称 String getAllSort = "select distinct " + sortFiledType[0].toString() + " from " + checkTypeInfo.getTableName() + " where " + sortFiledType[0].toString() + " is not null and seq_id=" + seqId + " and DETECTION_SET_INFO_ID="+dsiId+" order by " + sortFiledType[0].toString(); dataList = this.commonService.executeSQL(getAllSort); if (dataList != null && dataList.size() > 0) { String source = "select * from (select data_check_time_digital," + specialColumn + " from " + checkTypeInfo.getTableName() + " t where " + metadata.getFiledName() + " is not null" + " and t.Detection_Set_Info_Id = " + dsiId + " and t.seq_id = " + seqId; if (null != startTime && !startTime.equals("") && null != endTime && !endTime.equals("")) { source += " and to_char(data_check_time,'yyyy-mm-dd')>= '" + startTime + "' and to_char(data_check_time,'yyyy-mm-dd')<='" + endTime + "'"; } else { source += " and t.data_check_time >= trunc(sysdate-1) ";// 默认查询一天的数据 } if (sortFiledType[1].toString().equals("NUMBER") || sortFiledType[1].toString().equals("Number")) { source += " and " + sortFiledType[0] + " = " + dataList.get(0).toString(); } else if (sortFiledType[1].toString().indexOf("VARCHAR2") != -1) { source += " and " + sortFiledType[0] + " = '" + dataList.get(0).toString() + "' "; } if (specialFlag == 1 || specialFlag == 2) { source += " group by t.data_check_time_digital,t.data_64_flag "; } else if (specialFlag == 0) { source += " group by t.data_check_time_digital "; } source += " order by data_check_time_digital desc) "; /* * source += * " where rownum < 21 order by data_check_time_digital asc" * ;//查询最近时间的21条数据 */ // @2018年4月10日18:45:00 fang 修改rownum 适配 mysql if (Constant.IS_MYSQL) { source = source + " order by data_check_time_digital asc limit 20"; } else { source += " where rownum < 21 order by data_check_time_digital asc";// 查询最近时间的21条数据 } System.out.println("------source--------sql:" + source); List lineSourceList = this.commonService.executeSQL(source); // 展示数据封装处理 if (specialFlag == 1) { // 字节特殊数据 再次处理 objs = commonService.bitSpeedSourceList(lineSourceList, dsi.getCheckGap() * 60 * 1000); } else if (specialFlag == 2) { // 包特殊数据 再次处理 objs = commonService.pktSpeedSourceList(lineSourceList, dsi.getCheckGap() * 60 * 1000); } else { // 整理为数据格式 for (int j = 0; j < lineSourceList.size(); j++) { Object[] row = (Object[]) lineSourceList.get(j); Object[] tmp = new Object[2]; tmp[0] = ((BigDecimal) row[0]).longValue(); if (row[1] instanceof BigDecimal) { tmp[1] = ((BigDecimal) row[1]).setScale(2, BigDecimal.ROUND_HALF_UP); } else { tmp[1] = row[1]; } dataPoint.add(tmp); } } this.getRequest().setAttribute("lineStr", dataList.get(0).toString()); // 封装一条拆线 Map specialchart1 = new HashMap(); specialchart1.put("name", dataList.get(0).toString() + getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.avg_n81i")); specialchart1.put("data", objs != null ? objs[0] : null); // 封装一条拆线 Map specialchart2 = new HashMap(); specialchart2.put("name", getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.moment_n81i")); specialchart2.put("data", objs != null ? objs[1] : null); // 封装一条折线--------------------------------------2013 // 1.23 chart.put("name", dataList.get(0).toString()); chart.put("data", dataPoint); line.add(specialchart1); line.add(specialchart2); line.add(chart); result.put("lines", line); } else { // 封装一条折线--------------------------------------2013 // 1.23 chart.put("name", ""); chart.put("data", ""); line.add(chart); result.put("lines", line); } } returnList.add(result); } this.getRequest().setAttribute("specialFlag", specialFlag); // 0 // 非特殊字段, // 1 // 特殊字段 } String jsonStr = JSONArray.fromObject(returnList).toString(); System.out.println(jsonStr); this.getResponse().setCharacterEncoding("utf-8"); PrintWriter printWriter = this.getResponse().getWriter(); printWriter.write(jsonStr); printWriter.close(); printWriter = null; } catch (Exception e) { logger.error(e.getStackTrace(), e); } return null; } /** * 将map中的key所对应的值用linkSymbol拼接,并在每个值的两边加mark,如'a','d','v' * * @param strGroup * @param linkSymbol * @param mark:添加到每一个值两边的,如单引号 * @return */ private String linkToString(String[] strGroup, String linkSymbol, String mark) { StringBuffer str = new StringBuffer(); String linkedStr = ""; for (String strTmp : strGroup) { if (StringUtils.isNotBlank(strTmp)) { str.append(mark).append(strTmp).append(mark).append(linkSymbol); } } if (str.toString().contains(linkSymbol)) { linkedStr = str.substring(0, str.length() - linkSymbol.length()); } System.out.println("连接后的字符串:" + linkedStr); return linkedStr; } public String getSource() { String mId = this.getRequest().getParameter("metaId"); String dsiId = this.getRequest().getParameter("dId"); String ctId = this.getRequest().getParameter("cId"); String seqId = this.getRequest().getParameter("seqId"); // System.out.println("mId:" + mId); // System.out.println("dsiId:" + dsiId); // System.out.println("ctId:" + ctId); // System.out.println("seqId:" + seqId); List sourceList = null; String driwSQL = ""; String policeValSQL = ""; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); List> returnList = new ArrayList>(); NodeTable nt = null; try { CheckTypeInfo checkTypeInfo = (CheckTypeInfo) this.commonService.get(CheckTypeInfo.class, Long.parseLong(ctId)); Metadata metadata = (Metadata) this.commonService.get(Metadata.class, Long.parseLong(mId)); List nts = this.commonService.find("from NodeTable where seqId=" + Long.parseLong(seqId)); if (nts != null && nts.size() > 0) { nt = nts.get(0); } DetectionSetInfo dsi = (DetectionSetInfo) this.commonService.get(DetectionSetInfo.class, Long.parseLong(dsiId)); Map result = new HashMap(); List data = new ArrayList(); List> line = new ArrayList>(); // 封装一条拆线 Map chart = new HashMap(); List policeValue = null; // 预警值 int policeVal = 0; driwSQL = "select to_char(data_check_time,'yyyy-mm-dd HH24:mi') ctime," + metadata.getFiledName() + " from " + metadata.getTableName() + " t where " + metadata.getFiledName() + " is not null" // " and t.data_check_time >= // to_date(to_char((sysdate-4),'yyyy-mm-dd'),'yyyy-mm-dd // hh24:mi')"+ // + " and t.data_check_time >= trunc(sysdate-30)" + " and t.detection_info_id in " + "(select d.id from detection_info d where d.detection_set_info_id=" + dsiId + " and d.seq_id = " + seqId + ")"; // + " order by data_check_time"; if (null != startTime && !startTime.equals("") && null != endTime && !endTime.equals("")) { driwSQL += " and to_char(data_check_time,'yyyy-mm-dd')>= '" + startTime + "' and to_char(data_check_time,'yyyy-mm-dd')<='" + endTime + "'"; } else { driwSQL += " and t.data_check_time >= trunc(sysdate-1) "; } driwSQL += " order by data_check_time"; // System.out.println("driwSQL:" + driwSQL); sourceList = this.commonService.executeSQL(driwSQL); /* 2013-03-04 绘制展示图增加图断点判断 Edit by zg begin */ long gapTime = dsi.getCheckGap(); // 单位: 分钟 gapTime = gapTime * 60 * 1000; // 分钟 变毫秒 long pointTime = 0; /* 2013-03-04 绘制展示图增加图断点判断 Edit by zg end */ if (sourceList.size() > 0) { for (int i = 0; i < sourceList.size(); i++) { Object[] row = (Object[]) sourceList.get(i); Object[] tmp = new Object[2]; /* 2013-03-04 绘制展示图增加图断点判断 Edit by zg begin */ long rowTime = (sdf.parse((String) row[0])).getTime(); if (pointTime == 0) { pointTime = rowTime; } if (pointTime + gapTime * 2 < rowTime) { // 即上一时间点数据到当前时间点数据时间间隔超过两个周期 // 增加断 Object[] tmp0 = new Object[] { pointTime + gapTime * 2, null }; data.add(tmp0); } pointTime = rowTime; tmp[0] = rowTime; // tmp[0] = (sdf.parse((String) row[0])).getTime(); /* 2013-03-04 绘制展示图增加图断点判断 Edit by zg end */ // tmp[1] = ((BigDecimal) row[1]).intValue(); if (row[1] instanceof BigDecimal) { tmp[1] = ((BigDecimal) row[1]).setScale(2, BigDecimal.ROUND_HALF_UP); } else { tmp[1] = row[1]; } data.add(tmp); } // 封装一条折线 chart.put("name", metadata.getFiledComments()); chart.put("data", data); line.add(chart); // 预警线 policeValSQL = "select police_value from data_police_relation where detection_set_info_id=" + dsiId + " and metadata_id=" + metadata.getId(); policeValue = this.commonService.executeSQL(policeValSQL); if (policeValue != null && policeValue.size() > 0) { // policeVal=((BigDecimal)policeValue.get(0)).intValue(); policeVal = Integer.parseInt(policeValue.get(0).toString()); } // 如果预警值不等于0则画预警线 if (policeVal != 0) { result.put("policeVal", policeVal); } result.put("lines", line); if (metadata.getFiledComments() != null && !"".equals(metadata.getFiledComments())) { if (nt != null) { result.put("xtitle", nt.getNodeIp() + "_" + dsi.getProcessIdenName() + " " + checkTypeInfo.getCheckTypeName1() + ":" + metadata.getFiledComments() + getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.cartogram_n81i")); } else { result.put("xtitle", dsi.getProcessIdenName() + " " + checkTypeInfo.getCheckTypeName1() + ":" + metadata.getFiledComments() + getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.cartogram_n81i")); } result.put("ytitle", metadata.getFiledComments()); } else { if (nt != null) { result.put("xtitle", nt.getNodeIp() + "_" + dsi.getProcessIdenName() + " " + checkTypeInfo.getCheckTypeName1() + ":" + metadata.getFiledName().replace("_", " ") + getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.cartogram_n81i")); } else { result.put("xtitle", dsi.getProcessIdenName() + " " + checkTypeInfo.getCheckTypeName1() + ":" + metadata.getFiledName().replace("_", " ") + getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.cartogram_n81i")); } result.put("ytitle", metadata.getFiledName().replace("_", " ")); } returnList.add(result); String jsonStr = JSONArray.fromObject(returnList).toString(); // System.out.println(jsonStr); this.getResponse().setCharacterEncoding("utf-8"); PrintWriter printWriter = this.getResponse().getWriter(); printWriter.write(jsonStr); printWriter.close(); printWriter = null; } } catch (Exception e) { logger.error(e.getStackTrace()); e.printStackTrace(); if (!StringUtil.isBlank(type) && type.equals("1")) { outHtmlString( ""); } else { outHtmlString( ""); } } return null; } public String getSnmpLineSource() { metaId = this.getRequest().getParameter("metaId"); dsiId = this.getRequest().getParameter("dId"); ctId = this.getRequest().getParameter("cId"); sqId = this.getRequest().getParameter("seqId"); drIndex = this.getRequest().getParameter("drIndex"); try { CheckTypeInfo checkTypeInfo = (CheckTypeInfo) this.commonService.get(CheckTypeInfo.class, Long.parseLong(ctId)); // 得到分类标识字段 String sort_sign = "select t.filed_name,t.filed_type from metadata t where t.check_type_id =" + ctId + " and t.sort_sign =0"; List sortList = this.commonService.executeSQL(sort_sign); if (sortList != null && sortList.size() > 0) { Object[] sortFiledType = (Object[]) sortList.get(0); // 得到数据表中所有该分类标识的值 String getAllSort = "select distinct " + sortFiledType[0].toString() + " from " + checkTypeInfo.getTableName() + " where " + sortFiledType[0].toString() + " is not null "; // List sortValues = this.commonService.executeSQL(getAllSort); dataList = this.commonService.executeSQL(getAllSort); // for (int i = 0; i < dataList.size(); i++) { // Object[] obj = new // Object[]{dataList.get(i).toString(),dataList.get(i).toString()}; // dataList.set(i, obj); // } // String jsonStr = JSONArray.fromObject(sortValues).toString(); // System.out.println(jsonStr); // this.getResponse().setCharacterEncoding("utf-8"); // PrintWriter printWriter = this.getResponse().getWriter(); // printWriter.write(jsonStr); // printWriter.close(); // printWriter = null; } } catch (Exception e) { logger.error(e.getStackTrace()); e.printStackTrace(); outHtmlString( ""); } return "select_plug"; } public String detailMonitorDataInfo() { String findFiledSql = ""; String filedComm = ""; List mapList = new ArrayList(); String ctId = this.getRequest().getParameter("cId");// 监测类别Id try { if (ids != null && ids.length > 0) { // 根据id获得最新监控数据 List list = this.commonService.find("from DetectionInfoNew where id=?", ids[0]); if (list != null && list.size() > 0) { detectionInfoNew = (DetectionInfoNew) list.get(0); } String tempDSInfo=truncateInfo(detectionInfoNew.getDetectionStateInfo()); detectionInfoNew.setDetectionStateInfo(tempDSInfo); String tempPD=truncateInfo(detectionInfoNew.getPerformaceData()); detectionInfoNew.setPerformaceData(tempPD); // 根据seq_id获得节点详细信息 Long seqIdLong = detectionInfoNew.getSeqId(); String ipSql = "select distinct nt.node_ip from node_table nt where nt.seq_id = " + seqIdLong; List ipList = this.commonService.executeSQL(ipSql); if (ipList != null && ipList.size() > 0) { nodeIp = ipList.get(0).toString(); } List not = this.commonService.findByProperty(NodeTable.class, "seqId", seqIdLong); if (not != null && not.size() > 0) { nodeTable = (NodeTable) not.get(0); } // 根据监测类别,获得当前类别的独有的监测项 CheckTypeInfo cti = (CheckTypeInfo) this.commonService.get(CheckTypeInfo.class, detectionInfoNew.getDetectionSetInfo().getCheckTypeInfo().getId()); List mList = this.commonService.find("from Metadata where checkTypeInfo.id=? and state =0", cti.getId()); String sql = ""; Map mapDictionaryMap = new HashMap(); if (mList != null && mList.size() > 0) { for (int j = 0; j < mList.size(); j++) { Metadata metadata = (Metadata) mList.get(j); if (metadata.getTypeId() != null) { sql = "select * from option_table t where t.TYPE_IDENTITY = (select mt.type_id from metadata mt where mt.id=" + metadata.getId() + ")"; List optionList = this.commonService.executeSQL(sql, OptionTable.class); MetadataDictionaryVO mdv = new MetadataDictionaryVO(); mdv.setListOT(optionList); mdv.setmId(metadata.getId()); mdv.setFiledComments(metadata.getFiledComments()); mapDictionaryMap.put(metadata.getFiledComments(), mdv); } if (j != mList.size() - 1) { findFiledSql += metadata.getFiledName() + ","; if (metadata.getFiledComments() != null && !"".equals(metadata.getFiledComments())) { filedComm += metadata.getFiledComments() + ","; } else { filedComm += metadata.getFiledName() + ","; } } else { findFiledSql += metadata.getFiledName(); if (metadata.getFiledComments() != null && !"".equals(metadata.getFiledComments())) { filedComm += metadata.getFiledComments(); } else { filedComm += metadata.getFiledName(); } } } if (StringUtils.isNotBlank(findFiledSql)) { Metadata md = new Metadata(); md.setFiledComments(getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.state_n81i")); mList.add(md); findFiledSql += ",decode(detectioned_state,1,'"+getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.normal_n81i")+"',0,'"+getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.exception_n81i")+"',-1,'"+getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.doFaild_n81i")+"','') detectioned_state"; } if (StringUtils.isNotBlank(filedComm)) { filedComm += ","+getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.state_n81i"); } } // --------2013-4-12 hyx------start // 由于每个详细监测信息表添加了ID字段,且一个detection_info_id对应多条记录,所以可以直接从detection_info_new表获取detection_info表对应的id,修改如下 // 获得监测类别、监测对象唯一标识、监测数据获取时间 // Long detectionSetInfoId = detectionInfoNew // .getDetectionSetInfo().getId(); // Long seqId = detectionInfoNew.getSeqId(); // Date checkTime = detectionInfoNew.getDatacheckTime(); // String checkTimeStr = new SimpleDateFormat( // "yyyy-MM-dd HH:mm:ss").format(checkTime);// 日期转换为字符串 // 根据获得的监测类别、监测对象唯一标识、监测数据获取时间,在detection_info表中找出所有记录(可能为一条或多条)的id---sql语句 // String detectionInfoIds = "select ID from DETECTION_INFO // where // DETECTION_SET_INFO_ID=" // + detectionSetInfoId // + " and SEQ_ID=" // + seqId // + " and DATA_CHECK_TIME=to_date('" // + checkTimeStr // + "','yyyy-MM-dd HH24:mi:ss')"; Long detectionInfoId = detectionInfoNew.getDetectionInfoId(); String detectionInfoIds = detectionInfoId == null ? "" : detectionInfoId.toString(); // --------2013-4-12 hyx------end // 从当前监测类别对应的表中取出自己独有的信息 String tableName = cti.getTableName(); // 判断数据表是否存在 /* * String sql2 = * "SELECT COUNT(*) from user_tables where table_name = '" + * tableName.trim().toUpperCase() + "'"; List list2 = * this.commonService.executeSQL(sql2); int num2 = * Integer.parseInt(list2.get(0).toString()); */ // @2018-3-8 11:22:10 mysql适配 int num2 = this.commonService.isTableExist(tableName); if (num2 == 0) { outHtmlString( ""); return null; } String serchSql = "select " + findFiledSql + " from " + tableName + " t where t.detection_info_id in (" + detectionInfoIds + ") order by t.detection_info_id desc"; // List listInfo=this.commonService.executeSQL(serchSql); System.out.println(serchSql); /* * pageSub = this.commonService.findByPageForSql(serchSql, * pageNoSub, pageSizeSub, null); */ List listInfo = this.commonService.executeSQL(serchSql); String[] filedCommArr = filedComm.split(","); // this.getRequest().setAttribute("titleList", filedCommArr); this.getRequest().setAttribute("titleList", mList); if (listInfo != null && listInfo.size() > 0) { for (int i = 0; i < listInfo.size(); i++) { Object[] resu = (Object[]) listInfo.get(i); if (resu != null && filedCommArr != null && resu.length >= filedCommArr.length) { Map mapTemp = new LinkedHashMap(); for (int k = 0; k < filedCommArr.length; k++) { mapTemp.put(filedCommArr[k], resu[k]); } // for (int k = 0; k < mList.size(); k++) { // if(mapDictionaryMap.containsKey(mList.get(k).getId())){//如果包含meta // List lOp = // mapDictionaryMap.get(mList.get(k).getId()).getListOT(); // for(int o =0;o 0) { for (int j = 0; j < policeList.size(); j++) { DataPoliceRelation dpr = (DataPoliceRelation) policeList.get(j); String keyString = ""; if (dpr.getMetadata().getFiledComments() != null && !"".equals(dpr.getMetadata().getFiledComments())) { keyString = dpr.getMetadata().getFiledComments().toUpperCase(); } else { keyString = dpr.getMetadata().getFiledName().toUpperCase(); } String filedType = dpr.getMetadata().getFiledType(); if(filedType == null || !"NUMBER".equalsIgnoreCase(filedType) || keyString == null){ continue; } for (int k = 0; k < mapList.size(); k++) { Map map = (LinkedHashMap) mapList.get(k); if (map.containsKey(keyString)) { Float num = new Float(0.0); try { Object key = map.get(keyString); String value = dpr.getPoliceValue(); //System.out.println(key+" -- > " + value); num = Float.parseFloat(key.toString())- Float.parseFloat(value); } catch (Exception e) { logger.error("", e); } if (num > 0) { map.put(keyString, map.get(keyString) + "    i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.outWarning_n81i" + num + ""); } } mapList.set(k, map);// ????????????? } } } this.getRequest().setAttribute("checkId", ctId); this.getRequest().setAttribute("infoMapList", mapList); this.getRequest().setAttribute("dictionMap", mapDictionaryMap); // 判断监测类别是否为系统基础信息 if (ctId.equals("0")) { String didString = detectionInfoNew.getDetectionInfoId().toString(); DiSysteminfo dsinfo = commonService.findSysteminfo(didString); List dsiDiskList = commonService.findSysteminfoDisk(didString); List dsiNetList = commonService.findSysteminfoNet(didString); this.getRequest().setAttribute("dsinfo", dsinfo); this.getRequest().setAttribute("dsiDiskList", dsiDiskList); this.getRequest().setAttribute("dsiNetList", dsiNetList); } } } catch (Exception e) { e.printStackTrace(); logger.error(e.getStackTrace()); outHtmlString( ""); } return "detailMonitorDataInfo"; } private String truncateInfo(String truncateStr) { if(!StringUtil.isBlank(truncateStr)){ int i18nIndex = truncateStr.lastIndexOf("i18n"); int n81iIndex = truncateStr.lastIndexOf("n81i"); if(n81iIndex 0) { // 根据id获得最新监控数据 List list = this.commonService.find("from DetectionInfoWarning where id=?", ids[0]); if (list != null && list.size() > 0) { detectionInfoWarning = (DetectionInfoWarning) list.get(0); } // 根据seq_id获得节点详细信息 Long seqIdLong = detectionInfoWarning.getSeqId(); String ipSql = "select distinct nt.node_ip from node_table nt where nt.seq_id = " + seqIdLong; List ipList = this.commonService.executeSQL(ipSql); if (ipList != null && ipList.size() > 0) { nodeIp = ipList.get(0).toString(); } List not = this.commonService.findByProperty(NodeTable.class, "seqId", seqIdLong); if (not != null && not.size() > 0) { nodeTable = (NodeTable) not.get(0); } // 根据监测类别,获得当前类别的独有的监测项 CheckTypeInfo cti = (CheckTypeInfo) this.commonService.get(CheckTypeInfo.class, detectionInfoWarning.getDetectionSetInfo().getCheckTypeInfo().getId()); List mList = this.commonService.find("from Metadata where checkTypeInfo.id=? and state =0", cti.getId()); String sql = ""; Map mapDictionaryMap = new HashMap(); if (mList != null && mList.size() > 0) { for (int j = 0; j < mList.size(); j++) { Metadata metadata = (Metadata) mList.get(j); if (metadata.getTypeId() != null) { sql = "select * from option_table t where t.TYPE_IDENTITY = (select mt.type_id from metadata mt where mt.id=" + metadata.getId() + ")"; List optionList = this.commonService.executeSQL(sql, OptionTable.class); MetadataDictionaryVO mdv = new MetadataDictionaryVO(); mdv.setListOT(optionList); mdv.setmId(metadata.getId()); mdv.setFiledComments(metadata.getFiledComments()); mapDictionaryMap.put(metadata.getFiledComments(), mdv); } if (j != mList.size() - 1) { findFiledSql += metadata.getFiledName() + ","; if (metadata.getFiledComments() != null && !"".equals(metadata.getFiledComments())) { filedComm += metadata.getFiledComments() + ","; } else { filedComm += metadata.getFiledName() + ","; } } else { findFiledSql += metadata.getFiledName(); if (metadata.getFiledComments() != null && !"".equals(metadata.getFiledComments())) { filedComm += metadata.getFiledComments(); } else { filedComm += metadata.getFiledName(); } } } if (StringUtils.isNotBlank(findFiledSql)) { Metadata md = new Metadata(); md.setFiledComments(getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.state_n81i")); mList.add(md); findFiledSql += ",decode(detectioned_state,1,'"+getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.normal_n81i")+"',0,'"+getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.exception_n81i")+"',-1,'"+getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.doFaild_n81i")+"','') detectioned_state"; } if (StringUtils.isNotBlank(filedComm)) { filedComm += ","+getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.title.state_n81i"); } } this.getRequest().setAttribute("titleList", mList); // --------2013-4-12 hyx------start // 由于每个详细监测信息表添加了ID字段,且一个detection_info_id对应多条记录,所以可以直接从detection_info_new表获取detection_info表对应的id,修改如下 // 获得监测类别、监测对象唯一标识、监测数据获取时间 Long detectionInfoId = detectionInfoWarning.getDetectionInfoId(); String detectionInfoIds = detectionInfoId == null ? "" : detectionInfoId.toString(); // --------2013-4-12 hyx------end if (!StringUtil.isBlank(detectionInfoIds)) { // 从当前监测类别对应的表中取出自己独有的信息 String tableName = cti.getTableName(); // 判断数据表是否存在 /* * String sql2 = * "SELECT COUNT(*) from user_tables where table_name = '" + * tableName.trim().toUpperCase() + "'"; List list2 = * this.commonService.executeSQL(sql2); int num2 = * Integer.parseInt(list2.get(0).toString()); */ // @2018-3-8 11:22:10 mysql适配 int num2 = this.commonService.isTableExist(tableName); if (num2 == 0) { outHtmlString( ""); return null; } String serchSql = "select " + findFiledSql + " from " + tableName + " t where t.detection_info_id in (" + detectionInfoIds + ") order by t.detection_info_id desc"; System.out.println(serchSql); pageSub = this.commonService.findByPageForSql(serchSql, pageNoSub, pageSizeSub, null); List listInfo = (List) pageSub.getResult(); String[] filedCommArr = filedComm.split(","); if (listInfo != null && listInfo.size() > 0) { for (int i = 0; i < listInfo.size(); i++) { Object[] resu = (Object[]) listInfo.get(i); if (resu != null && filedCommArr != null && resu.length >= filedCommArr.length) { Map mapTemp = new LinkedHashMap(); for (int k = 0; k < filedCommArr.length; k++) { mapTemp.put(filedCommArr[k], resu[k]); } mapList.add(mapTemp); } } } } // 将取出的监测信息和告警值进行比较,看是否为告警信息 List policeList = this.commonService.find("from DataPoliceRelation where detectionSetInfo.id=?", detectionInfoWarning.getDetectionSetInfo().getId()); if (policeList != null && policeList.size() > 0) { for (int j = 0; j < policeList.size(); j++) { DataPoliceRelation dpr = (DataPoliceRelation) policeList.get(j); String keyString = ""; if (dpr.getMetadata().getFiledComments() != null && !"".equals(dpr.getMetadata().getFiledComments())) { keyString = dpr.getMetadata().getFiledComments().toUpperCase(); } else { keyString = dpr.getMetadata().getFiledName().toUpperCase(); } for (int k = 0; k < mapList.size(); k++) { Map map = (LinkedHashMap) mapList.get(k); if (map.containsKey(keyString)) { Float num = Float.parseFloat(map.get(keyString).toString()) - Float.parseFloat(String.valueOf(dpr.getPoliceValue())); if (num > 0) { map.put(keyString, map.get(keyString) + "    i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.outWarning_n81i" + num + ""); } } mapList.set(k, map);// ????????????? } } } this.getRequest().setAttribute("checkId", ctId); this.getRequest().setAttribute("infoMapList", mapList); this.getRequest().setAttribute("dictionMap", mapDictionaryMap); // 判断监测类别是否为系统基础信息 if (ctId.equals("0")) { String didString = detectionInfoWarning.getDetectionInfoId().toString(); DiSysteminfo dsinfo = commonService.findSysteminfo(didString); List dsiDiskList = commonService.findSysteminfoDisk(didString); List dsiNetList = commonService.findSysteminfoNet(didString); this.getRequest().setAttribute("dsinfo", dsinfo); this.getRequest().setAttribute("dsiDiskList", dsiDiskList); this.getRequest().setAttribute("dsiNetList", dsiNetList); } } } catch (Exception e) { e.printStackTrace(); logger.error(e.getStackTrace()); outHtmlString( ""); } return "detailWarning"; } public List getNodeIpGroupList() throws Exception { List detecInfoGroupList = new ArrayList(); String nip1 = ""; String nip2 = ""; for (int i = 0; i < detectionInfoNewList.size(); i++) { List listSoNews = new ArrayList(); for (int j = i; j < detectionInfoNewList.size(); j++) { nip1 = detectionInfoNewList.get(i).getNodeIp(); nip2 = detectionInfoNewList.get(j).getNodeIp(); if (nip1 == null) nip1 = ""; if (nip2 == null) nip2 = ""; if (nip1.equals(nip2)) { listSoNews.add(detectionInfoNewList.get(j)); i = j; } else { i = j - 1; break; } } detecInfoGroupList.add(listSoNews); } return detecInfoGroupList; } public List vgetNodeIpGroupList(List vdetectionInfoNewList) throws Exception { List vdetecInfoGroupList = new ArrayList(); String nip1 = ""; String nip2 = ""; if (vdetectionInfoNewList != null && vdetectionInfoNewList.size() > 0) { for (int i = 0; i < vdetectionInfoNewList.size(); i++) { List listSoNews = new ArrayList(); for (int j = i; j < vdetectionInfoNewList.size(); j++) { vdetectionInfoNewList.get(j) .setPersistTime(this.getPersistTime(vdetectionInfoNewList.get(j).getDatacheckTime(), vdetectionInfoNewList.get(j).getStartTime())); nip1 = vdetectionInfoNewList.get(i).getNodeIp(); nip2 = vdetectionInfoNewList.get(j).getNodeIp(); if (nip1 == null) nip1 = ""; if (nip2 == null) nip2 = ""; if (nip1.equals(nip2)) { listSoNews.add(vdetectionInfoNewList.get(j)); i = j; } else { i = j - 1; break; } } vdetecInfoGroupList.add(listSoNews); } } return vdetecInfoGroupList; } /** * * @author jinshujuan May 30, 2013 * @version 1.0 * @param detectionInfoList * @param flag * true 代表获取最新检测数据,在数据多一列最新判断,index 都需要+1 * @return * @throws Exception */ public List getNodeIpGroupListNew(List detectionInfoList, boolean flag) throws Exception { // List // sqlBuffer.append(" select // din.id,nt.node_ip,cti.check_type_name,dsi.PROCESS_IDEN,din.detectioned_state"); // sqlBuffer.append("'',din.data_check_time,din.current_times,din.detection_state_info,din.start_time"); int index1 = 1;// ip int index2 = 2;// check_type_name int index4 = 4;// detectioned_state int index5 = 5; int index6 = 6; int index9 = 9; if (flag) { index1++; index2++; index4++; index5++; index6++; index9++; } List detecInfoGroupListNew = new ArrayList(); String nip1 = ""; String nip2 = ""; if (detectionInfoList != null && detectionInfoList.size() > 0) { for (int i = 0; i < detectionInfoList.size(); i++) { List listSoNews = new ArrayList(); for (int j = i; j < detectionInfoList.size(); j++) { if (detectionInfoList.get(j)[index5] != null && detectionInfoList.get(j)[index9] != null) { detectionInfoList.get(j)[index6] = this.getPersistTime( DateUtil.getDateD(detectionInfoList.get(j)[index5].toString()), DateUtil.getDateD(detectionInfoList.get(j)[index9].toString())); } if (detectionInfoList.get(i)[index1] != null) { nip1 = detectionInfoList.get(i)[index1].toString(); } if (detectionInfoList.get(j)[index1] != null) { nip2 = detectionInfoList.get(j)[index1].toString(); } if (nip1 == null) nip1 = ""; if (nip2 == null) nip2 = ""; if (nip1.equals(nip2)) { if (detectionInfoList.get(j)[index2] != null && detectionInfoList.get(j)[index2].toString().equals(getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.shakehands_n81i"))) { listSoNews.add(0, detectionInfoList.get(j)); } else { listSoNews.add(detectionInfoList.get(j)); } i = j; } else { i = j - 1; break; } } // ------20130618---hyx---由于分页导致监测状态显示有误 if (listSoNews.size() > 0) {// 因为order by ctiId1 // ASC,且握手的citId1为-1,所以如果有握手的话,会排在第0个 Object[] objs = listSoNews.get(0); String ip = objs[index1] == null ? "" : objs[index1].toString(); String nmsClientStr = objs[index2] == null ? "" : objs[index2].toString(); String state = ""; int initK = 1;// 默认第一个为握手监测,其它监测从1开始取 if (!getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.shakehands_n81i").equals(nmsClientStr) && StringUtils.isNotBlank(ip)) {// 如果ip没有握手监测,则从数据库中进行查询 String sql = "select din.detectioned_state" + " from DETECTION_INFO_NEW din " + " left join DETECTION_SET_INFO dsi on din.detection_set_info_id = dsi.id" + " left join check_type_info cti on dsi.check_type_id = cti.id" + " where lower(cti.check_type_name)='nmsclient'" + " and din.seq_id = (select distinct seq_id from node_table where node_ip='" + ip + "') " + " and dsi.DETECTION_SET_STATE=1" + " and (dsi.system_id=-1 or dsi.view_level=4 or (node_groups_id is null and node_ips_id is null))" + // 此行条件目的就是找到全局的握手监测:握手监测只允许有一个监测设置(全局的),admin新建的,或者查看权限为全局 " order by dsi.id asc"; List stateList = this.commonService.executeSQL(sql); if (stateList != null && stateList.size() > 0) { state = stateList.get(0).toString();// 查询握手监测的状态-----------?和直接在数据库查询得到的值不同---使用的数据库不同,呵呵 } initK = 1; } else { state = objs[index4] == null ? "" : objs[index4].toString(); } if (!"1".equals(state)) {// 握手监测异常,则其它监测的state为空 for (int k = initK; k < listSoNews.size(); k++) { Object[] tmpObj = listSoNews.get(k); tmpObj[index4] = "";// 清空state后,jsp页面不显示状态图标 } } } // ------20130618---hyx---由于分页导致监测状态显示有误 detecInfoGroupListNew.add(listSoNews); } } return detecInfoGroupListNew; } public int getCheckTypeNum() throws Exception { String sql = "select count(*) from check_type_info"; List l = this.commonService.executeSQL(sql); return Integer.parseInt(l.get(0).toString()); } // 得到持续时间 public String getPersistTime(Date datacheckTime, Date startTime) throws Exception { StringBuffer dateStr = new StringBuffer(); if (datacheckTime != null && startTime != null) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); datacheckTime = simpleDateFormat.parse(simpleDateFormat.format(datacheckTime)); startTime = simpleDateFormat.parse(simpleDateFormat.format(startTime)); if (datacheckTime.getTime() - startTime.getTime() > 0) { long l = datacheckTime.getTime() - startTime.getTime(); long day = l / (24 * 60 * 60 * 1000); long hour = (l / (60 * 60 * 1000) - day * 24); long min = ((l / (60 * 1000)) - day * 24 * 60 - hour * 60); long s = (l / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60); if (day != 0) { dateStr.append(day+ " " + getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.day_n81i")+ " "); } if (hour != 0) { dateStr.append(hour+ " " + getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.hour_n81i")+ " "); } if (min != 0) { dateStr.append(min+ " " + getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.minute_n81i")+ " "); } if (s != 0) { dateStr.append(s + " "+ getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.second_n81i")+ " "); } } } return dateStr.toString(); } // 得到持续时间 public void getPersistTime() throws Exception { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date datacheckTime = null; Date startTime = null; for (int i = 0; i < detectionInfoNewList.size(); i++) { StringBuffer dateStr = new StringBuffer(); if (detectionInfoNewList.get(i).getDatacheckTime() != null && detectionInfoNewList.get(i).getStatusChangeTime() != null) { datacheckTime = simpleDateFormat .parse(simpleDateFormat.format(detectionInfoNewList.get(i).getDatacheckTime())); startTime = simpleDateFormat .parse(simpleDateFormat.format(detectionInfoNewList.get(i).getStatusChangeTime())); if (datacheckTime.getTime() - startTime.getTime() > 0) { long l = datacheckTime.getTime() - startTime.getTime(); long day = l / (24 * 60 * 60 * 1000); long hour = (l / (60 * 60 * 1000) - day * 24); long min = ((l / (60 * 1000)) - day * 24 * 60 - hour * 60); long s = (l / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60); if (day != 0) { dateStr.append(day+ " " + getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.day_n81i")+ " "); } if (hour != 0) { dateStr.append(hour+ " " + getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.hour_n81i")+ " "); } if (min != 0) { dateStr.append(min+ " " + getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.minute_n81i")+ " "); } if (s != 0) { dateStr.append(s + " "+ getI18nText("i18n_MonitorDataAction.emportCurrentXlsAbnormalSet.second_n81i")+ " "); } } } else { dateStr.append(""); } detectionInfoNewList.get(i).setPersistTime(dateStr.toString()); } } /** * * 获取异常设备监测信息 * * @author jinshujuan May 13, 2013 * @version 1.0 * @return */ private String queryAbnormalSet() { try { /*StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append(" select * from (select row_number() over (PARTITION BY newTable.ip,newTable.iden order by newTable.dctime desc, newTable.ip) LEV, newTable.* FROM ("); sqlBuffer.append(" select distinct din.id,nt.node_ip ip,cti.check_type_name1,dsi.PROCESS_IDEN_NAME iden,din.detectioned_state"); sqlBuffer.append(",to_char(din.data_check_time,'yyyy-MM-dd HH24:mi:Ss') dctime,'',din.current_times,din.detection_state_info,to_char(din.status_change_time,'yyyy-MM-dd HH24:mi:Ss')"); sqlBuffer.append(",dsi.id dsiiId,cti.id ctiId,din.seq_id sqId,nt.node_system_type nodeSysType,nvl(checkTypeCharState.charStateNum,0) charStateNum,nt.node_type nodeType,nt.ipn ipn, din.police_level police_level,decode(cti.check_type_name,'NMSClient',-1,cti.id) ctiId1"); sqlBuffer.append(" from DETECTION_INFO_NEW din"); sqlBuffer.append(" left join DETECTION_SET_INFO dsi"); sqlBuffer.append(" on din.detection_set_info_id = dsi.id"); sqlBuffer.append(" left join check_type_info cti"); sqlBuffer.append(" on dsi.check_type_id = cti.id"); sqlBuffer.append(" left join (select distinct node_ip,seq_id,node_system_type,node_type,node_state,system_id,ipn from NODE_TABLE) nt"); sqlBuffer.append(" on din.seq_id = nt.seq_id"); // ------------2013-1-23 hyx // 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------start sqlBuffer.append(" left join "); sqlBuffer.append(" (select md.check_type_id as ctId,count(*) as charStateNum from metadata md where md.chart_state=0 group by md.check_type_id) checkTypeCharState "); sqlBuffer.append(" on checkTypeCharState.ctId=cti.id "); // ------------2013-1-23 hyx // 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------end // sqlBuffer.append(""); // 99表示告警恢复,但是有的告警,没有设置告警级别,默认就会是99,但是监测状态异常,此时要显示:police_level!=99 // or police_level=99 and detectioned_state!=1 sqlBuffer.append(" where (police_level!=99 or police_level=99 and detectioned_state!=1) and nt.node_ip is not null AND nt.node_type =1 and nt.node_state = 0 and dsi.detection_set_state ='1' and cti.crete_state=0 and din.valid=1 AND din.detectioned_state in('0','-1') ");// 只显示有效的数据:din.valid=1 if (!this.getAdminMark()) { sqlBuffer.append(" and nt.system_id = "); sqlBuffer.append(this.getSystemID()); } // sqlBuffer.append(""); // sqlBuffer.append(" "); if (cip != null && !"".equals(cip) && !"null".equals(cip)) { sqlBuffer.append(" and nt.node_ip = '" + cip + "'"); // sqlBuffer.append(" and instr(nt.node_ip,'"+cip.trim()+"') // <> 0"); } if (ctn != null && !"".equals(ctn)) { sqlBuffer.append(" and cti.id =" + ctn); } if (!this.getAdminMark()) { // 权限控制------begin // String sqlparam = " or (cti.view_level=4 )"; // -------------end sqlBuffer.append(" and (((( cti.view_level=1 and cti.user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append(" or ( cti.view_level=2 and cti.group_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or cti.view_level=3 ) and cti.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (cti.view_level=4 )"); sqlBuffer.append(") "); sqlBuffer.append("and (((( dsi.view_level=1 and dsi.create_user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append(" or ( dsi.view_level=2 and dsi.create_usergroup_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or dsi.view_level=3 ) and dsi.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (dsi.view_level=4 )"); sqlBuffer.append(") and dsi.detection_set_state=1 and cti.crete_state=0 "); } sqlBuffer.append(" order by police_level ASC, ipn ASC,ctiId1 ASC, dsi.id ASC"); sqlBuffer.append(" ) newTable ) WHERE LEV =1"); System.out.println("sqlBuffer:" + sqlBuffer.toString()); */ StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append(" select distinct 1 LEV, din.id,nt.node_ip ip,cti.check_type_name1,dsi.PROCESS_IDEN_NAME iden,din.detectioned_state"); sqlBuffer.append(",to_char(din.data_check_time,'yyyy-MM-dd HH24:mi:Ss') dctime,'',din.current_times,din.detection_state_info,to_char(din.status_change_time,'yyyy-MM-dd HH24:mi:Ss')"); sqlBuffer.append(",dsi.id dsiiId,cti.id ctiId,din.seq_id sqId,nt.node_system_type nodeSysType,nvl(checkTypeCharState.charStateNum,0) charStateNum,nt.node_type nodeType,nt.ipn ipn, din.police_level police_level,decode(cti.check_type_name,'NMSClient',-1,cti.id) ctiId1"); sqlBuffer.append(" from (select seq_id,detection_set_info_id,max(data_check_time) data_check_time from DETECTION_INFO_NEW d where d.valid = 1 group by seq_id,detection_set_info_id) dmax "); sqlBuffer.append(" left join DETECTION_INFO_NEW din on din.seq_id = dmax.seq_id and din.detection_set_info_id = dmax.detection_set_info_id and din. data_check_time = dmax.data_check_time "); sqlBuffer.append(" left join DETECTION_SET_INFO dsi"); sqlBuffer.append(" on din.detection_set_info_id = dsi.id"); sqlBuffer.append(" left join check_type_info cti"); sqlBuffer.append(" on dsi.check_type_id = cti.id"); sqlBuffer.append(" left join (select distinct node_ip,seq_id,node_system_type,node_type,node_state,system_id,ipn from NODE_TABLE) nt"); sqlBuffer.append(" on din.seq_id = nt.seq_id"); // ------------2013-1-23 hyx // 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------start sqlBuffer.append(" left join "); sqlBuffer.append(" (select md.check_type_id as ctId,count(*) as charStateNum from metadata md where md.chart_state=0 group by md.check_type_id) checkTypeCharState "); sqlBuffer.append(" on checkTypeCharState.ctId=cti.id "); // ------------2013-1-23 hyx // 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------end // sqlBuffer.append(""); // 99表示告警恢复,但是有的告警,没有设置告警级别,默认就会是99,但是监测状态异常,此时要显示:police_level!=99 // or police_level=99 and detectioned_state!=1 sqlBuffer.append(" where (police_level!=99 or police_level=99 and detectioned_state!=1) and nt.node_ip is not null AND nt.node_type =1 and nt.node_state = 0 and dsi.detection_set_state ='1' and cti.crete_state=0 and din.valid=1 AND din.detectioned_state in('0','-1') ");// 只显示有效的数据:din.valid=1 if (!this.getAdminMark()) { sqlBuffer.append(" and nt.system_id = "); sqlBuffer.append(this.getSystemID()); } if (cip != null && !"".equals(cip) && !"null".equals(cip)) { sqlBuffer.append(" and nt.node_ip = '" + cip + "'"); } if (ctn != null && !"".equals(ctn)) { sqlBuffer.append(" and cti.id =" + ctn); } if (!this.getAdminMark()) { // 权限控制------begin sqlBuffer.append(" and (((( cti.view_level=1 and cti.user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append(" or ( cti.view_level=2 and cti.group_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or cti.view_level=3 ) and cti.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (cti.view_level=4 )"); sqlBuffer.append(") "); sqlBuffer.append("and (((( dsi.view_level=1 and dsi.create_user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append(" or ( dsi.view_level=2 and dsi.create_usergroup_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or dsi.view_level=3 ) and dsi.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (dsi.view_level=4 )"); sqlBuffer.append(") and dsi.detection_set_state=1 and cti.crete_state=0 "); } sqlBuffer.append(" order by police_level ASC, ipn ASC,ctiId1 ASC, dsi.id ASC"); System.out.println("sqlBuffer:" + sqlBuffer.toString()); page = this.commonService.findByPageForSql(sqlBuffer.toString(), pageNo, pageSize, null); List detectionInfoList; // 最新状态信息集合 detectionInfoList = (List) page.getResult(); detectionInfoList = changeValue(detectionInfoList, true); nodeIpGroupListNew = getNodeIpGroupListNew(detectionInfoList, true); } catch (Exception e) { logger.error(e.getStackTrace()); e.printStackTrace(); outHtmlString(""); } return "queryAbnormalSet"; } /** * * 异常设备的动态刷新方法 * * @author jinshujuan May 13, 2013 * @version 1.0 * @return */ private String queryAbnormalSetChild() { try { /* * StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer. * append(" select * from (select row_number() over (PARTITION BY newTable.ip,newTable.iden order by newTable.dctime desc, newTable.ip) LEV, newTable.* FROM (" * ); sqlBuffer. * append(" select distinct din.id,nt.node_ip ip,cti.check_type_name1,dsi.PROCESS_IDEN_NAME iden,din.detectioned_state" * ); sqlBuffer. * append(",to_char(din.data_check_time,'yyyy-MM-dd HH24:mi:Ss') dctime,'',din.current_times,din.detection_state_info,to_char(din.status_change_time,'yyyy-MM-dd HH24:mi:Ss')" * ); sqlBuffer. * append(",dsi.id dsiiId,cti.id ctiId,din.seq_id sqId,nt.node_system_type nodeSysType,nvl(checkTypeCharState.charStateNum,0) charStateNum,nt.node_type nodeType,nt.ipn ipn, din.police_level police_level,decode(cti.check_type_name,'NMSClient',-1,cti.id) ctiId1" * ); sqlBuffer.append(" from DETECTION_INFO_NEW din"); * sqlBuffer.append(" left join DETECTION_SET_INFO dsi"); * sqlBuffer.append(" on din.detection_set_info_id = dsi.id"); * sqlBuffer.append(" left join check_type_info cti"); * sqlBuffer.append(" on dsi.check_type_id = cti.id"); sqlBuffer. * append(" left join (select distinct node_ip,seq_id,node_system_type,node_type,node_state,system_id,ipn from NODE_TABLE) nt" * ); sqlBuffer.append(" on din.seq_id = nt.seq_id"); // * 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------start * sqlBuffer.append(" left join "); sqlBuffer. * append(" (select md.check_type_id as ctId,count(*) as charStateNum from metadata md where md.chart_state=0 group by md.check_type_id) checkTypeCharState " * ); sqlBuffer.append(" on checkTypeCharState.ctId=cti.id "); // * 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------end * * // sqlBuffer.append(""); sqlBuffer. * append(" where (police_level!=99 or police_level=99 and detectioned_state!=1) and nt.node_ip is not null AND nt.node_type =1 and nt.node_state = 0 and dsi.detection_set_state ='1' and cti.crete_state=0 and din.valid=1 AND din.detectioned_state in('0','-1') " * );// 只显示有效的数据:din.valid=1 if * (!this.getAdminMark()) { * sqlBuffer.append(" and nt.system_id = "); * sqlBuffer.append(this.getSystemID()); } if (cip != null && * !"".equals(cip) && !"null".equals(cip)) { * sqlBuffer.append(" and nt.node_ip = '" + cip + "'"); } if (ctn != * null && !"".equals(ctn)) { sqlBuffer.append(" and cti.id =" + * ctn); * * } if (!this.getAdminMark()) { * sqlBuffer.append(" and (((( cti.view_level=1 and cti.user_id="); * sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); * sqlBuffer. * append(" or ( cti.view_level=2 and cti.group_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='" * ); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer. * append("' and x.type = 1)) or cti.view_level=3 ) and cti.system_id = " * ); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); * sqlBuffer.append(" or (cti.view_level=4 )"); * sqlBuffer.append(") "); * * sqlBuffer. * append("and (((( dsi.view_level=1 and dsi.create_user_id="); * sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); * sqlBuffer. * append(" or ( dsi.view_level=2 and dsi.create_usergroup_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='" * ); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer. * append("' and x.type = 1)) or dsi.view_level=3 ) and dsi.system_id = " * ); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); * sqlBuffer.append(" or (dsi.view_level=4 )"); sqlBuffer. * append(") and dsi.detection_set_state=1 and cti.crete_state=0 " * ); } sqlBuffer. * append(" order by police_level ASC,ipn ASC,ctiId1 ASC, dsi.id ASC" * ); sqlBuffer.append(" ) newTable ) WHERE LEV =1"); * System.out.println("sqlBuffer:" + sqlBuffer.toString()); */ // @ 2018年4月10日 fang 经对比 与 queryAbnormalSet() 方法中 sql 语句一致,以上注释为 // 修改之前语句 StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append(" select distinct 1 LEV, din.id,nt.node_ip ip,cti.check_type_name1,dsi.PROCESS_IDEN_NAME iden,din.detectioned_state"); sqlBuffer.append(",to_char(din.data_check_time,'yyyy-MM-dd HH24:mi:Ss') dctime,'',din.current_times,din.detection_state_info,to_char(din.status_change_time,'yyyy-MM-dd HH24:mi:Ss')"); sqlBuffer.append(",dsi.id dsiiId,cti.id ctiId,din.seq_id sqId,nt.node_system_type nodeSysType,nvl(checkTypeCharState.charStateNum,0) charStateNum,nt.node_type nodeType,nt.ipn ipn, din.police_level police_level,decode(cti.check_type_name,'NMSClient',-1,cti.id) ctiId1"); sqlBuffer.append(" from (select seq_id,detection_set_info_id,max(data_check_time) data_check_time from DETECTION_INFO_NEW d where d.valid = 1 group by seq_id,detection_set_info_id) dmax "); sqlBuffer.append(" left join DETECTION_INFO_NEW din on din.seq_id = dmax.seq_id and din.detection_set_info_id = dmax.detection_set_info_id and din. data_check_time = dmax.data_check_time "); sqlBuffer.append(" left join DETECTION_SET_INFO dsi"); sqlBuffer.append(" on din.detection_set_info_id = dsi.id"); sqlBuffer.append(" left join check_type_info cti"); sqlBuffer.append(" on dsi.check_type_id = cti.id"); sqlBuffer.append(" left join (select distinct node_ip,seq_id,node_system_type,node_type,node_state,system_id,ipn from NODE_TABLE) nt"); sqlBuffer.append(" on din.seq_id = nt.seq_id"); // ------------2013-1-23 hyx // 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------start sqlBuffer.append(" left join "); sqlBuffer.append(" (select md.check_type_id as ctId,count(*) as charStateNum from metadata md where md.chart_state=0 group by md.check_type_id) checkTypeCharState "); sqlBuffer.append(" on checkTypeCharState.ctId=cti.id "); // ------------2013-1-23 hyx // 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------end // sqlBuffer.append(""); // 99表示告警恢复,但是有的告警,没有设置告警级别,默认就会是99,但是监测状态异常,此时要显示:police_level!=99 // or police_level=99 and detectioned_state!=1 sqlBuffer.append(" where (police_level!=99 or police_level=99 and detectioned_state!=1) and nt.node_ip is not null AND nt.node_type =1 and nt.node_state = 0 and dsi.detection_set_state ='1' and cti.crete_state=0 and din.valid=1 AND din.detectioned_state in('0','-1') ");// 只显示有效的数据:din.valid=1 if (!this.getAdminMark()) { sqlBuffer.append(" and nt.system_id = "); sqlBuffer.append(this.getSystemID()); } if (cip != null && !"".equals(cip) && !"null".equals(cip)) { sqlBuffer.append(" and nt.node_ip = '" + cip + "'"); } if (ctn != null && !"".equals(ctn)) { sqlBuffer.append(" and cti.id =" + ctn); } if (!this.getAdminMark()) { // 权限控制------begin sqlBuffer.append(" and (((( cti.view_level=1 and cti.user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append(" or ( cti.view_level=2 and cti.group_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or cti.view_level=3 ) and cti.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (cti.view_level=4 )"); sqlBuffer.append(") "); sqlBuffer.append("and (((( dsi.view_level=1 and dsi.create_user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append(" or ( dsi.view_level=2 and dsi.create_usergroup_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or dsi.view_level=3 ) and dsi.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (dsi.view_level=4 )"); sqlBuffer.append(") and dsi.detection_set_state=1 and cti.crete_state=0 "); } sqlBuffer.append(" order by police_level ASC, ipn ASC,ctiId1 ASC, dsi.id ASC"); System.out.println("sqlBuffer:" + sqlBuffer.toString()); page = this.commonService.findByPageForSql(sqlBuffer.toString(), pageNo, pageSize, null); List detectionInfoList; // 最新状态信息集合 detectionInfoList = (List) page.getResult(); detectionInfoList = changeValue(detectionInfoList, true); nodeIpGroupListNew = getNodeIpGroupListNew(detectionInfoList, true); } catch (Exception e) { logger.error(e.getStackTrace()); e.printStackTrace(); outHtmlString(""); } return "queryAbnormalSetChild"; } /** * * 网元检测菜单 * * @author jinshujuan Jun 17, 2013 * @version 1.0 * @return */ private String queryNE() { if (mypageNo > 0 && mypageSize > 0) { pageNo = mypageNo; pageSize = mypageSize; } try { StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append( " select distinct din.id,nt.node_ip,cti.check_type_name1,dsi.PROCESS_IDEN_NAME,din.detectioned_state"); sqlBuffer.append( ",to_char(din.data_check_time,'yyyy-MM-dd HH24:mi:Ss'),'',din.current_times,din.detection_state_info,to_char(din.status_change_time,'yyyy-MM-dd HH24:mi:Ss')"); sqlBuffer.append( ",dsi.id dsiiId,cti.id ctiId,din.seq_id sqId,nt.node_system_type nodeSysType,nvl(checkTypeCharState.charStateNum,0) charStateNum,nt.node_type nodeType,nt.ipn ipn,decode(cti.check_type_name,'NMSClient',-1,cti.id) ctiId1"); sqlBuffer.append(" from DETECTION_INFO_NEW din"); sqlBuffer.append(" left join DETECTION_SET_INFO dsi"); sqlBuffer.append(" on din.detection_set_info_id = dsi.id"); sqlBuffer.append(" left join check_type_info cti"); sqlBuffer.append(" on dsi.check_type_id = cti.id"); sqlBuffer.append( " left join (select distinct node_ip,seq_id,node_system_type,node_type,node_state,system_id ,ipn from NODE_TABLE) nt"); sqlBuffer.append(" on din.seq_id = nt.seq_id"); // ------------2013-1-23 hyx // 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------start sqlBuffer.append(" left join "); sqlBuffer.append( " (select md.check_type_id as ctId,count(*) as charStateNum from metadata md where md.chart_state=0 group by md.check_type_id) checkTypeCharState "); sqlBuffer.append(" on checkTypeCharState.ctId=cti.id "); // ------------2013-1-23 hyx // 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------end sqlBuffer.append( " where nt.node_ip is not null AND nt.node_type =1 and nt.node_state = 0 and dsi.detection_set_state ='1' and cti.crete_state=0 and din.valid=1");// 只显示有效的数据:din.valid=1 if (!this.getAdminMark()) { sqlBuffer.append(" and nt.system_id = "); sqlBuffer.append(this.getSystemID()); } if (cip != null && !"".equals(cip) && !"null".equals(cip)) { sqlBuffer.append(" and nt.node_ip like '%" + cip.trim() + "%'"); } if (ctn != null && !"".equals(ctn)) { sqlBuffer.append(" and Upper(cti.Check_Type_Name1) like '%" + ctn.toUpperCase() + "%'"); } if (checkType != null && !"".equals(checkType)&&checkType>=0) { sqlBuffer.append(" and cti.id=" + checkType); } if (StringUtils.isNotBlank(stateInfo)) { sqlBuffer.append(" and din.detection_state_info like '%" + stateInfo + "%'"); } if (!this.getAdminMark()) { sqlBuffer.append(" and (((( cti.view_level=1 and cti.user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( cti.view_level=2 and cti.group_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or cti.view_level=3 ) and cti.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (cti.view_level=4 )"); sqlBuffer.append(") "); sqlBuffer.append("and (((( dsi.view_level=1 and dsi.create_user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( dsi.view_level=2 and dsi.create_usergroup_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or dsi.view_level=3 ) and dsi.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (dsi.view_level=4 )"); sqlBuffer.append(") and dsi.detection_set_state=1 and cti.crete_state=0 "); } sqlBuffer.append(" order by ipn ASC,ctiId1 ASC, dsi.id ASC"); System.out.println("sqlBuffer:" + sqlBuffer.toString()); page = this.commonService.findByPageForSql(sqlBuffer.toString(), pageNo, pageSize, null); List detectionInfoList; // 最新状态信息集合 detectionInfoList = (List) page.getResult(); detectionInfoList = changeValue(detectionInfoList, false); // 检测类别查询条件不为空时 查询出来的结果,先判断握手是否成功,如果握手状态异常则查出来的状态也是异常 if (!StringUtil.isBlank(ctn)) { changeStatus(detectionInfoList, ctn); } nodeIpGroupListNew = getNodeIpGroupListNew(detectionInfoList, false); } catch (Exception e) { logger.error(e.getStackTrace()); e.printStackTrace(); outHtmlString( ""); } return "queryNE"; } /** * * TODO 网元检测菜单-子查询 * * @author jinshujuan Jun 17, 2013 * @version 1.0 * @return */ private String queryNEChild() { try { StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append( " select distinct din.id,nt.node_ip,cti.check_type_name1,dsi.PROCESS_IDEN_NAME,din.detectioned_state"); sqlBuffer.append( ",to_char(din.data_check_time,'yyyy-MM-dd HH24:mi:Ss'),'',din.current_times,din.detection_state_info,to_char(din.status_change_time,'yyyy-MM-dd HH24:mi:Ss')"); sqlBuffer.append( ",dsi.id dsiiId,cti.id ctiId,din.seq_id sqId,nt.node_system_type nodeSysType,nvl(checkTypeCharState.charStateNum,0) charStateNum,nt.node_type nodeType,nt.ipn ipn ,decode(cti.check_type_name,'NMSClient',-1,cti.id) ctiId1"); sqlBuffer.append(" from DETECTION_INFO_NEW din"); sqlBuffer.append(" left join DETECTION_SET_INFO dsi"); sqlBuffer.append(" on din.detection_set_info_id = dsi.id"); sqlBuffer.append(" left join check_type_info cti"); sqlBuffer.append(" on dsi.check_type_id = cti.id"); sqlBuffer.append( " left join (select distinct node_ip,seq_id,node_system_type,node_type,node_state,system_id,ipn from NODE_TABLE) nt"); sqlBuffer.append(" on din.seq_id = nt.seq_id"); // ------------2013-1-23 hyx // 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------start sqlBuffer.append(" left join "); sqlBuffer.append( " (select md.check_type_id as ctId,count(*) as charStateNum from metadata md where md.chart_state=0 group by md.check_type_id) checkTypeCharState "); sqlBuffer.append(" on checkTypeCharState.ctId=cti.id "); // ------------2013-1-23 hyx // 对于无统计字段的监测类型,在监测数据列表里不显示折线图链接------------------end sqlBuffer.append( " where nt.node_ip is not null AND nt.node_type =1 and nt.node_state = 0 and dsi.detection_set_state ='1' and cti.crete_state=0 and din.valid=1");// 只显示有效的数据:din.valid=1 if (!this.getAdminMark()) { sqlBuffer.append(" and nt.system_id = "); sqlBuffer.append(this.getSystemID()); } if (cip != null && !"".equals(cip) && !"null".equals(cip)) { sqlBuffer.append(" and nt.node_ip = '" + cip + "'"); } if (ctn != null && !"".equals(ctn)) { sqlBuffer.append(" and Upper(cti.Check_Type_Name1) like '%" + ctn.toUpperCase() + "%'"); } if (!this.getAdminMark()) { sqlBuffer.append(" and (((( cti.view_level=1 and cti.user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( cti.view_level=2 and cti.group_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or cti.view_level=3 ) and cti.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (cti.view_level=4 )"); sqlBuffer.append(") "); sqlBuffer.append("and (((( dsi.view_level=1 and dsi.create_user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( dsi.view_level=2 and dsi.create_usergroup_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or dsi.view_level=3 ) and dsi.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (dsi.view_level=4 )"); sqlBuffer.append(") and dsi.detection_set_state=1 and cti.crete_state=0 "); } sqlBuffer.append(" order by ipn ASC,ctiId1 ASC, dsi.id ASC"); System.out.println("sqlBuffer:" + sqlBuffer.toString()); page = this.commonService.findByPageForSql(sqlBuffer.toString(), pageNo, pageSize, null); List detectionInfoList; // 最新状态信息集合 detectionInfoList = (List) page.getResult(); detectionInfoList = changeValue(detectionInfoList, false); // 检测类别查询条件不为空时 查询出来的结果,先判断握手是否成功,如果握手状态异常则查出来的状态也是异常 if (!StringUtil.isBlank(ctn)) { changeStatus(detectionInfoList, ctn); } nodeIpGroupListNew = getNodeIpGroupListNew(detectionInfoList, false); } catch (Exception e) { logger.error(e.getStackTrace()); e.printStackTrace(); outHtmlString( ""); } return "queryNEChild"; } /** * * 查询检测设置的历史记录 * * @author jinshujuan Jun 18, 2013 * @version 1.0 * @return */ public void showDetectionInfo() { try { String sqlStr = ""; if (!StringUtils.isBlank(flag) && ("queryAllConfigLevel".equals(flag) || "warning".equals(flag))) { sqlStr = "diw.PERFORMACE_DATA"; } else { sqlStr = "diw.detection_state_info"; } StringBuffer sql = new StringBuffer( "SELECT nt.node_ip,cti.check_type_name1,dsi.process_iden_name,diw.detectioned_state," + " TO_CHAR(diw.data_check_time, 'yyyy-MM-dd HH24:mi:Ss'),diw.current_times," + sqlStr + "," + " diw.id diwId,diw.seq_id,dsi.id dsiId,cti.id ctiId,nt.node_type,nt.node_system_type,nt.ipn,NVL(md.chartNum, 0) chartNum" + " from " + tableName + " diw LEFT JOIN detection_set_info dsi ON diw.detection_set_info_id=dsi.id" + " LEFT JOIN check_type_info cti ON cti.id = dsi.check_type_id" + " LEFT JOIN ( SELECT DISTINCT t.node_ip,t.seq_id,t.node_type,t.node_system_type,t.ipn from node_table t) nt ON nt.seq_id=diw.seq_id" + " LEFT JOIN (SELECT check_type_id ctid,COUNT(*) AS chartNum from metadata WHERE chart_state=0 GROUP BY check_type_id) md ON md.ctid=cti.id" + " WHERE diw.detection_set_info_id=" + dsiId + " AND diw.seq_id=" + sqId); // 默认取一定的开始时间(暂时为当前天的前n天) 到 // 当前最新的时间,第一次进入监测数据历史列表时,sTime和eTime为null,之后查询,如果sTime和eTime为空,则为"" if (eTime == null && sTime == null) { sTime = DateUtil.getShortDateStrByMinusDay(Constants.DEFAULT_SEARCH_DAY); } if (!StringUtil.isBlank(sTime)) { sql.append(" AND diw.data_check_time >= TO_DATE('" + sTime + " 00:00:00', 'yyyy-MM-dd HH24:mi:Ss')"); } if (!StringUtil.isBlank(eTime)) { sql.append(" AND diw.data_check_time <= TO_DATE('" + eTime + " 23:59:59', 'yyyy-MM-dd HH24:mi:Ss')"); } if (!StringUtil.isBlank(status)) { if ("1".equals(status)) { sql.append(" AND diw.detectioned_state = '" + status + "'"); } else if ("-1,0".equals(status)) { sql.append(" AND (diw.detectioned_state = '-1' or diw.detectioned_state = '0')"); } else { sql.append(" AND diw.detectioned_state IN (" + status + ")"); } } sql.append(" ORDER by diw.data_check_time DESC"); page = commonService.findByPageForSql(sql.toString(), pageNo, pageSize); detectionInfoWarningList = (List) page.getResult(); } catch (Exception e) { e.printStackTrace(); logger.info("设置名称查看异常!", e); outHtmlString( ""); } } /** * * 拓扑图来源,查询服务器状态信息 * * @author tanghao 07 17, 2018 * queryMonitorDataInfoNewForTopo()方法修改 * @return */ private void queryMonitorDataInfoNewForTopoDetail() { if (mypageNo > 0 && mypageSize > 0) { pageNo = mypageNo; pageSize = mypageSize; } try { StringBuffer sqlBuffer = new StringBuffer(); sqlBuffer.append( " select distinct din.id,nt.node_ip,cti.check_type_name1,dsi.PROCESS_IDEN_NAME,din.detectioned_state detectioned_state"); sqlBuffer.append( ",to_char(din.data_check_time,'yyyy-MM-dd HH24:mi:Ss'),'',din.current_times,din.detection_state_info,to_char(din.status_change_time,'yyyy-MM-dd HH24:mi:Ss')"); sqlBuffer.append( ",dsi.id dsiiId,cti.id ctiId,din.seq_id sqId,nt.node_system_type nodeSysType,nvl(checkTypeCharState.charStateNum,0) charStateNum,nt.node_type nodeType,nt.ipn ipn"); sqlBuffer.append(",din.police_emergent police_emergent,din.police_level police_level"); sqlBuffer.append(" from DETECTION_INFO_NEW din"); sqlBuffer.append(" left join DETECTION_SET_INFO dsi"); sqlBuffer.append(" on din.detection_set_info_id = dsi.id"); sqlBuffer.append(" left join check_type_info cti"); sqlBuffer.append(" on dsi.check_type_id = cti.id"); // @2018-3-9 fang 修改 首先查询符合条件的id,在拼接sql,适配mysql StringBuffer queryIds=null; if(nodeType!=null&&Integer.parseInt(nodeType)==1){ queryIds=new StringBuffer(); String groupIdSql = "select node_id from node_table where " + "node_id not in (select type_id from topo_node_info where type=2) and node_state=0 and node_group_id = "+nodeGroupId; List nodeGroupIds = this.commonService.executeSQL(groupIdSql); if(!nis.nms.util.StringUtil.objectIsNUll(nodeGroupIds)){ for(int i=0;i detectionInfoList; // 最新状态信息集合 detectionInfoList = (List) page.getResult(); detectionInfoList = changeValue(detectionInfoList, false); // 检测类别查询条件不为空时 查询出来的结果,先判断握手是否成功,如果握手状态异常则查出来的状态也是异常 if (!StringUtil.isBlank(ctn)) { changeStatus(detectionInfoList, ctn); } nodeIpGroupListNew = changeShowList(detectionInfoList, false); if (StringUtils.isNotBlank(nodeGroupId)) { NodegroupTable ngt = (NodegroupTable) this.commonService.get(NodegroupTable.class, Long.parseLong(nodeGroupId.trim())); nodeGroupName = ngt == null ? "" : ngt.getGroupName(); }else if(StringUtils.isNotBlank(nodeId)){ NodeTable ngt = (NodeTable) this.commonService.get(NodeTable.class, Long.parseLong(nodeId.trim())); nodeGroupName = ngt == null ? "" : ngt.getNodeIp(); } } catch (Exception e) { logger.error(e.getStackTrace()); e.printStackTrace(); outHtmlString(""); } } /** * * 拓扑图来源,查询紧急告警-服务器 * * @author tanghao 07 17, 2018 * queryEmergent()方法修改 * @return */ private void queryEmergentDetail() { if (mypageNo > 0 && mypageSize > 0) { pageNo = mypageNo; pageSize = mypageSize; } try { StringBuffer sqlBuffer =new StringBuffer(); sqlBuffer.append( " select distinct din.id,nt.node_ip,cti.check_type_name1,dsi.PROCESS_IDEN_NAME,din.detectioned_state detectioned_state"); sqlBuffer.append( ",to_char(din.data_check_time,'yyyy-MM-dd HH24:mi:Ss'),'',din.current_times,din.detection_state_info,to_char(din.status_change_time,'yyyy-MM-dd HH24:mi:Ss')"); sqlBuffer.append( ",dsi.id dsiiId,cti.id ctiId,din.seq_id sqId,nt.node_system_type nodeSysType,nvl(checkTypeCharState.charStateNum,0) charStateNum,nt.node_type nodeType,nt.ipn ipn"); sqlBuffer.append(",din.police_emergent police_emergent,din.police_level police_level"); sqlBuffer.append(" from DETECTION_INFO_NEW din"); sqlBuffer.append(" left join DETECTION_SET_INFO dsi"); sqlBuffer.append(" on din.detection_set_info_id = dsi.id"); sqlBuffer.append(" left join check_type_info cti"); sqlBuffer.append(" on dsi.check_type_id = cti.id"); // @2018-3-9 fang 修改 首先查询符合条件的id,在拼接sql,适配mysql StringBuffer queryIds=null; if(nodeType!=null&&Integer.parseInt(nodeType)==1){ queryIds=new StringBuffer(); String groupIdSql = "select node_id from node_table where " + "node_id not in (select type_id from topo_node_info where type=2) and node_state=0 and node_group_id = "+nodeGroupId; List nodeGroupIds = this.commonService.executeSQL(groupIdSql); if(!nis.nms.util.StringUtil.objectIsNUll(nodeGroupIds)){ for(int i=0;i1 AND din.POLICE_EMERGENT=0");// 只显示有效的数据:din.valid=1 if (!this.getAdminMark()) { sqlBuffer.append(" and nt.system_id = "); sqlBuffer.append(this.getSystemID()); } if (cip != null && !"".equals(cip) && !"null".equals(cip)) { sqlBuffer.append(" and nt.node_ip like '%" + cip.trim() + "%'"); } if (checkType != null && checkType != -1) { sqlBuffer.append(" and cti.id =" + checkType); } /* if (ctn != null && !"".equals(ctn)) { sqlBuffer.append(" and Upper(cti.Check_Type_Name1) like '%" + ctn.toUpperCase() + "%'"); } */ if (!this.getAdminMark()) { sqlBuffer.append(" and (((( cti.view_level=1 and cti.user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( cti.view_level=2 and cti.group_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or cti.view_level=3 ) and cti.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (cti.view_level=4 )"); sqlBuffer.append(") "); sqlBuffer.append("and (((( dsi.view_level=1 and dsi.create_user_id="); sqlBuffer.append(this.getUserID()); sqlBuffer.append(")"); sqlBuffer.append( " or ( dsi.view_level=2 and dsi.create_usergroup_id in (select x.jsbh from Xt_Yh_Js_Index x where x.yhbh='"); sqlBuffer.append(this.getUser().getYhbh()); sqlBuffer.append("' and x.type = 1)) or dsi.view_level=3 ) and dsi.system_id = "); sqlBuffer.append(this.getSystemID()); sqlBuffer.append(")"); sqlBuffer.append(" or (dsi.view_level=4 )"); sqlBuffer.append(") and dsi.detection_set_state=1 and cti.crete_state=0 "); } sqlBuffer.append(" ORDER by detectioned_state, police_emergent, police_level"); System.out.println("sqlBuffer:" + sqlBuffer.toString()); page = this.commonService.findByPageForSql(sqlBuffer.toString(), pageNo, pageSize, null); List detectionInfoList; // 最新状态信息集合 detectionInfoList = (List) page.getResult(); detectionInfoList = changeValue(detectionInfoList, false); // 检测类别查询条件不为空时 查询出来的结果,先判断握手是否成功,如果握手状态异常则查出来的状态也是异常 if (!StringUtil.isBlank(ctn)) { changeStatus(detectionInfoList, ctn); } nodeIpGroupListNew = changeShowList(detectionInfoList, false); // if(StringUtils.isNotBlank(nodeGroupId)) { // NodegroupTable ngt = // (NodegroupTable)this.commonService.get(NodegroupTable.class, // Long.parseLong(nodeGroupId.trim())); // nodeGroupName = ngt==null?"":ngt.getGroupName(); // }else { // nodeGroupName = ""; // } } catch (Exception e) { logger.error(e.getStackTrace()); e.printStackTrace(); outHtmlString(""); } } public CommonService getCommonService() { return commonService; } public void setCommonService(CommonService commonService) { this.commonService = commonService; } public int getPageNo() { return pageNo; } public void setPageNo(int pageNo) { this.pageNo = pageNo; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public Page getPage() { return page; } public void setPage(Page page) { this.page = page; } public String getAction() { return action; } public void setAction(String action) { this.action = action; } public Long[] getIds() { return ids; } public void setIds(Long[] ids) { this.ids = ids; } public String getCip() { return cip; } public void setCip(String cip) { this.cip = cip; } public List getDetectionInfoNewList() { return detectionInfoNewList; } public void setDetectionInfoNewList(List detectionInfoNewList) { this.detectionInfoNewList = detectionInfoNewList; } public DetectionInfoNew getDetectionInfoNew() { return detectionInfoNew; } public void setDetectionInfoNew(DetectionInfoNew detectionInfoNew) { this.detectionInfoNew = detectionInfoNew; } public String getDsiId() { return dsiId; } public void setDsiId(String dsiId) { this.dsiId = dsiId; } // public CheckTypeInfo getCheckTypeInfo() { // return checkTypeInfo; // } // // public void setCheckTypeInfo(CheckTypeInfo checkTypeInfo) { // this.checkTypeInfo = checkTypeInfo; // } public String getJsonStr() { return jsonStr; } public void setJsonStr(String jsonStr) { this.jsonStr = jsonStr; } /* * public List getVdetectionInfoNewList() { return * vdetectionInfoNewList; } * * public void setVdetectionInfoNewList( List * vdetectionInfoNewList) { this.vdetectionInfoNewList = * vdetectionInfoNewList; } */ public VDetectionInfoNew getVdetectionInfoNew() { return vdetectionInfoNew; } public void setVdetectionInfoNew(VDetectionInfoNew vdetectionInfoNew) { this.vdetectionInfoNew = vdetectionInfoNew; } public List getVnodeIpGroupList() { return vnodeIpGroupList; } public void setVnodeIpGroupList(List vnodeIpGroupList) { this.vnodeIpGroupList = vnodeIpGroupList; } public List getNodeIpGroupListNew() { return nodeIpGroupListNew; } public void setNodeIpGroupListNew(List nodeIpGroupListNew) { this.nodeIpGroupListNew = nodeIpGroupListNew; } public String getCtn() { return ctn; } public void setCtn(String ctn) { this.ctn = ctn; } public String getStateInfo() { return stateInfo; } public void setStateInfo(String stateInfo) { this.stateInfo = stateInfo; } public List getAllCheckTypeInfo() { return allCheckTypeInfo; } public void setAllCheckTypeInfo(List allCheckTypeInfo) { this.allCheckTypeInfo = allCheckTypeInfo; } public List getMetadataList() { return metadataList; } public void setMetadataList(List metadataList) { this.metadataList = metadataList; } public String getMetaId() { return metaId; } public void setMetaId(String metaId) { this.metaId = metaId; } public String getNodeIp() { return nodeIp; } public void setNodeIp(String nodeIp) { this.nodeIp = nodeIp; } public String getSqId() { return sqId; } public void setSqId(String sqId) { this.sqId = sqId; } public int getPageNoSub() { return pageNoSub; } public void setPageNoSub(int pageNoSub) { this.pageNoSub = pageNoSub; } public int getPageSizeSub() { return pageSizeSub; } public void setPageSizeSub(int pageSizeSub) { this.pageSizeSub = pageSizeSub; } public Page getPageSub() { return pageSub; } public void setPageSub(Page pageSub) { this.pageSub = pageSub; } public String getLineNames() { return lineNames; } public void setLineNames(String lineNames) { this.lineNames = lineNames; } public String getCtId() { return ctId; } public void setCtId(String ctId) { this.ctId = ctId; } public List getDataList() { return dataList; } public void setDataList(List dataList) { this.dataList = dataList; } public String getDrIndex() { return drIndex; } public void setDrIndex(String drIndex) { this.drIndex = drIndex; } public NodeTable getNodeTable() { return nodeTable; } public void setNodeTable(NodeTable nodeTable) { this.nodeTable = nodeTable; } public String getStartTime() { return startTime; } public void setStartTime(String startTime) { this.startTime = startTime; } public String getEndTime() { return endTime; } public void setEndTime(String endTime) { this.endTime = endTime; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getRequestType() { return requestType; } public void setRequestType(String requestType) { this.requestType = requestType; } public String getNodeGroupId() { return nodeGroupId; } public void setNodeGroupId(String nodeGroupId) { this.nodeGroupId = nodeGroupId; } public List getDetectionInfoWarningList() { return detectionInfoWarningList; } public void setDetectionInfoWarningList(List detectionInfoWarningList) { this.detectionInfoWarningList = detectionInfoWarningList; } public String getEntry() { return entry; } public void setEntry(String entry) { this.entry = entry; } public String getDetectId() { return detectId; } public void setDetectId(String detectId) { this.detectId = detectId; } public String getSeqId() { return seqId; } public void setSeqId(String seqId) { this.seqId = seqId; } public String getNameFlag() { return nameFlag; } public void setNameFlag(String nameFlag) { this.nameFlag = nameFlag; } public String getPid() { return pid; } public void setPid(String pid) { this.pid = pid; } public String getIsLeaf() { return isLeaf; } public void setIsLeaf(String isLeaf) { this.isLeaf = isLeaf; } public String getPicId() { return picId; } public void setPicId(String picId) { this.picId = picId; } public String getQueryParConditionDisplay() { return queryParConditionDisplay; } public void setQueryParConditionDisplay(String queryParConditionDisplay) { this.queryParConditionDisplay = queryParConditionDisplay; } public String getQueryChildConditionDisplay() { return queryChildConditionDisplay; } public void setQueryChildConditionDisplay(String queryChildConditionDisplay) { this.queryChildConditionDisplay = queryChildConditionDisplay; } public String getIp() { return ip; } public void setIp(String ip) { this.ip = ip; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public DetectionInfoWarning getDetectionInfoWarning() { return detectionInfoWarning; } public void setDetectionInfoWarning(DetectionInfoWarning detectionInfoWarning) { this.detectionInfoWarning = detectionInfoWarning; } public String getSTime() { return sTime; } public void setSTime(String time) { sTime = time; } public String getETime() { return eTime; } public void setETime(String time) { eTime = time; } public String getShowHistory() { return showHistory; } public void setShowHistory(String showHistory) { this.showHistory = showHistory; } public String getNodeType() { return nodeType; } public void setNodeType(String nodeType) { this.nodeType = nodeType; } public String getNodeIpRange() { return nodeIpRange; } public void setNodeIpRange(String nodeIpRange) { this.nodeIpRange = nodeIpRange; } public String getNodeGroupStr() { return nodeGroupStr; } public void setNodeGroupStr(String nodeGroupStr) { this.nodeGroupStr = nodeGroupStr; } public List getAllNodeGroupInfo() { return allNodeGroupInfo; } public void setAllNodeGroupInfo(List allNodeGroupInfo) { this.allNodeGroupInfo = allNodeGroupInfo; } public String getFlag() { return flag; } public void setFlag(String flag) { this.flag = flag; } public String getNodeGroupName() { return nodeGroupName; } public void setNodeGroupName(String nodeGroupName) { this.nodeGroupName = nodeGroupName; } public String getPIden() { return pIden; } public void setPIden(String iden) { pIden = iden; } public String getDct() { return dct; } public void setDct(String dct) { this.dct = dct; } public String getPolice_emergent() { return police_emergent; } public void setPolice_emergent(String police_emergent) { this.police_emergent = police_emergent; } public String getPolice_level() { return police_level; } public void setPolice_level(String police_level) { this.police_level = police_level; } public int getMypageNo() { return mypageNo; } public void setMypageNo(int mypageNo) { this.mypageNo = mypageNo; } public int getMypageSize() { return mypageSize; } public void setMypageSize(int mypageSize) { this.mypageSize = mypageSize; } public String getQueryNEChild() { return queryNEChild; } public void setQueryNEChild(String queryNEChild) { this.queryNEChild = queryNEChild; } public String getNodeId() { return nodeId; } public void setNodeId(String nodeId) { this.nodeId = nodeId; } public Integer getCheckType() { return checkType; } public void setCheckType(Integer checkType) { this.checkType = checkType; } public String getDetectionSetInfoId() { return detectionSetInfoId; } public void setDetectionSetInfoId(String detectionSetInfoId) { this.detectionSetInfoId = detectionSetInfoId; } }