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.JRParameter; 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.fill.JRAbstractLRUVirtualizer; import net.sf.jasperreports.engine.fill.JRSwapFileVirtualizer; import net.sf.jasperreports.engine.util.JRSwapFile; 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.citcorpore.bean.ContratoDTO; import br.com.centralit.citcorpore.bean.GrupoDTO; import br.com.centralit.citcorpore.bean.RelatorioQuantitativoRetornoDTO; import br.com.centralit.citcorpore.bean.RelatorioQuantitativoRetornoListaDTO; import br.com.centralit.citcorpore.bean.SolicitacaoServicoDTO; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.centralit.citcorpore.negocio.GrupoService; import br.com.centralit.citcorpore.negocio.SolicitacaoServicoService; import br.com.centralit.citcorpore.util.CITCorporeUtil; import br.com.centralit.citcorpore.util.Enumerados; import br.com.centralit.citcorpore.util.Enumerados.TipoDate; import br.com.centralit.citcorpore.util.LogoRel; import br.com.centralit.citcorpore.util.ParametroUtil; 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 RelatorioQuantitativoRetorno extends AjaxFormAction { 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; } GrupoService grupoService = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, null); //Busca por grupos ATIVOS Collection colGrupo = grupoService.listaGruposAtivos(); document.getSelectById("idGrupoAtual").removeAllOptions(); document.getSelectById("idGrupoAtual").addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.todos")); document.getSelectById("idGrupoAtual").addOptions(colGrupo, "idGrupo", "nome", null); /** * Preenche combo TOP List * * @author thyen.chang */ for(Enumerados.TopListEnum valor : Enumerados.TopListEnum.values()) document.getSelectById("topList").addOption(valor.getValorTopList().toString(), UtilI18N.internacionaliza(request, valor.getNomeTopList())); } @Override public Class getBeanClass() { return SolicitacaoServicoDTO.class; } /** * Faz a impress�o do relat�rio no formato pdf. * * @param document * @param request * @param response * @throws Exception * @author cledson.junior */ public void imprimirCargaQuantitativoRetornoPDF(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { SolicitacaoServicoDTO solicitacaoServicoDTO = (SolicitacaoServicoDTO) document.getBean(); HttpSession session = ((HttpServletRequest) request).getSession(); ContratoDTO contratoDto = new ContratoDTO(); GrupoDTO grupoDTO = new GrupoDTO(); GrupoService grupoService = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, null); 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() + "'"); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } if (solicitacaoServicoDTO.getIdSolicitacaoServicoPesquisa() == null) { if (solicitacaoServicoDTO.getDataInicio() == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.validacao.datainicio")); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } if (solicitacaoServicoDTO.getDataFim() == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.validacao.datafim")); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } } String FILTRO_FLUXO = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.FILTRO_FLUXO_NOME, "").trim(); Collection<RelatorioQuantitativoRetornoListaDTO> listaPorPeriodo = trazListaRetornos(solicitacaoServicoDTO, WebUtil.getLanguage(request)); Date dt = new Date(); String strCompl = "" + dt.getTime(); String caminhoJasper = CITCorporeUtil.CAMINHO_REAL_APP + Constantes.getValue("CAMINHO_RELATORIOS") + "RelatorioQuantitativoRetorno.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, "relatorioRetorno.quantidadeSolicitacoesRetorno")); parametros.put("CIDADE", UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioCidade")); parametros.put("DATA_HORA", UtilDatas.getDataHoraAtual()); parametros.put("NOME_USUARIO", usuario.getNomeUsuario()); parametros.put("dataInicio", solicitacaoServicoDTO.getDataInicio()); parametros.put("dataFim", solicitacaoServicoDTO.getDataFim()); parametros.put("Logo", LogoRel.getFile()); parametros.put("NOME_FLUXO", UtilI18N.internacionaliza(request, "relatorioRetorno.nomeFluxo")+": "); parametros.put("nomeFluxoRetorno", FILTRO_FLUXO); if (solicitacaoServicoDTO.getIdContrato() != null) { contratoDto.setIdContrato(solicitacaoServicoDTO.getIdContrato()); parametros.put("contrato", contratoDto.getNumero()); } else { parametros.put("contrato", contratoDto.getNumero()); } if (solicitacaoServicoDTO.getIdGrupoAtual() != null) { grupoDTO.setIdGrupo(solicitacaoServicoDTO.getIdGrupoAtual()); grupoDTO = (GrupoDTO) grupoService.restore(grupoDTO); parametros.put("grupo", grupoDTO.getNome().toUpperCase().trim()); } else { parametros.put("grupo", UtilI18N.internacionaliza(request, "citcorpore.comum.todos").toUpperCase()); } if (listaPorPeriodo.size() == 0) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioVazio")); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } try { JRDataSource dataSource = new JRBeanCollectionDataSource(listaPorPeriodo); JRSwapFile arquivoSwap = new JRSwapFile(diretorioReceita, 4096, 25); JRAbstractLRUVirtualizer virtualizer = new JRSwapFileVirtualizer(25, arquivoSwap, true); parametros.put(JRParameter.REPORT_VIRTUALIZER, virtualizer); JasperPrint print = JasperFillManager.fillReport(caminhoJasper, parametros, dataSource); //JasperViewer.viewReport(print,false); JasperExportManager.exportReportToPdfFile(print, diretorioReceita + "/RelatorioQuantitativoRetorno" + strCompl + "_" + usuario.getIdUsuario() + ".pdf"); document.executeScript("window.open('" + Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/printPDF/printPDF.jsp?url=" + diretorioRelativoOS + "/RelatorioQuantitativoRetorno" + strCompl + "_" + usuario.getIdUsuario() + ".pdf')"); } catch(OutOfMemoryError e) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.erro.erroServidor")); } document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); } /** * Gera o relat�rio no formato XLS * * @param document * @param request * @param response * @throws Exception * @author rodrigo.acorse */ public void imprimirCargaQuantitativoRetornoXLS(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { SolicitacaoServicoDTO solicitacaoServicoDTO = (SolicitacaoServicoDTO) document.getBean(); HttpSession session = ((HttpServletRequest) request).getSession(); ContratoDTO contratoDto = new ContratoDTO(); GrupoDTO grupoDTO = new GrupoDTO(); GrupoService grupoService = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, null); 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() + "'"); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } if (solicitacaoServicoDTO.getIdSolicitacaoServicoPesquisa() == null) { if (solicitacaoServicoDTO.getDataInicio() == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.validacao.datainicio")); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } if (solicitacaoServicoDTO.getDataFim() == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.validacao.datafim")); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } } String FILTRO_FLUXO = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.FILTRO_FLUXO_NOME, "").trim(); Collection<RelatorioQuantitativoRetornoListaDTO> listaPorPeriodo = trazListaRetornos(solicitacaoServicoDTO, WebUtil.getLanguage(request)); 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, "relatorioRetorno.quantidadeSolicitacoesRetorno")); parametros.put("CIDADE", UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioCidade")); parametros.put("DATA_HORA", UtilDatas.getDataHoraAtual()); parametros.put("NOME_USUARIO", usuario.getNomeUsuario()); parametros.put("dataInicio", solicitacaoServicoDTO.getDataInicio()); parametros.put("dataFim", solicitacaoServicoDTO.getDataFim()); parametros.put("Logo", LogoRel.getFile()); parametros.put("NOME_FLUXO", UtilI18N.internacionaliza(request, "relatorioRetorno.nomeFluxo")+": "); parametros.put("nomeFluxoRetorno", FILTRO_FLUXO); if (solicitacaoServicoDTO.getIdContrato() != null) { contratoDto.setIdContrato(solicitacaoServicoDTO.getIdContrato()); parametros.put("contrato", contratoDto.getNumero()); } else { parametros.put("contrato", contratoDto.getNumero()); } if (solicitacaoServicoDTO.getIdGrupoAtual() != null) { grupoDTO.setIdGrupo(solicitacaoServicoDTO.getIdGrupoAtual()); grupoDTO = (GrupoDTO) grupoService.restore(grupoDTO); parametros.put("grupo", grupoDTO.getNome().toUpperCase().trim()); } else { parametros.put("grupo", UtilI18N.internacionaliza(request, "citcorpore.comum.todos").toUpperCase()); } if (listaPorPeriodo.size() == 0) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioVazio")); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } try { JRDataSource dataSource = new JRBeanCollectionDataSource(listaPorPeriodo); JasperDesign desenho = JRXmlLoader.load(CITCorporeUtil.CAMINHO_REAL_APP + Constantes.getValue("CAMINHO_RELATORIOS") + "RelatorioQuantitativoRetorno.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 + "/RelatorioQuantitativoRetorno" + "_" + usuario.getIdUsuario() + ".xls"); exporter.exportReport(); document.executeScript("window.open('" + Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/printPDF/printPDF.jsp?url=" + diretorioRelativoOS + "/RelatorioQuantitativoRetorno" + "_" + usuario.getIdUsuario() + ".xls')"); } catch(OutOfMemoryError e) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.erro.erroServidor")); } document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); } public Collection<RelatorioQuantitativoRetornoListaDTO> trazListaRetornos(SolicitacaoServicoDTO solicitacaoServicoDTO, String language) throws ServiceException, Exception{ SolicitacaoServicoService solicitacaoServicoService = (SolicitacaoServicoService) ServiceLocator.getInstance().getService(SolicitacaoServicoService.class, null); String FILTRO_FLUXO = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.FILTRO_FLUXO_NOME, "").trim(); Collection<RelatorioQuantitativoRetornoListaDTO> listaPorPeriodo = new ArrayList<RelatorioQuantitativoRetornoListaDTO>(); Collection<RelatorioQuantitativoRetornoDTO> dadosRelatorio = new ArrayList<RelatorioQuantitativoRetornoDTO>(); Collection<RelatorioQuantitativoRetornoDTO> dadosRelatorioNome = new ArrayList<RelatorioQuantitativoRetornoDTO>(); Collection<RelatorioQuantitativoRetornoDTO> listaServicosRetorno = solicitacaoServicoService.listaServicosRetorno(solicitacaoServicoDTO,FILTRO_FLUXO); if (listaServicosRetorno != null) { for (RelatorioQuantitativoRetornoDTO relatorio : listaServicosRetorno) { RelatorioQuantitativoRetornoDTO dadosRetorno = new RelatorioQuantitativoRetornoDTO(); dadosRetorno = solicitacaoServicoService.servicoRetorno(relatorio); if (dadosRetorno != null) { relatorio.setIdOcorrencia(dadosRetorno.getIdOcorrencia()); relatorio.setDataRegistro(dadosRetorno.getDataRegistro()); relatorio.setHoraRegistro(dadosRetorno.getHoraRegistro()); for (RelatorioQuantitativoRetornoDTO relatorioNome : solicitacaoServicoService.listaServicosRetornoNomeResponsavel(relatorio)) { if (relatorioNome.getNome() != null && !relatorioNome.getNome().equals("")) { relatorio.setNome(relatorioNome.getNome().toUpperCase()); } relatorio.setDataCompleta(UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, relatorio.getDataRegistro(), language) +" " +relatorio.getHoraRegistro()); dadosRelatorio.add(relatorio); if (solicitacaoServicoDTO.getIdSolicitante() != null && !solicitacaoServicoDTO.getIdSolicitante().equals("")) { if (solicitacaoServicoDTO.getSolicitante().equalsIgnoreCase(relatorioNome.getNome())) { relatorio.setDataCompleta(UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, relatorio.getDataRegistro(), language) +" " +relatorio.getHoraRegistro()); if (!dadosRelatorioNome.contains(relatorio)) { dadosRelatorioNome.add(relatorio); } } } } } } } Collection<RelatorioQuantitativoRetornoDTO> solicitacaoRetorno = new ArrayList<RelatorioQuantitativoRetornoDTO>(); String FILTRO_FLUXO_ENCERRAMENTO = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.FILTRO_FLUXO_ENCERRAMENTO, "").trim(); for (RelatorioQuantitativoRetornoDTO relatorioQuantitativoRetornoDTO : dadosRelatorio) { if (solicitacaoServicoService.validaQuantidadeRetorno(relatorioQuantitativoRetornoDTO)) { RelatorioQuantitativoRetornoDTO relatorioId = solicitacaoServicoService.retornarIdEncerramento(FILTRO_FLUXO_ENCERRAMENTO, relatorioQuantitativoRetornoDTO); if(relatorioId != null){ if (solicitacaoServicoService.confirmaEncerramento(relatorioQuantitativoRetornoDTO, relatorioId.getIdElemento())) { solicitacaoRetorno.add(relatorioQuantitativoRetornoDTO); } } } } if (solicitacaoRetorno != null && !solicitacaoRetorno.isEmpty()) { dadosRelatorio.removeAll(solicitacaoRetorno); } if (solicitacaoServicoDTO.getIdSolicitante() != null && !solicitacaoServicoDTO.getIdSolicitante().equals("")) { Collection<RelatorioQuantitativoRetornoDTO> dadosPesquisa = new ArrayList<RelatorioQuantitativoRetornoDTO>(); for (RelatorioQuantitativoRetornoDTO pesquisaNome : dadosRelatorioNome) { for (RelatorioQuantitativoRetornoDTO principal : dadosRelatorio) { if (pesquisaNome.getIdSolicitacaoServico().equals(principal.getIdSolicitacaoServico())) { dadosPesquisa.add(principal); } } } dadosRelatorio = dadosPesquisa; } if (dadosRelatorio != null && !dadosRelatorio.isEmpty()) { RelatorioQuantitativoRetornoListaDTO relatorioQuantitativoRetornoListaDTO = new RelatorioQuantitativoRetornoListaDTO(); relatorioQuantitativoRetornoListaDTO.setListaPorPeriodo(dadosRelatorio); listaPorPeriodo.add(relatorioQuantitativoRetornoListaDTO); } return listaPorPeriodo; } }