package br.com.centralit.citcorpore.ajaxForms; 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.HTMLTable; import br.com.centralit.citcorpore.bean.CategoriaProblemaDTO; import br.com.centralit.citcorpore.bean.GrupoDTO; import br.com.centralit.citcorpore.bean.PesquisaProblemaDTO; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.centralit.citcorpore.negocio.CategoriaProblemaService; import br.com.centralit.citcorpore.negocio.GrupoService; import br.com.centralit.citcorpore.negocio.ProblemaService; import br.com.centralit.citcorpore.negocio.UsuarioService; import br.com.centralit.citcorpore.util.CITCorporeUtil; import br.com.centralit.citcorpore.util.Enumerados.TipoDate; 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.service.ServiceLocator; import br.com.citframework.util.Constantes; import br.com.citframework.util.UtilDatas; import br.com.citframework.util.UtilI18N; @SuppressWarnings({ "rawtypes", "unchecked","unused" }) public class PesquisaProblema extends AjaxFormAction { UsuarioDTO usuario; private String localeSession = null; @Override public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { document.executeScript("$('#divTblProblema').hide();"); this.preencherComboCidade(document, request, response); this.preencherComboCategoriaProblema(document, request, response); } /** * @author geber.costa * @param document * @param request * @param response * @throws Exception */ public void pesquisaProblema(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { PesquisaProblemaDTO pesquisaProblemaDTO = (PesquisaProblemaDTO) document.getBean(); ProblemaService problemaService = (ProblemaService) ServiceLocator.getInstance().getService(ProblemaService.class, null); UsuarioService usuarioService = (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null); UsuarioDTO usuarioDto = new UsuarioDTO(); if (pesquisaProblemaDTO.getIdProprietario() != null) { usuarioDto = usuarioService.restoreByIdEmpregadosDeUsuarios(pesquisaProblemaDTO.getIdProprietario()); if (usuarioDto.getIdUsuario() != null) { pesquisaProblemaDTO.setIdProprietario(usuarioDto.getIdUsuario()); } } Collection<PesquisaProblemaDTO> listaProblema = problemaService.listProblemaByCriterios(pesquisaProblemaDTO); if (listaProblema != null) { HTMLTable tblProblema = document.getTableById("tblProblema"); tblProblema.deleteAllRows(); int id = 0; boolean verificaId = false; for (PesquisaProblemaDTO problema : listaProblema) { // faz a valida��o do tamanho do campo t�tulo if (problema.getTitulo().length() >= 200) { StringBuilder sb = new StringBuilder(); sb.append(problema.getTitulo().substring(0, 49) + "\n"); sb.append(problema.getTitulo().substring(50, 99) + "\n"); sb.append(problema.getTitulo().substring(100, 149) + "\n"); sb.append(problema.getTitulo().substring(150, problema.getTitulo().length())); problema.setTitulo(sb.toString()); } else if (problema.getTitulo().length() >= 100 && problema.getTitulo().length() < 200) { StringBuilder sb = new StringBuilder(); sb.append(problema.getTitulo().substring(0, 99) + "\n"); sb.append(problema.getTitulo().substring(100, problema.getTitulo().length()) + "\n"); problema.setTitulo(sb.toString()); } else if (problema.getTitulo().length() >= 50 && problema.getTitulo().length() < 200) { StringBuilder sb = new StringBuilder(); sb.append(problema.getTitulo().substring(0, 49) + "\n"); sb.append(problema.getTitulo().substring(50, problema.getTitulo().length())); problema.setTitulo(sb.toString()); } else { } // faz a valida��o do tamanho do campo descri��o if (problema.getDescricao().length() > 800) { StringBuilder sb = new StringBuilder(); sb.append(problema.getDescricao().substring(0, 199) + "\n"); sb.append(problema.getDescricao().substring(200, 399) + "\n"); sb.append(problema.getDescricao().substring(400, 599) + "\n"); sb.append(problema.getDescricao().substring(600, 799) + "\n"); sb.append(problema.getDescricao().substring(800, problema.getDescricao().length())); problema.setDescricao(sb.toString()); } else if (problema.getDescricao().length() > 600) { StringBuilder sb = new StringBuilder(); sb.append(problema.getDescricao().substring(0, 199) + "\n"); sb.append(problema.getDescricao().substring(200, 399) + "\n"); sb.append(problema.getDescricao().substring(400, 599) + "\n"); sb.append(problema.getDescricao().substring(600, problema.getDescricao().length())); problema.setDescricao(sb.toString()); } else if (problema.getDescricao().length() > 400) { StringBuilder sb = new StringBuilder(); sb.append(problema.getDescricao().substring(0, 199) + "\n"); sb.append(problema.getDescricao().substring(200, 399) + "\n"); sb.append(problema.getDescricao().substring(400, problema.getDescricao().length())); problema.setDescricao(sb.toString()); } else if (problema.getDescricao().length() > 200) { StringBuilder sb = new StringBuilder(); sb.append(problema.getDescricao().substring(0, 199) + "\n"); sb.append(problema.getDescricao().substring(200, problema.getDescricao().length())); problema.setDescricao(sb.toString()); } else { // } if(problema.getDataHoraCaptura()!=null){ problema.setDataHoraInicioStr(UtilDatas.convertDateToString(TipoDate.TIMESTAMP_WITH_SECONDS, problema.getDataHoraCaptura(), WebUtil.getLanguage(request))); } if(problema.getDataHoraFim()!=null){ problema.setDataHoraConclusaoStr(UtilDatas.convertDateToString(TipoDate.TIMESTAMP_WITH_SECONDS, problema.getDataHoraFim(), WebUtil.getLanguage(request))); } tblProblema.addRow(problema, new String[] { "idProblema", "categoria","status","nomeProprietario", "nomeSolicitante", "dataHoraInicioStr","dataHoraConclusaoStr", "nomeGrupoAtual", "titulo", "descricao"}, null, null, null, null, null); document.executeScript("HTMLUtils.applyStyleClassInAllCells('tblProblema', 'tblProblema');"); } document.executeScript("$('#divTblProblema').show();"); } else { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.resultado")); document.executeScript("$('#divTblProblema').hide();"); } document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); } /** * fireEvent para impress�o dos relatorio. * * @param document * @param request * @param response * @throws Exception * @author geber.costa */ public void imprimirRelatorioProblema(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { HttpSession session = ((HttpServletRequest) request).getSession(); PesquisaProblemaDTO pesquisaProblemaDto = (PesquisaProblemaDTO) document.getBean(); GrupoDTO grupoDto = new GrupoDTO(); UsuarioDTO usuarioDto = new UsuarioDTO(); CategoriaProblemaDTO categoriaProblemaDto = new CategoriaProblemaDTO(); GrupoService grupoService = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, null); usuario = WebUtil.getUsuario(request); ProblemaService problemaService = (ProblemaService) ServiceLocator.getInstance().getService(ProblemaService.class, null); UsuarioService usuarioService = (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null); CategoriaProblemaService categoriaProblemaService = (CategoriaProblemaService) ServiceLocator.getInstance().getService(CategoriaProblemaService.class, null); if (pesquisaProblemaDto != null && pesquisaProblemaDto.getIdProprietario() != null) { usuarioDto = usuarioService.restoreByIdEmpregadosDeUsuarios(pesquisaProblemaDto.getIdProprietario()); if (usuarioDto.getIdUsuario() != null) { pesquisaProblemaDto.setIdProprietario(usuarioDto.getIdUsuario()); } } Collection<PesquisaProblemaDTO> listProblemaByCriterios = problemaService.listProblemaByCriterios(pesquisaProblemaDto); if (listProblemaByCriterios != null) { if (pesquisaProblemaDto != null) { Date dt = new Date(); String strCompl = "" + dt.getTime(); String caminhoJasper = CITCorporeUtil.CAMINHO_REAL_APP + Constantes.getValue("CAMINHO_RELATORIOS") + "RelatorioPesquisaProblema.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, "relatorioProblema.titulo")); parametros.put("CIDADE", UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioCidade")); parametros.put("DATA_HORA", UtilDatas.getDataHoraAtual()); parametros.put("NOME_USUARIO", usuario.getNomeUsuario()); parametros.put("dataInicio", pesquisaProblemaDto.getDataInicio()); parametros.put("dataFim", pesquisaProblemaDto.getDataFim()); parametros.put("Logo", LogoRel.getFile()); parametros.put("totalProblema", listProblemaByCriterios.size()); parametros.put("numero", pesquisaProblemaDto.getIdProblema()); parametros.put("status", pesquisaProblemaDto.getStatus()); parametros.put("nomeSolicitante", pesquisaProblemaDto.getNomeSolicitante()); parametros.put("proprietario", pesquisaProblemaDto.getNomeProprietario()); parametros.put("exibirCampoDescricao", pesquisaProblemaDto.getExibirCampoDescricao()); parametros.put("nomeItemConfiguracao", pesquisaProblemaDto.getNomeItemConfiguracao()); if (pesquisaProblemaDto.getIdCategoriaProblema() != null) { categoriaProblemaDto.setIdCategoriaProblema(pesquisaProblemaDto.getIdCategoriaProblema()); categoriaProblemaDto = (CategoriaProblemaDTO) categoriaProblemaService.restore(categoriaProblemaDto); parametros.put("categoria", categoriaProblemaDto.getNomeCategoria()); } else { parametros.put("categoria", null); } if (pesquisaProblemaDto.getIdGrupoAtual() != null) { grupoDto.setIdGrupo(pesquisaProblemaDto.getIdGrupoAtual()); grupoDto = (GrupoDTO) grupoService.restore(grupoDto); parametros.put("grupoSolucionador", grupoDto.getNome()); } else { parametros.put("grupoSolucionador", ""); } /* * if (pesquisaRequisicaoMudancaDto.getIdCategoriaMudanca() != null) { categoriaMudancaDto.setIdCategoriaMudanca(pesquisaRequisicaoMudancaDto.getIdCategoriaMudanca()); * categoriaMudancaDto = (CategoriaMudancaDTO) categoriaMudancaService.restore(categoriaMudancaDto); parametros.put("categoria", categoriaMudancaDto.getNomeCategoria()); }else{ * parametros.put("categoria", ""); } */ if (pesquisaProblemaDto.getFormatoArquivoRelatorio().equalsIgnoreCase("pdf")) { this.gerarRelatorioFormatoPdf(listProblemaByCriterios, caminhoJasper, parametros, diretorioReceita, strCompl, document, diretorioRelativoOS, usuario); } else { this.gerarRelatorioFormatoXls(listProblemaByCriterios, parametros, diretorioReceita, strCompl, document, diretorioRelativoOS, usuario); } } else { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioVazio")); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } } else { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioVazio")); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); } /** * Gerar relat�rio no formato .pdf * * @param listProblemaByCriterios * @param caminhoJasper * @param parametros * @param diretorioReceita * @param strCompl * @param document * @param diretorioRelativoOS * @param usuario * @throws Exception * @author geber.costa */ public void gerarRelatorioFormatoPdf(Collection<PesquisaProblemaDTO> listProblemaByCriterios, String caminhoJasper, Map<String, Object> parametros, String diretorioReceita, String strCompl, DocumentHTML document, String diretorioRelativoOS, UsuarioDTO usuario) throws Exception { JRDataSource dataSource = new JRBeanCollectionDataSource(listProblemaByCriterios); JasperPrint print = JasperFillManager.fillReport(caminhoJasper, parametros, dataSource); JasperExportManager.exportReportToPdfFile(print, diretorioReceita + "/RelatorioPesquisaProblema" + strCompl + "_" + usuario.getIdUsuario() + ".pdf"); document.executeScript("window.open('" + Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/printPDF/printPDF.jsp?url=" + diretorioRelativoOS + "/RelatorioPesquisaProblema" + strCompl + "_" + usuario.getIdUsuario() + ".pdf')"); } /** * Gerar relat�rio no formato .xls * * @param listProblemaByCriterios * @param parametros * @param diretorioReceita * @param strCompl * @param document * @param diretorioRelativoOS * @param usuario * @throws Exception * @author geber.costa */ public void gerarRelatorioFormatoXls(Collection<PesquisaProblemaDTO> listProblemaByCriterios, Map<String, Object> parametros, String diretorioReceita, String strCompl, DocumentHTML document, String diretorioRelativoOS, UsuarioDTO usuario) throws Exception { JRDataSource dataSource = new JRBeanCollectionDataSource(listProblemaByCriterios); JasperDesign desenho = JRXmlLoader.load(CITCorporeUtil.CAMINHO_REAL_APP + Constantes.getValue("CAMINHO_RELATORIOS") + "RelatorioPesquisaProblemaXls.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 + "/RelatorioPesquisaProblema" + strCompl + "_" + usuario.getIdUsuario() + ".xls"); exporter.exportReport(); document.executeScript("window.open('" + Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/printPDF/printPDF.jsp?url=" + diretorioRelativoOS + "/RelatorioPesquisaProblema" + strCompl + "_" + usuario.getIdUsuario() + ".xls')"); } public void preencherComboCidade(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { document.getSelectById("idGrupoAtual").removeAllOptions(); GrupoService grupoService = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, null); Collection colGrupos = grupoService.findGruposAtivos(); document.getSelectById("idGrupoAtual").addOption("", "-- " + UtilI18N.internacionaliza(request, "citcorpore.comum.todos") + " --"); document.getSelectById("idGrupoAtual").addOptions(colGrupos, "idGrupo", "nome", null); } public void preencherComboCategoriaProblema(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { document.getSelectById("comboCategoriaProblema").removeAllOptions(); CategoriaProblemaService categoriaProblemaService = (CategoriaProblemaService) ServiceLocator.getInstance().getService(CategoriaProblemaService.class, null); Collection<CategoriaProblema> listaCategoriaProblema = categoriaProblemaService.getAtivos(); document.getSelectById("comboCategoriaProblema").addOption("", "-- " + UtilI18N.internacionaliza(request, "citcorpore.comum.todos") + " --"); document.getSelectById("comboCategoriaProblema").addOptions(listaCategoriaProblema, "idCategoriaProblema", "nomeCategoria", null); } // public void preencherComboStatus(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception{ // // ProblemaDTO problemaDto = (ProblemaDTO) document.getBean(); // // document.getSelectById("status").removeAllOptions(); // // ProblemaService problemaService = (ProblemaService) ServiceLocator.getInstance().getService(ProblemaService.class, null); // Collection <Problema> listaProblema = problemaService.findByIdProblema(problemaDto.getIdProblema()); // // document.getSelectById("status").addOption("", "-- "+ UtilI18N.internacionaliza(request, "citcorpore.comum.todos")+ " --"); // document.getSelectById("status").addOptions(listaProblema, "idProblema", "status", null); // // } public Class getBeanClass() { return PesquisaProblemaDTO.class; } public void validacaoCategoriaProblema(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { PesquisaProblemaDTO pesquisaProblemDto = (PesquisaProblemaDTO) document.getBean(); CategoriaProblemaService categoriaProblemaService = (CategoriaProblemaService) ServiceLocator.getInstance().getService(CategoriaProblemaService.class, null); CategoriaProblemaDTO categoriaProblemaDto = new CategoriaProblemaDTO(); if (pesquisaProblemDto.getIdTipoProblema() != null) { categoriaProblemaDto.setIdCategoriaProblema(pesquisaProblemDto.getIdTipoProblema()); categoriaProblemaDto = (CategoriaProblemaDTO) categoriaProblemaService.restore(categoriaProblemaDto); if (categoriaProblemaDto.getNomeCategoria() != null && categoriaProblemaDto.getNomeCategoria().equalsIgnoreCase("Normal")) { document.executeScript("$('#nomeCategoriaProblema').attr('disabled', " + false + ");"); document.executeScript("$('#div_categoria').show();"); } else { document.executeScript("$('#div_categoria').hide();"); document.executeScript("$('#nomeCategoriaProblema').attr('disabled', " + true + ");"); } } } }