示例#1
0
  public static void execute(
      ServletContext sc, HttpServletRequest request, HttpServletResponse response) {
    try {
      List<RelatorioUsuario> listRelusers = new ArrayList<RelatorioUsuario>();

      listUsers = UsuariosRelDAO.getAll();

      for (int i = 0; i < listUsers.size(); i++) {
        RelatorioUsuario relUsers = new RelatorioUsuario();
        relUsers.setId(listUsers.get(i).getid());
        relUsers.setLogin(listUsers.get(i).getLogin());
        relUsers.setNome(listUsers.get(i).getNome());
        relUsers.setTipoUsuario(listUsers.get(i).getTipoUsuario());
        listRelusers.add(relUsers);
      }

      JRDataSource jrds = new JRBeanCollectionDataSource(listRelusers);

      // parametros do relatorio
      HashMap parameters = new HashMap();
      // lendo arquivo jasper
      File reportFile = new File(sc.getRealPath("/WEB-INF/rel/rel_cpi.jasper"));
      // String fileName = "teste";
      byte[] bytes = null;
      try {
        bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), parameters, jrds);
        // JasperPrint print = JasperFillManager.fillReport(reportFile.getPath(), parameters, jrds);

        // bytes = JasperExportManager.exportReportToPdf(print);
        // JasperViewer.viewReport( reportFile.getName() + ".pdf", false );
      } catch (Exception e) {
        e.printStackTrace();
        return;
      }
      //
      if (bytes != null && bytes.length > 0) {
        response.setContentType("application/pdf");
        response.setContentLength(bytes.length);
        ServletOutputStream ouputStream = response.getOutputStream();
        ouputStream.write(bytes, 0, bytes.length);
        ouputStream.flush();
        ouputStream.close();
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
示例#2
0
  public byte[] gerarRelatorio(
      List<Object> clAttrsRelatorio, String pathReports, String pathImages, String nomeRelatorio)
      throws JRException {
    logger.entering(new Object[0]);
    Map<String, String> parametros = new HashMap<String, String>();
    parametros.put(CAMINHO_RELATORIOS, pathReports);
    parametros.put(CAMINHO_IMAGENS, pathImages);
    try {
      JasperReport jasperReport = (JasperReport) JRLoader.loadObject(pathReports + nomeRelatorio);

      logger.exiting(new Object[0]);
      return JasperRunManager.runReportToPdf(
          jasperReport, parametros, new JRBeanCollectionDataSource(clAttrsRelatorio));
    } catch (JRException e) {
      logger.exception(e.getMessage(), e);
      throw e;
    }
  }
示例#3
0
  /**
   * 用jasperReport导出Pdf
   *
   * @param request
   * @param response/
   * @param reportFilePath jasper报表文件路径
   * @param paramMap 字段
   * @param dataList
   * @throws IOException
   * @throws JRException void
   * @author xiaobao @Create Mar 5, 2012 10:01:39 AM
   */
  public static void viewReportToPDF(
      HttpServletRequest request,
      HttpServletResponse response,
      String reportFilePath,
      Map<String, Object> paramMap,
      List dataList)
      throws IOException, JRException {
    JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(dataList);
    byte[] bytes = JasperRunManager.runReportToPdf(reportFilePath, paramMap, dataSource);

    String fileName = paramMap.get("fileName").toString();
    try {
      fileName = new String(fileName.getBytes(), "iso8859-1");
    } catch (UnsupportedEncodingException e1) {
      e1.printStackTrace();
    }
    OutputStream out = response.getOutputStream();
    response.setContentType("application/pdf;charset=GBK");
    response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".pdf");
    response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
    out.write(bytes, 0, bytes.length);
    out.flush();
    out.close();
  }
