2018-07-11 19:05:08 +08:00
|
|
|
|
package com.nis.web.controller.dashboard;
|
|
|
|
|
|
|
2018-10-12 18:12:24 +08:00
|
|
|
|
import java.lang.reflect.Type;
|
2018-12-17 10:56:03 +08:00
|
|
|
|
import java.net.URISyntaxException;
|
2018-11-27 13:52:11 +08:00
|
|
|
|
import java.net.URLEncoder;
|
2019-01-17 12:43:04 +08:00
|
|
|
|
import java.text.DecimalFormat;
|
2018-12-17 10:56:03 +08:00
|
|
|
|
import java.text.SimpleDateFormat;
|
2018-07-11 19:05:08 +08:00
|
|
|
|
import java.util.ArrayList;
|
2018-12-17 10:56:03 +08:00
|
|
|
|
import java.util.Calendar;
|
2018-12-22 23:11:04 +08:00
|
|
|
|
import java.util.Collections;
|
|
|
|
|
|
import java.util.Comparator;
|
2018-12-17 10:56:03 +08:00
|
|
|
|
import java.util.Date;
|
2018-07-11 19:05:08 +08:00
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
import java.util.Map;
|
2018-11-27 13:52:11 +08:00
|
|
|
|
import java.util.Properties;
|
2018-10-12 18:12:24 +08:00
|
|
|
|
import java.util.Set;
|
2018-07-11 19:05:08 +08:00
|
|
|
|
|
2018-08-01 12:59:29 +08:00
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
2018-07-11 19:05:08 +08:00
|
|
|
|
|
2018-12-17 10:56:03 +08:00
|
|
|
|
import org.apache.http.client.utils.URIBuilder;
|
2018-07-11 19:05:08 +08:00
|
|
|
|
import org.springframework.stereotype.Controller;
|
2018-08-01 12:59:29 +08:00
|
|
|
|
import org.springframework.ui.Model;
|
|
|
|
|
|
import org.springframework.web.bind.annotation.ModelAttribute;
|
2018-07-11 19:05:08 +08:00
|
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
|
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
2018-10-12 18:12:24 +08:00
|
|
|
|
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
2018-07-11 19:05:08 +08:00
|
|
|
|
|
2018-10-12 18:12:24 +08:00
|
|
|
|
import com.beust.jcommander.internal.Maps;
|
2018-07-11 19:05:08 +08:00
|
|
|
|
import com.google.gson.Gson;
|
|
|
|
|
|
import com.google.gson.GsonBuilder;
|
2018-10-12 18:12:24 +08:00
|
|
|
|
import com.google.gson.JsonDeserializationContext;
|
|
|
|
|
|
import com.google.gson.JsonDeserializer;
|
|
|
|
|
|
import com.google.gson.JsonElement;
|
|
|
|
|
|
import com.google.gson.JsonObject;
|
|
|
|
|
|
import com.google.gson.JsonParseException;
|
2018-07-11 19:05:08 +08:00
|
|
|
|
import com.google.gson.reflect.TypeToken;
|
2018-08-24 14:17:53 +08:00
|
|
|
|
import com.nis.domain.PageLog;
|
2018-09-21 20:34:48 +08:00
|
|
|
|
import com.nis.domain.SysDataDictionaryItem;
|
|
|
|
|
|
import com.nis.domain.configuration.WebsiteDomainTopic;
|
2018-11-27 13:52:11 +08:00
|
|
|
|
import com.nis.domain.dashboard.TrafficIpActiveStatistic;
|
2018-07-11 19:05:08 +08:00
|
|
|
|
import com.nis.util.CodeDicUtils;
|
2018-07-13 19:36:37 +08:00
|
|
|
|
import com.nis.util.Constants;
|
2018-11-27 13:52:11 +08:00
|
|
|
|
import com.nis.util.DateUtils;
|
2018-09-21 20:34:48 +08:00
|
|
|
|
import com.nis.util.DictUtils;
|
2018-07-11 19:05:08 +08:00
|
|
|
|
import com.nis.util.StringUtil;
|
2018-11-27 13:52:11 +08:00
|
|
|
|
import com.nis.util.excel.ExportExcel;
|
2018-07-11 19:05:08 +08:00
|
|
|
|
import com.nis.util.httpclient.HttpClientUtil;
|
|
|
|
|
|
import com.nis.web.controller.BaseController;
|
|
|
|
|
|
import com.nis.web.dao.dashboard.codedic.CodeResult;
|
2018-12-18 17:28:58 +06:00
|
|
|
|
|
|
|
|
|
|
import antlr.StringUtils;
|
2018-07-11 19:05:08 +08:00
|
|
|
|
@SuppressWarnings("rawtypes")
|
|
|
|
|
|
@Controller
|
|
|
|
|
|
@RequestMapping(value = "${adminPath}/dashboard")
|
|
|
|
|
|
public class DashboardController extends BaseController{
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-07-13 19:36:37 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 跳转到图表界面
|
|
|
|
|
|
* @return
|
|
|
|
|
|
*/
|
2018-07-11 19:05:08 +08:00
|
|
|
|
@RequestMapping(value="logChart")
|
2018-12-17 11:12:27 +08:00
|
|
|
|
public String logChart(Model model){
|
|
|
|
|
|
// 默认当前时间一小时
|
|
|
|
|
|
Calendar cal = Calendar. getInstance ();
|
|
|
|
|
|
cal.setTime(new Date());
|
|
|
|
|
|
String 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);
|
|
|
|
|
|
String beginDate = new SimpleDateFormat( "yyyy-MM-dd HH:mm:00" ).format(cal.getTime());
|
|
|
|
|
|
model.addAttribute("beginDate", beginDate);
|
|
|
|
|
|
model.addAttribute("endDate", endDate);
|
2018-07-11 19:05:08 +08:00
|
|
|
|
return "/dashboard/dashBoardIndex";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2018-09-21 20:34:48 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 活跃端口 TOP10
|
|
|
|
|
|
*/
|
|
|
|
|
|
@RequestMapping(value="portActive")
|
|
|
|
|
|
@ResponseBody
|
|
|
|
|
|
public List portActive(){
|
|
|
|
|
|
Map<String, Object> fromJsonList = new HashMap<String, Object>();
|
|
|
|
|
|
List list = new ArrayList();
|
|
|
|
|
|
try {
|
|
|
|
|
|
String string = HttpClientUtil.get(Constants.DASHBOARD_URL+Constants.TRAFFIC_PORT_ACTIVE);
|
|
|
|
|
|
Gson gson = new GsonBuilder().create();
|
|
|
|
|
|
fromJsonList = gson.fromJson(string, new TypeToken<Map>(){}.getType());
|
|
|
|
|
|
list = (ArrayList) fromJsonList.get("data");
|
2018-12-10 21:30:58 +08:00
|
|
|
|
logger.debug("活跃端口数据"+fromJsonList);
|
2018-09-21 20:34:48 +08:00
|
|
|
|
return list;
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
logger.error("活跃端口数据错误"+e);
|
2018-10-12 18:12:24 +08:00
|
|
|
|
list.add(Maps.newHashMap("error","request_service_failed"));
|
2018-09-21 20:34:48 +08:00
|
|
|
|
}
|
|
|
|
|
|
return list;
|
|
|
|
|
|
}
|
2018-12-23 20:58:42 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 跳转活跃端口详情界面
|
|
|
|
|
|
* @return
|
|
|
|
|
|
*/
|
|
|
|
|
|
@RequestMapping(value="portActiveChart")
|
|
|
|
|
|
@ResponseBody
|
|
|
|
|
|
public List portActiveChart(String beginDate,String endDate){
|
|
|
|
|
|
Map<String, Object> fromJsonList = new HashMap<String, Object>();
|
|
|
|
|
|
List list = new ArrayList();
|
|
|
|
|
|
try {
|
|
|
|
|
|
String url=Constants.DASHBOARD_URL+Constants.TRAFFIC_PORTACTIVE_FIVEMINUTE;//+Constants.TRAFFIC_IPACTIVE_ONEHOUR;
|
|
|
|
|
|
url=urlAddDate(url, beginDate, endDate);
|
|
|
|
|
|
String string = HttpClientUtil.get(url);
|
|
|
|
|
|
Gson gson = new GsonBuilder().create();
|
|
|
|
|
|
fromJsonList = gson.fromJson(string, new TypeToken<Map>(){}.getType());
|
|
|
|
|
|
logger.debug("活跃端口从"+beginDate+"到"+endDate+",间隔5分钟数据"+fromJsonList);
|
|
|
|
|
|
list = (ArrayList) fromJsonList.get("data");
|
|
|
|
|
|
return list;
|
|
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
// TODO Auto-generated catch block
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
logger.error("活跃端口详情界面数据获取错误"+e);
|
|
|
|
|
|
}
|
|
|
|
|
|
return list;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2018-12-22 23:11:04 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 跳转活跃端口详情界面
|
|
|
|
|
|
* @return
|
|
|
|
|
|
*/
|
|
|
|
|
|
@RequestMapping(value="portActiveList")
|
|
|
|
|
|
public String portActiveList(Model model){
|
|
|
|
|
|
// 默认当前时间一小时
|
|
|
|
|
|
Calendar cal = Calendar. getInstance ();
|
|
|
|
|
|
cal.setTime(new Date());
|
|
|
|
|
|
String 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);
|
|
|
|
|
|
String beginDate = new SimpleDateFormat( "yyyy-MM-dd HH:mm:00" ).format(cal.getTime());
|
|
|
|
|
|
model.addAttribute("beginDate", beginDate);
|
|
|
|
|
|
model.addAttribute("endDate", endDate);
|
|
|
|
|
|
return "/dashboard/trafficPortActiveList";
|
|
|
|
|
|
}
|
2018-07-11 19:05:08 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 活跃IP TOP10
|
|
|
|
|
|
*/
|
|
|
|
|
|
@RequestMapping(value="ipActive")
|
|
|
|
|
|
@ResponseBody
|
2018-12-17 10:56:03 +08:00
|
|
|
|
public List ipActive(String beginDate,String endDate){
|
2018-07-11 19:05:08 +08:00
|
|
|
|
Map<String, Object> fromJsonList = new HashMap<String, Object>();
|
|
|
|
|
|
List list = new ArrayList();
|
|
|
|
|
|
try {
|
2018-12-17 10:56:03 +08:00
|
|
|
|
String url =Constants.DASHBOARD_URL+Constants.TRAFFIC_IPACTIVE;
|
|
|
|
|
|
url = urlAddDate(url, beginDate, endDate);
|
|
|
|
|
|
String string = HttpClientUtil.get(url);
|
2018-07-11 19:05:08 +08:00
|
|
|
|
Gson gson = new GsonBuilder().create();
|
|
|
|
|
|
fromJsonList = gson.fromJson(string, new TypeToken<Map>(){}.getType());
|
2018-12-10 21:30:58 +08:00
|
|
|
|
logger.debug("活跃IP数据"+fromJsonList);
|
2018-09-21 20:34:48 +08:00
|
|
|
|
list = (ArrayList) fromJsonList.get("data");
|
|
|
|
|
|
return list;
|
2018-07-11 19:05:08 +08:00
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
e.printStackTrace();
|
2018-07-13 19:36:37 +08:00
|
|
|
|
logger.error("活跃IP错误"+e);
|
2018-10-12 18:12:24 +08:00
|
|
|
|
list.add(Maps.newHashMap("error","request_service_failed"));
|
2018-07-11 19:05:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
return list;
|
|
|
|
|
|
}
|
2018-10-12 18:12:24 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 活跃IP TOP10 一小时 间隔5分钟数据
|
|
|
|
|
|
*/
|
|
|
|
|
|
@RequestMapping(value="ipActiveMinuteList")
|
|
|
|
|
|
@ResponseBody
|
2019-01-08 20:45:39 +08:00
|
|
|
|
public List ipActiveMinuteList(String beginDate,String endDate,Integer entranceId){
|
2018-10-12 18:12:24 +08:00
|
|
|
|
Map<String, Object> fromJsonList = new HashMap<String, Object>();
|
|
|
|
|
|
List list = new ArrayList();
|
|
|
|
|
|
try {
|
2018-12-17 10:56:03 +08:00
|
|
|
|
String url=Constants.DASHBOARD_URL+Constants.TRAFFIC_IPACTIVE_FIVEMINUTE;
|
|
|
|
|
|
url=urlAddDate(url, beginDate, endDate);
|
2019-01-08 20:45:39 +08:00
|
|
|
|
if(entranceId!=null){
|
|
|
|
|
|
url=url+"&entranceId="+entranceId;
|
|
|
|
|
|
}
|
2018-12-17 10:56:03 +08:00
|
|
|
|
String string = HttpClientUtil.get(url);
|
2018-10-12 18:12:24 +08:00
|
|
|
|
Gson gson = new GsonBuilder().create();
|
|
|
|
|
|
fromJsonList = gson.fromJson(string, new TypeToken<Map>(){}.getType());
|
2018-12-10 21:30:58 +08:00
|
|
|
|
logger.debug("活跃IP1小时,间隔5分钟数据"+fromJsonList);
|
2018-10-12 18:12:24 +08:00
|
|
|
|
list = (ArrayList) fromJsonList.get("data");
|
|
|
|
|
|
return list;
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
logger.error("活跃IP数据获取错误"+e);
|
|
|
|
|
|
list.add(Maps.newHashMap("error","request_service_failed"));
|
|
|
|
|
|
}
|
|
|
|
|
|
return list;
|
|
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 活跃IP详情
|
|
|
|
|
|
* @param request
|
|
|
|
|
|
* @param response
|
|
|
|
|
|
* @param model
|
|
|
|
|
|
* @return
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
public static Gson getIntGson() {
|
|
|
|
|
|
Gson gson = new GsonBuilder()
|
|
|
|
|
|
.registerTypeAdapter(
|
|
|
|
|
|
new TypeToken<Map<String, Object>>() {
|
|
|
|
|
|
}.getType(),
|
|
|
|
|
|
new JsonDeserializer<Map<String, Object>>() {
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public Map<String, Object> deserialize(
|
|
|
|
|
|
JsonElement json, Type typeOfT,
|
|
|
|
|
|
JsonDeserializationContext context) throws JsonParseException {
|
|
|
|
|
|
|
|
|
|
|
|
Map<String, Object> treeMap = new HashMap<String, Object>();
|
|
|
|
|
|
JsonObject jsonObject = json.getAsJsonObject();
|
|
|
|
|
|
Set<Map.Entry<String, JsonElement>> entrySet = jsonObject.entrySet();
|
|
|
|
|
|
for (Map.Entry<String, JsonElement> entry : entrySet) {
|
|
|
|
|
|
treeMap.put(entry.getKey(), entry.getValue());
|
|
|
|
|
|
}
|
|
|
|
|
|
return treeMap;
|
|
|
|
|
|
}
|
|
|
|
|
|
}).create();
|
|
|
|
|
|
return gson;
|
|
|
|
|
|
}
|
|
|
|
|
|
@RequestMapping(value="ipActiveList")
|
2018-12-17 10:56:03 +08:00
|
|
|
|
public String ipActiveList(@RequestParam(value="beginDate",required=false)String beginDate,@RequestParam(value="endDate",required=false)String endDate,HttpServletRequest request, HttpServletResponse response, Model model, RedirectAttributes redirectAttributes){
|
2018-10-12 18:12:24 +08:00
|
|
|
|
try {
|
2018-12-17 10:56:03 +08:00
|
|
|
|
// 默认当前时间一小时
|
|
|
|
|
|
if(StringUtil.isEmpty(beginDate)||StringUtil.isEmpty(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());
|
|
|
|
|
|
}
|
|
|
|
|
|
model.addAttribute("beginDate", beginDate);
|
|
|
|
|
|
model.addAttribute("endDate", endDate);
|
2018-10-12 18:12:24 +08:00
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
logger.error("活跃IP统计错误"+e);
|
2018-12-13 14:01:06 +08:00
|
|
|
|
addMessage(redirectAttributes,"error","request_service_failed");
|
2018-10-12 18:12:24 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return "/dashboard/trafficIpActiveList";
|
|
|
|
|
|
}
|
2018-12-17 10:56:03 +08:00
|
|
|
|
/**
|
2018-12-22 23:11:04 +08:00
|
|
|
|
* 活跃IP TOP10 一小时每个IP的最大值
|
2018-12-17 10:56:03 +08:00
|
|
|
|
*/
|
|
|
|
|
|
@RequestMapping(value="ajaxIpActiveList")
|
|
|
|
|
|
@ResponseBody
|
2019-01-08 20:45:39 +08:00
|
|
|
|
public List ajaxIpActiveList(String beginDate,String endDate,Integer entranceId){
|
2018-12-17 10:56:03 +08:00
|
|
|
|
Map<String, Object> fromJsonList = new HashMap<String, Object>();
|
2019-01-17 12:43:04 +08:00
|
|
|
|
List<TrafficIpActiveStatistic> list = new ArrayList<TrafficIpActiveStatistic>();
|
2018-12-17 10:56:03 +08:00
|
|
|
|
try {
|
|
|
|
|
|
String url=Constants.DASHBOARD_URL+Constants.TRAFFIC_IPACTIVE_ONEHOUR;
|
|
|
|
|
|
url=urlAddDate(url, beginDate, endDate);
|
2019-01-08 20:45:39 +08:00
|
|
|
|
if(entranceId!=null){
|
|
|
|
|
|
url=url+"&entranceId="+entranceId;
|
|
|
|
|
|
}
|
2018-12-17 10:56:03 +08:00
|
|
|
|
String string = HttpClientUtil.get(url);
|
|
|
|
|
|
Gson gson = getIntGson();
|
|
|
|
|
|
fromJsonList = gson.fromJson(string, new TypeToken<Map<String, Object>>(){}.getType());
|
|
|
|
|
|
logger.debug("活跃IP1小时"+fromJsonList);
|
|
|
|
|
|
list = gson.fromJson(fromJsonList.get("data").toString(), new TypeToken<List<TrafficIpActiveStatistic>>() {}.getType()) ;
|
2019-01-17 12:43:04 +08:00
|
|
|
|
if(list.size()>0) {
|
|
|
|
|
|
DecimalFormat lf = new DecimalFormat("0");
|
2019-01-22 16:54:11 +08:00
|
|
|
|
DecimalFormat f = new DecimalFormat("0.00");
|
2019-01-17 12:43:04 +08:00
|
|
|
|
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
//两个时间段之间的秒数
|
|
|
|
|
|
double allSeconds = DateUtils.getSecondsOfTwoDate(sdf.parse(beginDate),sdf.parse(endDate));
|
|
|
|
|
|
for(TrafficIpActiveStatistic data:list) {
|
2019-01-23 18:08:09 +08:00
|
|
|
|
data.setAvgByte(f.format(Long.parseLong(data.get_byte())*8/1024/1024/1024/allSeconds));
|
2019-01-18 16:00:18 +08:00
|
|
|
|
data.setAvgPacket(lf.format(Long.parseLong(data.get_packet())/allSeconds));
|
2019-01-17 12:43:04 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2018-12-22 23:11:04 +08:00
|
|
|
|
Collections.sort(list, new Comparator<TrafficIpActiveStatistic>() {
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public int compare(TrafficIpActiveStatistic o1, TrafficIpActiveStatistic o2) {
|
|
|
|
|
|
if(o1==null&&o2!=null){
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
if(o1!=null&&o2==null){
|
|
|
|
|
|
return -1;
|
|
|
|
|
|
}
|
|
|
|
|
|
if(o1==o2&&o1==null){
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
2019-01-04 20:24:49 +08:00
|
|
|
|
Long ob1 = o1.getLinkNum();
|
|
|
|
|
|
Long ob2 = o2.getLinkNum();
|
2018-12-22 23:11:04 +08:00
|
|
|
|
return -(ob1).compareTo(ob2);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
2018-12-17 10:56:03 +08:00
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
logger.error("活跃IP数据获取错误"+e);
|
2019-01-17 12:43:04 +08:00
|
|
|
|
//list.add(Maps.newHashMap("error","request_service_failed"));
|
2018-12-17 10:56:03 +08:00
|
|
|
|
}
|
|
|
|
|
|
return list;
|
|
|
|
|
|
}
|
2018-11-27 13:52:11 +08:00
|
|
|
|
//IP活跃导出
|
|
|
|
|
|
@RequestMapping(value = "export")
|
|
|
|
|
|
public void exportddos(Model model,HttpServletRequest request,HttpServletResponse response,
|
2018-12-18 17:28:58 +06:00
|
|
|
|
@ModelAttribute("entry")TrafficIpActiveStatistic entity,String ids,String beginDate,String endDate,RedirectAttributes redirectAttributes){
|
2018-11-27 13:52:11 +08:00
|
|
|
|
try {
|
|
|
|
|
|
//export data info
|
|
|
|
|
|
List<String> titleList=new ArrayList<String>();
|
|
|
|
|
|
Map<String, Class<?>> classMap=new HashMap<String, Class<?>>();
|
|
|
|
|
|
Map<String, List> dataMap=new HashMap<String, List>();
|
|
|
|
|
|
Map<String, String> noExportMap=new HashMap<String, String>();
|
|
|
|
|
|
Map<String, Object> fromJsonList = new HashMap<String, Object>();
|
|
|
|
|
|
List<TrafficIpActiveStatistic> ipActiveList = new ArrayList<TrafficIpActiveStatistic>();
|
2018-12-18 17:28:58 +06:00
|
|
|
|
String url=Constants.DASHBOARD_URL+Constants.TRAFFIC_IPACTIVE_ONEHOUR;
|
|
|
|
|
|
if(org.apache.commons.lang3.StringUtils.isNotBlank(beginDate)&&org.apache.commons.lang3.StringUtils.isNotBlank(endDate)) {
|
|
|
|
|
|
url=urlAddDate(url, beginDate, endDate);
|
|
|
|
|
|
}
|
|
|
|
|
|
String string = HttpClientUtil.get(url);
|
2018-11-27 13:52:11 +08:00
|
|
|
|
|
|
|
|
|
|
Gson gson = getIntGson();
|
|
|
|
|
|
fromJsonList = gson.fromJson(string, new TypeToken<Map<String, Object>>(){}.getType());
|
|
|
|
|
|
ipActiveList = gson.fromJson(fromJsonList.get("data").toString(), new TypeToken<List<TrafficIpActiveStatistic>>() {}.getType()) ;
|
|
|
|
|
|
|
|
|
|
|
|
titleList.add("traffic_ipactive_hour_max");
|
|
|
|
|
|
classMap.put(null, TrafficIpActiveStatistic.class);
|
|
|
|
|
|
String cfgIndexInfoNoExport=",id,";
|
|
|
|
|
|
noExportMap.put("traffic_ipactive_hour_max",cfgIndexInfoNoExport);
|
|
|
|
|
|
dataMap.put(null, ipActiveList);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 获取国际化配置
|
|
|
|
|
|
Properties msgProp = getMsgProp();
|
|
|
|
|
|
Map<Object, Object> map = new HashMap<Object, Object>();
|
|
|
|
|
|
|
|
|
|
|
|
String fileName = "IP-Active-Hour-Max" + "-" + DateUtils.getDate("yyyyMMddHHmmss")
|
|
|
|
|
|
+ ".xlsx";
|
|
|
|
|
|
new ExportExcel("", TrafficIpActiveStatistic.class, 1).setDataList(msgProp,ipActiveList,new HashMap())
|
|
|
|
|
|
.write(request,response, fileName).dispose();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
logger.error("IPActive export failed",e);
|
|
|
|
|
|
addMessage(redirectAttributes,"error","export_failed");
|
|
|
|
|
|
}
|
|
|
|
|
|
// return "/dashboard/trafficIpActiveList";
|
|
|
|
|
|
}
|
2018-07-11 19:05:08 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 协议统计
|
|
|
|
|
|
*/
|
|
|
|
|
|
@RequestMapping(value="protocol")
|
|
|
|
|
|
@ResponseBody
|
|
|
|
|
|
public List protocolChart(){
|
|
|
|
|
|
Map<String, Object> fromJsonList = new HashMap<String, Object>();
|
|
|
|
|
|
List<Map> list = new ArrayList<Map>();
|
|
|
|
|
|
List<Map> resultList = new ArrayList<Map>();
|
|
|
|
|
|
try {
|
2018-07-13 19:36:37 +08:00
|
|
|
|
String string = HttpClientUtil.get(Constants.DASHBOARD_URL+Constants.TRAFFIC_PROTOCOL);
|
2018-07-11 19:05:08 +08:00
|
|
|
|
Gson gson = new GsonBuilder().create();
|
|
|
|
|
|
fromJsonList = gson.fromJson(string, new TypeToken<Map>(){}.getType());
|
|
|
|
|
|
list = (List<Map>) fromJsonList.get("data");
|
|
|
|
|
|
//标签集合
|
|
|
|
|
|
List<CodeResult> codeList = CodeDicUtils.getCodeList("protocolCode");
|
2018-12-12 11:46:44 +08:00
|
|
|
|
List<CodeResult> appCodeList = CodeDicUtils.getCodeList("appCode");
|
2018-07-11 19:05:08 +08:00
|
|
|
|
//将数字替换为标签文字
|
2018-07-13 19:36:37 +08:00
|
|
|
|
if(list!=null&&!list.isEmpty()){
|
2018-07-11 19:05:08 +08:00
|
|
|
|
for (Map map : list) {
|
2018-12-23 20:58:42 +08:00
|
|
|
|
Double value1 = Double.parseDouble(map.get("protoType").toString().trim());
|
2018-07-11 19:05:08 +08:00
|
|
|
|
for (CodeResult code : codeList) {
|
2018-12-23 20:58:42 +08:00
|
|
|
|
Double value2 = Double.valueOf(code.getCode().trim());
|
2018-07-11 19:05:08 +08:00
|
|
|
|
if(value1.equals(value2)){
|
2018-12-23 20:58:42 +08:00
|
|
|
|
map.put("protoType", code.getItem().trim());
|
2018-07-11 19:05:08 +08:00
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2018-12-12 11:46:44 +08:00
|
|
|
|
// 协议没匹配的匹配app码表
|
|
|
|
|
|
for (CodeResult code : appCodeList) {
|
2018-12-23 20:58:42 +08:00
|
|
|
|
Double value3 = Double.valueOf(code.getCode().trim());
|
2018-12-12 11:46:44 +08:00
|
|
|
|
if(value1.equals(value3)){
|
2018-12-23 20:58:42 +08:00
|
|
|
|
map.put("protoType", code.getItem().trim());
|
2018-12-12 11:46:44 +08:00
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2018-07-11 19:05:08 +08:00
|
|
|
|
resultList.add(map);
|
|
|
|
|
|
}
|
2018-12-10 21:30:58 +08:00
|
|
|
|
logger.debug("协议统计"+fromJsonList);
|
2018-07-11 19:05:08 +08:00
|
|
|
|
return resultList;
|
2018-07-13 19:36:37 +08:00
|
|
|
|
}
|
2018-07-11 19:05:08 +08:00
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
logger.error("协议统计错误"+e);
|
2018-10-12 18:12:24 +08:00
|
|
|
|
resultList.add(Maps.newHashMap("error","request_service_failed"));
|
2018-07-11 19:05:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
return resultList;
|
|
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
|
|
|
* app流量分析
|
|
|
|
|
|
*/
|
|
|
|
|
|
@RequestMapping(value="app")
|
|
|
|
|
|
@ResponseBody
|
|
|
|
|
|
public List appChart(){
|
|
|
|
|
|
Map<String, Object> fromJsonList = new HashMap<String, Object>();
|
|
|
|
|
|
List<Map> list = new ArrayList<Map>();
|
|
|
|
|
|
List<Map> resultList = new ArrayList<Map>();
|
|
|
|
|
|
try {
|
2018-07-13 19:36:37 +08:00
|
|
|
|
String string = HttpClientUtil.get(Constants.DASHBOARD_URL+Constants.TRAFFIC_APP);
|
2018-07-11 19:05:08 +08:00
|
|
|
|
Gson gson = new GsonBuilder().create();
|
|
|
|
|
|
fromJsonList = gson.fromJson(string, new TypeToken<Map>(){}.getType());
|
|
|
|
|
|
list = (List<Map>) fromJsonList.get("data");
|
|
|
|
|
|
//标签集合
|
|
|
|
|
|
List<CodeResult> codeList = CodeDicUtils.getCodeList("appCode");
|
|
|
|
|
|
//将数字替换为标签文字
|
2018-07-13 19:36:37 +08:00
|
|
|
|
if(list!=null&&!list.isEmpty()){
|
2018-07-11 19:05:08 +08:00
|
|
|
|
for (Map map : list) {
|
2018-12-23 20:58:42 +08:00
|
|
|
|
Double value1 = Double.parseDouble(map.get("appType").toString().trim());
|
2018-07-11 19:05:08 +08:00
|
|
|
|
for (CodeResult code : codeList) {
|
2018-12-23 20:58:42 +08:00
|
|
|
|
Double value2 = Double.valueOf(code.getCode().trim());
|
2018-07-11 19:05:08 +08:00
|
|
|
|
if(value1.equals(value2)){
|
2018-12-23 20:58:42 +08:00
|
|
|
|
map.put("appType", code.getItem().trim());
|
2018-07-11 19:05:08 +08:00
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
resultList.add(map);
|
|
|
|
|
|
}
|
2018-12-10 21:30:58 +08:00
|
|
|
|
logger.debug("app流量分析"+fromJsonList);
|
2018-07-11 19:05:08 +08:00
|
|
|
|
return resultList;
|
2018-07-13 19:36:37 +08:00
|
|
|
|
}
|
2018-07-11 19:05:08 +08:00
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
logger.error("app流量分析错误"+e);
|
2018-10-12 18:12:24 +08:00
|
|
|
|
resultList.add(Maps.newHashMap("error","request_service_failed"));
|
2018-07-11 19:05:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
return resultList;
|
|
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 终端用户-操作系统列表
|
|
|
|
|
|
*/
|
|
|
|
|
|
@RequestMapping(value="osList")
|
|
|
|
|
|
@ResponseBody
|
|
|
|
|
|
public List osList(){
|
|
|
|
|
|
Map<String, Object> fromJsonList = new HashMap<String, Object>();
|
|
|
|
|
|
List<Map> list = new ArrayList<Map>();
|
|
|
|
|
|
List<Map> resultList = new ArrayList<Map>();
|
|
|
|
|
|
try {
|
2018-07-13 19:36:37 +08:00
|
|
|
|
String string = HttpClientUtil.get(Constants.DASHBOARD_URL+Constants.TRAFFIC_OSLIST);
|
2018-07-11 19:05:08 +08:00
|
|
|
|
Gson gson = new GsonBuilder().create();
|
|
|
|
|
|
fromJsonList = gson.fromJson(string, new TypeToken<Map>(){}.getType());
|
|
|
|
|
|
list = (List<Map>) fromJsonList.get("data");
|
|
|
|
|
|
//标签集合
|
|
|
|
|
|
List<CodeResult> codeList = CodeDicUtils.getCodeList("osCode");
|
|
|
|
|
|
//将数字替换为标签文字
|
2018-07-13 19:36:37 +08:00
|
|
|
|
if(list!=null&&!list.isEmpty()){
|
2018-07-11 19:05:08 +08:00
|
|
|
|
for (Map map : list) {
|
2018-12-23 20:58:42 +08:00
|
|
|
|
Double value1 = Double.parseDouble(map.get("osType").toString().trim());
|
2018-07-11 19:05:08 +08:00
|
|
|
|
for (CodeResult code : codeList) {
|
2018-12-23 20:58:42 +08:00
|
|
|
|
Double value2 = Double.valueOf(code.getCode().trim());
|
2018-07-11 19:05:08 +08:00
|
|
|
|
if(value1.equals(value2)){
|
2018-12-23 20:58:42 +08:00
|
|
|
|
map.put("osType", code.getItem().trim());
|
2018-07-11 19:05:08 +08:00
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
resultList.add(map);
|
|
|
|
|
|
}
|
2018-12-10 21:30:58 +08:00
|
|
|
|
logger.debug("终端用户-获取操作系统列表"+fromJsonList);
|
2018-07-11 19:05:08 +08:00
|
|
|
|
return resultList;
|
2018-07-13 19:36:37 +08:00
|
|
|
|
}
|
2018-07-11 19:05:08 +08:00
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
logger.error("终端用户-获取操作系统列表错误"+e);
|
2018-10-12 18:12:24 +08:00
|
|
|
|
resultList.add(Maps.newHashMap("error","request_service_failed"));
|
2018-07-11 19:05:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
return resultList;
|
|
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 终端用户-指定操作系统下浏览器分类流量统计
|
|
|
|
|
|
*/
|
|
|
|
|
|
@RequestMapping(value="browserChart")
|
|
|
|
|
|
@ResponseBody
|
|
|
|
|
|
public List browserChart(@RequestParam("osType") String osType){
|
|
|
|
|
|
Map<String, Object> fromJsonList = new HashMap<String, Object>();
|
|
|
|
|
|
List<Map> list = new ArrayList<Map>();
|
|
|
|
|
|
List<Map> resultList = new ArrayList<Map>();
|
|
|
|
|
|
//标签集合
|
|
|
|
|
|
List<CodeResult> codeList1 = CodeDicUtils.getCodeList("osCode");
|
|
|
|
|
|
//将标签文字转为数字
|
|
|
|
|
|
Integer os=null;
|
|
|
|
|
|
for (CodeResult codeResult : codeList1) {
|
2018-12-23 20:58:42 +08:00
|
|
|
|
if(osType.equalsIgnoreCase(codeResult.getItem().trim())){
|
|
|
|
|
|
os=Integer.parseInt(codeResult.getCode().trim());
|
2018-07-11 19:05:08 +08:00
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2018-07-13 19:36:37 +08:00
|
|
|
|
if(os==null){
|
|
|
|
|
|
os=Integer.parseInt(osType);//处理为匹配项编码
|
|
|
|
|
|
}
|
2018-07-11 19:05:08 +08:00
|
|
|
|
try {
|
2018-07-13 19:36:37 +08:00
|
|
|
|
String string = HttpClientUtil.get(Constants.DASHBOARD_URL+Constants.TRAFFIC_BROWSER_CHART+"?osType="+os);
|
2018-07-11 19:05:08 +08:00
|
|
|
|
Gson gson = new GsonBuilder().create();
|
|
|
|
|
|
fromJsonList = gson.fromJson(string, new TypeToken<Map>(){}.getType());
|
|
|
|
|
|
list = (List<Map>) fromJsonList.get("data");
|
|
|
|
|
|
//标签集合
|
|
|
|
|
|
List<CodeResult> codeList2 = CodeDicUtils.getCodeList("browserCode");
|
|
|
|
|
|
//将数字替换为标签文字
|
|
|
|
|
|
if(null!=list&&!list.isEmpty()){
|
|
|
|
|
|
for (Map map : list) {
|
2018-12-23 20:58:42 +08:00
|
|
|
|
Double value1 = Double.parseDouble(map.get("bsType").toString().trim());
|
2018-07-11 19:05:08 +08:00
|
|
|
|
for (CodeResult code : codeList2) {
|
2018-12-23 20:58:42 +08:00
|
|
|
|
Double value2 = Double.valueOf(code.getCode().trim());
|
2018-07-11 19:05:08 +08:00
|
|
|
|
if(value1.equals(value2)){
|
2018-12-23 20:58:42 +08:00
|
|
|
|
map.put("bsType", code.getItem().trim());
|
2018-07-11 19:05:08 +08:00
|
|
|
|
break;
|
|
|
|
|
|
}
|
2018-11-14 16:41:53 +08:00
|
|
|
|
//10个域名之外的为others 设为-1外
|
|
|
|
|
|
if(map.get("bsType").toString().equals("-1")){
|
|
|
|
|
|
map.put("bsType", "Others");
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
2018-07-11 19:05:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
resultList.add(map);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2018-12-10 21:30:58 +08:00
|
|
|
|
logger.debug("终端用户-获取操作系统下浏览器类型"+fromJsonList);
|
2018-07-11 19:05:08 +08:00
|
|
|
|
return resultList;
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
logger.error("终端用户-获取操作系统下浏览器类型错误"+e);
|
2018-10-12 18:12:24 +08:00
|
|
|
|
resultList.add(Maps.newHashMap("error","request_service_failed"));
|
2018-07-11 19:05:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
return resultList;
|
|
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 终端用户-浏览器列表
|
|
|
|
|
|
*/
|
|
|
|
|
|
@RequestMapping(value="bsList")
|
|
|
|
|
|
@ResponseBody
|
|
|
|
|
|
public List bsList(){
|
|
|
|
|
|
Map<String, Object> fromJsonList = new HashMap<String, Object>();
|
|
|
|
|
|
List<Map> list = new ArrayList<Map>();
|
|
|
|
|
|
List<Map> resultList = new ArrayList<Map>();
|
|
|
|
|
|
try {
|
2018-07-13 19:36:37 +08:00
|
|
|
|
String string = HttpClientUtil.get(Constants.DASHBOARD_URL+Constants.TRAFFIC_BSLISTL);
|
2018-07-11 19:05:08 +08:00
|
|
|
|
Gson gson = new GsonBuilder().create();
|
|
|
|
|
|
fromJsonList = gson.fromJson(string, new TypeToken<Map>(){}.getType());
|
|
|
|
|
|
list = (List<Map>) fromJsonList.get("data");
|
|
|
|
|
|
//标签集合
|
|
|
|
|
|
List<CodeResult> codeList = CodeDicUtils.getCodeList("browserCode");
|
|
|
|
|
|
//将数字替换为标签文字
|
2018-07-13 19:36:37 +08:00
|
|
|
|
if(list!=null&&!list.isEmpty()){
|
2018-07-11 19:05:08 +08:00
|
|
|
|
for (Map map : list) {
|
2018-12-23 20:58:42 +08:00
|
|
|
|
Double value1 = Double.parseDouble(map.get("bsType").toString().trim());
|
2018-07-11 19:05:08 +08:00
|
|
|
|
for (CodeResult code : codeList) {
|
2018-12-23 20:58:42 +08:00
|
|
|
|
Double value2 = Double.valueOf(code.getCode().trim());
|
2018-07-11 19:05:08 +08:00
|
|
|
|
if(value1.equals(value2)){
|
2018-12-23 20:58:42 +08:00
|
|
|
|
map.put("bsType", code.getItem().trim());
|
2018-07-11 19:05:08 +08:00
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
resultList.add(map);
|
2018-07-13 19:36:37 +08:00
|
|
|
|
}
|
2018-07-11 19:05:08 +08:00
|
|
|
|
}
|
2018-12-10 21:30:58 +08:00
|
|
|
|
logger.debug("终端用户-获取浏览器列表"+fromJsonList);
|
2018-07-11 19:05:08 +08:00
|
|
|
|
return resultList;
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
logger.error("终端用户-获取浏览器列表错误"+e);
|
2018-10-12 18:12:24 +08:00
|
|
|
|
resultList.add(Maps.newHashMap("error","request_service_failed"));
|
2018-07-11 19:05:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
return resultList;
|
|
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 终端用户-指定操作系统下浏览器分类流量统计
|
|
|
|
|
|
*/
|
|
|
|
|
|
@RequestMapping(value="systemChart")
|
|
|
|
|
|
@ResponseBody
|
|
|
|
|
|
public List systemChart(@RequestParam("bsType") String bsType){
|
|
|
|
|
|
Map<String, Object> fromJsonList = new HashMap<String, Object>();
|
|
|
|
|
|
List<Map> list = new ArrayList<Map>();
|
|
|
|
|
|
List<Map> resultList = new ArrayList<Map>();
|
|
|
|
|
|
//标签集合
|
2018-07-13 19:36:37 +08:00
|
|
|
|
List<CodeResult> codeList1 = CodeDicUtils.getCodeList("browserCode");
|
2018-07-11 19:05:08 +08:00
|
|
|
|
//将标签文字转为数字
|
|
|
|
|
|
Integer bs=null;
|
|
|
|
|
|
for (CodeResult codeResult : codeList1) {
|
2018-12-23 20:58:42 +08:00
|
|
|
|
if(bsType.equalsIgnoreCase(codeResult.getItem().trim())){
|
|
|
|
|
|
bs=Integer.parseInt(codeResult.getCode().trim());
|
2018-07-11 19:05:08 +08:00
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2018-07-13 19:36:37 +08:00
|
|
|
|
if(bs==null){
|
2018-12-23 20:58:42 +08:00
|
|
|
|
bs=Integer.parseInt(bsType.trim());//处理为匹配项编码
|
2018-07-13 19:36:37 +08:00
|
|
|
|
}
|
2018-07-11 19:05:08 +08:00
|
|
|
|
try {
|
2018-07-17 09:13:19 +08:00
|
|
|
|
String string = HttpClientUtil.get(Constants.DASHBOARD_URL+Constants.TRAFFIC_SYSTEM_CHART+"?bsType="+bs);
|
2018-07-11 19:05:08 +08:00
|
|
|
|
Gson gson = new GsonBuilder().create();
|
|
|
|
|
|
fromJsonList = gson.fromJson(string, new TypeToken<Map>(){}.getType());
|
|
|
|
|
|
list = (List<Map>) fromJsonList.get("data");
|
|
|
|
|
|
//标签集合
|
|
|
|
|
|
List<CodeResult> codeList2 = CodeDicUtils.getCodeList("osCode");
|
|
|
|
|
|
//将数字替换为标签文字
|
|
|
|
|
|
if(null!=list&&!list.isEmpty()){
|
|
|
|
|
|
for (Map map : list) {
|
2018-12-23 20:58:42 +08:00
|
|
|
|
Double value1 = Double.parseDouble(map.get("osType").toString().trim());
|
2018-07-11 19:05:08 +08:00
|
|
|
|
for (CodeResult code : codeList2) {
|
2018-12-23 20:58:42 +08:00
|
|
|
|
Double value2 = Double.valueOf(code.getCode().trim());
|
2018-11-14 16:41:53 +08:00
|
|
|
|
//10个域名之外的为others webId设为-1外
|
|
|
|
|
|
if(map.get("osType").toString().equals("-1")){
|
|
|
|
|
|
map.put("osType", "Others");
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
2018-07-11 19:05:08 +08:00
|
|
|
|
if(value1.equals(value2)){
|
2018-12-23 20:58:42 +08:00
|
|
|
|
map.put("osType", code.getItem().trim());
|
2018-07-11 19:05:08 +08:00
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
resultList.add(map);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2018-12-10 21:30:58 +08:00
|
|
|
|
logger.debug("终端用户-获取浏览器下操作系统类型"+fromJsonList);
|
2018-07-11 19:05:08 +08:00
|
|
|
|
return resultList;
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
logger.error("终端用户-获取浏览器下操作系统类型错误"+e);
|
2018-10-12 18:12:24 +08:00
|
|
|
|
resultList.add(Maps.newHashMap("error","request_service_failed"));
|
2018-07-11 19:05:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
return resultList;
|
|
|
|
|
|
}
|
2018-07-13 19:36:37 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* http网站统计
|
|
|
|
|
|
*/
|
|
|
|
|
|
@RequestMapping(value="websiteList")
|
|
|
|
|
|
@ResponseBody
|
|
|
|
|
|
public List websiteList(){
|
|
|
|
|
|
Map<String, Object> fromJsonList = new HashMap<String, Object>();
|
|
|
|
|
|
List<Map> list = new ArrayList<Map>();
|
|
|
|
|
|
List<Map> resultList = new ArrayList<Map>();
|
|
|
|
|
|
try {
|
|
|
|
|
|
String string = HttpClientUtil.get(Constants.DASHBOARD_URL+Constants.TRAFFIC_WEBSITELIST);
|
|
|
|
|
|
Gson gson = new GsonBuilder().create();
|
|
|
|
|
|
fromJsonList = gson.fromJson(string, new TypeToken<Map>(){}.getType());
|
|
|
|
|
|
list = (List<Map>) fromJsonList.get("data");
|
|
|
|
|
|
//标签集合
|
2018-09-21 20:34:48 +08:00
|
|
|
|
// List<CodeResult> codeList = CodeDicUtils.getCodeList("webCode");
|
2018-12-17 10:56:03 +08:00
|
|
|
|
List<SysDataDictionaryItem> codeList = DictUtils.getDictList("WEBSITE_SERVER");//网站名
|
2018-07-13 19:36:37 +08:00
|
|
|
|
//将数字替换为标签文字
|
|
|
|
|
|
if(list!=null&&!list.isEmpty()){
|
|
|
|
|
|
for (Map map : list) {
|
2018-09-21 20:34:48 +08:00
|
|
|
|
Double value1=0d;
|
2018-12-23 20:58:42 +08:00
|
|
|
|
if(StringUtil.isBlank(map.get("websiteServiceId").toString().trim())){
|
2018-09-21 20:34:48 +08:00
|
|
|
|
value1=268435455d;
|
|
|
|
|
|
}else{
|
2018-12-23 20:58:42 +08:00
|
|
|
|
value1 = Double.parseDouble(map.get("websiteServiceId").toString().trim());
|
2018-09-21 20:34:48 +08:00
|
|
|
|
}
|
|
|
|
|
|
for (SysDataDictionaryItem code : codeList) {
|
2018-12-23 20:58:42 +08:00
|
|
|
|
Double value2 = Double.valueOf(code.getItemCode().trim());
|
2018-07-13 19:36:37 +08:00
|
|
|
|
if(value1.equals(value2)){
|
2018-12-23 20:58:42 +08:00
|
|
|
|
map.put("websiteService", code.getItemValue().trim());
|
2018-07-13 19:36:37 +08:00
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
resultList.add(map);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2018-12-10 21:30:58 +08:00
|
|
|
|
logger.debug("http网站流量分析数据:"+fromJsonList);
|
2018-07-13 19:36:37 +08:00
|
|
|
|
return resultList;
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
logger.error("http网站流量分析数据错误:"+e);
|
2018-10-12 18:12:24 +08:00
|
|
|
|
resultList.add(Maps.newHashMap("error","request_service_failed"));
|
2018-07-13 19:36:37 +08:00
|
|
|
|
}
|
|
|
|
|
|
return resultList;
|
|
|
|
|
|
}
|
|
|
|
|
|
/**
|
2018-09-21 20:34:48 +08:00
|
|
|
|
* http网站-某个网站的子域名统计
|
2018-07-13 19:36:37 +08:00
|
|
|
|
*/
|
|
|
|
|
|
@RequestMapping(value="webTypeChart")
|
|
|
|
|
|
@ResponseBody
|
2018-09-21 20:34:48 +08:00
|
|
|
|
public List webTypeChart(@RequestParam("websiteServiceId") String websiteServiceId){
|
2018-07-13 19:36:37 +08:00
|
|
|
|
Map<String, Object> fromJsonList = new HashMap<String, Object>();
|
|
|
|
|
|
List<Map> list = new ArrayList<Map>();
|
|
|
|
|
|
List<Map> resultList = new ArrayList<Map>();
|
2018-09-21 20:34:48 +08:00
|
|
|
|
try {
|
|
|
|
|
|
String string = HttpClientUtil.get(Constants.DASHBOARD_URL+Constants.TRAFFIC_WEBTYPECHART+"?websiteServiceId="+websiteServiceId);
|
|
|
|
|
|
Gson gson = new GsonBuilder().create();
|
|
|
|
|
|
fromJsonList = gson.fromJson(string, new TypeToken<Map>(){}.getType());
|
|
|
|
|
|
list = (List<Map>) fromJsonList.get("data");
|
|
|
|
|
|
//标签集合
|
|
|
|
|
|
// List<CodeResult> codeList2 = CodeDicUtils.getCodeList("webCode");//网站子域名表获取域名domain
|
2018-12-17 10:56:03 +08:00
|
|
|
|
List<WebsiteDomainTopic> domainList = appCfgService.getDomainDict(new WebsiteDomainTopic());// domain 域名
|
2018-09-21 20:34:48 +08:00
|
|
|
|
if(list!=null&&list.size()>0&&domainList!=null&&domainList.size()>0){
|
|
|
|
|
|
for (Map dataMap : list) {
|
|
|
|
|
|
for (WebsiteDomainTopic wdt : domainList) {
|
|
|
|
|
|
// Map<String, Object> map = Maps.newHashMap();
|
|
|
|
|
|
if(wdt!=null){
|
|
|
|
|
|
String domain = wdt.getDomain();
|
|
|
|
|
|
Double domainId = wdt.getId().doubleValue();
|
2018-12-23 20:58:42 +08:00
|
|
|
|
Double webId = Double.parseDouble(dataMap.get("webId").toString().trim());
|
2018-12-18 03:59:34 +08:00
|
|
|
|
//10个域名之外的为others webId设为-1外
|
2018-09-21 20:34:48 +08:00
|
|
|
|
if(dataMap.get("webId").toString().equals("-1")){
|
|
|
|
|
|
dataMap.put("domain", "Others");
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
if(domainId.equals(webId)){
|
|
|
|
|
|
dataMap.put("domain", domain);
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
resultList.add(dataMap);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
2018-07-13 19:36:37 +08:00
|
|
|
|
}
|
2018-09-21 20:34:48 +08:00
|
|
|
|
|
2018-12-10 21:30:58 +08:00
|
|
|
|
logger.debug("http某个网站子域名流量统计"+fromJsonList);
|
2018-09-21 20:34:48 +08:00
|
|
|
|
return resultList;
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
logger.error("http某个网站子域名流量统计错误"+e);
|
2018-10-12 18:12:24 +08:00
|
|
|
|
resultList.add(Maps.newHashMap("error","request_service_failed"));
|
2018-07-13 19:36:37 +08:00
|
|
|
|
}
|
2018-09-21 20:34:48 +08:00
|
|
|
|
return resultList;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* http网站主题跟域名统计
|
|
|
|
|
|
*/
|
|
|
|
|
|
@RequestMapping(value="topicAndDomainList")
|
|
|
|
|
|
@ResponseBody
|
|
|
|
|
|
public List topicAndDomainList(){
|
|
|
|
|
|
Map<String, Object> fromJsonList = new HashMap<String, Object>();
|
|
|
|
|
|
List<Map> list = new ArrayList<Map>();
|
|
|
|
|
|
List<Map> resultList = new ArrayList<Map>();
|
2018-07-13 19:36:37 +08:00
|
|
|
|
try {
|
2018-09-21 20:34:48 +08:00
|
|
|
|
String string = HttpClientUtil.get(Constants.DASHBOARD_URL+Constants.TRAFFIC_TOPIC_AND_DOMAIN_CHART);
|
2018-07-13 19:36:37 +08:00
|
|
|
|
Gson gson = new GsonBuilder().create();
|
|
|
|
|
|
fromJsonList = gson.fromJson(string, new TypeToken<Map>(){}.getType());
|
|
|
|
|
|
list = (List<Map>) fromJsonList.get("data");
|
2018-09-21 20:34:48 +08:00
|
|
|
|
List<SysDataDictionaryItem> codeList = DictUtils.getDictList("TOPIC");
|
2018-07-13 19:36:37 +08:00
|
|
|
|
//将数字替换为标签文字
|
2018-09-21 20:34:48 +08:00
|
|
|
|
List<WebsiteDomainTopic> domainList = appCfgService.getDomainDict(new WebsiteDomainTopic());
|
|
|
|
|
|
if(list!=null&&!list.isEmpty()){
|
2018-07-13 19:36:37 +08:00
|
|
|
|
for (Map map : list) {
|
2018-09-21 20:34:48 +08:00
|
|
|
|
Double value1=0d;
|
|
|
|
|
|
if(StringUtil.isBlank(map.get("topicId").toString())){
|
|
|
|
|
|
value1=268435455d;
|
|
|
|
|
|
}else{
|
2018-12-23 20:58:42 +08:00
|
|
|
|
value1 = Double.parseDouble(map.get("topicId").toString().trim());
|
2018-09-21 20:34:48 +08:00
|
|
|
|
}
|
|
|
|
|
|
for (SysDataDictionaryItem code : codeList) {
|
2018-12-23 20:58:42 +08:00
|
|
|
|
Double value2 = Double.valueOf(code.getItemCode().trim());
|
2018-07-13 19:36:37 +08:00
|
|
|
|
if(value1.equals(value2)){
|
2018-12-23 20:58:42 +08:00
|
|
|
|
map.put("topic", code.getItemValue().trim());
|
2018-07-13 19:36:37 +08:00
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2018-09-21 20:34:48 +08:00
|
|
|
|
//将domain添加名称
|
|
|
|
|
|
List<Map> dataDomainList = (List<Map>)map.get("domainData");
|
|
|
|
|
|
if(dataDomainList!=null&&dataDomainList.size()>0&&domainList!=null&&domainList.size()>0){
|
|
|
|
|
|
for (WebsiteDomainTopic wdt : domainList) {
|
|
|
|
|
|
for (Map dataMap : dataDomainList) {
|
|
|
|
|
|
if(wdt!=null){
|
|
|
|
|
|
String domain = wdt.getDomain();
|
|
|
|
|
|
Double domainId = wdt.getId().doubleValue();
|
2018-12-23 20:58:42 +08:00
|
|
|
|
Double webId = Double.parseDouble(dataMap.get("webId").toString().trim());
|
2018-09-21 20:34:48 +08:00
|
|
|
|
//10个域名之外的为others webId设为-1
|
|
|
|
|
|
// if(dataMap.get("webId").toString().equals("-1")){
|
|
|
|
|
|
// dataMap.put("domain", "Others");
|
|
|
|
|
|
// break;
|
|
|
|
|
|
// }
|
|
|
|
|
|
if(domainId.equals(webId)){
|
|
|
|
|
|
dataMap.put("domain", domain);
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2018-07-13 19:36:37 +08:00
|
|
|
|
resultList.add(map);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2018-12-10 21:30:58 +08:00
|
|
|
|
logger.debug("http网站主题流量分析数据:"+fromJsonList);
|
2018-07-13 19:36:37 +08:00
|
|
|
|
return resultList;
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
e.printStackTrace();
|
2018-09-21 20:34:48 +08:00
|
|
|
|
logger.error("http网站主题流量分析数据错误:"+e);
|
2018-10-12 18:12:24 +08:00
|
|
|
|
resultList.add(Maps.newHashMap("error","request_service_failed"));
|
2018-07-13 19:36:37 +08:00
|
|
|
|
}
|
|
|
|
|
|
return resultList;
|
|
|
|
|
|
}
|
2018-12-17 10:56:03 +08:00
|
|
|
|
/**
|
|
|
|
|
|
*
|
|
|
|
|
|
*
|
|
|
|
|
|
* url路径时间参数格式化
|
|
|
|
|
|
* @param url
|
|
|
|
|
|
* @param beginDate
|
|
|
|
|
|
* @param endDate
|
|
|
|
|
|
* @return
|
|
|
|
|
|
* @throws URISyntaxException
|
|
|
|
|
|
*/
|
|
|
|
|
|
public String urlAddDate(String url,String beginDate,String endDate) throws URISyntaxException{
|
|
|
|
|
|
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("beginDate",beginDate);
|
|
|
|
|
|
uriBuilder.addParameter("endDate",endDate);
|
|
|
|
|
|
return uriBuilder.toString();
|
|
|
|
|
|
}
|
2018-12-17 14:25:15 +08:00
|
|
|
|
|
|
|
|
|
|
@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";
|
|
|
|
|
|
}
|
2018-07-11 19:05:08 +08:00
|
|
|
|
}
|