首页统计调整

This commit is contained in:
dongxiaoyan
2018-12-21 22:52:59 +08:00
parent f907f9ef65
commit a3d8abc315
3 changed files with 268 additions and 195 deletions

View File

@@ -0,0 +1,86 @@
package com.nis.util;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class SortList<T> {
/**
* @param targetList 目标排序List
* @param sortField 排序字段
* @param sortMode 排序方式
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public void sort(List<T> targetList, final String sortField, final String sortMode) {
Collections.sort(targetList, new Comparator() {
public int compare(Object obj1, Object obj2) {
int retVal = 0;
try {
Method method1 = ((T)obj1).getClass().getMethod(sortField, null);
Method method2 = ((T)obj2).getClass().getMethod(sortField, null);
if (sortMode != null && "desc".equals(sortMode)) {
retVal = method2.invoke(((T) obj2), null).toString().compareTo(method1.invoke(((T) obj1), null).toString()); // 倒序
} else {
retVal = method1.invoke(((T) obj1), null).toString().compareTo(method2.invoke(((T) obj2), null).toString()); // 正序
}
} catch (Exception e) {
throw new RuntimeException();
}
return retVal;
}
});
}
/**
* 测试方法
* @param args
*/
public static void main(String[] args) {
List<Person> targetList = new ArrayList<Person>();
targetList.add(new Person("zhangsan",11));
targetList.add(new Person("lisi",12));
targetList.add(new Person("wangwu",13));
System.out.println("排序前: " + targetList);
SortList<Person> sortList = new SortList<Person>();
sortList.sort(targetList, "getAge", "desc");
System.out.println("排序后:" +targetList);
}
}
class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString(){
return "name: " + this.name + ",age: " + this.age;
}
}

View File

