Merge branch 'develop' of http://192.168.10.125/k18_web/NFS.git into develop
This commit is contained in:
@@ -807,4 +807,16 @@ public class DashboardController extends BaseController{
|
|||||||
uriBuilder.addParameter("endDate",endDate);
|
uriBuilder.addParameter("endDate",endDate);
|
||||||
return uriBuilder.toString();
|
return uriBuilder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value="httpStatisticList")
|
||||||
|
public String httpStatisticList( HttpServletRequest request, HttpServletResponse response, Model model, RedirectAttributes redirectAttributes){
|
||||||
|
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("beginDate", oneHoursAgo);
|
||||||
|
model.addAttribute("endDate", now);
|
||||||
|
return "/dashboard/trafficHttpStatisticList";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,11 +38,13 @@ import com.google.gson.JsonParseException;
|
|||||||
import com.google.gson.LongSerializationPolicy;
|
import com.google.gson.LongSerializationPolicy;
|
||||||
import com.google.gson.reflect.TypeToken;
|
import com.google.gson.reflect.TypeToken;
|
||||||
import com.nis.domain.PageLog;
|
import com.nis.domain.PageLog;
|
||||||
|
import com.nis.domain.SysDataDictionaryItem;
|
||||||
import com.nis.domain.configuration.WebsiteDomainTopic;
|
import com.nis.domain.configuration.WebsiteDomainTopic;
|
||||||
import com.nis.domain.dashboard.TrafficIpActiveStatistic;
|
import com.nis.domain.dashboard.TrafficIpActiveStatistic;
|
||||||
import com.nis.util.CodeDicUtils;
|
import com.nis.util.CodeDicUtils;
|
||||||
import com.nis.util.Constants;
|
import com.nis.util.Constants;
|
||||||
import com.nis.util.DateUtil;
|
import com.nis.util.DateUtil;
|
||||||
|
import com.nis.util.DictUtils;
|
||||||
import com.nis.util.StringUtil;
|
import com.nis.util.StringUtil;
|
||||||
import com.nis.util.httpclient.HttpClientUtil;
|
import com.nis.util.httpclient.HttpClientUtil;
|
||||||
import com.nis.web.controller.BaseController;
|
import com.nis.web.controller.BaseController;
|
||||||
@@ -484,4 +486,61 @@ public class TrafficStatisticsInfoController extends BaseController {
|
|||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主题 统计图跟表(目前只有表)
|
||||||
|
*/
|
||||||
|
@RequestMapping(value="statisticList")
|
||||||
|
@ResponseBody
|
||||||
|
public List statisticList(Model model,@RequestParam(required=false)String beginDate,@RequestParam(required=false)String endDate){
|
||||||
|
Map<String, Object> fromJsonList = new HashMap<String, Object>();
|
||||||
|
List list = new ArrayList();
|
||||||
|
String url = Constants.DASHBOARD_URL+Constants.TRAFFIC_TOPIC_AND_DOMAIN_CHART;
|
||||||
|
//String url = "http://192.168.11.87:8088/galaxy-service/service/log/v1/"+Constants.TRAFFIC_TOPIC_AND_DOMAIN_CHART;
|
||||||
|
Map map=new HashMap();
|
||||||
|
try {
|
||||||
|
url=urlAddDate(url,beginDate,endDate);
|
||||||
|
String string = HttpClientUtil.get(url);
|
||||||
|
Gson gson = new GsonBuilder().create();
|
||||||
|
fromJsonList = gson.fromJson(string, new TypeToken<Map>(){}.getType());
|
||||||
|
list = (ArrayList) fromJsonList.get("data");
|
||||||
|
List<SysDataDictionaryItem> codeList = DictUtils.getDictList("TOPIC");
|
||||||
|
Long totalLink=0l;
|
||||||
|
Long totalPackets=0l;
|
||||||
|
Double totalGByte=0d;
|
||||||
|
DecimalFormat lf = new DecimalFormat("0");
|
||||||
|
if(!StringUtil.isEmpty(list)){
|
||||||
|
for (Object object : list) {
|
||||||
|
Map m=(Map) object;
|
||||||
|
totalLink+=Long.parseLong(lf.format(m.get("linkNum")));
|
||||||
|
totalPackets+=Long.parseLong(lf.format(m.get("packets")));
|
||||||
|
totalGByte+=Double.parseDouble(lf.format(m.get("count")));
|
||||||
|
Double value1=0d;
|
||||||
|
if(StringUtil.isBlank(m.get("topicId").toString())){
|
||||||
|
value1=268435455d;
|
||||||
|
}else{
|
||||||
|
value1 = Double.parseDouble(m.get("topicId").toString());
|
||||||
|
}
|
||||||
|
for (SysDataDictionaryItem code : codeList) {
|
||||||
|
Double value2 = Double.valueOf(code.getItemCode());
|
||||||
|
if(value1.equals(value2)){
|
||||||
|
m.put("name",code.getItemValue());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(Object object2 : list) {
|
||||||
|
Map m2=(Map) object2;
|
||||||
|
m2.put("allLink", totalLink);
|
||||||
|
m2.put("allPackets",totalPackets);
|
||||||
|
m2.put("allGByte", totalGByte);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
logger.error("协议详情数据获取错误"+e);
|
||||||
|
list.add(Maps.newHashMap("error","request_service_failed"));
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -215,9 +215,9 @@
|
|||||||
<div class="main_left1 fl">
|
<div class="main_left1 fl">
|
||||||
<div class="left_1">
|
<div class="left_1">
|
||||||
<div class="main_title1">
|
<div class="main_title1">
|
||||||
<spring:message code="service"/> <%-- <a href="${ctx}/dashboard/ipActiveList"><i class="fa fa-list-ul"></i></a> --%>
|
<spring:message code="topic"/> <%-- <a href="${ctx}/dashboard/ipActiveList"><i class="fa fa-list-ul"></i></a> --%>
|
||||||
<a href="javascipt:void(0)" onclick="topicAndDomainList();return false;"><i class="fa fa-refresh"></i></a>
|
<a href="${ctx}/dashboard/httpStatisticList"><i class="fa fa-line-chart"></i></a> <a href="javascipt:void(0)" onclick="websiteList();return false;"><i class="fa fa-refresh"></i></a>
|
||||||
</div>
|
</div>
|
||||||
<!-- 网站主题分类图 --><div id="chart_topic" style="width:100%;height:400px;"></div>
|
<!-- 网站主题分类图 --><div id="chart_topic" style="width:100%;height:400px;"></div>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,246 @@
|
|||||||
|
<%@ page contentType="text/html;charset=UTF-8"%>
|
||||||
|
<%@ include file="/WEB-INF/include/taglib.jsp"%>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>主题</title>
|
||||||
|
<link rel="stylesheet" href="${pageContext.request.contextPath}/static/pages/css/dashboard.css">
|
||||||
|
<link rel="stylesheet" href="${pageContext.request.contextPath}/static/pages/css/pagination.css">
|
||||||
|
|
||||||
|
<script src="${pageContext.request.contextPath}/static/pages/scripts/jquery.pagination.js"></script>
|
||||||
|
<script src="${ctxStatic }/global/plugins/tableExport-3.3.13/xlsx.core.js"></script>
|
||||||
|
<script src="${ctxStatic }/global/plugins/tableExport-3.3.13/FileSaver.js"></script>
|
||||||
|
<script src="${ctxStatic }/global/plugins/tableExport-3.3.13/tableexport.js"></script>
|
||||||
|
</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='${ctx}/dashboard/httpStatisticList'"><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="website_control"></spring:message>
|
||||||
|
</h3>
|
||||||
|
<h5 class="page-header"></h5>
|
||||||
|
<div class="row" >
|
||||||
|
<form:form id="searchForm" action="${ctx}/dashboard/traffic/protocolTypeList" method="get" class="form-search">
|
||||||
|
<input id="beginDateh" type="hidden" value="${beginDate}"/>
|
||||||
|
<input id="endDateh" type="hidden" value="${endDate}"/>
|
||||||
|
<!-- 搜索内容与操作按钮栏 -->
|
||||||
|
<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({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true,maxDate:'${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,maxDate:'${endDate}'});"/>
|
||||||
|
</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 class="row">
|
||||||
|
<div id="chart" style="width:98%;height: 510px; -moz-user-select: none; position: relative;"></div>
|
||||||
|
</div> -->
|
||||||
|
<div class="row pull-right">
|
||||||
|
<button type="button" class="btn btn-default" id="export-btn"><i class="fa fa-download"> <spring:message code="export"/></i></button>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<div class="row">
|
||||||
|
<table id="contentTable" class="table table-active table-striped table-bordered table-condensed text-nowrap">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th class="tl"><spring:message code="service"/></th>
|
||||||
|
<th class="tl"><spring:message code="link_num"/></th>
|
||||||
|
<th class="tl"><spring:message code="percentage"/> (<spring:message code="link_num"/>)</th>
|
||||||
|
<th class="tl"><spring:message code="packets"/></th>
|
||||||
|
<th class="tl"><spring:message code="percentage"/> (<spring:message code="packets"/>)</th>
|
||||||
|
<th class="tl"><spring:message code="Gbyte"/></th>
|
||||||
|
<th class="tl"><spring:message code="percentage"/> (<spring:message code="Gbyte"/>)</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody id="tableData"></tbody>
|
||||||
|
</table>
|
||||||
|
<div id="page"><div class="M-box" style="float: right"></div></div>
|
||||||
|
<div class="none-data"><i class="fa fa-warning font-red-flamingo"></i> <spring:message code="noneData"/></div>
|
||||||
|
</div>
|
||||||
|
</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 type="text/javascript">
|
||||||
|
$(document).ready(function(){
|
||||||
|
var starth=$("#beginDateh").val();
|
||||||
|
var endh=$("#endDateh").val();
|
||||||
|
$("#beginDate").val(starth);
|
||||||
|
$("#endDate").val(endh);
|
||||||
|
ajaxProtocolList(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(){
|
||||||
|
ajaxProtocolList(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{
|
||||||
|
ajaxProtocolList(start,end);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function ajaxProtocolList(start,end){
|
||||||
|
loading();
|
||||||
|
$.ajax({
|
||||||
|
url: '${ctx}/dashboard/traffic/statisticList',
|
||||||
|
type: 'get',
|
||||||
|
dataType: "json",
|
||||||
|
data:{"beginDate":start,"endDate":end},
|
||||||
|
async:false,
|
||||||
|
timeout:10000,
|
||||||
|
success:function (data){
|
||||||
|
if(data!=null&&data.length>0&&data[0].error!=null){
|
||||||
|
top.$.jBox.tip("<spring:message code='request_service_failed'/>", "<spring:message code='info'/>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
fileData =data;
|
||||||
|
getPageData(1,10);//初始化第一页的数据
|
||||||
|
pageJuan(10);//初始化分页
|
||||||
|
closeTip();
|
||||||
|
if(data!= null&&data.length<1){
|
||||||
|
$(".none-data").show();
|
||||||
|
$('.M-box').hide();
|
||||||
|
}else if(data[0].allLink==0&&data[0].allPackets==0&&data[0].allGByte==0){
|
||||||
|
$("#tableData").html("");
|
||||||
|
$(".none-data").show();
|
||||||
|
$('.M-box').hide();
|
||||||
|
}else{
|
||||||
|
$('.none-data').hide();
|
||||||
|
$('.M-box').show();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error: function(data, textStatus, errorThrown){
|
||||||
|
closeTip();
|
||||||
|
},
|
||||||
|
complete:function(XMLHttpRequest,status){//超时设置
|
||||||
|
closeTip();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// 导出列表
|
||||||
|
$("#export-btn").click(function(){
|
||||||
|
getPageData(1,999999);// 设置导出页条数
|
||||||
|
var te = $("#contentTable").tableExport({
|
||||||
|
headings:true,
|
||||||
|
footers:true,
|
||||||
|
formats:["xlsx"],
|
||||||
|
fileName:"protocol",
|
||||||
|
bootstrap:false
|
||||||
|
});
|
||||||
|
$("#myexport").click();
|
||||||
|
$("caption").remove();
|
||||||
|
getPageData(1,10);
|
||||||
|
});
|
||||||
|
/**
|
||||||
|
* 获取本页数据
|
||||||
|
* @param currentPage 当前页数 【初次查数据,默认第1页】
|
||||||
|
*/
|
||||||
|
var fileData;
|
||||||
|
function getPageData(currentPage,pageNumber){
|
||||||
|
if (typeof (fileData) != "undefined" && fileData != null) {
|
||||||
|
//计算每页数据起始和终止数据编号
|
||||||
|
// var pageNumber = 10;
|
||||||
|
var maxLength = currentPage * pageNumber - 1;
|
||||||
|
var minLength = currentPage * pageNumber - pageNumber;
|
||||||
|
var pageData = [];
|
||||||
|
for (var i = minLength; i < fileData.length; i++) {
|
||||||
|
if (maxLength < i) {
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
pageData.push(fileData[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
htmlData(pageData);
|
||||||
|
}else{
|
||||||
|
//把空数据传到页面中去
|
||||||
|
htmlData(fileData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 处理接口数据
|
||||||
|
function htmlData(fileDataS){
|
||||||
|
$("#tableData").html("");
|
||||||
|
if(fileDataS == null){
|
||||||
|
$(".none-data").show();
|
||||||
|
$('.M-box').hide();
|
||||||
|
}else{
|
||||||
|
$('.none-data').hide();
|
||||||
|
$('.M-box').show();
|
||||||
|
$.each(fileDataS,function (index,data){
|
||||||
|
if(data!=null){
|
||||||
|
var html = "<tr>";
|
||||||
|
html+= "<td class='tc'>"+data.name+"</td>";
|
||||||
|
html+= "<td class='tc'>"+data.linkNum+"</td>";
|
||||||
|
html+= "<td class='tc'>"+Math.round(data.linkNum/data.allLink*100)+"%"+"</td>";
|
||||||
|
html+= "<td class='tc'>"+data.packets+"</td>";
|
||||||
|
html+= "<td class='tc'>"+Math.round(data.packets/data.allPackets*100)+"%"+"</td>";
|
||||||
|
html+= "<td class='tc'>"+Math.round(data.count/1073741824)+"</td>";
|
||||||
|
html+= "<td class='tc'>"+Math.round(data.count/data.allGByte*100)+"%"+"</td>";
|
||||||
|
html+="</tr>"
|
||||||
|
}
|
||||||
|
$("#tableData").append(html);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页控件处理
|
||||||
|
*/
|
||||||
|
function pageJuan(showData) {
|
||||||
|
if (typeof (fileData) != "undefined" && fileData != null) {
|
||||||
|
var totalData = fileData.length;
|
||||||
|
// var showData = 10;
|
||||||
|
if(showData > totalData){
|
||||||
|
showData = totalData;
|
||||||
|
}
|
||||||
|
$('.M-box').pagination({
|
||||||
|
totalData: totalData,
|
||||||
|
showData: showData,
|
||||||
|
coping: true,
|
||||||
|
callback: function (index) {
|
||||||
|
//改变显示开始和结束数据编号
|
||||||
|
getPageData(index.getCurrent(),showData);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Reference in New Issue
Block a user