package br.com.centralit.citcorpore.integracao; import java.sql.Date; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Collection; import java.util.List; import br.com.centralit.citcorpore.bean.AnaliseTendenciasDTO; import br.com.centralit.citcorpore.bean.TendenciaDTO; import br.com.centralit.citcorpore.bean.TendenciaGanttDTO; import br.com.centralit.citcorpore.util.CITCorporeUtil; import br.com.citframework.dto.IDto; import br.com.citframework.excecao.PersistenceException; import br.com.citframework.integracao.CrudDaoDefaultImpl; import br.com.citframework.integracao.Field; import br.com.citframework.util.Constantes; import br.com.citframework.util.SQLConfig; import br.com.citframework.util.UtilDatas; /** * @author euler.ramos * */ @SuppressWarnings({ "unchecked", "rawtypes" }) public class AnaliseTendenciasDAO extends CrudDaoDefaultImpl { public AnaliseTendenciasDAO() { super(Constantes.getValue("DATABASE_ALIAS"), null); } @Override public Collection find(IDto obj) throws PersistenceException { return null; } @Override public Collection<Field> getFields() { return null; } @Override public String getTableName() { return "solicitacaoservico"; } @Override public Collection list() throws PersistenceException { return null; } @Override public Class getBean() { return TendenciaDTO.class; } //M�todo criado para completar as consultas do gr�fico com as datas que n�o tiveram lan�amento de solicita��es de servi�o //� utilizado apenas nos bancos que n�o s�o o PostgreSQL public ArrayList<TendenciaGanttDTO> montarPeriodo(AnaliseTendenciasDTO analiseTendenciasDTO, ArrayList<TendenciaGanttDTO> resultado ) { ArrayList<TendenciaGanttDTO> listaPeriodo = new ArrayList<TendenciaGanttDTO>(); try { Date DataInicio = null; Timestamp DataFim = null; TendenciaGanttDTO registroGrafico; if (analiseTendenciasDTO.getDataInicio()!=null){ DataInicio = UtilDatas.getSqlDate(analiseTendenciasDTO.getDataInicio()); } if (analiseTendenciasDTO.getDataFim()!=null){ DataFim = UtilDatas.getTimeStampComUltimaHoraDoDia(analiseTendenciasDTO.getDataFim()); } Date DataAux = DataInicio; do{ registroGrafico = new TendenciaGanttDTO(); registroGrafico.setData(DataAux); registroGrafico.setQtde(0); if((resultado!=null)&&(resultado.size()>0)){ for (TendenciaGanttDTO tendenciaGanttDTO : resultado) { if (tendenciaGanttDTO.getData().equals(DataAux)){ registroGrafico.setQtde(tendenciaGanttDTO.getQtde()); } } } listaPeriodo.add(registroGrafico); if(DataAux.before(DataFim)){ java.util.Date utilDate = UtilDatas.incrementaDiasEmData(DataAux, 1); DataAux = new java.sql.Date(utilDate.getTime()); } }while(DataAux.before(DataFim)); } catch (Exception e) { System.out.println(e); } return listaPeriodo; } public List<TendenciaDTO> buscarTendenciasServico(AnaliseTendenciasDTO analiseTendenciasDTO){ List result; try { List resp = new ArrayList(); List parametro = new ArrayList(); List listRetorno = new ArrayList(); java.sql.Date DataInicio = null; Timestamp DataFim = null; if (analiseTendenciasDTO.getDataInicio()!=null){ DataInicio = UtilDatas.getSqlDate(analiseTendenciasDTO.getDataInicio()); } if (analiseTendenciasDTO.getDataFim()!=null){ DataFim = UtilDatas.getTimeStampComUltimaHoraDoDia(analiseTendenciasDTO.getDataFim()); } listRetorno.add("id"); listRetorno.add("descricao"); listRetorno.add("qtdeCritica"); StringBuilder sql = new StringBuilder(); sql.append("select "); sql.append("servico.idservico id, servico.nomeservico descricao, a.qtde qtdecritica "); sql.append("from servico join "); sql.append("(select servicocontrato.idservico,count(solicitacaoservico.idsolicitacaoservico) as qtde "); sql.append("from solicitacaoservico join servicocontrato on "); if ((DataInicio!=null) && (DataFim!=null)){ sql.append("(solicitacaoservico.datahorasolicitacao between ? and ?) and "); parametro.add(DataInicio); parametro.add(DataFim); } sql.append("solicitacaoservico.situacao <> ? and "); parametro.add(br.com.centralit.citcorpore.util.Enumerados.SituacaoSolicitacaoServico.Cancelada.getDescricao()); sql.append("solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato "); if ((analiseTendenciasDTO.getIdContrato()!=null)&&(analiseTendenciasDTO.getIdContrato().intValue()>0)){ sql.append("and servicocontrato.idcontrato = ? "); parametro.add(analiseTendenciasDTO.getIdContrato()); } if ((analiseTendenciasDTO.getIdServico()!=null)&&(analiseTendenciasDTO.getIdServico().intValue()>0)){ sql.append("and servicocontrato.idservico = ? "); parametro.add(analiseTendenciasDTO.getIdServico()); } if ((analiseTendenciasDTO.getIdGrupoExecutor()!=null)&&(analiseTendenciasDTO.getIdGrupoExecutor().intValue()>0)){ sql.append("and solicitacaoservico.idgrupoatual = ? "); parametro.add(analiseTendenciasDTO.getIdGrupoExecutor()); } if ((analiseTendenciasDTO.getIdEmpregado()!=null)&&(analiseTendenciasDTO.getIdEmpregado().intValue()>0)){ sql.append("and solicitacaoservico.idsolicitante = ? "); parametro.add(analiseTendenciasDTO.getIdEmpregado()); } if ((analiseTendenciasDTO.getIdTipoDemandaServico()!=null)&&(analiseTendenciasDTO.getIdTipoDemandaServico().intValue()>0)){ sql.append("and solicitacaoservico.idtipodemandaservico = ? "); parametro.add(analiseTendenciasDTO.getIdTipoDemandaServico()); } if ((analiseTendenciasDTO.getUrgencia()!=null)&&(analiseTendenciasDTO.getUrgencia().length()>0)){ sql.append("and solicitacaoservico.urgencia = ? "); parametro.add(analiseTendenciasDTO.getUrgencia()); } if ((analiseTendenciasDTO.getImpacto()!=null)&&(analiseTendenciasDTO.getImpacto().length()>0)){ sql.append("and solicitacaoservico.impacto = ? "); parametro.add(analiseTendenciasDTO.getImpacto()); } if ((analiseTendenciasDTO.getIdCausaIncidente()!=null)&&(analiseTendenciasDTO.getIdCausaIncidente().intValue()>0)){ sql.append("and solicitacaoservico.idcausaincidente = ? "); parametro.add(analiseTendenciasDTO.getIdCausaIncidente()); } if ((analiseTendenciasDTO.getIdItemConfiguracao()!=null)&&(analiseTendenciasDTO.getIdItemConfiguracao().intValue()>0)){ sql.append("join itemcfgsolicitacaoserv on solicitacaoservico.idsolicitacaoservico = itemcfgsolicitacaoserv.idsolicitacaoservico and "); sql.append("itemcfgsolicitacaoserv.iditemconfiguracao = ? and "); sql.append("(itemcfgsolicitacaoserv.datafim is null) "); parametro.add(analiseTendenciasDTO.getIdItemConfiguracao()); } sql.append("group by servicocontrato.idservico) a on servico.idservico = a.idservico "); if ((analiseTendenciasDTO.getQtdeCritica() !=null)&&(analiseTendenciasDTO.getQtdeCritica().intValue()>0)){ sql.append("and qtde >= ? "); parametro.add(analiseTendenciasDTO.getQtdeCritica()); } sql.append("order by qtde desc, descricao"); resp = this.execSQL(sql.toString(), parametro.toArray()); result = this.engine.listConvertion(getBean(), resp, listRetorno); } catch (PersistenceException e) { e.printStackTrace(); result = null; } catch (Exception e) { e.printStackTrace(); result = null; } return (ArrayList<TendenciaDTO>) (((result == null)||(result.size()<=0)) ? new ArrayList<TendenciaDTO>() : result); } public List<TendenciaDTO> buscarTendenciasCausa(AnaliseTendenciasDTO analiseTendenciasDTO){ List result; try { List resp = new ArrayList(); List parametro = new ArrayList(); List listRetorno = new ArrayList(); java.sql.Date DataInicio = null; Timestamp DataFim = null; if (analiseTendenciasDTO.getDataInicio()!=null){ DataInicio = UtilDatas.getSqlDate(analiseTendenciasDTO.getDataInicio()); } if (analiseTendenciasDTO.getDataFim()!=null){ DataFim = UtilDatas.getTimeStampComUltimaHoraDoDia(analiseTendenciasDTO.getDataFim()); } listRetorno.add("id"); listRetorno.add("descricao"); listRetorno.add("qtdeCritica"); StringBuilder sql = new StringBuilder(); sql.append("select "); sql.append("causaincidente.idcausaincidente id, causaincidente.descricaocausa descricao, a.qtde qtdecritica "); sql.append("from causaincidente join "); sql.append("(select solicitacaoservico.idcausaincidente,count(solicitacaoservico.idsolicitacaoservico) as qtde "); sql.append("from solicitacaoservico join servicocontrato on "); if ((DataInicio!=null) && (DataFim!=null)){ sql.append("(solicitacaoservico.datahorasolicitacao between ? and ?) and "); parametro.add(DataInicio); parametro.add(DataFim); } sql.append("solicitacaoservico.situacao <> ? and "); parametro.add(br.com.centralit.citcorpore.util.Enumerados.SituacaoSolicitacaoServico.Cancelada.getDescricao()); sql.append("solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato "); if ((analiseTendenciasDTO.getIdContrato()!=null)&&(analiseTendenciasDTO.getIdContrato().intValue()>0)){ sql.append("and servicocontrato.idcontrato = ? "); parametro.add(analiseTendenciasDTO.getIdContrato()); } if ((analiseTendenciasDTO.getIdServico()!=null)&&(analiseTendenciasDTO.getIdServico().intValue()>0)){ sql.append("and servicocontrato.idservico = ? "); parametro.add(analiseTendenciasDTO.getIdServico()); } if ((analiseTendenciasDTO.getIdGrupoExecutor()!=null)&&(analiseTendenciasDTO.getIdGrupoExecutor().intValue()>0)){ sql.append("and solicitacaoservico.idgrupoatual = ? "); parametro.add(analiseTendenciasDTO.getIdGrupoExecutor()); } if ((analiseTendenciasDTO.getIdEmpregado()!=null)&&(analiseTendenciasDTO.getIdEmpregado().intValue()>0)){ sql.append("and solicitacaoservico.idsolicitante = ? "); parametro.add(analiseTendenciasDTO.getIdEmpregado()); } if ((analiseTendenciasDTO.getIdTipoDemandaServico()!=null)&&(analiseTendenciasDTO.getIdTipoDemandaServico().intValue()>0)){ sql.append("and solicitacaoservico.idtipodemandaservico = ? "); parametro.add(analiseTendenciasDTO.getIdTipoDemandaServico()); } if ((analiseTendenciasDTO.getUrgencia()!=null)&&(analiseTendenciasDTO.getUrgencia().length()>0)){ sql.append("and solicitacaoservico.urgencia = ? "); parametro.add(analiseTendenciasDTO.getUrgencia()); } if ((analiseTendenciasDTO.getImpacto()!=null)&&(analiseTendenciasDTO.getImpacto().length()>0)){ sql.append("and solicitacaoservico.impacto = ? "); parametro.add(analiseTendenciasDTO.getImpacto()); } if ((analiseTendenciasDTO.getIdCausaIncidente()!=null)&&(analiseTendenciasDTO.getIdCausaIncidente().intValue()>0)){ sql.append("and solicitacaoservico.idcausaincidente = ? "); parametro.add(analiseTendenciasDTO.getIdCausaIncidente()); } if ((analiseTendenciasDTO.getIdItemConfiguracao()!=null)&&(analiseTendenciasDTO.getIdItemConfiguracao().intValue()>0)){ sql.append("join itemcfgsolicitacaoserv on solicitacaoservico.idsolicitacaoservico = itemcfgsolicitacaoserv.idsolicitacaoservico and "); sql.append("itemcfgsolicitacaoserv.iditemconfiguracao = ? and "); sql.append("(itemcfgsolicitacaoserv.datafim is null) "); parametro.add(analiseTendenciasDTO.getIdItemConfiguracao()); } sql.append("group by solicitacaoservico.idcausaincidente) a on causaincidente.idcausaincidente = a.idcausaincidente "); if ((analiseTendenciasDTO.getQtdeCritica() !=null)&&(analiseTendenciasDTO.getQtdeCritica().intValue()>0)){ sql.append("and qtde >= ? "); parametro.add(analiseTendenciasDTO.getQtdeCritica()); } sql.append("order by qtde desc, descricao"); resp = this.execSQL(sql.toString(), parametro.toArray()); result = this.engine.listConvertion(getBean(), resp, listRetorno); } catch (PersistenceException e) { e.printStackTrace(); result = null; } catch (Exception e) { e.printStackTrace(); result = null; } return (ArrayList<TendenciaDTO>) (((result == null)||(result.size()<=0)) ? new ArrayList<TendenciaDTO>() : result); } public List<TendenciaDTO> buscarTendenciasItemConfiguracao(AnaliseTendenciasDTO analiseTendenciasDTO){ List result; try { List resp = new ArrayList(); List parametro = new ArrayList(); List listRetorno = new ArrayList(); java.sql.Date DataInicio = null; Timestamp DataFim = null; if (analiseTendenciasDTO.getDataInicio()!=null){ DataInicio = UtilDatas.getSqlDate(analiseTendenciasDTO.getDataInicio()); } if (analiseTendenciasDTO.getDataFim()!=null){ DataFim = UtilDatas.getTimeStampComUltimaHoraDoDia(analiseTendenciasDTO.getDataFim()); } listRetorno.add("id"); listRetorno.add("descricao"); listRetorno.add("qtdeCritica"); StringBuilder sql = new StringBuilder(); sql.append("select "); sql.append("itemconfiguracao.iditemconfiguracao id,itemconfiguracao.identificacao descricao, a.qtde qtdeCritica "); sql.append("from itemconfiguracao join "); sql.append("(select itemcfgsolicitacaoserv.iditemconfiguracao,count(solicitacaoservico.idsolicitacaoservico) as qtde "); sql.append("from solicitacaoservico join servicocontrato on "); if ((DataInicio!=null) && (DataFim!=null)){ sql.append("(solicitacaoservico.datahorasolicitacao between ? and ?) and "); parametro.add(DataInicio); parametro.add(DataFim); } sql.append("solicitacaoservico.situacao <> ? and "); parametro.add(br.com.centralit.citcorpore.util.Enumerados.SituacaoSolicitacaoServico.Cancelada.getDescricao()); sql.append("solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato "); if ((analiseTendenciasDTO.getIdContrato()!=null)&&(analiseTendenciasDTO.getIdContrato().intValue()>0)){ sql.append("and servicocontrato.idcontrato = ? "); parametro.add(analiseTendenciasDTO.getIdContrato()); } if ((analiseTendenciasDTO.getIdServico()!=null)&&(analiseTendenciasDTO.getIdServico().intValue()>0)){ sql.append("and servicocontrato.idservico = ? "); parametro.add(analiseTendenciasDTO.getIdServico()); } if ((analiseTendenciasDTO.getIdGrupoExecutor()!=null)&&(analiseTendenciasDTO.getIdGrupoExecutor().intValue()>0)){ sql.append("and solicitacaoservico.idgrupoatual = ? "); parametro.add(analiseTendenciasDTO.getIdGrupoExecutor()); } if ((analiseTendenciasDTO.getIdEmpregado()!=null)&&(analiseTendenciasDTO.getIdEmpregado().intValue()>0)){ sql.append("and solicitacaoservico.idsolicitante = ? "); parametro.add(analiseTendenciasDTO.getIdEmpregado()); } if ((analiseTendenciasDTO.getIdTipoDemandaServico()!=null)&&(analiseTendenciasDTO.getIdTipoDemandaServico().intValue()>0)){ sql.append("and solicitacaoservico.idtipodemandaservico = ? "); parametro.add(analiseTendenciasDTO.getIdTipoDemandaServico()); } if ((analiseTendenciasDTO.getUrgencia()!=null)&&(analiseTendenciasDTO.getUrgencia().length()>0)){ sql.append("and solicitacaoservico.urgencia = ? "); parametro.add(analiseTendenciasDTO.getUrgencia()); } if ((analiseTendenciasDTO.getImpacto()!=null)&&(analiseTendenciasDTO.getImpacto().length()>0)){ sql.append("and solicitacaoservico.impacto = ? "); parametro.add(analiseTendenciasDTO.getImpacto()); } if ((analiseTendenciasDTO.getIdCausaIncidente()!=null)&&(analiseTendenciasDTO.getIdCausaIncidente().intValue()>0)){ sql.append("and solicitacaoservico.idcausaincidente = ? "); parametro.add(analiseTendenciasDTO.getIdCausaIncidente()); } sql.append("join itemcfgsolicitacaoserv on solicitacaoservico.idsolicitacaoservico = itemcfgsolicitacaoserv.idsolicitacaoservico and "); sql.append("(itemcfgsolicitacaoserv.datafim is null) "); if ((analiseTendenciasDTO.getIdItemConfiguracao()!=null)&&(analiseTendenciasDTO.getIdItemConfiguracao().intValue()>0)){ sql.append("and itemcfgsolicitacaoserv.iditemconfiguracao = ? "); parametro.add(analiseTendenciasDTO.getIdItemConfiguracao()); } sql.append("group by itemcfgsolicitacaoserv.iditemconfiguracao) a on itemconfiguracao.iditemconfiguracao = a.iditemconfiguracao "); if ((analiseTendenciasDTO.getQtdeCritica() !=null)&&(analiseTendenciasDTO.getQtdeCritica().intValue()>0)){ sql.append("and qtde >= ? "); parametro.add(analiseTendenciasDTO.getQtdeCritica()); } sql.append("order by qtde desc, descricao"); resp = this.execSQL(sql.toString(), parametro.toArray()); result = this.engine.listConvertion(getBean(), resp, listRetorno); } catch (PersistenceException e) { e.printStackTrace(); result = null; } catch (Exception e) { e.printStackTrace(); result = null; } return (ArrayList<TendenciaDTO>) (((result == null)||(result.size()<=0)) ? new ArrayList<TendenciaDTO>() : result); } public List<TendenciaGanttDTO> listarGraficoGanttServico(AnaliseTendenciasDTO analiseTendenciasDTO, Integer idServico){ List result; try { List resp = new ArrayList(); List parametro = new ArrayList(); List listRetorno = new ArrayList(); java.sql.Date DataInicio = null; Timestamp DataFim = null; if (analiseTendenciasDTO.getDataInicio()!=null){ DataInicio = UtilDatas.getSqlDate(analiseTendenciasDTO.getDataInicio()); } if (analiseTendenciasDTO.getDataFim()!=null){ DataFim = UtilDatas.getTimeStampComUltimaHoraDoDia(analiseTendenciasDTO.getDataFim()); } //Deve-se ter um per�odo informado if ((DataInicio==null) || (DataFim==null)){ return new ArrayList<TendenciaGanttDTO>(); } listRetorno.add("data"); listRetorno.add("qtde"); StringBuilder sql = new StringBuilder(); //Para o PostgreSQL j� podemos trazer a cole��o completa com as datas que n�o tem ocorr�ncia de solicita��es j� com a qtde zerada! if (CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.POSTGRESQL)){ sql.append("select gdias.data, case when qtde is null then 0 else qtde end as qtde "); sql.append("from "); sql.append("(SELECT generate_series::date as data "); sql.append("FROM generate_series(?::timestamp, ?, '1 day')) gdias left join ("); parametro.add(DataInicio); parametro.add(DataFim); } sql.append("select CAST(datahorasolicitacao AS DATE) as data, count(solicitacaoservico.idsolicitacaoservico) as qtde "); sql.append("from solicitacaoservico join servicocontrato on "); sql.append("(solicitacaoservico.datahorasolicitacao between ? and ?) and "); parametro.add(DataInicio); parametro.add(DataFim); sql.append("solicitacaoservico.situacao <> ? and "); parametro.add(br.com.centralit.citcorpore.util.Enumerados.SituacaoSolicitacaoServico.Cancelada.getDescricao()); sql.append("solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato "); if ((analiseTendenciasDTO.getIdContrato()!=null)&&(analiseTendenciasDTO.getIdContrato().intValue()>0)){ sql.append("and servicocontrato.idcontrato = ? "); parametro.add(analiseTendenciasDTO.getIdContrato()); } if ((idServico!=null)&&(idServico.intValue()>0)){ sql.append("and servicocontrato.idservico = ? "); parametro.add(idServico); } if ((analiseTendenciasDTO.getIdGrupoExecutor()!=null)&&(analiseTendenciasDTO.getIdGrupoExecutor().intValue()>0)){ sql.append("and solicitacaoservico.idgrupoatual = ? "); parametro.add(analiseTendenciasDTO.getIdGrupoExecutor()); } if ((analiseTendenciasDTO.getIdEmpregado()!=null)&&(analiseTendenciasDTO.getIdEmpregado().intValue()>0)){ sql.append("and solicitacaoservico.idsolicitante = ? "); parametro.add(analiseTendenciasDTO.getIdEmpregado()); } if ((analiseTendenciasDTO.getIdTipoDemandaServico()!=null)&&(analiseTendenciasDTO.getIdTipoDemandaServico().intValue()>0)){ sql.append("and solicitacaoservico.idtipodemandaservico = ? "); parametro.add(analiseTendenciasDTO.getIdTipoDemandaServico()); } if ((analiseTendenciasDTO.getUrgencia()!=null)&&(analiseTendenciasDTO.getUrgencia().length()>0)){ sql.append("and solicitacaoservico.urgencia = ? "); parametro.add(analiseTendenciasDTO.getUrgencia()); } if ((analiseTendenciasDTO.getImpacto()!=null)&&(analiseTendenciasDTO.getImpacto().length()>0)){ sql.append("and solicitacaoservico.impacto = ? "); parametro.add(analiseTendenciasDTO.getImpacto()); } if ((analiseTendenciasDTO.getIdCausaIncidente()!=null)&&(analiseTendenciasDTO.getIdCausaIncidente().intValue()>0)){ sql.append("and solicitacaoservico.idcausaincidente = ? "); parametro.add(analiseTendenciasDTO.getIdCausaIncidente()); } if ((analiseTendenciasDTO.getIdItemConfiguracao()!=null)&&(analiseTendenciasDTO.getIdItemConfiguracao().intValue()>0)){ sql.append("join itemcfgsolicitacaoserv on solicitacaoservico.idsolicitacaoservico = itemcfgsolicitacaoserv.idsolicitacaoservico and "); sql.append("itemcfgsolicitacaoserv.iditemconfiguracao = ? and "); sql.append("(itemcfgsolicitacaoserv.datafim is null) "); parametro.add(analiseTendenciasDTO.getIdItemConfiguracao()); } sql.append("group by CAST(datahorasolicitacao AS DATE) "); sql.append("order by data"); //Para o PostgreSQL j� podemos trazer a cole��o completa com as datas que n�o tem ocorr�ncia de solicita��es j� com a qtde zerada! if (CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.POSTGRESQL)){ sql.append(") s on gdias.data=s.data"); } resp = this.execSQL(sql.toString(), parametro.toArray()); result = this.engine.listConvertion(TendenciaGanttDTO.class, resp, listRetorno); } catch (PersistenceException e) { e.printStackTrace(); result = null; } catch (Exception e) { e.printStackTrace(); result = null; } //Para o PostgreSQL j� podemos trazer a cole��o completa com as datas que n�o tem ocorr�ncia de solicita��es j� com a qtde zerada! if (!CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.POSTGRESQL)){ //Popula uma cole��o com o intervalo de datas! DataInicio - DataFim } result = this.montarPeriodo(analiseTendenciasDTO,(ArrayList<TendenciaGanttDTO>) result); return (ArrayList<TendenciaGanttDTO>) (((result == null)||(result.size()<=0)) ? new ArrayList<TendenciaGanttDTO>() : result); } public List<TendenciaGanttDTO> listarGraficoGanttCausa(AnaliseTendenciasDTO analiseTendenciasDTO, Integer idCausa){ List result; try { List resp = new ArrayList(); List parametro = new ArrayList(); List listRetorno = new ArrayList(); java.sql.Date DataInicio = null; Timestamp DataFim = null; if (analiseTendenciasDTO.getDataInicio()!=null){ DataInicio = UtilDatas.getSqlDate(analiseTendenciasDTO.getDataInicio()); } if (analiseTendenciasDTO.getDataFim()!=null){ DataFim = UtilDatas.getTimeStampComUltimaHoraDoDia(analiseTendenciasDTO.getDataFim()); } //Deve-se ter um per�odo informado if ((DataInicio==null) || (DataFim==null)){ return new ArrayList<TendenciaGanttDTO>(); } listRetorno.add("data"); listRetorno.add("qtde"); StringBuilder sql = new StringBuilder(); //Para o PostgreSQL j� podemos trazer a cole��o completa com as datas que n�o tem ocorr�ncia de solicita��es j� com a qtde zerada! if (CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.POSTGRESQL)){ sql.append("select gdias.data, case when qtde is null then 0 else qtde end as qtde "); sql.append("from "); sql.append("(SELECT generate_series::date as data "); sql.append("FROM generate_series(?::timestamp, ?, '1 day')) gdias left join ("); parametro.add(DataInicio); parametro.add(DataFim); } sql.append("select CAST(datahorasolicitacao AS DATE) as data, count(solicitacaoservico.idsolicitacaoservico) as qtde "); sql.append("from solicitacaoservico join servicocontrato on "); sql.append("(solicitacaoservico.datahorasolicitacao between ? and ?) and "); parametro.add(DataInicio); parametro.add(DataFim); sql.append("solicitacaoservico.situacao <> ? and "); parametro.add(br.com.centralit.citcorpore.util.Enumerados.SituacaoSolicitacaoServico.Cancelada.getDescricao()); sql.append("solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato "); if ((analiseTendenciasDTO.getIdContrato()!=null)&&(analiseTendenciasDTO.getIdContrato().intValue()>0)){ sql.append("and servicocontrato.idcontrato = ? "); parametro.add(analiseTendenciasDTO.getIdContrato()); } if ((analiseTendenciasDTO.getIdServico()!=null)&&(analiseTendenciasDTO.getIdServico().intValue()>0)){ sql.append("and servicocontrato.idservico = ? "); parametro.add(analiseTendenciasDTO.getIdServico()); } if ((analiseTendenciasDTO.getIdGrupoExecutor()!=null)&&(analiseTendenciasDTO.getIdGrupoExecutor().intValue()>0)){ sql.append("and solicitacaoservico.idgrupoatual = ? "); parametro.add(analiseTendenciasDTO.getIdGrupoExecutor()); } if ((analiseTendenciasDTO.getIdEmpregado()!=null)&&(analiseTendenciasDTO.getIdEmpregado().intValue()>0)){ sql.append("and solicitacaoservico.idsolicitante = ? "); parametro.add(analiseTendenciasDTO.getIdEmpregado()); } if ((analiseTendenciasDTO.getIdTipoDemandaServico()!=null)&&(analiseTendenciasDTO.getIdTipoDemandaServico().intValue()>0)){ sql.append("and solicitacaoservico.idtipodemandaservico = ? "); parametro.add(analiseTendenciasDTO.getIdTipoDemandaServico()); } if ((analiseTendenciasDTO.getUrgencia()!=null)&&(analiseTendenciasDTO.getUrgencia().length()>0)){ sql.append("and solicitacaoservico.urgencia = ? "); parametro.add(analiseTendenciasDTO.getUrgencia()); } if ((analiseTendenciasDTO.getImpacto()!=null)&&(analiseTendenciasDTO.getImpacto().length()>0)){ sql.append("and solicitacaoservico.impacto = ? "); parametro.add(analiseTendenciasDTO.getImpacto()); } if ((idCausa!=null)&&(idCausa.intValue()>0)){ sql.append("and solicitacaoservico.idcausaincidente = ? "); parametro.add(idCausa); } if ((analiseTendenciasDTO.getIdItemConfiguracao()!=null)&&(analiseTendenciasDTO.getIdItemConfiguracao().intValue()>0)){ sql.append("join itemcfgsolicitacaoserv on solicitacaoservico.idsolicitacaoservico = itemcfgsolicitacaoserv.idsolicitacaoservico and "); sql.append("itemcfgsolicitacaoserv.iditemconfiguracao = ? and "); sql.append("(itemcfgsolicitacaoserv.datafim is null) "); parametro.add(analiseTendenciasDTO.getIdItemConfiguracao()); } sql.append("group by CAST(datahorasolicitacao AS DATE) "); sql.append("order by data"); //Para o PostgreSQL j� podemos trazer a cole��o completa com as datas que n�o tem ocorr�ncia de solicita��es j� com a qtde zerada! if (CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.POSTGRESQL)){ sql.append(") s on gdias.data=s.data"); } resp = this.execSQL(sql.toString(), parametro.toArray()); result = this.engine.listConvertion(TendenciaGanttDTO.class, resp, listRetorno); } catch (PersistenceException e) { e.printStackTrace(); result = null; } catch (Exception e) { e.printStackTrace(); result = null; } result = this.montarPeriodo(analiseTendenciasDTO,(ArrayList<TendenciaGanttDTO>) result); return (ArrayList<TendenciaGanttDTO>) (((result == null)||(result.size()<=0)) ? new ArrayList<TendenciaGanttDTO>() : result); } public List<TendenciaGanttDTO> listarGraficoGanttItemConfiguracao(AnaliseTendenciasDTO analiseTendenciasDTO, Integer idItemConfiguracao){ List result; try { List resp = new ArrayList(); List parametro = new ArrayList(); List listRetorno = new ArrayList(); java.sql.Date DataInicio = null; Timestamp DataFim = null; if (analiseTendenciasDTO.getDataInicio()!=null){ DataInicio = UtilDatas.getSqlDate(analiseTendenciasDTO.getDataInicio()); } if (analiseTendenciasDTO.getDataFim()!=null){ DataFim = UtilDatas.getTimeStampComUltimaHoraDoDia(analiseTendenciasDTO.getDataFim()); } //Deve-se ter um per�odo informado if ((DataInicio==null) || (DataFim==null)){ return new ArrayList<TendenciaGanttDTO>(); } listRetorno.add("data"); listRetorno.add("qtde"); StringBuilder sql = new StringBuilder(); //Para o PostgreSQL j� podemos trazer a cole��o completa com as datas que n�o tem ocorr�ncia de solicita��es j� com a qtde zerada! if (CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.POSTGRESQL)){ sql.append("select gdias.data, case when qtde is null then 0 else qtde end as qtde "); sql.append("from "); sql.append("(SELECT generate_series::date as data "); sql.append("FROM generate_series(?::timestamp, ?, '1 day')) gdias left join ("); parametro.add(DataInicio); parametro.add(DataFim); } sql.append("select CAST(datahorasolicitacao AS DATE) as data, count(solicitacaoservico.idsolicitacaoservico) as qtde "); sql.append("from solicitacaoservico join servicocontrato on "); sql.append("(solicitacaoservico.datahorasolicitacao between ? and ?) and "); parametro.add(DataInicio); parametro.add(DataFim); sql.append("solicitacaoservico.situacao <> ? and "); parametro.add(br.com.centralit.citcorpore.util.Enumerados.SituacaoSolicitacaoServico.Cancelada.getDescricao()); sql.append("solicitacaoservico.idservicocontrato = servicocontrato.idservicocontrato "); if ((analiseTendenciasDTO.getIdContrato()!=null)&&(analiseTendenciasDTO.getIdContrato().intValue()>0)){ sql.append("and servicocontrato.idcontrato = ? "); parametro.add(analiseTendenciasDTO.getIdContrato()); } if ((analiseTendenciasDTO.getIdServico()!=null)&&(analiseTendenciasDTO.getIdServico().intValue()>0)){ sql.append("and servicocontrato.idservico = ? "); parametro.add(analiseTendenciasDTO.getIdServico()); } if ((analiseTendenciasDTO.getIdGrupoExecutor()!=null)&&(analiseTendenciasDTO.getIdGrupoExecutor().intValue()>0)){ sql.append("and solicitacaoservico.idgrupoatual = ? "); parametro.add(analiseTendenciasDTO.getIdGrupoExecutor()); } if ((analiseTendenciasDTO.getIdEmpregado()!=null)&&(analiseTendenciasDTO.getIdEmpregado().intValue()>0)){ sql.append("and solicitacaoservico.idsolicitante = ? "); parametro.add(analiseTendenciasDTO.getIdEmpregado()); } if ((analiseTendenciasDTO.getIdTipoDemandaServico()!=null)&&(analiseTendenciasDTO.getIdTipoDemandaServico().intValue()>0)){ sql.append("and solicitacaoservico.idtipodemandaservico = ? "); parametro.add(analiseTendenciasDTO.getIdTipoDemandaServico()); } if ((analiseTendenciasDTO.getUrgencia()!=null)&&(analiseTendenciasDTO.getUrgencia().length()>0)){ sql.append("and solicitacaoservico.urgencia = ? "); parametro.add(analiseTendenciasDTO.getUrgencia()); } if ((analiseTendenciasDTO.getImpacto()!=null)&&(analiseTendenciasDTO.getImpacto().length()>0)){ sql.append("and solicitacaoservico.impacto = ? "); parametro.add(analiseTendenciasDTO.getImpacto()); } if ((analiseTendenciasDTO.getIdCausaIncidente()!=null)&&(analiseTendenciasDTO.getIdCausaIncidente().intValue()>0)){ sql.append("and solicitacaoservico.idcausaincidente = ? "); parametro.add(analiseTendenciasDTO.getIdCausaIncidente()); } if ((idItemConfiguracao!=null)&&(idItemConfiguracao.intValue()>0)){ sql.append("join itemcfgsolicitacaoserv on solicitacaoservico.idsolicitacaoservico = itemcfgsolicitacaoserv.idsolicitacaoservico and "); sql.append("itemcfgsolicitacaoserv.iditemconfiguracao = ? and "); sql.append("(itemcfgsolicitacaoserv.datafim is null) "); parametro.add(idItemConfiguracao); } sql.append("group by CAST(datahorasolicitacao AS DATE) "); sql.append("order by data"); //Para o PostgreSQL j� podemos trazer a cole��o completa com as datas que n�o tem ocorr�ncia de solicita��es j� com a qtde zerada! if (CITCorporeUtil.SGBD_PRINCIPAL.trim().toUpperCase().equalsIgnoreCase(SQLConfig.POSTGRESQL)){ sql.append(") s on gdias.data=s.data"); } resp = this.execSQL(sql.toString(), parametro.toArray()); result = this.engine.listConvertion(TendenciaGanttDTO.class, resp, listRetorno); } catch (PersistenceException e) { e.printStackTrace(); result = null; } catch (Exception e) { e.printStackTrace(); result = null; } result = this.montarPeriodo(analiseTendenciasDTO,(ArrayList<TendenciaGanttDTO>) result); return (ArrayList<TendenciaGanttDTO>) (((result == null)||(result.size()<=0)) ? new ArrayList<TendenciaGanttDTO>() : result); } }