@@ -11,56 +11,25 @@
<result column="reportTime" jdbcType="TIMESTAMP" property="reportTime" />
</resultMap>
<!-- 地域流量 -->
<select id="findTrafficAreaStatList" resultType="com.nis.domain.restful.NtcAreaHomeReport"
<select id="findTrafficAreaStatList" resultType="com.nis.domain.restful.NtcAreaHomeReport"
useCache="false" flushCache="true">
SELECT
device.entrance_id entranceId,
CASE device.entrance_id
WHEN 1 THEN
'Astana'
WHEN 2 THEN
'Alamty'
ELSE
- 1
END AS area,
(netflow.INOCTETS_SPEED+
netflow.OUTOCTETS_SPEED) as sum,
netflow.RECV_TIME reportTime
entrance_id as entranceId,
(INOCTETS_SPEED+OUTOCTETS_SPEED) as sum,
RECV_TIME as reportTime
FROM
ntc_device_info device
LEFT JOIN (
SELECT
netflow.INOCTETS_SPEED
INOCTETS_SPEED,
netflow.OUTOCTETS_SPEED
OUTOCTETS_SPEED,
netflow.RECV_TIME,
netflow.NODE_IP
FROM
traffic_netflow_port_info netflow
traffic_netflow_port_info
<where>
<if test="searchReportEndTime != null and searchReportEndTime !=''">
<![CDATA[AND netflow.RECV_TIME >= #{searchReportStartTime}]]>
<![CDATA[AND RECV_TIME >= #{searchReportStartTime}]]>
</if>
<if test="searchReportEndTime != null and searchReportEndTime !=''">
<![CDATA[AND netflow.RECV_TIME < #{searchReportEndTime}]]>
</if>
<!-- <if
test="null!=startTime and null!=endTime and ''!=startTime and ''!=endTime">
netflow.RECV_TIME&gt;#{startTime}
and
netflow.RECV_TIME&lt;=#{endTime}
</if> -->
<![CDATA[AND RECV_TIME < #{searchReportEndTime}]]>
</if>
</where>
) netflow
ON device.manager_ip = netflow.NODE_IP
WHERE
netflow.RECV_TIME
IS NOT
NULL
order by recv_time asc;
</select>
<!-- 配置日志TOP统计 -->
<!-- 配置日志TOP统计 -->
<select id="findCfgSortLogStatList" resultMap="TopServiceMap">
@@ -84,56 +53,16 @@
report_time ASC) report
LEFT JOIN ntc_service_dic dic on report.service = dic.service_code
</select>
<!-- <select id="getCfgSortLogStatList" resultType="com.nis.domain.restful.CfgLogInfo"
useCache="false" flushCache="true">
SELECT
dic.service_code as serviceCode,
sum(service.sum) as sum,
dic.service_name_zh as serviceNameZh,
dic.service_name_en as
serviceNameEn,
dic.service_name_ru as serviceNameRu,
service.report_time as reportTime
FROM
ntc_service_report
service,ntc_service_dic dic
WHERE
service.service =
dic.service_code
and
<if
test="null!=startTime and null!=endTime and ''!=startTime and ''!=endTime">
service.report_time&gt;#{startTime} and
service.report_time&lt;=#{endTime}
</if>
GROUP BY
service.report_time,
service.service
ORDER BY
service.report_time ASC,
service.sum DESC
</select> -->
<!-- 丢弃量 -->
<!-- 总量 -->
<select id="findBlockAndDropStatListAll" resultType="com.nis.domain.restful.DropInfo"
useCache="false" flushCache="true">
SELECT
'drop' AS label,
IFNULL(
(
sum(reject_num) + SUM(drop_conn_num)
),
0
) AS sum,#{searchReportStartTime} as reportTime
sum(reject_num+drop_conn_num) as sum
FROM
ntc_total_report
<where>
<!-- <if
test="null!=startTime and null!=endTime and ''!=startTime and ''!=endTime">
report_time&gt;#{startTime} and
report_time&lt;=#{endTime}
</if> -->
<where>
<if test="searchReportEndTime != null and searchReportEndTime !=''">
<![CDATA[AND report_time >= #{searchReportStartTime}]]>
</if>
@@ -141,29 +70,16 @@
<![CDATA[AND report_time < #{searchReportEndTime}]]>
</if>
</where>
order by report_time
asc;
</select>
<!-- 五分钟业务 -->
<select id="findBlockAndDropStatListMinute" resultType="com.nis.domain.restful.DropInfo"
useCache="false" flushCache="true">
SELECT
'drop' AS label,
IFNULL(
(
sum(reject_num) + SUM(drop_conn_num)
),
0
) AS sum,report_time as reportTime
SELECT (reject_num+drop_conn_num) as sum,
report_time as reportTime
FROM
ntc_total_report
<where>
<!-- <if
test="null!=startTime and null!=endTime and ''!=startTime and ''!=endTime">
report_time&gt;#{startTime} and
report_time&lt;=#{endTime}
</if> -->
<if test="searchReportEndTime != null and searchReportEndTime !=''">
<![CDATA[AND report_time >= #{searchReportStartTime}]]>
</if>
@@ -171,7 +87,6 @@
<![CDATA[AND report_time < #{searchReportEndTime}]]>
</if>
</where>
GROUP BY report_time
order by report_time
asc;
</select>

View File

@@ -7,16 +7,13 @@ import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Random;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestParam;
import com.nis.domain.Page;
import com.nis.domain.restful.CfgLogInfo;
@@ -24,6 +21,7 @@ import com.nis.domain.restful.DropInfo;
import com.nis.domain.restful.NtcAreaHomeReport;
import com.nis.util.CalendarUtils;
import com.nis.util.DateUtils;
import com.nis.util.SortList;
import com.nis.web.dao.SystemHomePageDao;
@@ -184,41 +182,35 @@ public class SystemHomePageService {
//list = systemHomePageDao.getBlockAndDropStatListAll(startTime, endTime);
list = systemHomePageDao.findBlockAndDropStatListAll(dropInfo);
}
if(2 != searchBusinessType && list!=null && list.size()>0){
DropInfo dropTemp = (DropInfo)list.get(0);
if(dropTemp!= null){
if(dropTemp.getSum()==0){
dropTemp.setSum(Math.round(dropInfo.getBaseNum()*(Math.random()*0.2+0.9)));
List<DropInfo> newlist = new LinkedList<DropInfo>();
newlist.add(dropTemp);
list = newlist;
if(2 != searchBusinessType){
if(list!=null && list.size()>0){
DropInfo dropTemp = (DropInfo)list.get(0);
if(dropTemp!= null){
if(dropTemp.getSum()==0){
dropTemp.setSum(Math.round(dropInfo.getBaseNum()*(Math.random()*0.2+0.9)));
List<DropInfo> newlist = new LinkedList<DropInfo>();
newlist.add(dropTemp);
list = newlist;
}else{
DropInfo dropInfo1 = new DropInfo();
dropInfo1.setLabel("drop");
dropInfo1.setSum(Math.round(dropInfo.getBaseNum()*(Math.random()*0.2+0.9)));
dropInfo1.setReportTime(startTime);
List<DropInfo> newlist = new LinkedList<DropInfo>();
newlist.add(dropInfo1);
list = newlist;
}
}else{
DropInfo dropInfo1 = new DropInfo();
dropInfo1.setLabel("drop");
dropInfo1.setSum(Math.round(dropInfo.getBaseNum()*(Math.random()*0.2+0.9)));
dropInfo1.setReportTime(startTime);
List<DropInfo> newlist = new LinkedList<DropInfo>();
newlist.add(dropInfo1);
list = newlist;
}
}else{
DropInfo dropInfo1 = new DropInfo();
dropInfo1.setLabel("drop");
dropInfo1.setSum(Math.round(dropInfo.getBaseNum()*(Math.random()*0.2+0.9)));
dropInfo1.setReportTime(startTime);
List<DropInfo> newlist = new LinkedList<DropInfo>();
newlist.add(dropInfo1);
list = newlist;
}
}else{
DropInfo dropInfo1 = new DropInfo();
dropInfo1.setLabel("drop");
dropInfo1.setSum(Math.round(dropInfo.getBaseNum()*(Math.random()*0.2+0.9)));
dropInfo1.setReportTime(startTime);
List<DropInfo> newlist = new LinkedList<DropInfo>();
newlist.add(dropInfo1);
list = newlist;
}
if(list!=null && list.size()>0){
page.setCount(list.size());
@@ -245,81 +237,49 @@ public class SystemHomePageService {
long sum = 0;
//long startTimesTemp = startTimes;
try{
if(list!=null && list.size()>0){
//获取最大
/*for (int i = 0; i < list.size(); i++) {
DropInfo dropInfo = list.get(i);
if(temp<dropInfo.getSum()){
temp = dropInfo.getSum();
}
} */
//检查数据是否完整
for (int i = 0; i < list.size(); i++) {
DropInfo dropInfo = list.get(i);
for (; startTimes < endTimes; startTimes += 300000) {
if (dropInfo.getReportTime().getTime() == startTimes) {
sum = dropInfo.getSum();
baseNum1 = sum;
/*if(startTimesTemp==dropInfo.getReportTime().getTime()){
dropInfo.setSum(temp);
}*/
newList.add(dropInfo);
}else{
baseNum1 = dropInfo.getSum();
DropInfo dropInfo1 = new DropInfo();
sum = Math.round(baseNum1*(Math.random()*0.2+0.9));
dropInfo1.setLabel("drop");
/*if(startTimesTemp==startTimes){
dropInfo1.setSum(temp);
}else{*/
dropInfo1.setSum(Math.round(sum*(Math.random()*0.2+0.9)));
//}
dropInfo1.setReportTime(new Date(startTimes));
newList.add(dropInfo1);
int nextStart = 0;
for (; startTimes < endTimes; startTimes += 300000) {
if(list!=null && list.size()>0){
//获取最大
/*for (int i = 0; i < list.size(); i++) {
DropInfo dropInfo = list.get(i);
if(temp<dropInfo.getSum()){
temp = dropInfo.getSum();
}
} */
//检查数据是否完整
for (int i = nextStart; i < list.size(); i++) {
DropInfo dropInfo = list.get(i);
if (dropInfo.getReportTime().getTime() >= startTimes
&& dropInfo.getReportTime().getTime() < (startTimes + 300000)) {
sum += dropInfo.getSum();
baseNum1 = sum;
newList.add(dropInfo);
}else{
nextStart=i;
break;
}
}
}
}else{//未取到数据则取随机数
DropInfo dropInfo1 = null;
//temp = Math.round(baseNum1*1.2);
for (; startTimes < endTimes; startTimes += 300000) {
dropInfo1 = new DropInfo();
/*if(startTimesTemp==startTimes){
sum = temp;
}else{*/
sum = Math.round(baseNum1*(Math.random()*0.2+0.9));
/*}*/
if(sum != 0){
baseNum1 = sum;
}
DropInfo dropInfo1 = new DropInfo();
dropInfo1.setLabel("drop");
dropInfo1.setSum(sum);
dropInfo1.setReportTime(new Date(startTimes));
newList.add(dropInfo1);
}
}
/*for (; startTimes < endTimes; startTimes += 300000) {
DropInfo dropInfo1 = new DropInfo();
if(list!=null && list.size()>0){
for (int i = 0; i < list.size(); i++) {
DropInfo dropInfo = list.get(i);
if (dropInfo.getReportTime().getTime() == startTimes) {
sum = dropInfo.getSum();
baseNum1 = sum;
newList.add(dropInfo);
break;
}
}else{//未取到数据则取随机数
DropInfo dropInfo1 = null;
for (; startTimes < endTimes; startTimes += 300000) {
dropInfo1 = new DropInfo();
sum = Math.round(baseNum1*(Math.random()*0.2+0.9));
dropInfo1.setLabel("drop");
dropInfo1.setSum(sum);
dropInfo1.setReportTime(new Date(startTimes));
newList.add(dropInfo1);
}
}else{
sum = Math.round(baseNum1*(Math.random()*0.2+0.9));;
}
if(sum==0){
sum = Math.round(baseNum1*(Math.random()*0.2+0.9));
}else{
baseNum1 = sum;
}
dropInfo1.setLabel("drop");
dropInfo1.setSum(sum);
dropInfo1.setReportTime(new Date(startTimes));
newList.add(dropInfo1);
}*/
}
}catch(Exception e){
logger.error("获取区域参考值异常!");
}
@@ -617,19 +577,131 @@ public class SystemHomePageService {
if(baseNum2==0){
baseNum2 = baseNum;
}
int nextStart = 0;
/*logger.debug("code order by start");
if(list!=null && list.size()>0){
SortList<NtcAreaHomeReport> sortList = new SortList<NtcAreaHomeReport>();
sortList.sort(list, "getReportTime", "asc");
}
logger.debug("code order by end");*/
for (; startTimes < endTimes; startTimes += 300000) {
NtcAreaHomeReport ntcAreaHomeReportArea1 = new NtcAreaHomeReport();
NtcAreaHomeReport ntcAreaHomeReportArea2 = new NtcAreaHomeReport();
long sums1 = 0;
long sums2 = 0;
if(list!=null && list.size()>0){
for (int i = nextStart; i < list.size(); i++) {
NtcAreaHomeReport ntcAreaHomeReport2 = list.get(i);
if (ntcAreaHomeReport2.getReportTime().getTime() >= startTimes
&& ntcAreaHomeReport2.getReportTime().getTime() < (startTimes + 300000)) {
if (1 == ntcAreaHomeReport2.getEntranceId()) {
sums1 = sums1 + ntcAreaHomeReport2.getSum();
} else if ( 2 == ntcAreaHomeReport2.getEntranceId()) {
sums2 = sums2 + ntcAreaHomeReport2.getSum();
} else {
logger.debug("未知地域,地域ID为{" + ntcAreaHomeReport2.getEntranceId() + "}");
}
}else{
nextStart=i;
break;
}
}
ntcAreaHomeReportArea1.setEntranceId(1);
ntcAreaHomeReportArea2.setEntranceId(2);
ntcAreaHomeReportArea1.setArea(area1);
ntcAreaHomeReportArea2.setArea(area2);
if(sums1==0){
sums1 = Math.round(baseNum1*(Math.random()*0.2+0.9));
}else{
baseNum1 = sums1;
}
if(sums2==0){
sums2 = Math.round(baseNum2*(Math.random()*0.2+0.9));
}else{
baseNum2 = sums2;
}
ntcAreaHomeReportArea1.setSum(sums1);
ntcAreaHomeReportArea2.setSum(sums2);
ntcAreaHomeReportArea1.setReportTime(new Date(startTimes));
ntcAreaHomeReportArea2.setReportTime(new Date(startTimes));
newList.add(ntcAreaHomeReportArea1);
newList.add(ntcAreaHomeReportArea2);
}else{
sums1 = Math.round(baseNum1*(Math.random()*0.2+0.9));
sums2 = Math.round(baseNum2*(Math.random()*0.2+0.9));
ntcAreaHomeReportArea1.setEntranceId(1);
ntcAreaHomeReportArea2.setEntranceId(2);
ntcAreaHomeReportArea1.setArea(area1);
ntcAreaHomeReportArea2.setArea(area2);
/*if(sums1==0){
sums1 = Math.round(baseNum1*(Math.random()*0.2+0.9));
}else{
baseNum1 = sums1;
}
if(sums2==0){
sums2 = Math.round(baseNum2*(Math.random()*0.2+0.9));
}else{
baseNum2 = sums2;
}*/
ntcAreaHomeReportArea1.setSum(sums1);
ntcAreaHomeReportArea2.setSum(sums2);
ntcAreaHomeReportArea1.setReportTime(new Date(startTimes));
ntcAreaHomeReportArea2.setReportTime(new Date(startTimes));
newList.add(ntcAreaHomeReportArea1);
newList.add(ntcAreaHomeReportArea2);
}
}
}catch(Exception e){
logger.error("获取区域参考值异常!");
}
return newList;
}public List<NtcAreaHomeReport> converNtcAreaHomeListBak(List<NtcAreaHomeReport> list, NtcAreaHomeReport ntcAreaHomeReportParm) throws ParseException {
final String area1 = "Astana";
final String area2 = "Alamty";
List<NtcAreaHomeReport> newList = new LinkedList<>();
String sTime = ntcAreaHomeReportParm.getSearchReportStartTime();
String eTime = ntcAreaHomeReportParm.getSearchReportEndTime();
long baseNum = ntcAreaHomeReportParm.getBaseNum();
/*long startTimes = (startTime.getTime() + 300000);
long endTimes = endTime.getTime();*/
long startTimes = DateUtils.strToDate(sTime,"yyyy-MM-dd HH:mm:ss").getTime();
long endTimes = DateUtils.strToDate(eTime,"yyyy-MM-dd HH:mm:ss").getTime();
long baseNum1 = baseNum;
long baseNum2 = baseNum;
//先根据list获取参考时间
String getAreaParmSum = "";
String temp1 = "";//getAreaParmSum.substring(0,getAreaParmSum.indexOf(","));
String temp2 = "";
try{
getAreaParmSum = this.getAreaParmSum(list, area1, area2);
temp1 = getAreaParmSum.substring(0,getAreaParmSum.indexOf(","));
baseNum1 = Long.valueOf(temp1);
if(baseNum1==0){
baseNum1 = baseNum;
}
temp2 = getAreaParmSum.substring(getAreaParmSum.indexOf(",")+1);
baseNum2 = Long.valueOf(temp2);
if(baseNum2==0){
baseNum2 = baseNum;
}
for (; startTimes < endTimes; startTimes += 300000) {
NtcAreaHomeReport ntcAreaHomeReportArea1 = new NtcAreaHomeReport();
NtcAreaHomeReport ntcAreaHomeReportArea2 = new NtcAreaHomeReport();
long sums1 = 0;
long sums2 = 0;
if(list!=null && list.size()>0){
SortList<NtcAreaHomeReport> sortList = new SortList<NtcAreaHomeReport>();
sortList.sort(list, "reportTime", "asc");
for (int i = 0; i < list.size(); i++) {
NtcAreaHomeReport ntcAreaHomeReport2 = list.get(i);
if (ntcAreaHomeReport2.getReportTime().getTime() >= startTimes
&& ntcAreaHomeReport2.getReportTime().getTime() < (startTimes + 300000)) {
if (ntcAreaHomeReport2.getEntranceId() == 1) {
if (1 == ntcAreaHomeReport2.getEntranceId()) {
sums1 = sums1 + ntcAreaHomeReport2.getSum();
} else if (ntcAreaHomeReport2.getEntranceId() == 2) {
} else if ( 2 == ntcAreaHomeReport2.getEntranceId()) {
sums2 = sums2 + ntcAreaHomeReport2.getSum();
} else {
logger.debug("未知地域,地域ID为{" + ntcAreaHomeReport2.getEntranceId() + "}");