package br.com.centralit.citcorpore.ajaxForms; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import net.sf.jasperreports.engine.JRDataSource; import net.sf.jasperreports.engine.JasperCompileManager; import net.sf.jasperreports.engine.JasperExportManager; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; import net.sf.jasperreports.engine.design.JasperDesign; import net.sf.jasperreports.engine.export.JRXlsExporter; import net.sf.jasperreports.engine.export.JRXlsExporterParameter; import net.sf.jasperreports.engine.xml.JRXmlLoader; import br.com.centralit.citajax.html.AjaxFormAction; import br.com.centralit.citajax.html.DocumentHTML; import br.com.centralit.citajax.html.HTMLSelect; import br.com.centralit.citcorpore.bean.ContratoDTO; import br.com.centralit.citcorpore.bean.RelatorioQuantitativoProblemaDTO; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.centralit.citcorpore.negocio.ContratoService; import br.com.centralit.citcorpore.negocio.ProblemaService; import br.com.centralit.citcorpore.util.CITCorporeUtil; import br.com.centralit.citcorpore.util.LogoRel; import br.com.centralit.citcorpore.util.UtilRelatorio; import br.com.centralit.citcorpore.util.WebUtil; import br.com.citframework.excecao.ServiceException; import br.com.citframework.service.ServiceLocator; import br.com.citframework.util.Constantes; import br.com.citframework.util.UtilDatas; import br.com.citframework.util.UtilI18N; @SuppressWarnings("rawtypes") public class RelatorioQuantitativoProblema extends AjaxFormAction { private UsuarioDTO usuario; private String localeSession = null; @Override public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { usuario = WebUtil.getUsuario(request); if (usuario == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada")); document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'"); return; } this.preencherComboContrato(document, request, response); } @Override public Class getBeanClass() { // TODO Auto-generated method stub return RelatorioQuantitativoProblemaDTO.class; } public void imprimirRelatorio(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws ServiceException, Exception{ HttpSession session = ((HttpServletRequest) request).getSession(); RelatorioQuantitativoProblemaDTO relatorioQuantitativoProblemaDto = (RelatorioQuantitativoProblemaDTO) document.getBean(); RelatorioQuantitativoProblemaDTO relatorioQuantitativoProblemaDtoAux = new RelatorioQuantitativoProblemaDTO(); usuario = WebUtil.getUsuario(request); ProblemaService problemaService = (ProblemaService) ServiceLocator.getInstance().getService(ProblemaService.class, null); Collection<RelatorioQuantitativoProblemaDTO> listaDadosGeral = new ArrayList<RelatorioQuantitativoProblemaDTO>(); Collection<RelatorioQuantitativoProblemaDTO> listaQuantitativoProblemaPorSituacao = problemaService.listaQuantidadeProblemaPorSituacao(relatorioQuantitativoProblemaDto); Collection<RelatorioQuantitativoProblemaDTO> listaQuantitativoProblemaPorGrupo = problemaService.listaQuantidadeProblemaPorGrupo(relatorioQuantitativoProblemaDto); Collection<RelatorioQuantitativoProblemaDTO> listaQuantitativoProblemaPorOrigem = problemaService.listaQuantidadeProblemaPorOrigem(relatorioQuantitativoProblemaDto); Collection<RelatorioQuantitativoProblemaDTO> listaQuantitativoProblemaPorSolicitante = problemaService.listaQuantidadeProblemaPorSolicitante(relatorioQuantitativoProblemaDto); Collection<RelatorioQuantitativoProblemaDTO> listaQuantitativoProblemaPorPrioridade = problemaService.listaQuantidadeProblemaPorPrioridade(relatorioQuantitativoProblemaDto); Collection<RelatorioQuantitativoProblemaDTO> listaQuantitativoProblemaPorCategoria = problemaService.listaQuantidadeProblemaPorCategoria(relatorioQuantitativoProblemaDto); Collection<RelatorioQuantitativoProblemaDTO> listaQuantitativoProblemaPorProprietario = problemaService.listaQuantidadeProblemaPorProprietario(relatorioQuantitativoProblemaDto); Collection<RelatorioQuantitativoProblemaDTO> listaQuantitativoProblemaPorImpacto = problemaService.listaQuantidadeProblemaPorImpacto(relatorioQuantitativoProblemaDto); Collection<RelatorioQuantitativoProblemaDTO> listaQuantitativoProblemaPorUrgencia = problemaService.listaQuantidadeProblemaPorUrgencia(relatorioQuantitativoProblemaDto); if(listaQuantitativoProblemaPorSituacao!=null){ relatorioQuantitativoProblemaDtoAux.setListaQuantidadeProblemaPorSituacao(listaQuantitativoProblemaPorSituacao); } if(listaQuantitativoProblemaPorGrupo!=null){ relatorioQuantitativoProblemaDtoAux.setListaQuantidadeProblemaPorGrupo(listaQuantitativoProblemaPorGrupo); } if(listaQuantitativoProblemaPorOrigem!=null){ relatorioQuantitativoProblemaDtoAux.setListaQuantidadeProblemaPorOrigem(listaQuantitativoProblemaPorOrigem); } if(listaQuantitativoProblemaPorSolicitante!=null){ relatorioQuantitativoProblemaDtoAux.setListaQuantidadeProblemaPorSolicitante(listaQuantitativoProblemaPorSolicitante); } if(listaQuantitativoProblemaPorPrioridade!=null){ relatorioQuantitativoProblemaDtoAux.setListaQuantidadeProblemaPorPrioridade(listaQuantitativoProblemaPorPrioridade); } if(listaQuantitativoProblemaPorCategoria!=null){ relatorioQuantitativoProblemaDtoAux.setListaQuantidadeProblemaPorCategoriaProblema(listaQuantitativoProblemaPorCategoria); } if(listaQuantitativoProblemaPorProprietario!=null){ relatorioQuantitativoProblemaDtoAux.setListaQuantidadeProblemaPorProprietario(listaQuantitativoProblemaPorProprietario); } if(listaQuantitativoProblemaPorImpacto!=null){ relatorioQuantitativoProblemaDtoAux.setListaQuantidadeProblemaPorImpacto(listaQuantitativoProblemaPorImpacto); } if(listaQuantitativoProblemaPorUrgencia!=null){ relatorioQuantitativoProblemaDtoAux.setListaQuantidadeProblemaPorUrgencia(listaQuantitativoProblemaPorUrgencia); } if(relatorioQuantitativoProblemaDtoAux.getListaQuantidadeProblemaPorSituacao() !=null || relatorioQuantitativoProblemaDtoAux.getListaQuantidadeProblemaPorGrupo()!=null || relatorioQuantitativoProblemaDtoAux.getListaQuantidadeProblemaPorOrigem()!=null || relatorioQuantitativoProblemaDtoAux.getListaQuantidadeProblemaPorSolicitante()!=null || relatorioQuantitativoProblemaDtoAux.getListaQuantidadeProblemaPorPrioridade() !=null || relatorioQuantitativoProblemaDtoAux.getListaQuantidadeProblemaPorCategoriaProblema()!=null || relatorioQuantitativoProblemaDtoAux.getListaQuantidadeProblemaPorProprietario()!=null || relatorioQuantitativoProblemaDtoAux.getListaQuantidadeProblemaPorImpacto()!=null || relatorioQuantitativoProblemaDtoAux.getListaQuantidadeProblemaPorUrgencia()!=null){ listaDadosGeral.add(relatorioQuantitativoProblemaDtoAux); }else{ listaDadosGeral = null; } if(listaDadosGeral != null){ Date dt = new Date(); String strCompl = "" + dt.getTime(); String caminhoJasper = CITCorporeUtil.CAMINHO_REAL_APP + Constantes.getValue("CAMINHO_RELATORIOS") + "RelatorioQuantitativoProblema.jasper"; String diretorioReceita = CITCorporeUtil.CAMINHO_REAL_APP + "/tempFiles"; String diretorioRelativoOS = Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/tempFiles"; Map<String, Object> parametros = new HashMap<String, Object>(); parametros = UtilRelatorio.trataInternacionalizacaoLocale(session, parametros); parametros.put("TITULO_RELATORIO", UtilI18N.internacionaliza(request, "relatorioQuantitativoProblema.relatorioQuantitativoProblema")); parametros.put("CIDADE", UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioCidade")); parametros.put("DATA_HORA", UtilDatas.getDataHoraAtual()); parametros.put("NOME_USUARIO", usuario.getNomeUsuario()); parametros.put("dataInicio", relatorioQuantitativoProblemaDto.getDataInicio()); parametros.put("dataFim", relatorioQuantitativoProblemaDto.getDataFim()); parametros.put("totalProblema", listaDadosGeral.size()); parametros.put("Logo", LogoRel.getFile()); if(relatorioQuantitativoProblemaDto.getIdContrato() != null && relatorioQuantitativoProblemaDto.getIdContrato().intValue() > 0){ parametros.put("contrato", this.getContrato(relatorioQuantitativoProblemaDto.getIdContrato())); }else{ parametros.put("contrato", UtilI18N.internacionaliza(request, "citcorpore.comum.todos")); } if (relatorioQuantitativoProblemaDto.getFormatoArquivoRelatorio().equalsIgnoreCase("pdf")) { this.gerarRelatorioFormatoPdf(listaDadosGeral, caminhoJasper, parametros, diretorioReceita, strCompl, document, diretorioRelativoOS, usuario); } else { this.gerarRelatorioFormatoXls(listaDadosGeral, parametros, diretorioReceita, strCompl, document, diretorioRelativoOS, usuario); } }else{ document.executeScript("reportEmpty();"); } document.executeScript("JANELA_AGUARDE_MENU.hide();"); } public void gerarRelatorioFormatoPdf(Collection<RelatorioQuantitativoProblemaDTO> listaDadosGeral, String caminhoJasper, Map<String, Object> parametros, String diretorioReceita, String strCompl, DocumentHTML document, String diretorioRelativoOS, UsuarioDTO usuario) throws Exception { JRDataSource dataSource = new JRBeanCollectionDataSource(listaDadosGeral); JasperPrint print = JasperFillManager.fillReport(caminhoJasper, parametros, dataSource); JasperExportManager.exportReportToPdfFile(print, diretorioReceita + "/RelatorioQuantitativoProblema" + strCompl + "_" + usuario.getIdUsuario() + ".pdf"); document.executeScript("window.open('" + Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/printPDF/printPDF.jsp?url=" + diretorioRelativoOS + "/RelatorioQuantitativoProblema" + strCompl + "_" + usuario.getIdUsuario() + ".pdf')"); } public void gerarRelatorioFormatoXls(Collection<RelatorioQuantitativoProblemaDTO> listaDadosGeral, Map<String, Object> parametros, String diretorioReceita, String strCompl, DocumentHTML document, String diretorioRelativoOS, UsuarioDTO usuario) throws Exception { JRDataSource dataSource = new JRBeanCollectionDataSource(listaDadosGeral); JasperDesign desenho = JRXmlLoader.load(CITCorporeUtil.CAMINHO_REAL_APP + Constantes.getValue("CAMINHO_RELATORIOS") + "RelatorioQuantitativoProblemaXls.jrxml"); JasperReport relatorio = JasperCompileManager.compileReport(desenho); JasperPrint impressao = JasperFillManager.fillReport(relatorio, parametros, dataSource); JRXlsExporter exporter = new JRXlsExporter(); exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT, impressao); exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE); exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.TRUE); exporter.setParameter(JRXlsExporterParameter.OUTPUT_FILE_NAME, diretorioReceita + "/RelatorioQuantitativoProblemaXls" + strCompl + "_" + usuario.getIdUsuario() + ".xls"); exporter.exportReport(); document.executeScript("window.open('" + Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/printPDF/printPDF.jsp?url=" + diretorioRelativoOS + "/RelatorioQuantitativoProblemaXls" + strCompl + "_" + usuario.getIdUsuario() + ".xls')"); } public void preencherComboContrato(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception{ HTMLSelect comboContrato = document.getSelectById("idContrato"); comboContrato.removeAllOptions(); ContratoService contratoService = (ContratoService) ServiceLocator.getInstance().getService(ContratoService.class, null); Collection colContrato = contratoService.listAtivos(); comboContrato.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.todos")); comboContrato.addOptions(colContrato, "idContrato", "numero", null); } private String getContrato(Integer id) throws ServiceException, Exception{ ContratoDTO contrato = new ContratoDTO(); contrato.setIdContrato(id); ContratoService contratoService = (ContratoService) ServiceLocator.getInstance().getService(ContratoService.class, null); contrato = (ContratoDTO) contratoService.restore(contrato); if(contrato != null){ return contrato.getNumero(); } return null; } }