流量统计增加drop,loop,new link ,close link ,pass ,live link详情

This commit is contained in:
zhanghongqing
2018-12-25 17:17:33 +08:00
parent b117832813
commit b6b5bf190a
10 changed files with 366 additions and 18 deletions

View File

@@ -715,6 +715,7 @@ public final class Constants {
public static final String TRAFFIC_TOPICLIST=Configurations.getStringProperty("trafficTopicList","trafficTopicList");
public static final String TRAFFIC_DOMAIN_TRANS=Configurations.getStringProperty("trafficDomainTrans","trafficDomainTrans");
public static final String TRAFFIC_PORTACTIVE_FIVEMINUTE=Configurations.getStringProperty("trafficPortActiveFiveMinute","trafficPortActiveFiveMinute");
public static final String TREND_TOTAL_REPORT=Configurations.getStringProperty("trendTotalReport","trendTotalReport");
/**
* httpclient 工具超时时间设置
*/

View File

@@ -639,4 +639,70 @@ public class TrafficStatisticsInfoController extends BaseController {
}
return list;
}
/**
* drop, loop,new link,close link,pass,live link
*/
@RequestMapping("ntcTotalReportDetail")
public String ntcTotalReportDetail(Model model,String searchAction){
Calendar cal = Calendar. getInstance ();
cal.setTime(new Date());
String now = new SimpleDateFormat( "yyyy-MM-dd HH:mm:00" ).format(cal.getTime());//鑾峰彇鍒板畬鏁寸殑鏃堕棿
cal.set(Calendar.HOUR_OF_DAY, cal.get(Calendar.HOUR_OF_DAY) - 1);
String oneHoursAgo = new SimpleDateFormat( "yyyy-MM-dd HH:mm:00" ).format(cal.getTime());
model.addAttribute("searchAction", searchAction);
model.addAttribute("beginDate", oneHoursAgo);
model.addAttribute("endDate", now);
return "/dashboard/ntcTotalReportDetailList";
}
@RequestMapping("ajaxNtcTotalReportDetail")
@ResponseBody
public Map ajaxNtcTotalReportDetail(String beginDate,String endDate,Model model,String searchAction){
Map<String, Object> fromJsonList = new HashMap<String, Object>();
Map map = new HashMap();
try {
String url=Constants.DASHBOARD_URL+Constants.TREND_TOTAL_REPORT;
if(StringUtil.isBlank(beginDate)||StringUtil.isBlank(endDate)){
Calendar cal = Calendar. getInstance ();
cal.setTime(new Date());
endDate = new SimpleDateFormat( "yyyy-MM-dd HH:mm:00" ).format(cal.getTime());//获取到完整的时间
cal.set(Calendar.HOUR_OF_DAY, cal.get(Calendar.HOUR_OF_DAY) - 1);
beginDate = new SimpleDateFormat( "yyyy-MM-dd HH:mm:00" ).format(cal.getTime());
}
URIBuilder uriBuilder = new URIBuilder(url);
uriBuilder.addParameter("searchReportStartTime",beginDate);
uriBuilder.addParameter("searchReportEndTime",endDate);
url=uriBuilder.toString();
if(searchAction!=null){
if("action_drop".equals(searchAction)){
url=url+"&searchBusinessType="+1;
}
if("action_loop".equals(searchAction)){
url=url+"&searchBusinessType="+2;
}
if("new_link".equals(searchAction)){
url=url+"&searchBusinessType="+3;
}
if("active_link".equals(searchAction)){
url=url+"&searchBusinessType="+4;
}
if("pass".equals(searchAction)){
url=url+"&searchBusinessType="+6;
}
if("live_link".equals(searchAction)){
url=url+"&searchBusinessType="+5;
}
}
String string = HttpClientUtil.get(url);
Gson gson = new GsonBuilder().create();
fromJsonList = gson.fromJson(string, new TypeToken<Map<String, Object>>(){}.getType());
logger.debug("动作详情统计一小时"+fromJsonList);
map = (Map) fromJsonList.get("data");
} catch (Exception e) {
e.printStackTrace();
logger.error("动作详情统计一小时数据获取错误"+e);
}
return map;
}
}

