实时报表 用户行为统计导出功能
This commit is contained in:
@@ -1,27 +1,29 @@
|
||||
package com.nis.domain.dashboard;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude.Include;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import com.nis.util.excel.ExcelField;
|
||||
import com.wordnik.swagger.annotations.ApiModelProperty;
|
||||
|
||||
public class NtcRadiusReport implements Serializable{
|
||||
|
||||
private static final long serialVersionUID = 7635016645942704971L;
|
||||
@JsonInclude(value = Include.NON_NULL)
|
||||
@ApiModelProperty(value = "接入IP", required = true)
|
||||
public class NtcRadiusReport {
|
||||
|
||||
// @JsonInclude(value = Include.NON_NULL)
|
||||
// @ApiModelProperty(value = "接入IP", required = true)
|
||||
@ExcelField(title = "ip_address_control", sort = 2)
|
||||
protected String nasIp;
|
||||
@JsonInclude(value = Include.NON_NULL)
|
||||
@ApiModelProperty(value = "用户名", required = true)
|
||||
// @JsonInclude(value = Include.NON_NULL)
|
||||
// @ApiModelProperty(value = "用户名", required = true)
|
||||
@ExcelField(title = "account", sort = 1)
|
||||
protected String account;
|
||||
@JsonInclude(value = Include.NON_NULL)
|
||||
@ApiModelProperty(value = "次数", required = true)
|
||||
// @JsonInclude(value = Include.NON_NULL)
|
||||
// @ApiModelProperty(value = "次数", required = true)
|
||||
@ExcelField(title = "visits", sort = 3)
|
||||
protected Long num;
|
||||
@JsonInclude(value = Include.NON_NULL)
|
||||
@ApiModelProperty(value = "统计时间", required = true)
|
||||
// @JsonInclude(value = Include.NON_NULL)
|
||||
// @ApiModelProperty(value = "统计时间", required = true)
|
||||
@ExcelField(title = "stat_time", sort = 4)
|
||||
protected String reportTime;
|
||||
|
||||
/**
|
||||
@@ -67,6 +69,16 @@ public class NtcRadiusReport implements Serializable{
|
||||
return reportTime;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "NtcRadiusReport [nasIp=" + nasIp + ", account=" + account + ", num=" + num + ", reportTime="
|
||||
+ reportTime + ", searchBusinessType=" + searchBusinessType + ", searchFoundStartTime="
|
||||
+ searchFoundStartTime + ", searchFoundEndTime=" + searchFoundEndTime
|
||||
+ ", searchReportStartTimeCluster=" + searchReportStartTimeCluster + ", searchReportEndTimeCluster="
|
||||
+ searchReportEndTimeCluster + ", searchNasIp=" + searchNasIp + ", searchAccount=" + searchAccount
|
||||
+ ", groupType=" + groupType + "]";
|
||||
}
|
||||
|
||||
public void setReportTime(String reportTime) {
|
||||
this.reportTime = reportTime;
|
||||
}
|
||||
@@ -74,11 +86,11 @@ public class NtcRadiusReport implements Serializable{
|
||||
public String getSearchBusinessType() {
|
||||
return searchBusinessType;
|
||||
}
|
||||
@JsonIgnore
|
||||
|
||||
public void setSearchBusinessType(String searchBusinessType) {
|
||||
this.searchBusinessType = searchBusinessType;
|
||||
}
|
||||
@JsonIgnore
|
||||
|
||||
public String getSearchFoundStartTime() {
|
||||
return searchFoundStartTime;
|
||||
}
|
||||
@@ -86,7 +98,7 @@ public class NtcRadiusReport implements Serializable{
|
||||
public void setSearchFoundStartTime(String searchFoundStartTime) {
|
||||
this.searchFoundStartTime = searchFoundStartTime;
|
||||
}
|
||||
@JsonIgnore
|
||||
|
||||
public String getSearchFoundEndTime() {
|
||||
return searchFoundEndTime;
|
||||
}
|
||||
@@ -95,16 +107,14 @@ public class NtcRadiusReport implements Serializable{
|
||||
this.searchFoundEndTime = searchFoundEndTime;
|
||||
}
|
||||
|
||||
@JsonIgnore
|
||||
public Long getSearchReportStartTimeCluster() {
|
||||
return searchReportStartTimeCluster;
|
||||
}
|
||||
|
||||
public void setSearchReportStartTimeCluster(
|
||||
Long searchReportStartTimeCluster) {
|
||||
public void setSearchReportStartTimeCluster(Long searchReportStartTimeCluster) {
|
||||
this.searchReportStartTimeCluster = searchReportStartTimeCluster;
|
||||
}
|
||||
@JsonIgnore
|
||||
|
||||
public Long getSearchReportEndTimeCluster() {
|
||||
return searchReportEndTimeCluster;
|
||||
}
|
||||
@@ -112,7 +122,7 @@ public class NtcRadiusReport implements Serializable{
|
||||
public void setSearchReportEndTimeCluster(Long searchReportEndTimeCluster) {
|
||||
this.searchReportEndTimeCluster = searchReportEndTimeCluster;
|
||||
}
|
||||
@JsonIgnore
|
||||
|
||||
public String getSearchNasIp() {
|
||||
return searchNasIp;
|
||||
}
|
||||
@@ -120,7 +130,7 @@ public class NtcRadiusReport implements Serializable{
|
||||
public void setSearchNasIp(String searchNasIp) {
|
||||
this.searchNasIp = searchNasIp;
|
||||
}
|
||||
@JsonIgnore
|
||||
|
||||
public String getSearchAccount() {
|
||||
return searchAccount;
|
||||
}
|
||||
@@ -128,11 +138,11 @@ public class NtcRadiusReport implements Serializable{
|
||||
public void setSearchAccount(String searchAccount) {
|
||||
this.searchAccount = searchAccount;
|
||||
}
|
||||
@JsonIgnore
|
||||
|
||||
public String getGroupType() {
|
||||
return groupType;
|
||||
}
|
||||
|
||||
|
||||
public void setGroupType(String groupType) {
|
||||
this.groupType = groupType;
|
||||
}
|
||||
|
||||
@@ -6,13 +6,16 @@ import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.Random;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||
@@ -23,20 +26,30 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.nis.domain.Page;
|
||||
import com.nis.domain.PageLog;
|
||||
import com.nis.domain.SysUser;
|
||||
import com.nis.domain.dashboard.NtcRadiusReport;
|
||||
import com.nis.domain.log.BaseLogEntity;
|
||||
import com.nis.domain.maat.LogRecvData;
|
||||
import com.nis.domain.report.NtcAsnRecord;
|
||||
import com.nis.domain.report.NtcIpRangeReport;
|
||||
import com.nis.util.Constants;
|
||||
import com.nis.util.DateUtils;
|
||||
import com.nis.util.StringUtil;
|
||||
import com.nis.util.httpclient.HttpClientUtil;
|
||||
import com.nis.web.controller.BaseController;
|
||||
import com.nis.web.security.UserUtils;
|
||||
|
||||
@Controller
|
||||
import net.sf.json.JSONObject;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("${adminPath}/traffic")
|
||||
public class TrafficStatisticsReportController extends BaseController {
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 用户行为查询
|
||||
*
|
||||
* @param bean
|
||||
* @param model
|
||||
* @param request
|
||||
@@ -44,140 +57,382 @@ public class TrafficStatisticsReportController extends BaseController {
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("userBehavior")
|
||||
public String list(@ModelAttribute("log") NtcRadiusReport bean,Model model, HttpServletRequest request, HttpServletResponse response,RedirectAttributes redirectAttributes) {
|
||||
public String list(@ModelAttribute("log") NtcRadiusReport bean, Model model, HttpServletRequest request,
|
||||
HttpServletResponse response, RedirectAttributes redirectAttributes) {
|
||||
Map<String, Object> fromJsonList = new HashMap<String, Object>();
|
||||
Map<String, Object> userJsonList = new HashMap<String, Object>();
|
||||
Map<String, Object> ipJsonList = new HashMap<String, Object>();
|
||||
String searchBusinessType = bean.getSearchBusinessType();
|
||||
if("2".endsWith(searchBusinessType)) {
|
||||
if ("2".endsWith(searchBusinessType)) {
|
||||
model.addAttribute("searchBusinessType", 2);// 用户查询
|
||||
}
|
||||
if("3".endsWith(searchBusinessType)) {
|
||||
if ("3".endsWith(searchBusinessType)) {
|
||||
model.addAttribute("searchBusinessType", 3);// IP查询
|
||||
}
|
||||
String url = Constants.DASHBOARD_URL+Constants.NTC_RADIUS_REPORT;
|
||||
String url = Constants.DASHBOARD_URL + Constants.NTC_RADIUS_REPORT;
|
||||
String statTime = bean.getSearchFoundStartTime();
|
||||
String endTime = bean.getSearchFoundEndTime();
|
||||
String account = bean.getAccount();
|
||||
String nasIp = bean.getNasIp();
|
||||
String destUrl = url+ "?searchBusinessType=1";
|
||||
String userUrl = url+ "?searchBusinessType=2";
|
||||
String ipUrl =url + "?searchBusinessType=3";
|
||||
String destUrl = url + "?searchBusinessType=1";
|
||||
String userUrl = url + "?searchBusinessType=2";
|
||||
String ipUrl = url + "?searchBusinessType=3";
|
||||
List list = new ArrayList();
|
||||
List userList = new ArrayList();
|
||||
List ipList = new ArrayList();
|
||||
try {
|
||||
if(StringUtil.isBlank(statTime)&&StringUtil.isBlank(endTime)) {
|
||||
if (StringUtil.isBlank(statTime) && StringUtil.isBlank(endTime)) {
|
||||
// 设置默认时间为1小时
|
||||
// statTime=DateUtils.getDate()+" 00:00:00"; // 默认今天
|
||||
// endTime=DateUtils.getDateTime();
|
||||
|
||||
Calendar cal = Calendar. getInstance ();
|
||||
// statTime=DateUtils.getDate()+" 00:00:00"; // 默认今天
|
||||
// endTime=DateUtils.getDateTime();
|
||||
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.setTime(new Date());
|
||||
endTime = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ).format(cal.getTime());//获取到完整的时间
|
||||
cal.set(Calendar.HOUR_OF_DAY, cal.get(Calendar.HOUR_OF_DAY) - 1);
|
||||
statTime = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ).format(cal.getTime());
|
||||
endTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(cal.getTime());// 获取到完整的时间
|
||||
cal.set(Calendar.HOUR_OF_DAY, cal.get(Calendar.HOUR_OF_DAY) - 1);
|
||||
statTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(cal.getTime());
|
||||
bean.setSearchFoundStartTime(statTime);
|
||||
bean.setSearchFoundEndTime(endTime);
|
||||
statTime=URLEncoder.encode(statTime, "UTF-8");
|
||||
endTime=URLEncoder.encode(endTime, "UTF-8");
|
||||
String paramUrl="&searchReportStartTime="+statTime+"&searchReportEndTime="+endTime;
|
||||
destUrl=destUrl+paramUrl;
|
||||
userUrl=userUrl+paramUrl;
|
||||
ipUrl=ipUrl+paramUrl;
|
||||
}else {
|
||||
statTime=URLEncoder.encode(statTime, "UTF-8");
|
||||
endTime=URLEncoder.encode(endTime, "UTF-8");
|
||||
String paramUrl="&searchReportStartTime="+statTime+"&searchReportEndTime="+endTime;
|
||||
destUrl=destUrl+paramUrl;
|
||||
userUrl=userUrl+paramUrl;
|
||||
ipUrl=ipUrl+paramUrl;
|
||||
statTime = URLEncoder.encode(statTime, "UTF-8");
|
||||
endTime = URLEncoder.encode(endTime, "UTF-8");
|
||||
String paramUrl = "&searchReportStartTime=" + statTime + "&searchReportEndTime=" + endTime;
|
||||
destUrl = destUrl + paramUrl;
|
||||
userUrl = userUrl + paramUrl;
|
||||
ipUrl = ipUrl + paramUrl;
|
||||
} else {
|
||||
statTime = URLEncoder.encode(statTime, "UTF-8");
|
||||
endTime = URLEncoder.encode(endTime, "UTF-8");
|
||||
String paramUrl = "&searchReportStartTime=" + statTime + "&searchReportEndTime=" + endTime;
|
||||
destUrl = destUrl + paramUrl;
|
||||
userUrl = userUrl + paramUrl;
|
||||
ipUrl = ipUrl + paramUrl;
|
||||
}
|
||||
model.addAttribute("nowTime", DateUtils.getDateTime());
|
||||
// 用户及IP数据
|
||||
String string = HttpClientUtil.get(destUrl);
|
||||
Gson gson = new GsonBuilder().create();
|
||||
fromJsonList = gson.fromJson(string, new TypeToken<Map>(){}.getType());
|
||||
fromJsonList = gson.fromJson(string, new TypeToken<Map>() {
|
||||
}.getType());
|
||||
list = (ArrayList) fromJsonList.get("data");
|
||||
Map map = (Map) list.get(0);
|
||||
List nasIpList=(List) map.get("nasIpList");
|
||||
List accountList=(List) map.get("accountList");
|
||||
if (!StringUtil.isEmpty(nasIpList)&&nasIpList.size()>0) {
|
||||
List nasIpList = (List) map.get("nasIpList");
|
||||
List accountList = (List) map.get("accountList");
|
||||
if (!StringUtil.isEmpty(nasIpList) && nasIpList.size() > 0) {
|
||||
List newNasIpList = new ArrayList();
|
||||
for (int i = 0; i < nasIpList.size(); i++) {
|
||||
newNasIpList.add(nasIpList.get(i));
|
||||
if (i+1>=10) {
|
||||
if (i + 1 >= 10) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
nasIpList = newNasIpList;
|
||||
}
|
||||
if (!StringUtil.isEmpty(accountList)&&accountList.size()>0) {
|
||||
if (!StringUtil.isEmpty(accountList) && accountList.size() > 0) {
|
||||
List newAccountList = new ArrayList();
|
||||
for (int i = 0; i < accountList.size(); i++) {
|
||||
newAccountList.add(accountList.get(i));
|
||||
if (i+1>=10) {
|
||||
if (i + 1 >= 10) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
accountList = newAccountList;
|
||||
}
|
||||
System.out.println("-------------------:"+nasIpList.size()+"+++"+accountList.size()+"==================");
|
||||
System.out.println(
|
||||
"-------------------:" + nasIpList.size() + "+++" + accountList.size() + "==================");
|
||||
model.addAttribute("nasIpList", nasIpList);
|
||||
model.addAttribute("accountList", accountList);
|
||||
if(StringUtil.isBlank(account)&&accountList!=null&&accountList.size()>0&&!"3".equals(searchBusinessType)) {
|
||||
if (StringUtil.isBlank(account) && accountList != null && accountList.size() > 0
|
||||
&& !"3".equals(searchBusinessType)) {
|
||||
Map accountMap = (Map) accountList.get(0);
|
||||
String firstAccount="";
|
||||
if(accountMap!=null&&accountMap.get("account")!=null){
|
||||
firstAccount=(String) accountMap.get("account");
|
||||
String userString = HttpClientUtil.get(userUrl+"&searchAccount="+firstAccount);
|
||||
String firstAccount = "";
|
||||
if (accountMap != null && accountMap.get("account") != null) {
|
||||
firstAccount = (String) accountMap.get("account");
|
||||
String userString = HttpClientUtil.get(userUrl + "&searchAccount=" + firstAccount);
|
||||
// 指定用户 查询
|
||||
Gson usergson = new GsonBuilder().create();
|
||||
userJsonList = usergson.fromJson(userString, new TypeToken<Map>(){}.getType());
|
||||
userJsonList = usergson.fromJson(userString, new TypeToken<Map>() {
|
||||
}.getType());
|
||||
userList = (ArrayList) userJsonList.get("data");
|
||||
}
|
||||
model.addAttribute("userList", userList);
|
||||
model.addAttribute("searchAccount", firstAccount);
|
||||
}
|
||||
if(StringUtil.isBlank(nasIp)&&nasIpList!=null&&nasIpList.size()>0&&!"2".equals(searchBusinessType)) {
|
||||
if (StringUtil.isBlank(nasIp) && nasIpList != null && nasIpList.size() > 0
|
||||
&& !"2".equals(searchBusinessType)) {
|
||||
Map ipMap = (Map) nasIpList.get(0);
|
||||
String firstIp="";
|
||||
if(ipMap!=null&&ipMap.get("nasIp")!=null){
|
||||
firstIp=(String) ipMap.get("nasIp");
|
||||
String ipString = HttpClientUtil.get(ipUrl+"&searchNasIp="+firstIp);
|
||||
String firstIp = "";
|
||||
if (ipMap != null && ipMap.get("nasIp") != null) {
|
||||
firstIp = (String) ipMap.get("nasIp");
|
||||
String ipString = HttpClientUtil.get(ipUrl + "&searchNasIp=" + firstIp);
|
||||
// 指定IP查询
|
||||
Gson ipgson = new GsonBuilder().create();
|
||||
ipJsonList = ipgson.fromJson(ipString, new TypeToken<Map>(){}.getType());
|
||||
ipJsonList = ipgson.fromJson(ipString, new TypeToken<Map>() {
|
||||
}.getType());
|
||||
ipList = (ArrayList) ipJsonList.get("data");
|
||||
}
|
||||
model.addAttribute("ipList", ipList);
|
||||
model.addAttribute("searchNasIp", firstIp);
|
||||
|
||||
|
||||
}
|
||||
if("2".endsWith(searchBusinessType)&&!StringUtil.isBlank(account)) {
|
||||
|
||||
String userString = HttpClientUtil.get(userUrl+"&searchAccount="+account);
|
||||
if ("2".endsWith(searchBusinessType) && !StringUtil.isBlank(account)) {
|
||||
|
||||
String userString = HttpClientUtil.get(userUrl + "&searchAccount=" + account);
|
||||
// 指定用户 查询
|
||||
Gson usergson = new GsonBuilder().create();
|
||||
userJsonList = usergson.fromJson(userString, new TypeToken<Map>(){}.getType());
|
||||
userJsonList = usergson.fromJson(userString, new TypeToken<Map>() {
|
||||
}.getType());
|
||||
userList = (ArrayList) userJsonList.get("data");
|
||||
model.addAttribute("userList", userList);
|
||||
model.addAttribute("searchAccount", account);
|
||||
}
|
||||
if ("3".endsWith(searchBusinessType)&&!StringUtil.isBlank(nasIp)) {
|
||||
String ipString = HttpClientUtil.get(ipUrl+"&searchNasIp="+nasIp);
|
||||
if ("3".endsWith(searchBusinessType) && !StringUtil.isBlank(nasIp)) {
|
||||
String ipString = HttpClientUtil.get(ipUrl + "&searchNasIp=" + nasIp);
|
||||
// 指定IP查询
|
||||
Gson ipgson = new GsonBuilder().create();
|
||||
ipJsonList = ipgson.fromJson(ipString, new TypeToken<Map>(){}.getType());
|
||||
ipJsonList = ipgson.fromJson(ipString, new TypeToken<Map>() {
|
||||
}.getType());
|
||||
ipList = (ArrayList) ipJsonList.get("data");
|
||||
model.addAttribute("ipList", ipList);
|
||||
model.addAttribute("searchNasIp", nasIp);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
addMessage(redirectAttributes,"error","request_service_failed");
|
||||
addMessage(redirectAttributes, "error", "request_service_failed");
|
||||
}
|
||||
return "/dashboard/trafficUserBehavior";
|
||||
}
|
||||
|
||||
// 用户行为导出
|
||||
@RequestMapping(value = "userBehaviorExport")
|
||||
public void userBehaviorExport(@ModelAttribute("log") NtcRadiusReport bean, Model model, String hColumns,
|
||||
String type, HttpServletRequest request, HttpServletResponse response,
|
||||
RedirectAttributes redirectAttributes) {
|
||||
|
||||
List<NtcRadiusReport> exportList = new ArrayList<NtcRadiusReport>();
|
||||
|
||||
Map<String, Object> fromJsonList = new HashMap<String, Object>();
|
||||
Map<String, Object> userJsonList = new HashMap<String, Object>();
|
||||
Map<String, Object> ipJsonList = new HashMap<String, Object>();
|
||||
String searchBusinessType = bean.getSearchBusinessType();
|
||||
if ("2".endsWith(searchBusinessType)) {
|
||||
model.addAttribute("searchBusinessType", 2);// 用户查询
|
||||
}
|
||||
if ("3".endsWith(searchBusinessType)) {
|
||||
model.addAttribute("searchBusinessType", 3);// IP查询
|
||||
}
|
||||
String url = Constants.DASHBOARD_URL + Constants.NTC_RADIUS_REPORT;
|
||||
String statTime = bean.getSearchFoundStartTime();
|
||||
String endTime = bean.getSearchFoundEndTime();
|
||||
String account = bean.getAccount();
|
||||
String nasIp = bean.getNasIp();
|
||||
String destUrl = url + "?searchBusinessType=1";
|
||||
String userUrl = url + "?searchBusinessType=2";
|
||||
String ipUrl = url + "?searchBusinessType=3";
|
||||
List list = new ArrayList();
|
||||
List userList = new ArrayList();
|
||||
List ipList = new ArrayList();
|
||||
try {
|
||||
if (StringUtil.isBlank(statTime) && StringUtil.isBlank(endTime)) {
|
||||
// 设置默认时间为1小时
|
||||
// statTime=DateUtils.getDate()+" 00:00:00"; // 默认今天
|
||||
// endTime=DateUtils.getDateTime();
|
||||
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.setTime(new Date());
|
||||
endTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(cal.getTime());// 获取到完整的时间
|
||||
cal.set(Calendar.HOUR_OF_DAY, cal.get(Calendar.HOUR_OF_DAY) - 1);
|
||||
statTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(cal.getTime());
|
||||
bean.setSearchFoundStartTime(statTime);
|
||||
bean.setSearchFoundEndTime(endTime);
|
||||
statTime = URLEncoder.encode(statTime, "UTF-8");
|
||||
endTime = URLEncoder.encode(endTime, "UTF-8");
|
||||
String paramUrl = "&searchReportStartTime=" + statTime + "&searchReportEndTime=" + endTime;
|
||||
destUrl = destUrl + paramUrl;
|
||||
userUrl = userUrl + paramUrl;
|
||||
ipUrl = ipUrl + paramUrl;
|
||||
} else {
|
||||
statTime = URLEncoder.encode(statTime, "UTF-8");
|
||||
endTime = URLEncoder.encode(endTime, "UTF-8");
|
||||
String paramUrl = "&searchReportStartTime=" + statTime + "&searchReportEndTime=" + endTime;
|
||||
destUrl = destUrl + paramUrl;
|
||||
userUrl = userUrl + paramUrl;
|
||||
ipUrl = ipUrl + paramUrl;
|
||||
}
|
||||
model.addAttribute("nowTime", DateUtils.getDateTime());
|
||||
// 用户及IP数据
|
||||
String string = HttpClientUtil.get(destUrl);
|
||||
Gson gson = new GsonBuilder().create();
|
||||
fromJsonList = gson.fromJson(string, new TypeToken<Map>() {
|
||||
}.getType());
|
||||
list = (ArrayList) fromJsonList.get("data");
|
||||
Map map = (Map) list.get(0);
|
||||
List nasIpList = (List) map.get("nasIpList");
|
||||
List accountList = (List) map.get("accountList");
|
||||
if (!StringUtil.isEmpty(nasIpList) && nasIpList.size() > 0) {
|
||||
List newNasIpList = new ArrayList();
|
||||
for (int i = 0; i < nasIpList.size(); i++) {
|
||||
newNasIpList.add(nasIpList.get(i));
|
||||
if (i + 1 >= 10) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
nasIpList = newNasIpList;
|
||||
}
|
||||
if (!StringUtil.isEmpty(accountList) && accountList.size() > 0) {
|
||||
List newAccountList = new ArrayList();
|
||||
for (int i = 0; i < accountList.size(); i++) {
|
||||
newAccountList.add(accountList.get(i));
|
||||
if (i + 1 >= 10) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
accountList = newAccountList;
|
||||
}
|
||||
System.out.println(
|
||||
"-------------------:" + nasIpList.size() + "+++" + accountList.size() + "==================");
|
||||
model.addAttribute("nasIpList", nasIpList);
|
||||
model.addAttribute("accountList", accountList);
|
||||
if (StringUtil.isBlank(account) && accountList != null && accountList.size() > 0
|
||||
&& !"3".equals(searchBusinessType)) {
|
||||
Map accountMap = (Map) accountList.get(0);
|
||||
String firstAccount = "";
|
||||
if (accountMap != null && accountMap.get("account") != null) {
|
||||
firstAccount = (String) accountMap.get("account");
|
||||
String userString = HttpClientUtil.get(userUrl + "&searchAccount=" + firstAccount);
|
||||
// 指定用户 查询
|
||||
Gson usergson = new GsonBuilder().create();
|
||||
userJsonList = usergson.fromJson(userString, new TypeToken<Map>() {
|
||||
}.getType());
|
||||
userList = (ArrayList) userJsonList.get("data");
|
||||
|
||||
for (int i = 0; i < userList.size(); i++) {
|
||||
JSONObject fromObject = JSONObject.fromObject(userList.get(i));
|
||||
NtcRadiusReport stu = (NtcRadiusReport) JSONObject.toBean(fromObject, NtcRadiusReport.class);
|
||||
exportList.add(stu);
|
||||
}
|
||||
|
||||
}
|
||||
model.addAttribute("userList", userList);
|
||||
model.addAttribute("searchAccount", firstAccount);
|
||||
}
|
||||
if (StringUtil.isBlank(nasIp) && nasIpList != null && nasIpList.size() > 0
|
||||
&& !"2".equals(searchBusinessType)) {
|
||||
Map ipMap = (Map) nasIpList.get(0);
|
||||
String firstIp = "";
|
||||
if (ipMap != null && ipMap.get("nasIp") != null) {
|
||||
firstIp = (String) ipMap.get("nasIp");
|
||||
String ipString = HttpClientUtil.get(ipUrl + "&searchNasIp=" + firstIp);
|
||||
// 指定IP查询
|
||||
Gson ipgson = new GsonBuilder().create();
|
||||
ipJsonList = ipgson.fromJson(ipString, new TypeToken<Map>() {
|
||||
}.getType());
|
||||
ipList = (ArrayList) ipJsonList.get("data");
|
||||
|
||||
for (int i = 0; i < ipList.size(); i++) {
|
||||
JSONObject fromObject = JSONObject.fromObject(ipList.get(i));
|
||||
NtcRadiusReport stu = (NtcRadiusReport) JSONObject.toBean(fromObject, NtcRadiusReport.class);
|
||||
exportList.add(stu);
|
||||
}
|
||||
|
||||
}
|
||||
model.addAttribute("ipList", ipList);
|
||||
model.addAttribute("searchNasIp", firstIp);
|
||||
|
||||
}
|
||||
if ("2".endsWith(searchBusinessType) && !StringUtil.isBlank(account)) {
|
||||
|
||||
String userString = HttpClientUtil.get(userUrl + "&searchAccount=" + account);
|
||||
// 指定用户 查询
|
||||
Gson usergson = new GsonBuilder().create();
|
||||
userJsonList = usergson.fromJson(userString, new TypeToken<Map>() {
|
||||
}.getType());
|
||||
userList = (ArrayList) userJsonList.get("data");
|
||||
|
||||
for (int i = 0; i < userList.size(); i++) {
|
||||
JSONObject fromObject = JSONObject.fromObject(userList.get(i));
|
||||
NtcRadiusReport stu = (NtcRadiusReport) JSONObject.toBean(fromObject, NtcRadiusReport.class);
|
||||
exportList.add(stu);
|
||||
}
|
||||
|
||||
model.addAttribute("userList", userList);
|
||||
model.addAttribute("searchAccount", account);
|
||||
}
|
||||
if ("3".endsWith(searchBusinessType) && !StringUtil.isBlank(nasIp)) {
|
||||
String ipString = HttpClientUtil.get(ipUrl + "&searchNasIp=" + nasIp);
|
||||
// 指定IP查询
|
||||
Gson ipgson = new GsonBuilder().create();
|
||||
ipJsonList = ipgson.fromJson(ipString, new TypeToken<Map>() {
|
||||
}.getType());
|
||||
ipList = (ArrayList) ipJsonList.get("data");
|
||||
|
||||
for (int i = 0; i < ipList.size(); i++) {
|
||||
JSONObject fromObject = JSONObject.fromObject(ipList.get(i));
|
||||
NtcRadiusReport stu = (NtcRadiusReport) JSONObject.toBean(fromObject, NtcRadiusReport.class);
|
||||
exportList.add(stu);
|
||||
}
|
||||
|
||||
model.addAttribute("ipList", ipList);
|
||||
model.addAttribute("searchNasIp", nasIp);
|
||||
}
|
||||
|
||||
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>();
|
||||
|
||||
titleList.add("traffic_user_behavior");
|
||||
classMap.put("traffic_user_behavior", NtcRadiusReport.class);
|
||||
|
||||
Properties msgProp = getMsgProp();
|
||||
NtcRadiusReport ntcRadiusReport = new NtcRadiusReport();
|
||||
long nums = 0;
|
||||
for (NtcRadiusReport entity : exportList) {
|
||||
if (null != entity.getNum()) {
|
||||
nums += entity.getNum();
|
||||
}
|
||||
}
|
||||
String report_total = msgProp.getProperty("report_total");
|
||||
ntcRadiusReport.setAccount(report_total);
|
||||
ntcRadiusReport.setNum(nums);
|
||||
ntcRadiusReport.setNasIp(" 一 ");
|
||||
ntcRadiusReport.setReportTime(" 一 ");
|
||||
|
||||
exportList.add(ntcRadiusReport);
|
||||
|
||||
dataMap.put("traffic_user_behavior", exportList);
|
||||
|
||||
String cfgIndexInfoNoExport = "";
|
||||
noExportMap.put("traffic_user_behavior", cfgIndexInfoNoExport);
|
||||
String timeRange = initLogMap(bean, "traffic_user_behavior");
|
||||
noExportMap.put("timeRange", timeRange);
|
||||
|
||||
if ("csv".equals(type)) {
|
||||
this._exportCsv(model, request, response, redirectAttributes, "traffic_user_behavior", titleList,
|
||||
classMap, dataMap, noExportMap);
|
||||
} else {
|
||||
this._export(model, request, response, redirectAttributes, "traffic_user_behavior", titleList, classMap,
|
||||
dataMap, noExportMap);
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
addMessage(redirectAttributes, "error", "request_service_failed");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public String initLogMap(NtcRadiusReport log, String title) {
|
||||
Properties msgProp = getMsgProp();
|
||||
String logTime = msgProp.getProperty(title, title);
|
||||
;
|
||||
if (log.getSearchFoundStartTime() != null) {
|
||||
logTime += " " + msgProp.getProperty("begin_date") + ":" + log.getSearchFoundStartTime();
|
||||
}
|
||||
if (log.getSearchFoundEndTime() != null) {
|
||||
logTime += " " + msgProp.getProperty("end_date") + ":" + log.getSearchFoundStartTime();
|
||||
}
|
||||
return logTime;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -233,6 +233,35 @@
|
||||
<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 class="pull-right">
|
||||
|
||||
<div class="btn-group">
|
||||
<button type="button"
|
||||
class="btn btn-default dropdown-toggle"
|
||||
data-toggle="dropdown">
|
||||
<i class="fa fa-wrench"></i>
|
||||
<spring:message code="export"></spring:message>
|
||||
<i class="fa fa-angle-down"></i>
|
||||
</button>
|
||||
<ul class="dropdown-menu pull-right"
|
||||
style="min-width: 110px;">
|
||||
<li><sys:delRow
|
||||
url="${ctx}/traffic/userBehaviorExport?type=excel"
|
||||
searchUrl="${ctx}/traffic/userBehavior" id="contentTable"
|
||||
maxRow="10000" label="excel"></sys:delRow></li>
|
||||
<li><sys:delRow
|
||||
url="${ctx}/traffic/userBehaviorExport?type=csv"
|
||||
searchUrl="${ctx}/traffic/userBehavior" id="contentTable"
|
||||
maxRow="10000" label="csv"></sys:delRow></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<a class="btn btn-icon-only btn-default setfields tooltips"
|
||||
data-container="body" data-placement="top"
|
||||
data-original-title=<spring:message code="custom_columns"/>
|
||||
href="javascript:;"> <i class="icon-wrench"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 搜索内容与操作按钮栏 -->
|
||||
</form:form>
|
||||
|
||||
Reference in New Issue
Block a user