package com.gxx.record_app.web.monitor;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.gxx.record_app.base.dao.TransMonitorMapper;
import com.gxx.record_app.base.vo.TransMonitorWithBLOBs;
import com.gxx.record_app.dto.MonitorDto;
import com.gxx.record_app.interfaces.UserInterface;
/**
*
* - Title:
* -
* none
*
* - Description:监控控制器
* -
*
none
*
*
*
* @author Gxx
* @version 1.0, 2017年06月22日
* @since record_app
*/
@Controller
@RequestMapping("/monitor/")
public class MonitorController implements UserInterface {
/**
* 日志处理器
*/
private final Logger logger = Logger.getLogger(MonitorController.class);
@Autowired
private TransMonitorMapper transMonitorMapper;
/**
* 交易监控查询
* @param request
* @param monitorDto
* @return
*/
@RequestMapping(value = "/query",produces="application/json")
public @ResponseBody MonitorDto query(HttpServletRequest request, MonitorDto monitorDto) {
logger.info("交易监控查询,方法路径:[" + monitorDto.getMethodRoute() + "],方法类型:[" + monitorDto.getMethodType() + "]"
+ ",外部系统:[" + monitorDto.getOuterSystem() + "],是否异常发生:[" + monitorDto.getIsException() + "]"
+ ",开始时间:[" + monitorDto.getBeginTime() + "],结束时间:[" + monitorDto.getEndTime() + "]"
+ ",最小耗时(毫秒)(>=):[" + monitorDto.getBeginUsedTime() + "],最大耗时(毫秒)(<=):[" + monitorDto.getEndUsedTime() + "]"
+ ",机器ip:[" + monitorDto.getIp() + "]"
+ ",备注字段1:[" + monitorDto.getResv1() + "],备注字段2:[" + monitorDto.getResv2() + "]"
+ ",备注字段3:[" + monitorDto.getResv3() + "],每页个数:[" + monitorDto.getPageSize() + "]"
+ ",当前页数:[" + monitorDto.getActivePage() + "]");
monitorDto.setIsSuccess(true);
monitorDto.setMessage("查询成功!");
List list = transMonitorMapper.queryTransMonitor(monitorDto);
monitorDto.setList(list);
/**
* 查询配置信息总数
*/
long totalCount = transMonitorMapper.countTransMonitor(monitorDto);
long totalPage = 0;
if(monitorDto.getPageSize() > 0 && totalCount > 0){
totalPage = (totalCount-1)/monitorDto.getPageSize()+1;
}
monitorDto.setTotalCount(totalCount);
monitorDto.setTotalPage(totalPage);
return monitorDto;
}
/**
* 交易监控统计
* @param request
* @param monitorDto
* @return
*/
@RequestMapping(value = "/count",produces="application/json")
public @ResponseBody MonitorDto count(HttpServletRequest request, MonitorDto monitorDto) {
logger.info("交易监控查询,方法路径:[" + monitorDto.getMethodRoute() + "],方法类型:[" + monitorDto.getMethodType() + "]"
+ ",外部系统:[" + monitorDto.getOuterSystem() + "],是否异常发生:[" + monitorDto.getIsException() + "]"
+ ",开始时间:[" + monitorDto.getBeginTime() + "],结束时间:[" + monitorDto.getEndTime() + "]"
+ ",最小耗时(毫秒)(>=):[" + monitorDto.getBeginUsedTime() + "],最大耗时(毫秒)(<=):[" + monitorDto.getEndUsedTime() + "]"
+ ",机器ip:[" + monitorDto.getIp() + "]"
+ ",备注字段1:[" + monitorDto.getResv1() + "],备注字段2:[" + monitorDto.getResv2() + "]"
+ ",备注字段3:[" + monitorDto.getResv3() + "],每页个数:[" + monitorDto.getPageSize() + "]"
+ ",当前页数:[" + monitorDto.getActivePage() + "]");
monitorDto.setIsSuccess(true);
monitorDto.setMessage("查询成功!");
long totalCount = transMonitorMapper.countTransMonitor(monitorDto);//并发数
double avgUsedTime = 0;//平均耗时
long tps = 0;//每秒钟支持并发数
if(totalCount > 0) {
avgUsedTime = transMonitorMapper.queryAvgUsedTime(monitorDto);//平均耗时
if(avgUsedTime > 0) {
tps = (long)(totalCount *1000.0 / avgUsedTime);
}
}
monitorDto.setTotalCount(totalCount);
monitorDto.setAvgUsedTime(avgUsedTime);
monitorDto.setTps(tps);
return monitorDto;
}
/**
* 查询所有监控方法路径
* @param request
* @return
*/
@RequestMapping(value = "/queryAllMethodRoutes",produces="application/json")
public @ResponseBody List queryAllMethodRoutes(HttpServletRequest request) {
return transMonitorMapper.queryAllMethodRoutes();
}
}