From c58825df9742897512c3c19fd5ce4c87711c95a2 Mon Sep 17 00:00:00 2001 From: zhangdongxu Date: Thu, 3 Jan 2019 15:38:57 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E6=94=B9=E6=B5=81=E9=87=8F?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E8=B6=8B=E5=8A=BF=E5=9B=BE=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=8C=E8=B0=83=E6=95=B4=E8=BF=94=E5=9B=9E=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=EF=BC=8C=E4=BB=A5=E9=80=82=E5=BA=94=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E8=BD=B4=E8=87=AA=E5=8A=A8=E6=A0=BC=E5=BC=8F=E5=8C=96?= =?UTF-8?q?=E7=9A=84=E9=9C=80=E6=B1=82=EF=BC=9B=202=E3=80=81=E8=B6=8B?= =?UTF-8?q?=E5=8A=BF=E5=9B=BE=E6=97=B6=E9=97=B4=E7=B2=92=E5=BA=A6=E6=8F=90?= =?UTF-8?q?=E5=8F=96=E5=88=B0nis.properties=E4=B8=AD=EF=BC=8C=E9=BB=98?= =?UTF-8?q?=E8=AE=A45=E5=88=86=E9=92=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/nis/util/Constants.java | 3 +- .../restful/DashboardServiceController.java | 6 +- .../web/service/restful/DashboardService.java | 136 +++++++++++------- src/main/resources/nis.properties | 3 + 4 files changed, 93 insertions(+), 55 deletions(-) diff --git a/src/main/java/com/nis/util/Constants.java b/src/main/java/com/nis/util/Constants.java index 669b17f..193ac00 100644 --- a/src/main/java/com/nis/util/Constants.java +++ b/src/main/java/com/nis/util/Constants.java @@ -238,6 +238,7 @@ public final class Constants { //webfocus库db public static final int WEBFOCUSREDISDB = Configurations.getIntProperty("webFocusDb", 7); - + // + public static final int TREND_TIME_INTERVAL = Configurations.getIntProperty("traffic.trend.timeInterval", 5); } diff --git a/src/main/java/com/nis/web/controller/restful/DashboardServiceController.java b/src/main/java/com/nis/web/controller/restful/DashboardServiceController.java index 8d392c3..8bd2d84 100644 --- a/src/main/java/com/nis/web/controller/restful/DashboardServiceController.java +++ b/src/main/java/com/nis/web/controller/restful/DashboardServiceController.java @@ -878,11 +878,11 @@ public class DashboardServiceController extends BaseRestController { long start = System.currentTimeMillis(); AuditLogThread auditLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, request, null); - List list = new ArrayList(); + List list = new ArrayList(); try { // 带查询时间查询所有 - List websiteChart = dashboardService.getDomainTrans2(beginDate, endDate,domain,entranceId); + List websiteChart = dashboardService.getDomainTrans2(beginDate, endDate,domain,entranceId); if (websiteChart != null && websiteChart.size() > 0) { list = websiteChart; } @@ -959,7 +959,7 @@ public class DashboardServiceController extends BaseRestController { AuditLogThread saveLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, request, null); - Map restMap = new HashMap(); + Map restMap = new HashMap(); try { // 验证serachBusinessType if (!StringUtil.isBlank(ntcConnNumReport.getSearchBusinessType()) diff --git a/src/main/java/com/nis/web/service/restful/DashboardService.java b/src/main/java/com/nis/web/service/restful/DashboardService.java index 5abd66f..05d32d5 100644 --- a/src/main/java/com/nis/web/service/restful/DashboardService.java +++ b/src/main/java/com/nis/web/service/restful/DashboardService.java @@ -32,6 +32,7 @@ import com.nis.domain.restful.dashboard.TrafficTransStatistic; import com.nis.domain.restful.dashboard.TrafficUaStatistic; import com.nis.restful.RestBusinessCode; import com.nis.restful.RestServiceException; +import com.nis.util.Constants; import com.nis.util.DateUtils; import com.nis.util.StringUtils; import com.nis.web.dao.dashboard.NtcTotalReportDao; @@ -401,14 +402,12 @@ public class DashboardService extends BaseService { Date endDate = DateUtils.parseDate(end); List dateRangeList = new ArrayList(); - List strDateRangeList = new ArrayList(); Calendar calendar = Calendar.getInstance(); calendar.setTime(beginDate); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); while (calendar.getTime().compareTo(endDate) < 0) { dateRangeList.add(calendar.getTime()); - strDateRangeList.add(sdf.format(calendar.getTime())); - calendar.add(Calendar.MINUTE, 5); + calendar.add(Calendar.MINUTE, Constants.TREND_TIME_INTERVAL); } // 存放每个时间点的总数 Map> ipCountListMap = new HashMap>(); @@ -416,8 +415,12 @@ public class DashboardService extends BaseService { int index2 = 0; List sumList1 = new ArrayList(); List sumList2 = new ArrayList(); + Long sumEnt1 = 0L; + Long sumEnt2 = 0L; for (int i = 0; i < dateRangeList.size(); i++) { // 存放一个时间点中总数 + List listEnt1 = new ArrayList(); + List listEnt2 = new ArrayList(); Map ipCountMap = new HashMap(); Date date = dateRangeList.get(i); Long num1 = 0L; @@ -433,7 +436,10 @@ public class DashboardService extends BaseService { } } } - sumList1.add(num1); + sumEnt1+=num1; + listEnt1.add(date.getTime()); + listEnt1.add(num1); + sumList1.add(listEnt1); for (int j = index2; j < entrance2.size(); j++) { NtcEntranceReport ipInfo = entrance2.get(j); if (ipInfo.getReportTime() != null) { @@ -445,14 +451,17 @@ public class DashboardService extends BaseService { } } } - sumList2.add(num2); + sumEnt2+=num2; + listEnt2.add(date.getTime()); + listEnt2.add(num2); + sumList2.add(listEnt2); } // 整合 count time - m1.put("count", sumList1); - m1.put("statTime", strDateRangeList); + m1.put("sum", sumEnt1); + m1.put("result", sumList1); m1.put("entranceId", 1); - m2.put("count", sumList2);// - m2.put("statTime", strDateRangeList); + m2.put("sum", sumEnt2);// + m2.put("result", sumList2); m2.put("entranceId", 2); listMap.add(m1); listMap.add(m2); @@ -539,20 +548,18 @@ public class DashboardService extends BaseService { // 如果所有IP在最后一个时间点的count都为0,则移除最后一个点 // 开始划分时间段,间隔5分钟 List dateRangeList = new ArrayList(); - List strDateRangeList = new ArrayList(); Calendar calendar = Calendar.getInstance(); calendar.setTime(beginDate); - SimpleDateFormat sdf = new SimpleDateFormat("MM-dd HH:mm"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); while (calendar.getTime().compareTo(endDate) < 0) { dateRangeList.add(calendar.getTime()); - strDateRangeList.add(sdf.format(calendar.getTime())); - calendar.add(Calendar.MINUTE, 5); + calendar.add(Calendar.MINUTE, Constants.TREND_TIME_INTERVAL); } ArrayList ipInfoList = trafficIpActiveStatisticDao .ipActiveFiveMinute(ipStr.toString(), beginDate, endDate); // 存放每个IP,每个时间点的总数 - Map> ipCountListMap = new HashMap>(); + Map ipCountListMap = new HashMap(); int index = 0; for (int i = 0; i < dateRangeList.size(); i++) { // 存放一个时间点中每个IP的总数 @@ -561,7 +568,8 @@ public class DashboardService extends BaseService { for (int j = index; j < ipInfoList.size(); j++) { TrafficIpActiveStatistic ipInfo = ipInfoList.get(j); if (ipInfo.getStatTime() != null) { - if (ipInfo.getStatTime().compareTo(date) >= 0 && (i + 1 < dateRangeList.size()?ipInfo.getStatTime().compareTo(dateRangeList.get(i + 1)) < 0:true)) { + if (ipInfo.getStatTime().compareTo(date) >= 0 && (i + 1 < dateRangeList.size() + && ipInfo.getStatTime().compareTo(dateRangeList.get(i + 1)) < 0)) { Long num = ipInfo.getCount(); if (ipCountMap.containsKey(ipInfo.getIpAddr())) { num = num + ipCountMap.get(ipInfo.getIpAddr()); @@ -575,27 +583,37 @@ public class DashboardService extends BaseService { } for (LinkedHashMap map : ipListTop10) { String ip = (String) map.get("ipAddr"); + List sumList= new ArrayList(); + sumList.add(date.getTime()); + Long sum = 0l; if (ipCountMap.containsKey(ip)) { sum = ipCountMap.get(ip); } + sumList.add(sum); if (ipCountListMap.containsKey(ip)) { - ipCountListMap.get(ip).add(sum); + List ipList = ipCountListMap.get(ip); + ipList.add(sumList); } else { - List list = new ArrayList(); - list.add(sum); - ipCountListMap.put(ip, list); + List iplist = new ArrayList(); + iplist.add(sumList); + ipCountListMap.put(ip, iplist); } } } - // 整合IP count time + // 整合IP计算总数 Iterator iterator = ipCountListMap.keySet().iterator(); while (iterator.hasNext()) { String ip = iterator.next() + ""; Map ipTrafficMap = new HashMap(); ipTrafficMap.put("ipAddr", ip); - ipTrafficMap.put("linkNum", ipCountListMap.get(ip)); - ipTrafficMap.put("statTime", strDateRangeList); + Long total = 0L; + for (Object obj : ipCountListMap.get(ip)) { + List list = (List) obj; + total+=list.get(1); + } + ipTrafficMap.put("result", ipCountListMap.get(ip)); + ipTrafficMap.put("sum", total); listMap.add(ipTrafficMap); } } @@ -1261,7 +1279,7 @@ public class DashboardService extends BaseService { while (calendar.getTime().compareTo(endTime) < 0) { dateRangeList.add(calendar.getTime()); - calendar.add(Calendar.MINUTE, 5); + calendar.add(Calendar.MINUTE, Constants.TREND_TIME_INTERVAL); } String[] addrTypes = getFiledTypeByName("addr_type"); String[] transTypes = getFiledTypeByName("trans_type"); @@ -1394,22 +1412,21 @@ public class DashboardService extends BaseService { Date endDate = DateUtils.parseDate(end); List dateRangeList = new ArrayList(); - List strDateRangeList = new ArrayList(); Calendar calendar = Calendar.getInstance(); calendar.setTime(beginDate); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); while (calendar.getTime().compareTo(endDate) < 0) { dateRangeList.add(calendar.getTime()); - strDateRangeList.add(sdf.format(calendar.getTime())); - calendar.add(Calendar.MINUTE, 5); + calendar.add(Calendar.MINUTE, Constants.TREND_TIME_INTERVAL); } // 存放每个时间点的总数 Map> ipCountListMap = new HashMap>(); int index = 0; - List countList = new ArrayList(); + List resultList = new ArrayList(); + Long total = 0L; for (int i = 0; i < dateRangeList.size(); i++) { // 存放一个时间点中总数 - Map ipCountMap = new HashMap(); + List sumList = new ArrayList(); Date date = dateRangeList.get(i); Long num = 0L; for (int j = index; j < domainList.size(); j++) { @@ -1423,12 +1440,15 @@ public class DashboardService extends BaseService { } } } - countList.add(num); + sumList.add(date.getTime()); + sumList.add(num); + resultList.add(sumList); + total+=num; } // 整合 count time HashMap ipTrafficMap = new HashMap(); - ipTrafficMap.put("count", countList); - ipTrafficMap.put("statTime", strDateRangeList); + ipTrafficMap.put("result", resultList); + ipTrafficMap.put("sum", total); listMap.add(ipTrafficMap); } return listMap; @@ -1465,12 +1485,11 @@ public class DashboardService extends BaseService { // 如果所有IP在最后一个时间点的count都为0,则移除最后一个点 // 开始划分时间段,间隔5分钟 List dateRangeList = new ArrayList(); - List strDateRangeList = new ArrayList(); Calendar calendar = Calendar.getInstance(); calendar.setTime(beginDate1); while (calendar.getTime().compareTo(endDate1) < 0) { dateRangeList.add(calendar.getTime()); - calendar.add(Calendar.MINUTE, 5); + calendar.add(Calendar.MINUTE, Constants.TREND_TIME_INTERVAL); } ArrayList portInfoList = trafficPortActiveStatisticDao @@ -1506,11 +1525,13 @@ public class DashboardService extends BaseService { if (portCountMap.containsKey(port)) { sum = portCountMap.get(port); } + sumList.add(sum); if (portCountListMap.containsKey(port)) { - portCountListMap.get(port).add(sum); + List list = portCountListMap.get(port); + list.add(sumList); } else { - List list = new ArrayList(); - list.add(sum); + List list = new ArrayList(); + list.add(sumList); portCountListMap.put(port, list); } } @@ -1518,15 +1539,19 @@ public class DashboardService extends BaseService { } else if (portListTop10 != null) { for (LinkedHashMap map : portListTop10) { String port = map.get("port").toString(); + List sumList = new ArrayList(); + sumList.add(date.getTime()); Long sum = 0l; if (portCountMap.containsKey(port)) { sum = portCountMap.get(port); } + sumList.add(sum); if (portCountListMap.containsKey(port)) { - portCountListMap.get(port).add(sum); + List list = portCountListMap.get(port); + list.add(sumList); } else { - List list = new ArrayList(); - list.add(sum); + List list = new ArrayList(); + list.add(sumList); portCountListMap.put(port, list); } } @@ -1535,11 +1560,16 @@ public class DashboardService extends BaseService { // 整合port sum time Iterator iterator = portCountListMap.keySet().iterator(); while (iterator.hasNext()) { - String ip = iterator.next() + ""; + String port = iterator.next() + ""; Map trafficPortActiveMap = new HashMap(); - trafficPortActiveMap.put("port", ip); - trafficPortActiveMap.put("sum", portCountListMap.get(ip)); - trafficPortActiveMap.put("statTime", strDateRangeList); + Long total = 0L; + for (Object obj : portCountListMap.get(port)) { + List list = (List) obj; + total+=list.get(1); + } + trafficPortActiveMap.put("port", port); + trafficPortActiveMap.put("result", portCountListMap.get(port)); + trafficPortActiveMap.put("sum", total); listMap.add(trafficPortActiveMap); } } @@ -1550,8 +1580,8 @@ public class DashboardService extends BaseService { * 根据指标(drop,loop,New Link,Close Link,Pass,Live Link)统计各业务的趋势 * @throws ParseException */ - public Map trendTotalReport(NtcConnNumReport ntcConnNumReport){ - Map restMap = new HashMap(); + public Map trendTotalReport(NtcConnNumReport ntcConnNumReport){ + Map restMap = new HashMap(); List list = ntcTotalReportDao.trendTotalReport(ntcConnNumReport); if (list!=null && list.size()>0) { //开始划分时间段,间隔5分钟 @@ -1571,13 +1601,14 @@ public class DashboardService extends BaseService { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); while (calendar.getTime().compareTo(endDate)<0) { dateRangeList.add(calendar.getTime()); - strDateRangeList.add(sdf.format(calendar.getTime())); - calendar.add(Calendar.MINUTE, 5); + calendar.add(Calendar.MINUTE, Constants.TREND_TIME_INTERVAL); } int index = 0; - List sumList = new ArrayList(); + List sumList = new ArrayList(); + Long totalNum = 0L; for (int i = 0; i < dateRangeList.size(); i++) { //存放一个时间点中每个IP的总数 + List tempList = new ArrayList(); Map ipCountMap = new HashMap(); Date date = dateRangeList.get(i); Long sum = 0l; @@ -1592,10 +1623,13 @@ public class DashboardService extends BaseService { } } } - sumList.add(sum); + totalNum+=sum; + tempList.add(date.getTime()); + tempList.add(sum); + sumList.add(tempList); } - restMap.put("sum", sumList); - restMap.put("statTime", strDateRangeList); + restMap.put("sum", totalNum); + restMap.put("result", sumList); } return restMap; } diff --git a/src/main/resources/nis.properties b/src/main/resources/nis.properties index e986ab2..8706107 100644 --- a/src/main/resources/nis.properties +++ b/src/main/resources/nis.properties @@ -223,3 +223,6 @@ redisRetryNum=500 #ip定位库的地址 #ipLocationLibraryPath=/usr/local/ipLocalLibraay/Kazakhstan.mmdb ipLocationLibraryPath=C:\\ipLocation\\Kazakhstan.mmdb + +#流量统计趋势图粒度,默认5分钟 +traffic.trend.timeInterval=5