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(); } }