示例#4
0
  public ActionForward print(
      ActionMapping mapping,
      ActionForm form,
      HttpServletRequest request,
      HttpServletResponse response)
      throws JRException, IOException, ServletException {
    MemberManager mm = (MemberManager) getBean(IConstants.MEMBER_MANAGER_BEAN_NAME);
    StudAffairManager sm = (StudAffairManager) getBean("studAffairManager");
    StudAffairDAO dao = (StudAffairDAO) getBean("studAffairDAO");
    HttpSession session = request.getSession(false);
    DynaActionForm aForm = (DynaActionForm) form;
    UserCredential user = (UserCredential) session.getAttribute("Credential");

    String qty = aForm.getString("qty").trim();
    boolean setupPrinter = false;
    boolean isPrint = false;

    ActionMessages messages = new ActionMessages();

    if (!qty.equals("")) {
      String idno = user.getMember().getIdno();
      String prefix = idno.substring(idno.length() - 5);
      int q = Integer.parseInt(qty);
      String[] codes = new String[q];
      String rano = prefix + this.getRandom(4);
      String hql = "From AssessPaper Where serviceNo='" + rano + "' And idno='" + idno + "'";

      // 建立服務編號
      boolean isUniq = false;
      for (int j = 0; j < q; j++) {
        while (true) {
          rano = prefix + this.getRandom(4);
          isUniq = true;
          if (dao.submitQuery(hql).isEmpty()) {
            // 檢查服務編號是否重複
            for (int k = 0; k < j; k++) {
              if (rano == codes[k]) {
                isUniq = false;
                break;
              }
            }
            if (isUniq) {
              codes[j] = rano;
              break;
            }
          }
        }
      }
      // Insert into DB
      ActionMessages msg = mm.addNewAssessPaper(idno, codes);
      if (!msg.isEmpty()) {
        messages.add(
            ActionMessages.GLOBAL_MESSAGE, new ActionMessage("MessageN1", "滿意度調查列印資料新增失敗:" + msg));
        saveErrors(request, messages);
        setContentPage(request, "personnel/AssessPaperPrint.jsp");
        return mapping.findForward(IConstants.ACTION_MAIN_NAME);
      }

      // TODO: print the paper in pdf format
      String reportSourceFile = "/WEB-INF/reports/AssessPaper.jrxml";
      String reportCompiledFile = "/WEB-INF/reports/AssessPaper.jasper";
      List<Object> printData = new ArrayList<Object>();
      ServletContext context = request.getSession().getServletContext();
      JasperReportUtils.initJasperReportsClasspath(request);

      printData = fillPrintData(codes);

      DecimalFormat df = new DecimalFormat(",##0.0");
      File reportFile = null;
      reportFile = new File(context.getRealPath(reportCompiledFile));
      // 需要時再編譯即可
      // if (!reportFile.exists()) {
      JasperReportUtils.compileJasperReports(context.getRealPath(reportSourceFile));
      reportFile = new File(context.getRealPath(reportCompiledFile));
      if (!reportFile.exists())
        throw new JRRuntimeException("查無\"AssessPaper.jasper\"檔案,請電洽電算中心,謝謝!!");
      // }

      Map<String, String> parameters = new HashMap<String, String>();

      JasperReport jasperReport = (JasperReport) JRLoader.loadObject(reportFile.getPath());

      parameters.put("idno", idno);
      parameters.put("userName", user.getMember().getName());
      parameters.put("PrintDate", Toolket.Date2Str(new Date())); // 列印日期

      String[] fields = {
        "serviceNo0",
        "serviceNo1",
        "serviceNo2",
        "serviceNo3",
        "serviceNo4",
        "serviceNo5",
        "serviceNo6",
        "serviceNo7",
        "serviceNo8",
        "serviceNo9"
      };

      JasperPrint jasperPrint =
          JasperFillManager.fillReport(
              jasperReport, parameters, new HibernateQueryResultDataSource(printData, fields));
      // jasperPrint.
      // 列印或預覽
      if (isPrint) {
        JasperPrintManager.printReport(jasperPrint, setupPrinter);
      } else {
        byte[] bytes =
            JasperRunManager.runReportToPdf(
                jasperReport, parameters, new HibernateQueryResultDataSource(printData, fields));

        Calendar td = Calendar.getInstance();
        String ran =
            ""
                + (td.get(Calendar.MINUTE))
                + (td.get(Calendar.SECOND))
                + (td.get(Calendar.MILLISECOND));
        String ranDir = "/WEB-INF/reports/temp/" + ran;

        File tempdir = new File(context.getRealPath(ranDir));
        if (!tempdir.exists()) tempdir.mkdirs();

        OutputStream os =
            new BufferedOutputStream(
                new FileOutputStream(new File(context.getRealPath(ranDir + "/AssessPaper.pdf"))));
        JasperExportManager.exportReportToPdfStream(jasperPrint, os);
        JasperReportUtils.printPdfToFrontEnd(response, bytes);
        os.close();
        Toolket.deleteDIR(tempdir);
        return null;
      }

    } else {
      messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("MessageN1", "請輸入欲列印張數!"));
      saveErrors(request, messages);
    }
    setContentPage(request, "personnel/AssessPaperPrint.jsp");
    return unspecified(mapping, form, request, response);
  }
  @SuppressWarnings("unchecked")
  public void gerarRelatorio() {

    FacesContext context = FacesContext.getCurrentInstance();

    HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();

    try {

      String caminho =
          context.getExternalContext().getRealPath("/WEB-INF/relatorio/form_respondido.jasper");

      @SuppressWarnings("rawtypes")
      HashMap parametro = new HashMap();

      parametro.put("avaliado_id", this.idAvaliado);
      parametro.put("processo_id", this.idProcesso);
      parametro.put("media_final", this.media);
      parametro.put("conceito", this.descricaoConceito);

      byte[] bytes =
          JasperRunManager.runReportToPdf(caminho, parametro, ControlaConexao.getConexao());

      if (bytes.length != 0 && bytes != null) {
        ServletOutputStream saida = response.getOutputStream();

        response.setContentType("application/pdf");
        response.setContentLength(bytes.length);
        saida.write(bytes, 0, bytes.length);
        saida.flush();
        saida.close();

        context.responseComplete();
      } else {
        FacesContext.getCurrentInstance()
            .addMessage(
                null,
                new FacesMessage(
                    FacesMessage.SEVERITY_WARN,
                    "Não foi possível gerar relatório. ",
                    "Tente novamente mais tarde."));
      }

    } catch (IOException e) {
      System.out.println("IOException " + e.getMessage());
      FacesContext.getCurrentInstance()
          .addMessage(
              null,
              new FacesMessage(
                  FacesMessage.SEVERITY_WARN,
                  "Não foi possível gerar relatório. ",
                  "Tente novamente mais tarde."));

    } catch (JRException e) {
      System.out.println("JRE: " + e.getMessage());
      FacesContext.getCurrentInstance()
          .addMessage(
              null,
              new FacesMessage(
                  FacesMessage.SEVERITY_WARN,
                  "Não foi possível gerar relatório. ",
                  "Tente novamente mais tarde."));

    } catch (SQLException e) {
      System.out.println("JRE: " + e.getMessage());
      FacesContext.getCurrentInstance()
          .addMessage(
              null,
              new FacesMessage(
                  FacesMessage.SEVERITY_WARN,
                  "Não foi possível gerar relatório. ",
                  "Tente novamente mais tarde."));
    }

    media = 0;
    nota = 0;
    descricaoConceito = "";
  }