Package org.jeecgframework.web.system.controller.core

Source Code of org.jeecgframework.web.system.controller.core.LogController

package org.jeecgframework.web.system.controller.core;

import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.jeecgframework.web.system.pojo.base.TSLog;
import org.jeecgframework.web.system.service.SystemService;

import org.apache.batik.transcoder.Transcoder;
import org.apache.batik.transcoder.TranscoderException;
import org.apache.batik.transcoder.TranscoderInput;
import org.apache.batik.transcoder.TranscoderOutput;
import org.apache.batik.transcoder.image.JPEGTranscoder;
import org.apache.batik.transcoder.image.PNGTranscoder;
import org.apache.fop.svg.PDFTranscoder;
import org.apache.log4j.Logger;
import org.jeecgframework.core.common.controller.BaseController;
import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery;
import org.jeecgframework.core.common.model.json.DataGrid;
import org.jeecgframework.core.common.model.json.Highchart;
import org.jeecgframework.core.util.oConvertUtils;
import org.jeecgframework.tag.core.easyui.TagUtil;
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 org.springframework.web.servlet.ModelAndView;


/**
* 日志处理类
*
* @author 张代浩
*
*/
@Controller
@RequestMapping("/logController")
public class LogController extends BaseController {
  /**
   * Logger for this class
   */
  private static final Logger logger = Logger.getLogger(LogController.class);
  private SystemService systemService;

  @Autowired
  public void setSystemService(SystemService systemService) {
    this.systemService = systemService;
  }

  /**
   * 日志列表页面跳转
   *
   * @return
   */
  @RequestMapping(params = "log")
  public ModelAndView log() {
    return new ModelAndView("system/log/logList");
  }

  /**
   * easyuiAJAX请求数据
   *
   * @param request
   * @param response
   * @param dataGrid
   */
  @RequestMapping(params = "datagrid")
  public void datagrid(HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
    CriteriaQuery cq = new CriteriaQuery(TSLog.class, dataGrid);
    String loglevel = request.getParameter("loglevel");
    if (loglevel == null || loglevel.equals("0")) {
    } else {
      cq.eq("loglevel", oConvertUtils.getShort(loglevel));
      cq.add();
    }
    this.systemService.getDataGridReturn(cq, true);
    TagUtil.datagrid(response, dataGrid);
  }
  /**
   * 统计集合页面
   *
   * @return
   */
  @RequestMapping(params = "statisticTabs")
  public ModelAndView statisticTabs(HttpServletRequest request) {
    return new ModelAndView("system/log/statisticTabs");
  }
  /**
   * 用户浏览器使用统计图
   *
   * @return
   */
  @RequestMapping(params = "userBroswer")
  public ModelAndView userBroswer(String reportType, HttpServletRequest request) {
    request.setAttribute("reportType", reportType);
    if("pie".equals(reportType)){
      return new ModelAndView("system/log/userBroswerPie");
    }else if("line".equals(reportType)) {
      return new ModelAndView("system/log/userBroswerLine");
    }
    return new ModelAndView("system/log/userBroswer");
  }

  /**
   * 报表数据生成
   *
   * @return
   */
  @RequestMapping(params = "getBroswerBar")
  @ResponseBody
  public List<Highchart> getBroswerBar(HttpServletRequest request,String reportType, HttpServletResponse response) {
    List<Highchart> list = new ArrayList<Highchart>();
    Highchart hc = new Highchart();
    StringBuffer sb = new StringBuffer();
    sb.append("SELECT broswer ,count(broswer) FROM TSLog group by broswer");
    List userBroswerList = systemService.findByQueryString(sb.toString());
    Long count = systemService.getCountForJdbc("SELECT COUNT(1) FROM T_S_Log WHERE 1=1");
    List lt = new ArrayList();
    hc = new Highchart();
    hc.setName("用户浏览器统计分析");
    hc.setType(reportType);
    Map<String, Object> map;
    if (userBroswerList.size() > 0) {
      for (Object object : userBroswerList) {
        map = new HashMap<String, Object>();
        Object[] obj = (Object[]) object;
        map.put("name", obj[0]);
        map.put("y", obj[1]);
        Long groupCount = (Long) obj[1];
        Double  percentage = 0.0;
        if (count != null && count.intValue() != 0) {
          percentage = new Double(groupCount)/count;
        }
        map.put("percentage", percentage*100);
        lt.add(map);
      }
    }
    hc.setData(lt);
    list.add(hc);
    return list;
  }

  /**
   * hightchart导出图片
   *
   * @param request
   * @param response
   * @throws IOException
   */
  @RequestMapping(params = "export")
  public void export(HttpServletRequest request, HttpServletResponse response)
      throws IOException {
    request.setCharacterEncoding("utf-8");
    response.setCharacterEncoding("utf-8");
    String type = request.getParameter("type");
    String svg = request.getParameter("svg");
    String filename = request.getParameter("filename");

    filename = filename == null ? "chart" : filename;
    ServletOutputStream out = response.getOutputStream();
    try {
      if (null != type && null != svg) {
        svg = svg.replaceAll(":rect", "rect");
        String ext = "";
        Transcoder t = null;
        if (type.equals("image/png")) {
          ext = "png";
          t = new PNGTranscoder();
        } else if (type.equals("image/jpeg")) {
          ext = "jpg";
          t = new JPEGTranscoder();
        } else if (type.equals("application/pdf")) {
          ext = "pdf";
          t = (Transcoder) new PDFTranscoder();
        } else if (type.equals("image/svg+xml"))
          ext = "svg";
        response.addHeader("Content-Disposition",
            "attachment; filename=" + new String(filename.getBytes("GBK"),"ISO-8859-1") + "." + ext);
        response.addHeader("Content-Type", type);

        if (null != t) {
          TranscoderInput input = new TranscoderInput(
              new StringReader(svg));
          TranscoderOutput output = new TranscoderOutput(out);

          try {
            t.transcode(input, output);
          } catch (TranscoderException e) {
            out.print("Problem transcoding stream. See the web logs for more details.");
            e.printStackTrace();
          }
        } else if (ext.equals("svg")) {
          // out.print(svg);
          OutputStreamWriter writer = new OutputStreamWriter(out,
              "UTF-8");
          writer.append(svg);
          writer.close();
        } else
          out.print("Invalid type: " + type);
      } else {
        response.addHeader("Content-Type", "text/html");
        out
            .println("Usage:\n\tParameter [svg]: The DOM Element to be converted."
                + "\n\tParameter [type]: The destination MIME type for the elment to be transcoded.");
      }
    } finally {
      if (out != null) {
        out.flush();
        out.close();
      }
    }
  }

}
TOP

Related Classes of org.jeecgframework.web.system.controller.core.LogController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.