package br.com.centralit.citcorpore.ajaxForms; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import net.sf.jasperreports.engine.JasperExportManager; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.axis.CategoryLabelPositions; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.data.category.DefaultCategoryDataset; 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.citajax.html.HTMLTable; import br.com.centralit.citcorpore.bean.AnaliseTendenciasDTO; import br.com.centralit.citcorpore.bean.CausaIncidenteDTO; import br.com.centralit.citcorpore.bean.ContratoDTO; import br.com.centralit.citcorpore.bean.GrupoDTO; import br.com.centralit.citcorpore.bean.ImpactoDTO; import br.com.centralit.citcorpore.bean.ItemConfiguracaoDTO; import br.com.centralit.citcorpore.bean.ServicoDTO; import br.com.centralit.citcorpore.bean.TendenciaDTO; import br.com.centralit.citcorpore.bean.TendenciaGanttDTO; import br.com.centralit.citcorpore.bean.TipoDemandaServicoDTO; import br.com.centralit.citcorpore.bean.UrgenciaDTO; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.centralit.citcorpore.negocio.AnaliseTendenciasService; import br.com.centralit.citcorpore.negocio.CausaIncidenteService; import br.com.centralit.citcorpore.negocio.ContratoService; import br.com.centralit.citcorpore.negocio.GrupoService; import br.com.centralit.citcorpore.negocio.ImpactoService; import br.com.centralit.citcorpore.negocio.ItemConfiguracaoService; import br.com.centralit.citcorpore.negocio.ServicoService; import br.com.centralit.citcorpore.negocio.TipoDemandaServicoService; import br.com.centralit.citcorpore.negocio.UrgenciaService; 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.excecao.LogicException; 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 AnaliseTendencias extends AjaxFormAction { @Override public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { this.carregarComboContratos(document); this.carregarComboTipoDemandaServico(document, request); this.carregarComboUrgencia(document, request); this.carregarComboImpacto(document, request); this.carregarComboCausaIncidente(document, request); this.carregarComboGrupoExecutor(document, request); } /** * Carrega Combo Grupo Executor. * * @param document * @param request * @throws Exception * @throws ServiceException * @author valdoilo.damasceno * @since 04.06.2014 */ private void carregarComboGrupoExecutor(DocumentHTML document, HttpServletRequest request) throws Exception, ServiceException { document.getSelectById("idGrupoExecutor").removeAllOptions(); GrupoService grupoServoce = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, null); Collection<GrupoDTO> listGrupoServiceDesk = grupoServoce.listGruposServiceDesk(); document.getSelectById("idGrupoExecutor").addOption("", "-- " + UtilI18N.internacionaliza(request, "citcorpore.comum.todos") + " --"); document.getSelectById("idGrupoExecutor").addOptions(listGrupoServiceDesk, "idGrupo", "nome", null); } /** * Carrega Combo Causa. * * @param document * @param request * @throws ServiceException * @throws Exception * @author valdoilo.damasceno * @since 04.06.2014 */ private void carregarComboCausaIncidente(DocumentHTML document, HttpServletRequest request) throws ServiceException, Exception { document.getSelectById("idCausaIncidente").removeAllOptions(); CausaIncidenteService causaIncidenteService = (CausaIncidenteService) ServiceLocator.getInstance().getService(CausaIncidenteService.class, null); Collection colCausas = causaIncidenteService.listHierarquia(); HTMLSelect idCausaIncidente = (HTMLSelect) document.getSelectById("idCausaIncidente"); idCausaIncidente.removeAllOptions(); idCausaIncidente.addOption("", "-- " + UtilI18N.internacionaliza(request, "citcorpore.comum.todas") + " --"); if (colCausas != null && !colCausas.isEmpty()) { idCausaIncidente.addOptions(colCausas, "idCausaIncidente", "descricaoCausaNivel", null); } } /** * Carrega Combo Impacto. * * @param document * @param request * @throws ServiceException * @throws Exception * @throws LogicException * @author valdoilo.damasceno * @since 04.06.2014 */ private void carregarComboImpacto(DocumentHTML document, HttpServletRequest request) throws ServiceException, Exception, LogicException { document.getSelectById("impacto").removeAllOptions(); ImpactoService impactoService = (ImpactoService) ServiceLocator.getInstance().getService(ImpactoService.class, null); Collection<ImpactoDTO> listImpacto = impactoService.list(); HTMLSelect comboImpacto = document.getSelectById("impacto"); document.getSelectById("impacto").addOption("", "-- " + UtilI18N.internacionaliza(request, "citcorpore.comum.todos") + " --"); comboImpacto.addOptions(listImpacto, "idImpacto", "nivelImpacto", null); } /** * Carrega Combo Urg�ncia. * * @param document * @param request * @throws ServiceException * @throws Exception * @author valdoilo.damasceno * @since 04.06.2014 */ private void carregarComboUrgencia(DocumentHTML document, HttpServletRequest request) throws ServiceException, Exception, LogicException { document.getSelectById("urgencia").removeAllOptions(); UrgenciaService urgenciaService = (UrgenciaService) ServiceLocator.getInstance().getService(UrgenciaService.class, null); Collection<UrgenciaDTO> listUrgencia = urgenciaService.list(); HTMLSelect comboUrgencia = document.getSelectById("urgencia"); document.getSelectById("urgencia").addOption("", "-- " + UtilI18N.internacionaliza(request, "citcorpore.comum.todas") + " --"); comboUrgencia.addOptions(listUrgencia, "idUrgencia", "nivelUrgencia", null); } /** * Carrega Combo Tipo Demanda Servi�o. * * @param document * @param request * @throws ServiceException * @throws Exception * @author valdoilo.damasceno * @since 04.06.2014 */ private void carregarComboTipoDemandaServico(DocumentHTML document, HttpServletRequest request) throws ServiceException, Exception { document.getSelectById("idTipoDemandaServico").removeAllOptions(); TipoDemandaServicoService tipoDemandaServicoService = (TipoDemandaServicoService) ServiceLocator.getInstance().getService(TipoDemandaServicoService.class, null); Collection<TipoDemandaServicoDTO> listTipoDemandaServicoDto = tipoDemandaServicoService.listSolicitacoes(); HTMLSelect comboTipoDemandaServico = document.getSelectById("idTipoDemandaServico"); document.getSelectById("idTipoDemandaServico").addOption("", "-- " + UtilI18N.internacionaliza(request, "citcorpore.comum.todos") + " --"); comboTipoDemandaServico.addOptions(listTipoDemandaServicoDto, "idTipoDemandaServico", "nomeTipoDemandaServico", null); } /** * Carrega Combo de Contratos. * * @param document * @throws ServiceException * @throws Exception * @author valdoilo.damasceno * @since 04.06.2014 */ private void carregarComboContratos(DocumentHTML document) throws ServiceException, Exception { document.getSelectById("idContrato").removeAllOptions(); ContratoService contratoService = (ContratoService) ServiceLocator.getInstance().getService(ContratoService.class, null); Collection<ContratoDTO> listContratoDto = contratoService.listAtivosWithNomeRazaoSocialCliente(); HTMLSelect comboContrato = document.getSelectById("idContrato"); comboContrato.addOptions(listContratoDto, "idContrato", "numeroContratoComNomeRazaoSocial", null); } public void buscarTendencia (DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws ServiceException, Exception { AnaliseTendenciasDTO analiseTendenciasDTO = (AnaliseTendenciasDTO) document.getBean(); AnaliseTendenciasService analiseTendenciasService = (AnaliseTendenciasService) ServiceLocator.getInstance().getService(AnaliseTendenciasService.class, null); Collection<TendenciaDTO> colServico = analiseTendenciasService.buscarTendenciasServico(analiseTendenciasDTO); HTMLTable tblServicos = document.getTableById("tblServicos"); tblServicos.deleteAllRows(); if(colServico != null && colServico.size() >0){ if (colServico != null && !colServico.isEmpty() && colServico.size() > 0) { tblServicos.addRowsByCollection(colServico, new String[] {"id", "descricao", "qtdeCritica",""}, null, "", new String[] { "exibeTendenciaServico" }, null, null); } } Collection<TendenciaDTO> colCausa = analiseTendenciasService.buscarTendenciasCausa(analiseTendenciasDTO); HTMLTable tblCausa = document.getTableById("tblCausa"); tblCausa.deleteAllRows(); if(colCausa != null && colCausa.size() >0){ if (colCausa != null && !colCausa.isEmpty() && colCausa.size() > 0) { tblCausa.addRowsByCollection(colCausa, new String[] {"id", "descricao", "qtdeCritica",""}, null, "", new String[] { "exibeTendenciaCausa" }, null, null); } } Collection<TendenciaDTO> colItemConfiguracao = analiseTendenciasService.buscarTendenciasItemConfiguracao(analiseTendenciasDTO); HTMLTable tblItemConfiguracao = document.getTableById("tblItemConfiguracao"); tblItemConfiguracao.deleteAllRows(); if(colItemConfiguracao != null && colItemConfiguracao.size() >0){ if (colItemConfiguracao != null && !colItemConfiguracao.isEmpty() && colItemConfiguracao.size() > 0) { tblItemConfiguracao.addRowsByCollection(colItemConfiguracao, new String[] {"id", "descricao", "qtdeCritica",""}, null, "", new String[] { "exibeTendenciaItemConfig" }, null, null); } } document.executeScript("JANELA_AGUARDE_MENU.hide();"); document.executeScript("showResult();"); } public void gerarRelatorio (DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { AnaliseTendenciasDTO analiseTendenciasDTO = (AnaliseTendenciasDTO) document.getBean(); List<TendenciaGanttDTO> listTendenciasDto = new ArrayList<TendenciaGanttDTO>(); String relatorioTitulo = ""; UsuarioDTO usuario = WebUtil.getUsuario(request); AnaliseTendenciasService analiseTendenciaService = (AnaliseTendenciasService) ServiceLocator.getInstance().getService(AnaliseTendenciasService.class, null); if (analiseTendenciasDTO.getTipoRelatorio().equalsIgnoreCase("servico")) { listTendenciasDto = analiseTendenciaService.listarGraficoGanttServico(analiseTendenciasDTO, analiseTendenciasDTO.getIdRelatorio()); ServicoService servicoService = (ServicoService) ServiceLocator.getInstance().getService(ServicoService.class, null); ServicoDTO servicoDto = servicoService.findById(analiseTendenciasDTO.getIdRelatorio()); if (servicoDto != null) { relatorioTitulo = UtilI18N.internacionaliza(request, "citcorpore.comum.servico") + ": " + servicoDto.getNomeServico(); } } else if (analiseTendenciasDTO.getTipoRelatorio().equalsIgnoreCase("causa")) { listTendenciasDto = analiseTendenciaService.listarGraficoGanttCausa(analiseTendenciasDTO, analiseTendenciasDTO.getIdRelatorio()); CausaIncidenteService causaIncidenteService = (CausaIncidenteService) ServiceLocator.getInstance().getService(CausaIncidenteService.class, null); CausaIncidenteDTO causaIncidenteDto = new CausaIncidenteDTO(); causaIncidenteDto.setIdCausaIncidente(analiseTendenciasDTO.getIdRelatorio()); causaIncidenteDto = (CausaIncidenteDTO) causaIncidenteService.restore(causaIncidenteDto); if (causaIncidenteDto != null) { relatorioTitulo = UtilI18N.internacionaliza(request, "problema.causa") + ": " + causaIncidenteDto.getDescricaoCausa(); } } else if (analiseTendenciasDTO.getTipoRelatorio().equalsIgnoreCase("itemConfiguracao")) { listTendenciasDto = analiseTendenciaService.listarGraficoGanttItemConfiguracao(analiseTendenciasDTO, analiseTendenciasDTO.getIdRelatorio()); ItemConfiguracaoService causaIncidenteService = (ItemConfiguracaoService) ServiceLocator.getInstance().getService(ItemConfiguracaoService.class, null); ItemConfiguracaoDTO itemConfiguracaoDto = causaIncidenteService.restoreByIdItemConfiguracao(analiseTendenciasDTO.getIdRelatorio()); if (itemConfiguracaoDto != null) { relatorioTitulo = UtilI18N.internacionaliza(request, "itemConfiguracao.itemConfiguracao") + ": " + itemConfiguracaoDto.getIdentificacao(); } } if (listTendenciasDto != null && !listTendenciasDto.isEmpty()) { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); for (TendenciaGanttDTO tendencia : listTendenciasDto) { if (tendencia != null) { String data = UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, tendencia.getData(), WebUtil.getLanguage(request)); dataset.addValue(tendencia.getQtde(), relatorioTitulo, data); } } JFreeChart chart = ChartFactory.createBarChart( "", // chart title UtilI18N.internacionaliza(request, "citcorporeRelatorio.comum.data"), // domain axis label UtilI18N.internacionaliza(request, "visao.quantidade"), // range axis label dataset, // dataset PlotOrientation.VERTICAL, // orientation false, // include legend true, // tooltips? false // URLs? ); CategoryPlot plot = chart.getCategoryPlot(); CategoryAxis axis = (CategoryAxis)plot.getDomainAxis(); axis.setCategoryLabelPositions(CategoryLabelPositions.UP_90); File file = null; try { String diretorioRelativo = CITCorporeUtil.CAMINHO_REAL_APP + "tempFiles" + "/ChartAnaliseTendencias.png"; file = new File(diretorioRelativo); ChartUtilities.saveChartAsPNG(file, chart, 1200, 650); } catch (IOException e) { System.err.println("Problem occurred creating chart."); } Map<String, Object> parametros = new HashMap<String, Object>(); HttpSession session = request.getSession(true); parametros = UtilRelatorio.trataInternacionalizacaoLocale(session, parametros); parametros.put("TITULO_RELATORIO", UtilI18N.internacionaliza(request, "problema.analiseTendencias.titulo")); parametros.put("NOME_USUARIO", usuario.getNomeUsuario()); parametros.put("CIDADE", UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioCidade")); parametros.put("DATA_HORA", UtilDatas.getDataHoraAtual()); parametros.put("Logo", LogoRel.getFile()); parametros.put("TipoRelatorio", relatorioTitulo); Date dt = new Date(); String strCompl = "" + dt.getTime(); parametros.put("ChartAnaliseTendencias", file); String caminhoJasper = CITCorporeUtil.CAMINHO_REAL_APP + Constantes.getValue("CAMINHO_RELATORIOS") + "RelatorioAnaliseTendencias.jasper"; String diretorioReceita = CITCorporeUtil.CAMINHO_REAL_APP + "/tempFiles"; String diretorioRelativoOS = Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/tempFiles"; JasperPrint print = JasperFillManager.fillReport(caminhoJasper, parametros); JasperExportManager.exportReportToPdfFile(print, diretorioReceita + "/RelatorioAnaliseTendencias" + strCompl + ".pdf"); document.executeScript("window.open('" + Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/printPDF/printPDF.jsp?url=" + diretorioRelativoOS + "/RelatorioAnaliseTendencias" + strCompl + ".pdf')"); } else { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.relatorioVazio")); return; } document.executeScript("JANELA_AGUARDE_MENU.hide();"); } @Override public Class getBeanClass() { return AnaliseTendenciasDTO.class; } }