View File

@@ -603,4 +603,5 @@ trafficTopicList=trafficTopicList
trafficDomainTrans=trafficDomainTrans
#maximum number to import
import_limit=10
trafficPortActiveFiveMinute=trafficPortActiveFiveMinute
trafficPortActiveFiveMinute=trafficPortActiveFiveMinute
trendTotalReport=trendTotalReport

View File

@@ -101,75 +101,75 @@ body {
</div>
<div class="fr_fc">
<div class="fl_visual">
<a href="${ctx}/dashboard/traffic/trafficBlockList?searchAction=action_drop"><i class="fa fa-trash"> </i></a>
<a href="${ctx}/dashboard/traffic/ntcTotalReportDetail?searchAction=action_drop"><i class="fa fa-trash"> </i></a>
</div>
<div class="fl_fc">
<%-- <a href="${ctx}/dashboard/ipActiveList"> --%>
<p data-original-title="<spring:message code="action_drop"/>"
class="tooltips" data-flag="false" data-html="true" data-placement="top">
<!-- 丢弃链接数 --><spring:message code="action_drop"/></p>
<a href="${ctx}/dashboard/traffic/trafficBlockList?searchAction=action_drop"> <p class="numberRun3">0</p></a>
<a href="${ctx}/dashboard/traffic/ntcTotalReportDetail?searchAction=action_drop"> <p class="numberRun3">0</p></a>
</div>
</div>
<div class="fr_fc">
<div class="fl_visual">
<a href="${ctx}/dashboard/traffic/trafficBlockList?searchAction=action_loop"><i class="fa fa-recycle"> </i></a>
<a href="${ctx}/dashboard/traffic/ntcTotalReportDetail?searchAction=action_loop"><i class="fa fa-recycle"> </i></a>
</div>
<div class="fl_fc">
<!-- <a href="javacript:;"> -->
<p data-original-title="<spring:message code="action_loop"/>"
class="tooltips" data-flag="false" data-html="true" data-placement="top">
<!-- 回流链接数 --><spring:message code="action_loop"/></p>
<a href="${ctx}/dashboard/traffic/trafficBlockList?searchAction=action_loop"><p class="numberRun">0</p></a>
<a href="${ctx}/dashboard/traffic/ntcTotalReportDetail?searchAction=action_loop"><p class="numberRun">0</p></a>
</div>
</div>
<div class="fr_fc">
<div class="fl_visual">
<i class="fa fa-link"> </i>
<a href="${ctx}/dashboard/traffic/ntcTotalReportDetail?searchAction=new_link"><i class="fa fa-link"> </i></a>
</div>
<div class="fl_fc">
<!-- <a href="javacript:;"> -->
<p data-original-title="<spring:message code="new_link"/>"
class="tooltips" data-flag="false" data-html="true" data-placement="top">
<!-- 新建链接数 --><spring:message code="new_link"/></p>
<p class="numberRun5">0</p>
<a href="${ctx}/dashboard/traffic/ntcTotalReportDetail?searchAction=new_link"> <p class="numberRun5">0</p></a>
</div>
</div>
<div class="fr_fc">
<div class="fl_visual">
<i class="fa fa-unlink"> </i>
<a href="${ctx}/dashboard/traffic/ntcTotalReportDetail?searchAction=active_link"><i class="fa fa-unlink"> </i></a>
</div>
<div class="fl_fc">
<p data-original-title="<spring:message code="active_link"/>"
class="tooltips" data-flag="false" data-html="true" data-placement="top">
<!-- 活跃链接数 --><spring:message code="active_link"/></p>
<p class="numberRun6">0</p>
<a href="${ctx}/dashboard/traffic/ntcTotalReportDetail?searchAction=active_link"><p class="numberRun6">0</p></a>
</div>
</div>
<div class="fr_fc">
<div class="fl_visual">
<i class="fa fa-smile-o"> </i>
<a href="${ctx}/dashboard/traffic/ntcTotalReportDetail?searchAction=pass"><i class="fa fa-smile-o"> </i></a>
</div>
<div class="fl_fc">
<p data-original-title="<spring:message code="pass"/>"
class="tooltips" data-flag="false" data-html="true" data-placement="top">
<!-- pass --><spring:message code="pass"/></p>
<p class="numberRun7">0</p>
<a href="${ctx}/dashboard/traffic/ntcTotalReportDetail?searchAction=pass"><p class="numberRun7">0</p></a>
</div>
</div>
<div class="fr_fc">
<div class="fl_visual">
<i class="fa fa-heartbeat"> </i>
<a href="${ctx}/dashboard/traffic/ntcTotalReportDetail?searchAction=live_link"><i class="fa fa-heartbeat"> </i></a>
</div>
<div class="fl_fc">
<p data-original-title="<spring:message code="live_link"/>"
class="tooltips" data-flag="false" data-html="true" data-placement="top">
<!-- live link--><spring:message code="live_link"/></p>
<p class="numberRun8">0</p>
<a href="${ctx}/dashboard/traffic/ntcTotalReportDetail?searchAction=live_link"><p class="numberRun8">0</p></a>
</div>
</div>

View File

@@ -0,0 +1,280 @@
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ include file="/WEB-INF/include/taglib.jsp"%>
<html>
<head>
<title><spring:message code="traffic_ip_active"></spring:message>
</title>
</head>
<body>
<div class="page-content">
<div class="theme-panel hidden-xs hidden-sm">
<button type="button" class="btn btn-default"
onClick="javascript:window.location.reload()">
<i class="fa fa-refresh"></i>
</button>
<button type="button" class="btn btn-default"
onClick="javascript:window.location='${ctx}/dashboard/logChart'">
<i class="fa fa-history"></i>
</button>
</div>
<h3 class="page-title">
<spring:message code="${searchAction}"></spring:message>
</h3>
<h5 class="page-header"></h5>
<div class="row">
<form:form id="searchForm" method="get" class="form-search">
<!-- 搜索内容与操作按钮栏 -->
<div class="col-md-12">
<div class="pull-left">
<div class="input-group">
<div class="input-group-btn">
<span class="selectpicker form-control"><spring:message
code="begin_date" /></span>
</div>
<input id="beginDate" name="beginDate" type="text"
readonly="readonly" class="form-control Wdate input-medium"
value=""
onclick="WdatePicker({onpicked:setTime,dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true,maxDate:'#F{$dp.$D(\'endDate\')}'});"/>
</div>
</div>
<div class="pull-left">
<div class="input-group">
<div class="input-group-btn">
<span class="selectpicker form-control"><spring:message
code="end_date" /></span>
</div>
<input id="endDate" name="endDate" type="text"
readonly="readonly" class="form-control Wdate input-medium"
value=""
onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true,minDate:'#F{$dp.$D(\'beginDate\')}',maxDate:'#F{$dp.$D(\'beginDate\',{d:7})}'});" />
</div>
</div>
<div class="pull-left">
<button type="button" class="btn blue"
onClick="return searchList()">
<i class="fa fa-search"></i>
<spring:message code="search" />
</button>
<button type="button" class="btn btn-default" id="resetBtn">
<i class="fa fa-refresh"></i>
<spring:message code="reset" />
</button>
</div>
</div>
<!-- 搜索内容与操作按钮栏 -->
</form:form>
</div>
<div id="chart" style="width: 97%; height: 530px; margin-top: 20px"></div>
<input id="total" type="hidden" /> <input id="searchAction"
name="searchAction" type="hidden" value="${searchAction}" /> <input
id="beginDateh" type="hidden" value="${beginDate}" /> <input
id="endDateh" type="hidden" value="${endDate}" />
</div>
<script src="${pageContext.request.contextPath}/static/global/plugins/highcharts/js/highcharts.js"></script>
<script src="${pageContext.request.contextPath}/static/global/plugins/highcharts/js/exporting.js"></script>
<script src="${pageContext.request.contextPath}/static/global/plugins/highcharts/js/series-label.js"></script>
<script src="${pageContext.request.contextPath}/static/global/plugins/highcharts/js/offline-exporting.js"></script>
<script src="${pageContext.request.contextPath}/static/global/plugins/highcharts/js/exporting-data.js"></script>
<script src="${pageContext.request.contextPath}/static/global/plugins/highcharts/js/standalone.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var starth = $("#beginDateh").val();
var endh = $("#endDateh").val();
$("#beginDate").val(starth);
$("#endDate").val(endh);
actionTransAjax($("#searchAction").val(), starth,endh);
//筛选功能初始化
$("#resetBtn").on("click",function() {
$("select.selectpicker").each(function() {
$(this).selectpicker('val',$(this).find('option:first').val());
$(this).find("option").attr("selected",false);
$(this).find("option:first").attr("selected",true);
});
$(".Wdate").attr("value", '');
$("#searchForm")[0].reset();
});
setInterval(function(){
actionTransAjax($("#searchAction").val(),starth,new Date().Format("yyyy-MM-dd HH:mm:00"));
},500000);// 五分钟调用一次
});
function searchList() {
// loading();
var start = $("#beginDate").val();
var end = $("#endDate").val();
if (start == '' || end == '' || end == null || start == null) {
window.location.reload();
} else {
actionTransAjax($("#searchAction").val(), start, end);
}
}
// 局点信息
function showActionTransChart(rs) {
var data = new Array();
var xData = new Array();
xData = rs.statTime;
var series = new Array();
var total = 0;
$(rs.sum).each(function(i,d) {
total+=d
})
$("#total").val(JSON.stringify(total));
series.push({
name: 'sum',
data: rs.sum
});
var chart = Highcharts.chart('chart',
{
chart : {
// type: 'area',
zoomType : 'x'
},
exporting : {
filename : 'Action-Trans',
scale : 1,
sourceWidth : 1280,
sourceHeight : 500,
buttons : {
contextButton : {
menuItems : [
Highcharts.getOptions().exporting.buttons.contextButton.menuItems[0],// 打印
Highcharts.getOptions().exporting.buttons.contextButton.menuItems[1],// jpeg
Highcharts.getOptions().exporting.buttons.contextButton.menuItems[4],// excel
Highcharts.getOptions().exporting.buttons.contextButton.menuItems[3],// cvs
]
}
}
},
title : {
text : null
},
/* xAxis: {
type:'category',
categories: [1,2,3],
title: {
text: 'time',
align:'high',
},
labels: {
rotation: -45, //倾斜的角度
},
}, */
xAxis: {
type:'category',
categories: xData,
title: {
text: 'time',
align:'high',
},
labels: {
rotation: -45, //倾斜的角度
},
},
yAxis : {
title : {
text : null
}
},
credits : {//是否有highcharts水印
enabled : false
},
plotOptions : {
series : {
marker : {
radius : 2,
hover : {
enabled : true,
radius : 7,
radiusPlus : 5
}
}
}
},
// legend: {
// layout: 'vertical',
// align: 'right',
// verticalAlign: 'middle'
// },
series : series,
});
}
// 动作一小时,间隔五分钟统计数据
function actionTransAjax(searchAction, beginDate, endDate) {
loading();
$.ajax({
url : "${ctx}/dashboard/traffic/ajaxNtcTotalReportDetail?searchAction="+searchAction+"&beginDate="+beginDate+"&endDate="+endDate,
type : "get",
dataType : "json",
cache : false,
async : false,
success : function(rs) {
showActionTransChart(rs);
closeTip();
},
error : function(data, textStatus, errorThrown) {
closeTip();
},
complete : function(XMLHttpRequest, status) {//超时设置
closeTip();
}
});
}
(function(H) {
H.Chart.prototype.downloadXLS = function() {
var div = document.createElement('div'), xlsxRows = [], xlsxColumns = [];
div.style.display = 'none';
document.body.appendChild(div);
rows = this.getDataRows(true);
xlsxRows = H.map(rows.slice(1), function(row) {
return H.map(row, function(column) {
return {
type : typeof column === 'number' ? 'number' : 'string',
value : column
};
});
});
var start = $("#beginDate").val();
var end = $("#endDate").val();
var b = new Array();
b.push({
type : 'string',
value : 'Action-Trans'
})
b.push({
type : "string",
value : start + "--" + end
})
xlsxRows.unshift(b);
var a = new Array();
a.push({
type : 'string',
value : 'Total'
})
var total = total = JSON.parse($("#total").val());
a.push({
type : "number",
value : total
})
xlsxRows.push(a)
zipcelx({
filename : 'Action-Trans',
sheet : {
data : xlsxRows
}
});
};
}(Highcharts));
</script>
</body>
</html>

