Commit 5ab5371c authored by shaochangbin's avatar shaochangbin

修改告警日志查询排序。降序

parent dab40e4c
...@@ -626,115 +626,116 @@ public class Manager { ...@@ -626,115 +626,116 @@ public class Manager {
} }
public Map<String, Object> searchLog(String json) { public Map<String, Object> searchLog(String json) {
int limitNum = 0;
Map<String,Object> map = new HashMap(); Map<String,Object> map = new HashMap();
JSONObject jsonObject = JSONObject.fromObject(json); JSONObject jsonObject = JSONObject.fromObject(json);
int pageNum = jsonObject.getInt("pageNum"); int pageNum = jsonObject.getInt("pageNum");
int pageSize = jsonObject.getInt("pageSize"); int pageSize = jsonObject.getInt("pageSize");
String ip = jsonObject.getString("ip"); int subStart = 0 ;
String start = jsonObject.getString("start"); int subEnd = pageNum * pageSize;
String end = jsonObject.getString("end");
if (pageNum == 1){ if (pageNum == 1){
limitNum = pageNum * pageSize; subStart = 0;
}else{ }else{
limitNum = (pageNum - 1) * pageSize; subStart = (pageNum - 1) * pageSize;
} }
String ip = jsonObject.getString("ip");
String start = jsonObject.getString("start");
String end = jsonObject.getString("end");
//响应结果前不需要的数据(要查页数之前的数据) //响应结果前不需要的数据(要查页数之前的数据)
List<AlarmLog> alarmLogByParam = null; List<AlarmLog> alarmLogByParam = null;
//最后响应的查询结果 //最后响应的查询结果
List<AlarmLog> alarmLogList = null; List<AlarmLog> alarmLogList = null;
long flag = System.currentTimeMillis(); long startCurrent = System.currentTimeMillis();
if((!start.isEmpty())&&(!ip.isEmpty())){ if((!start.isEmpty())&&(!ip.isEmpty())&&!ip.equals("")&&!start.equals("")){
//如果显示第一页数据,没有前面的数据,直接查询就好。
if (pageNum == 1){
alarmLogList = cassandraDao.getAlarmLogByParam(ip, start, end, limitNum);
}else{
//如果查询的结果不是第一页。需要查询之前的数据,在根据时间戳查询需要的响应的数据
alarmLogByParam = cassandraDao.getAlarmLogByParam(ip, start, end, limitNum);
if (alarmLogByParam != null && alarmLogByParam.size() > 0){
alarmLogList = cassandraDao.getAlarmLogList(ip, start, end, pageSize, alarmLogByParam.get(alarmLogByParam.size() - 1).getSerialnum());
}
}
//统计符合条件的记录总条数 //统计符合条件的记录总条数
Map total = cassandraDao.getAlarmLogSize(ip,start,end); Map total = cassandraDao.getAlarmLogSize(ip,start,end);
alarmLogList = cassandraDao.getAlarmLogByParam(ip, start, end);
if (alarmLogList != null){ if (alarmLogList != null){
//查询结果非空List升序排序(根据AlarmMsg::getAlatime) //查询结果非空List升序排序(根据AlarmMsg::getAlatime)
alarmLogList = alarmLogList.stream().sorted(Comparator.comparing(AlarmLog::getAlatime)).collect(Collectors.toList()); alarmLogList = alarmLogList.stream().sorted(Comparator.comparing(AlarmLog::getAlatime)).collect(Collectors.toList());
//反转list排序 //反转list排序
Collections.reverse(alarmLogList); Collections.reverse(alarmLogList);
} }
//最后一个数据不足一页的,显示到list最后可以
if (alarmLogList.size() > subStart && alarmLogList.size() < subEnd){
alarmLogList = alarmLogList.subList(subStart ,alarmLogList.size() - 1);
}
//查询结果足够最后一个显示
if (alarmLogList.size() >= subEnd){
alarmLogList = alarmLogList.subList(subStart , subEnd);
}
map.put("log",alarmLogList); map.put("log",alarmLogList);
map.put("logSize",total.get("count")); map.put("logSize",total.get("count"));
}else if(!start.isEmpty()){ }else if(!start.isEmpty() && !start.equals("")){
Map total = cassandraDao.getAlarmLogSize(start,end); Map total = cassandraDao.getAlarmLogSize(start,end);
//如果显示第一页数据,没有前面的数据,直接查询就好。 alarmLogList = cassandraDao.getAlarmLogByStartAndEnd(start,end);
if (pageNum == 1){
alarmLogList = cassandraDao.getAlarmLogByStartAndEndAndLimitnum(start,end,limitNum);
}else{
//如果查询的结果不是第一页。需要查询之前的数据,在根据时间戳查询需要的响应的数据
alarmLogByParam = cassandraDao.getAlarmLogByStartAndEndAndLimitnum(start,end,limitNum);
if (alarmLogByParam != null && alarmLogByParam.size() > 0){
alarmLogList = cassandraDao.getAlarmLogList(start,end,pageSize,alarmLogByParam.get(alarmLogByParam.size() - 1).getSerialnum());
}
}
//查询结果非空List升序排序(根据AlarmMsg::getAlatime)
if (alarmLogList != null){ if (alarmLogList != null){
//查询结果非空List升序排序(根据AlarmMsg::getAlatime) //查询结果非空List升序排序(根据AlarmMsg::getAlatime)
alarmLogList = alarmLogList.stream().sorted(Comparator.comparing(AlarmLog::getAlatime)).collect(Collectors.toList()); alarmLogList = alarmLogList.stream().sorted(Comparator.comparing(AlarmLog::getAlatime)).collect(Collectors.toList());
//反转list排序 //反转list排序
Collections.reverse(alarmLogList); Collections.reverse(alarmLogList);
} }
//最后一个数据不足一页的,显示到list最后可以
if (alarmLogList.size() > subStart && alarmLogList.size() < subEnd){
alarmLogList = alarmLogList.subList(subStart ,alarmLogList.size() - 1);
}
//查询结果足够最后一个显示
if (alarmLogList.size() >= subEnd){
alarmLogList = alarmLogList.subList(subStart , subEnd);
}
map.put("log",alarmLogList); map.put("log",alarmLogList);
map.put("logSize",total.get("count")); map.put("logSize",total.get("count"));
}else if(!ip.isEmpty()){ }else if(!ip.isEmpty()&& !ip.equals("")){
Map total = cassandraDao.getAlarmLogSize(ip); Map total = cassandraDao.getAlarmLogSize(ip);
//如果显示第一页数据,没有前面的数据,直接查询就好。 alarmLogList = cassandraDao.getAlarmLogByIp(ip);
if (pageNum == 1){
alarmLogList = cassandraDao.getAlarmLogByIpAndLimitnum(ip,limitNum);
}else{
//如果查询的结果不是第一页。需要查询之前的数据,在根据时间戳查询需要的响应的数据
alarmLogByParam = cassandraDao.getAlarmLogByIpAndLimitnum(ip,limitNum);
if (alarmLogByParam != null && alarmLogByParam.size() > 0){
alarmLogList = cassandraDao.getAlarmLogList(ip,pageSize,alarmLogByParam.get(alarmLogByParam.size() - 1).getSerialnum());
}
}
//查询结果非空List升序排序(根据AlarmMsg::getAlatime)
if (alarmLogList != null){ if (alarmLogList != null){
//查询结果非空List升序排序(根据AlarmMsg::getAlatime) //查询结果非空List升序排序(根据AlarmMsg::getAlatime)
alarmLogList = alarmLogList.stream().sorted(Comparator.comparing(AlarmLog::getAlatime)).collect(Collectors.toList()); alarmLogList = alarmLogList.stream().sorted(Comparator.comparing(AlarmLog::getAlatime)).collect(Collectors.toList());
//反转list排序 //反转list排序
Collections.reverse(alarmLogList); Collections.reverse(alarmLogList);
} }
//最后一个数据不足一页的,显示到list最后可以
if (alarmLogList.size() > subStart && alarmLogList.size() < subEnd){
alarmLogList = alarmLogList.subList(subStart ,alarmLogList.size() - 1);
}
//查询结果足够最后一个显示
if (alarmLogList.size() >= subEnd){
alarmLogList = alarmLogList.subList(subStart , subEnd);
}
map.put("log",alarmLogList); map.put("log",alarmLogList);
map.put("logSize",total.get("count")); map.put("logSize",total.get("count"));
}else{ }else {
Map total = cassandraDao.getAlarmLogSize(); Map total = cassandraDao.getAlarmLogSize();
//如果显示第一页数据,没有前面的数据,直接查询就好。 alarmLogList = cassandraDao.getAlarmLogList();
if (pageNum == 1){ //最后一个数据不足一页的,显示到list最后可以
alarmLogList = cassandraDao.getAlarmLog(pageSize,flag); if (alarmLogList.size() > subStart && alarmLogList.size() < subEnd){
}else{ alarmLogList = alarmLogList.subList(subStart ,alarmLogList.size() - 1);
//如果查询的结果不是第一页。需要查询之前的数据,在根据时间戳查询需要的响应的数据
alarmLogByParam = cassandraDao.getAlarmLog(pageSize,flag);
if (alarmLogByParam != null && alarmLogByParam.size() > 0){
alarmLogList = cassandraDao.getAlarmLog(pageSize,alarmLogByParam.get(alarmLogByParam.size() - 1).getSerialnum());
}
} }
//查询结果足够最后一个显示
//查询结果非空List升序排序(根据AlarmMsg::getAlatime) if (alarmLogList.size() >= subEnd){
if (alarmLogList != null){ alarmLogList = alarmLogList.subList(subStart , subEnd);
//查询结果非空List升序排序(根据AlarmMsg::getAlatime)
alarmLogList = alarmLogList.stream().sorted(Comparator.comparing(AlarmLog::getAlatime)).collect(Collectors.toList());
//反转list排序
Collections.reverse(alarmLogList);
} }
map.put("log",alarmLogList); map.put("log",alarmLogList);
map.put("logSize",total.get("count")); map.put("logSize",total.get("count"));
} }
return map; return map;
} }
public static void main(String[] args) {
List<String> m = new ArrayList<>();
m.add("a");
m.add("b");
m.add("c");
m.add("d");
m.add("e");
m.add("f");
m = m.subList(1,4);
System.out.println(m);
}
// public Map<String, Object> searchLog(String json) { // public Map<String, Object> searchLog(String json) {
// Map<String,Object> map = new HashMap(); // Map<String,Object> map = new HashMap();
// //
......
...@@ -55,12 +55,22 @@ public class CassandraDaoImpl { ...@@ -55,12 +55,22 @@ public class CassandraDaoImpl {
// } // }
public List<AlarmLog> getAlarmLog(int size,long flag) { public List<AlarmLog> getAlarmLog(int size,long flag) {
String cql="select * from ctid_prof.alarm_log where state = '"+Constant.ALARM_RECOVERY+"' and serialnum<"+flag+" order by alatime desc limit "+size+ " allow filtering;"; String cql="select * from ctid_prof.alarm_log where state = '"+Constant.ALARM_RECOVERY+"' and serialnum < "+flag+" order by alatime desc limit "+size+ " allow filtering;";
return template.select(cql, AlarmLog.class);
}
public List<AlarmLog> getAlarmLog(int size) {
String cql="select * from ctid_prof.alarm_log where state = '"+Constant.ALARM_RECOVERY+"' order by alatime desc limit "+size+ " allow filtering;";
return template.select(cql, AlarmLog.class);
}
public List<AlarmLog> getAlarmLogALARM_ING(int size,long flag) {
String cql="select * from ctid_prof.alarm_log where state = '"+Constant.ALARM_ING+"' and serialnum<"+flag+" order by alatime desc limit "+size+ " allow filtering;";
return template.select(cql, AlarmLog.class); return template.select(cql, AlarmLog.class);
} }
public List<AlarmLog> getAlarmLogList() { public List<AlarmLog> getAlarmLogList() {
String cql="select * from ctid_prof.alarm_log where state = '" +Constant.ALARM_RECOVERY+"' allow filtering"; String cql="select * from ctid_prof.alarm_log where state = '" +Constant.ALARM_RECOVERY+"' order by alatime desc allow filtering";
return template.select(cql, AlarmLog.class); return template.select(cql, AlarmLog.class);
} }
public List<AlarmMsg> getAlarmMsgList() { public List<AlarmMsg> getAlarmMsgList() {
...@@ -145,32 +155,32 @@ public class CassandraDaoImpl { ...@@ -145,32 +155,32 @@ public class CassandraDaoImpl {
} }
public Map getAlarmLogSize(String start, String end) { public Map getAlarmLogSize(String start, String end) {
String cql="select count(*) from ctid_prof.alarm_log where alatime > '"+start+"' and alatime < '"+end+"' and state < '" +Constant.ALARM_ING+"' allow filtering"; String cql="select count(*) from ctid_prof.alarm_log where alatime > '"+start+"' and alatime < '"+end+"' and state = '" +Constant.ALARM_RECOVERY+"' allow filtering";
return template.selectOne(cql,Map.class); return template.selectOne(cql,Map.class);
} }
//根据开始与结束时间和偏移量查询告警日志 //根据开始与结束时间
public List<AlarmLog> getAlarmLogByStartAndEndAndLimitnum(String start, String end,int limitNum) { public List<AlarmLog> getAlarmLogByStartAndEnd(String start, String end) {
String cql="select * from ctid_prof.alarm_log where alatime > '"+start+"' and alatime < '"+end+"' and state < '" +Constant.ALARM_ING+"' limit "+limitNum+" allow filtering"; String cql="select * from ctid_prof.alarm_log where alatime > '"+start+"' and alatime < '"+end+"' and state = '" +Constant.ALARM_RECOVERY+"' allow filtering";
return template.select(cql,AlarmLog.class); return template.select(cql,AlarmLog.class);
} }
public Map getAlarmLogSize(String ip) { public Map getAlarmLogSize(String ip) {
String cql="select count(*) from ctid_prof.alarm_log where ip like '%"+ip+"%' and state < '" +Constant.ALARM_ING+"' allow filtering"; String cql="select count(*) from ctid_prof.alarm_log where ip like '%"+ip+"%' and state = '" +Constant.ALARM_RECOVERY+"' allow filtering";
return template.selectOne(cql,Map.class); return template.selectOne(cql,Map.class);
} }
//根据ip地址和偏移量查询告警日志 //根据ip地址查询告警日志
public List<AlarmLog> getAlarmLogByIpAndLimitnum(String ip,int limitNum) { public List<AlarmLog> getAlarmLogByIp(String ip) {
String cql="select * from ctid_prof.alarm_log where ip like '%"+ip+"%' and state < '" +Constant.ALARM_ING+"' limit "+limitNum+" allow filtering"; String cql="select * from ctid_prof.alarm_log where ip like '%"+ip+"%' and state = '" +Constant.ALARM_RECOVERY+"' allow filtering";
return template.select(cql,AlarmLog.class); return template.select(cql,AlarmLog.class);
} }
public Map getAlarmLogSize(String ip, String start, String end) { public Map getAlarmLogSize(String ip, String start, String end) {
String cql="select count(*) from ctid_prof.alarm_log where ip like '%"+ip+"%' and alatime > '"+start+"' and alatime <'"+end+"' and state < '" +Constant.ALARM_ING+"' allow filtering"; String cql="select count(*) from ctid_prof.alarm_log where ip like '%"+ip+"%' and alatime > '"+start+"' and alatime <'"+end+"' and state = '" +Constant.ALARM_RECOVERY+"' allow filtering";
return template.selectOne(cql,Map.class); return template.selectOne(cql,Map.class);
} }
//根据开始、结束时间、ip地址、偏移量查询告警日志
public List<AlarmLog> getAlarmLogByParam(String ip, String start, String end,int limitNum) { public List<AlarmLog> getAlarmLogByParam(String ip, String start, String end) {
String cql="select * from ctid_prof.alarm_log where ip like '%"+ip+"%' and alatime > '"+start+"' and alatime <'"+end+"' and state < '" +Constant.ALARM_ING+"' limit "+limitNum+" allow filtering"; String cql="select * from ctid_prof.alarm_log where ip like '%"+ip+"%' and alatime > '"+start+"' and alatime <'"+end+"' and state = '" +Constant.ALARM_RECOVERY+"' allow filtering";
return template.select(cql,AlarmLog.class); return template.select(cql,AlarmLog.class);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment