From 9b39c65447fc174d9c4bec51ea290b4eb2b9a811 Mon Sep 17 00:00:00 2001 From: fangshunjian Date: Tue, 22 Jan 2019 12:13:38 +0600 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=96=B0=E5=A2=9E=20inline-device=20?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E6=B5=81=E9=87=8F=E6=8A=98=E7=BA=BF=E5=9B=BE?= =?UTF-8?q?=202=E3=80=81=E4=BC=98=E5=8C=96=E4=BA=A4=E6=8D=A2=E6=9C=BA?= =?UTF-8?q?=E7=9B=91=E6=B5=8B=E6=8A=98=E7=BA=BF=E5=9B=BE=20=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E8=AF=AD=E5=8F=A5=203=E3=80=81=E4=BF=AE=E6=94=B9=20?= =?UTF-8?q?=E7=9B=91=E6=B5=8B=E8=AE=BE=E7=BD=AE=EF=BC=8C=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=8F=AA=E8=83=BD=E8=AE=BE=E7=BD=AE=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E5=91=8A=E8=AD=A6=E9=85=8D=E7=BD=AE=E7=9A=84=E9=99=90?= =?UTF-8?q?=E5=88=B6=204=E3=80=81=E4=BF=AE=E6=94=B9=E9=A6=96=E9=A1=B5?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E5=AE=BD=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WebRoot/images/newtopo/ASEM-T102-FRONT.png | Bin 16577 -> 16648 bytes WebRoot/main.jsp | 10 +- .../monitorData/drawSwitchportMonitorInfo.jsp | 1 + .../page/detection/monitorData/grafana.jsp | 6 +- .../detection/monitorData/inlineInfoList.jsp | 55 +- .../inlineSwitchportMonitorInfo.jsp | 564 ++++++++++++++++++ .../switchInfo/switchInfoTotalList.jsp | 4 +- .../nms/thread/DetectInsertTimeOutThread.java | 2 +- .../actions/detection/InlineDeviceAction.java | 121 +++- .../actions/detection/MonitorDataAction.java | 75 ++- .../actions/detection/PoliceSetAction.java | 8 +- .../detection/SwitchDetectionAction.java | 1 + 12 files changed, 802 insertions(+), 45 deletions(-) create mode 100644 WebRoot/page/detection/monitorData/inlineSwitchportMonitorInfo.jsp diff --git a/WebRoot/images/newtopo/ASEM-T102-FRONT.png b/WebRoot/images/newtopo/ASEM-T102-FRONT.png index b1ab59b913b3419c3ad7867eb233171f48e28a02..ea8d518b84830973ff937d096fc44151cf8d1466 100644 GIT binary patch delta 13999 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%0Dy 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 -
+
▽i18n_main.text.show1_n81i▽
diff --git a/WebRoot/page/detection/monitorData/drawSwitchportMonitorInfo.jsp b/WebRoot/page/detection/monitorData/drawSwitchportMonitorInfo.jsp index b306c38..c45220a 100644 --- a/WebRoot/page/detection/monitorData/drawSwitchportMonitorInfo.jsp +++ b/WebRoot/page/detection/monitorData/drawSwitchportMonitorInfo.jsp @@ -29,6 +29,7 @@ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ i18n_dswmi.message.title_n81i +
+
+ + + +
+          + i18n_dswmi.message.defaultMsg_n81i +
+
+ +
+
+
+ + + + + + + + +
+ +
+ +
+
+ + + i18n_dswmi.message.noRecord_n81i + +
+
+
+ + + + + + + + + + + + + + + + +
+ +
+
+ + i18n_dswmi.textnoClassify_n81i + +
+ +
+ +   + +
+
+
+ +
+ + diff --git a/WebRoot/page/detection/switchInfo/switchInfoTotalList.jsp b/WebRoot/page/detection/switchInfo/switchInfoTotalList.jsp index f057731..7e8837d 100644 --- a/WebRoot/page/detection/switchInfo/switchInfoTotalList.jsp +++ b/WebRoot/page/detection/switchInfo/switchInfoTotalList.jsp @@ -400,7 +400,7 @@ onkeyup="lianxiangkeyup('nodeIp','NodeTable','String','nodeIp','suggest1',this.value);" name="nodeIp" title="i18n_sitl.message.nodeIp_n81i" value="${nodeIp}" size="20" />
- --%>
diff --git a/src/com/nms/thread/DetectInsertTimeOutThread.java b/src/com/nms/thread/DetectInsertTimeOutThread.java index 39b21a8..556bc93 100644 --- a/src/com/nms/thread/DetectInsertTimeOutThread.java +++ b/src/com/nms/thread/DetectInsertTimeOutThread.java @@ -6,7 +6,7 @@ import com.nms.thread.common.ThreadPoolCommon; import com.nms.thread.socket.SSLClient; public class DetectInsertTimeOutThread implements Runnable{ - private static final Logger logger = Logger.getLogger(DetectDatasTimeoutAlarmThread.class); + private static final Logger logger = Logger.getLogger(DetectInsertTimeOutThread.class); private String ip; private int port; private long timeout; diff --git a/src/nis/nms/web/actions/detection/InlineDeviceAction.java b/src/nis/nms/web/actions/detection/InlineDeviceAction.java index aac6215..d92784b 100644 --- a/src/nis/nms/web/actions/detection/InlineDeviceAction.java +++ b/src/nis/nms/web/actions/detection/InlineDeviceAction.java @@ -13,13 +13,17 @@ import org.hibernate.SQLQuery; import com.nis.util.StringUtil; +import edu.emory.mathcs.backport.java.util.Arrays; +import nis.nms.domains.CheckTypeInfo; +import nis.nms.domains.Metadata; import nis.nms.service.CommonService; import nis.nms.util.BaseAction; import nis.nms.util.Constant; import nis.nms.util.Page; @Results({ - @Result(name = "inlineInfoList", value = "/page/detection/monitorData/inlineInfoList.jsp") + @Result(name = "inlineInfoList", value = "/page/detection/monitorData/inlineInfoList.jsp"), + @Result(name = "inlineSwitchportMonitorInfo", value = "/page/detection/monitorData/inlineSwitchportMonitorInfo.jsp") }) @SuppressWarnings("all") public class InlineDeviceAction extends BaseAction{ @@ -34,6 +38,12 @@ public class InlineDeviceAction extends BaseAction{ private String nodeIp;//查询条件:节点ip private String addrCode; //查询条件:地域编码 private String ispKeyCode;//查询条件:运营商唯一标识 + private String sqId; + private String ctId; + private String detectionSetInfoId; + private List metadataList; + private List dataList; + private String dsiId; @Override public String executeAction() throws Exception { @@ -41,6 +51,8 @@ public class InlineDeviceAction extends BaseAction{ //查询运营商等信息 if("query".equalsIgnoreCase(this.action)) { result = inlineInfoList(); + }else if("drawPic".equalsIgnoreCase(this.action)) { + result = ajaxDrawDateSource(); } return result; } @@ -180,6 +192,57 @@ public class InlineDeviceAction extends BaseAction{ this.getRequest().setAttribute("page", devicePage); return "inlineInfoList"; } + + + public String ajaxDrawDateSource() { + String resu = ""; + try { + + String deviceId = this.getRequest().getParameter("deviceId");//sys_device_info表的id deviceId + dsiId = this.getRequest().getParameter("dsiId"); + sqId = this.getRequest().getParameter("sqId"); + ctId = this.getRequest().getParameter("checkTypeId"); + detectionSetInfoId=this.getRequest().getParameter("detectionSetInfoId"); + 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'"; + + metadataList = this.commonService.executeSQL(tString, Metadata.class); + + String sql = "SELECT " + + " sdi.*,nt.* " + + " FROM " + + " sys_device_info sdi " + + " LEFT JOIN ( SELECT node_ip, seq_id FROM node_table GROUP BY node_ip ) nt ON nt.node_ip = sdi.ip_addr " + + "where sdi.status != 0 and sdi.id = ?"; + List> list = commonService.executeSQLMap(sql, deviceId); + if(list != null && list.size()>0) { + Map deviceMap = list.get(0); + String portName = deviceMap.get("port_name")+""; + if(!StringUtil.isBlank(portName)) { + String[] split = portName.split(","); + dataList = Arrays.asList(split); + } + } + // 针对多项监测都使用分类标识,所以取消判断是否为snmp监控 + // 得到分类标识字段 + return "inlineSwitchportMonitorInfo"; + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getStackTrace()); + outHtmlString( + ""); + } + return resu; + + } + + + public CommonService getCommonService() { return commonService; @@ -245,5 +308,61 @@ public class InlineDeviceAction extends BaseAction{ this.ispKeyCode = ispKeyCode; } + public SimpleDateFormat getSdf() { + return sdf; + } + + public void setSdf(SimpleDateFormat sdf) { + this.sdf = sdf; + } + + public String getSqId() { + return sqId; + } + + public void setSqId(String sqId) { + this.sqId = sqId; + } + + public String getCtId() { + return ctId; + } + + public void setCtId(String ctId) { + this.ctId = ctId; + } + + public String getDetectionSetInfoId() { + return detectionSetInfoId; + } + + public void setDetectionSetInfoId(String detectionSetInfoId) { + this.detectionSetInfoId = detectionSetInfoId; + } + + public List getMetadataList() { + return metadataList; + } + + public void setMetadataList(List metadataList) { + this.metadataList = metadataList; + } + + public List getDataList() { + return dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } + + public String getDsiId() { + return dsiId; + } + + public void setDsiId(String dsiId) { + this.dsiId = dsiId; + } + } diff --git a/src/nis/nms/web/actions/detection/MonitorDataAction.java b/src/nis/nms/web/actions/detection/MonitorDataAction.java index 90ed064..df751c3 100644 --- a/src/nis/nms/web/actions/detection/MonitorDataAction.java +++ b/src/nis/nms/web/actions/detection/MonitorDataAction.java @@ -12,6 +12,8 @@ import java.util.List; import java.util.Map; import java.util.Set; +import javax.servlet.http.HttpServletResponse; + import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.apache.struts2.config.Result; @@ -37,6 +39,7 @@ import nis.nms.domains.OptionTable; import nis.nms.domains.VDetectionInfoNew; import nis.nms.service.CommonService; import nis.nms.util.BaseAction; +import nis.nms.util.Common; import nis.nms.util.Constant; import nis.nms.util.DateUtil; import nis.nms.util.ExportUtils; @@ -1013,18 +1016,25 @@ public class MonitorDataAction extends BaseAction { 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" + String source = "select to_char(din.data_check_time,'yyyy-mm-dd HH24:mi') maxTime," + sortFiledType[0] + + " from " + checkTypeInfo.getTableName() + " t " + + " left join detection_info_new din on t.DETECTION_INFO_ID = din.DETECTION_INFO_ID " + + "where " + metadata.getFiledName() + " is not null" // +" and t.data_check_time >= trunc(sysdate-30)" - + " and t.detection_info_id in " + /*+ " 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 + ")"; - + + seqId + ")";*/ + + " and din.seq_id =" + seqId + + " and din.detection_set_info_id=" +dsiId ; 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(Constant.IS_MYSQL) { + source += " and t.data_check_time >= '" + Common.getDateStr(new Date(), "yyyy-MM-dd 00:00:00") +"' " ; + }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); @@ -1043,25 +1053,32 @@ public class MonitorDataAction extends BaseAction { // ------------------以上确定最后一个数据点---------------------------- 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 " + String lastSource = "select * from ( select to_char(t.data_check_time,'yyyy-mm-dd HH24:mi') data_check_time ," + + 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 " + /*+ " 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 + ")"; - + + " and d.seq_id = " + seqId + ")";*/ + + " and t.seq_id =" + seqId + + " and t.detection_set_info_id=" +dsiId ; 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 + "'"; + lastSource += " and to_char(t.data_check_time,'yyyy-mm-dd')>= '" + startTime + + "' and to_char(t.data_check_time,'yyyy-mm-dd')<='" + endTime + "'"; } else { - lastSource += " and t.data_check_time >= trunc(sysdate-1) "; + if(Constant.IS_MYSQL) { + lastSource += " and t.data_check_time >= '" + Common.getDateStr(new Date(), "yyyy-MM-dd 00:00:00") +"' " ; + }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 "; + lastSource += " and " + sortFiledType[0] + " = " + row[1] + " order by din.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 += " and " + sortFiledType[0] + " = '" + row[1] + "' order by din.data_check_time desc) ttt "; } + lastSource += " order by data_check_time desc "; /* lastSource += " where rownum < 21"; */ // @2018年4月10日18:45:00 fang 修改rownum 适配 mysql @@ -2904,7 +2921,11 @@ public class MonitorDataAction extends BaseAction { 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(Constant.IS_MYSQL) { + source += " and t.data_check_time >= '" + Common.getDateStr(new Date(), "yyyy-MM-dd 00:00:00") +"' " ; + }else { + source += " and t.data_check_time >= trunc(sysdate-1) "; + } } if (sortFiledType[1].toString().equals("NUMBER") || sortFiledType[1].toString().equals("Number")) { @@ -2930,11 +2951,12 @@ public class MonitorDataAction extends BaseAction { source += " order by data_check_time_digital desc) tttt "; // @2018年4月10日18:45:00 fang 修改rownum 适配 mysql - if (Constant.IS_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条数据 - } + }*/ + source += " order by data_check_time_digital asc"; System.out.println("------NoFirstInSource--------sql:" + source); List lineSourceList = this.commonService.executeSQL(source); @@ -3012,7 +3034,11 @@ public class MonitorDataAction extends BaseAction { 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(Constant.IS_MYSQL) { + source += " and t.data_check_time >= '" + Common.getDateStr(new Date(), "yyyy-MM-dd 00:00:00") +"' " ; + }else { + source += " and t.data_check_time >= trunc(sysdate-1) "; + } } if (sortFiledType[1].toString().equals("NUMBER") || sortFiledType[1].toString().equals("Number")) { @@ -3032,11 +3058,12 @@ public class MonitorDataAction extends BaseAction { * ;//查询最近时间的21条数据 */ // @2018年4月10日18:45:00 fang 修改rownum 适配 mysql - if (Constant.IS_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条数据 - } + }*/ + source = source + " order by data_check_time_digital asc"; System.out.println("------source--------sql:" + source); List lineSourceList = this.commonService.executeSQL(source); @@ -3097,7 +3124,9 @@ public class MonitorDataAction extends BaseAction { String jsonStr = JSONArray.fromObject(returnList).toString(); System.out.println(jsonStr); - this.getResponse().setCharacterEncoding("utf-8"); + HttpServletResponse response = this.getResponse(); + response.setCharacterEncoding("utf-8"); + response.setContentType("application/json"); PrintWriter printWriter = this.getResponse().getWriter(); printWriter.write(jsonStr); printWriter.close(); diff --git a/src/nis/nms/web/actions/detection/PoliceSetAction.java b/src/nis/nms/web/actions/detection/PoliceSetAction.java index 0bc3ec2..db0e985 100644 --- a/src/nis/nms/web/actions/detection/PoliceSetAction.java +++ b/src/nis/nms/web/actions/detection/PoliceSetAction.java @@ -235,10 +235,10 @@ public class PoliceSetAction extends BaseAction { + dataPoliceRelation.getMetadata().getId(); List list = this.commonService.executeSQL(sql); int num = Integer.parseInt(list.get(0).toString()); - if (num > 0) { + /*if (num > 0) { this.outHtmlString(""); return; - } + }*/ Metadata metadata = (Metadata) this.commonService.get( Metadata.class, dataPoliceRelation.getMetadata().getId()); @@ -286,10 +286,10 @@ public class PoliceSetAction extends BaseAction { "from DataPoliceRelation where detectionSetInfo.id=? and metadata.id=? and id<>?", Long.valueOf(detectionSetInfoId), dataPoliceRelation.getMetadata().getId(), dataPoliceRelation .getId()); - if (list != null && list.size() > 0) { + /*if (list != null && list.size() > 0) { this.outHtmlString(""); return; - } + }*/ DataPoliceRelation dpRelation = (DataPoliceRelation) this.commonService .get(DataPoliceRelation.class, dataPoliceRelation.getId()); DetectionSetInfo ds = null; diff --git a/src/nis/nms/web/actions/detection/SwitchDetectionAction.java b/src/nis/nms/web/actions/detection/SwitchDetectionAction.java index 6757af9..964ed69 100644 --- a/src/nis/nms/web/actions/detection/SwitchDetectionAction.java +++ b/src/nis/nms/web/actions/detection/SwitchDetectionAction.java @@ -167,6 +167,7 @@ public class SwitchDetectionAction extends BaseAction { if (!com.nis.util.StringUtil.isBlank(requestType) && requestType.equals("topo")) { resultpage = totalSwitchInfoStatisticsForTopo(); } else { + this.networElementType = "1"; resultpage = totalSwitchInfoStatistics(); }