View File

@@ -84,7 +84,7 @@
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"><i class="fa fa-wrench"></i> <spring:message code="export"/>
<span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu" style="min-width: 81px;right: -16px;">
<ul class="dropdown-menu" role="menu" style="min-width: 81px;right: 2px;">
<li><a class="btn export-btn" data-type="xlsx" id="export-btn"><i class="fa fa-download"> </i> excel </a><li>
<li><a class="btn export-btn" data-type="csv" id="export-btn"><i class="fa fa-download"> </i> csv &nbsp;&nbsp;&nbsp;</a><li>
</ul>

View File

@@ -61,7 +61,7 @@
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"><i class="fa fa-wrench"></i> <spring:message code="export"/>
<span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu" style="min-width: 81px;right: -16px;">
<ul class="dropdown-menu" role="menu" style="min-width: 81px;right: 2px;">
<li><a class="btn export-btn" data-type="xlsx" id="export-btn"><i class="fa fa-download"> </i> excel </a><li>
<li><a class="btn export-btn" data-type="csv" id="export-btn"><i class="fa fa-download"> </i> csv &nbsp;&nbsp;&nbsp;</a><li>
</ul>

View File

@@ -65,7 +65,7 @@
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"><i class="fa fa-wrench"></i> <spring:message code="export"/>
<span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu" style="min-width: 81px;right: -16px;">
<ul class="dropdown-menu" role="menu" style="min-width: 81px;right: 2px;">
<li><a class="btn export-btn" data-type="xlsx" id="export-btn"><i class="fa fa-download"> </i> excel </a><li>
<li><a class="btn export-btn" data-type="csv" id="export-btn"><i class="fa fa-download"> </i> csv &nbsp;&nbsp;&nbsp;</a><li>
</ul>

View File

@@ -74,7 +74,7 @@
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"><i class="fa fa-wrench"></i> <spring:message code="export"/>
<span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu" style="min-width: 81px;right: -16px;">
<ul class="dropdown-menu" role="menu" style="min-width: 81px;right: 2px;">
<li><a class="btn export-btn" data-type="xlsx" id="export-btn"><i class="fa fa-download"> </i> excel </a><li>
<li><a class="btn export-btn" data-type="csv" id="export-btn"><i class="fa fa-download"> </i> csv &nbsp;&nbsp;&nbsp;</a><li>
</ul>

View File

@@ -124,7 +124,7 @@
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"><i class="fa fa-wrench"></i> <spring:message code="export"/>
<span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu" style="min-width: 81px;right: -16px;">
<ul class="dropdown-menu" role="menu" style="min-width: 81px;right: 2px;">
<li><a class="btn export-btn" data-type="xlsx" id="export-btn"><i class="fa fa-download"> </i> excel </a><li>
<li><a class="btn export-btn" data-type="csv" id="export-btn"><i class="fa fa-download"> </i> csv &nbsp;&nbsp;&nbsp;</a><li>
</ul>