/* * Copyright (C) 2007-2007 the GSAN - Sistema Integrado de Gest�o de Servi�os de * Saneamento This file is part of GSAN, an integrated service management system * for Sanitation GSAN is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by the Free * Software Foundation; either version 2 of the License. GSAN is distributed in * the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See * the GNU General Public License for more details. You should have received a * copy of the GNU General Public License along with this program; if not, write * to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, * MA 02111-1307, USA */ /* * GSAN - Sistema Integrado de Gest�o de Servi�os de Saneamento Copyright (C) * <2007> Adriano Britto Siqueira Alexandre Santos Cabral Ana Carolina Alves * Breda Ana Maria Andrade Cavalcante Aryed Lins de Ara�jo Bruno Leonardo * Rodrigues Barros Carlos Elmano Rodrigues Ferreira Cl�udio de Andrade Lira * Denys Guimar�es Guenes Tavares Eduardo Breckenfeld da Rosa Borges Fab�ola * Gomes de Ara�jo Fl�vio Leonardo Cavalcanti Cordeiro Francisco do Nascimento * J�nior Homero Sampaio Cavalcanti Ivan S�rgio da Silva J�nior Jos� Edmar de * Siqueira Jos� Thiago Ten�rio Lopes K�ssia Regina Silvestre de Albuquerque * Leonardo Luiz Vieira da Silva M�rcio Roberto Batista da Silva Maria de F�tima * Sampaio Leite Micaela Maria Coelho de Ara�jo Nelson Mendon�a de Carvalho * Newton Morais e Silva Pedro Alexandre Santos da Silva Filho Rafael Corr�a * Lima e Silva Rafael Francisco Pinto Rafael Koury Monteiro Rafael Palermo de * Ara�jo Raphael Veras Rossiter Roberto Sobreira Barbalho Rodrigo Avellar * Silveira Rosana Carvalho Barbosa S�vio Luiz de Andrade Cavalcante Tai Mu Shih * Thiago Augusto Souza do Nascimento Tiago Moreno Rodrigues Vivianne Barbosa * Sousa Este programa � software livre; voc� pode redistribu�-lo e/ou * modific�-lo sob os termos de Licen�a P�blica Geral GNU, conforme publicada * pela Free Software Foundation; vers�o 2 da Licen�a. Este programa � * distribu�do na expectativa de ser �til, mas SEM QUALQUER GARANTIA; sem mesmo * a garantia impl�cita de COMERCIALIZA��O ou de ADEQUA��O A QUALQUER PROP�SITO * EM PARTICULAR. Consulte a Licen�a P�blica Geral GNU para obter mais detalhes. * Voc� deve ter recebido uma c�pia da Licen�a P�blica Geral GNU junto com este * programa; se n�o, escreva para Free Software Foundation, Inc., 59 Temple * Place, Suite 330, Boston, MA 02111-1307, USA. */ package gcom.atendimentopublico; import gcom.atendimentopublico.ligacaoagua.LigacaoAgua; import gcom.atendimentopublico.ligacaoagua.LigacaoAguaSituacao; import gcom.atendimentopublico.ordemservico.FiscalizacaoSituacao; import gcom.atendimentopublico.ordemservico.FiscalizacaoSituacaoServicoACobrar; import gcom.atendimentopublico.ordemservico.OrdemServico; import gcom.atendimentopublico.ordemservico.OrdemServicoProgramacao; import gcom.atendimentopublico.ordemservico.OsReferidaRetornoTipo; import gcom.atendimentopublico.ordemservico.ServicoCobrancaValor; import gcom.atendimentopublico.ordemservico.ServicoTipo; import gcom.atendimentopublico.ordemservico.bean.ObterValorDebitoHelper; import gcom.atendimentopublico.registroatendimento.RegistroAtendimento; import gcom.cadastro.cliente.Cliente; import gcom.cadastro.cliente.ClienteImovel; import gcom.cadastro.cliente.ClienteRelacaoTipo; import gcom.cadastro.geografico.Municipio; import gcom.cadastro.imovel.Imovel; import gcom.cadastro.imovel.ImovelSuprimido; import gcom.cadastro.localidade.GerenciaRegional; import gcom.cadastro.localidade.UnidadeNegocio; import gcom.cobranca.CobrancaAcaoAtividadeComandoFiscalizacaoSituacao; import gcom.faturamento.autoinfracao.AutosInfracao; import gcom.faturamento.debito.DebitoTipo; import gcom.gui.atendimentopublico.registroatendimento.FiltrarAcompanhamentoRegistroAtendimentoHelper; import gcom.gui.relatorio.atendimentopublico.FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper; import gcom.gui.relatorio.atendimentopublico.FiltrarRelatorioOSSituacaoHelper; import gcom.micromedicao.hidrometro.HidrometroCapacidade; import gcom.micromedicao.hidrometro.HidrometroInstalacaoHistorico; import gcom.micromedicao.hidrometro.HidrometroSituacao; import gcom.relatorio.atendimentopublico.ordemservico.FiltrarRelatorioReligacaoClientesInadiplentesHelper; import gcom.util.CollectionUtil; import gcom.util.ConstantesSistema; import gcom.util.ControladorException; import gcom.util.ErroRepositorioException; import gcom.util.HibernateUtil; import gcom.util.Util; import java.math.BigDecimal; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import org.hibernate.Criteria; import org.hibernate.FetchMode; import org.hibernate.Hibernate; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.SQLQuery; import org.hibernate.Session; import org.hibernate.criterion.Restrictions; /** * < <Descri��o da Classe>> * * @author Administrador */ public class RepositorioAtendimentoPublicoHBM implements IRepositorioAtendimentoPublico { private static IRepositorioAtendimentoPublico instancia; /** * Construtor da classe RepositorioMicromedicaoHBM */ private RepositorioAtendimentoPublicoHBM() { } /** * Retorna o valor de instancia * * @return O valor de instancia */ public static IRepositorioAtendimentoPublico getInstancia() { if (instancia == null) { instancia = new RepositorioAtendimentoPublicoHBM(); } return instancia; } /** * [UC-0355] - Efetuar Corte de Liga�� de �gua [SB001] Atualizar Liga��o - * (corte de liga��o de �gua) �gua- os campos LAGU_DTCORTE e * LAGU_NNSELOCORTE e LAGU_ TMULTIMAALTERACAO * * @param imovel * Descri��o do par�metro * @exception ErroRepositorioExceptions * Descri��o da exce��o * @author Leandro Cavalcanti * @date 10/07/2006 * @param imovel * @param idLigacaoAguaSituacao * @throws ErroRepositorioException */ public void atualizarLigacaoAgua(Integer idImovel, Integer idLigacaoAguaSituacao, Integer numeroSeloCorte) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String update; try { // Atualizar os campos LAST_ID, LAGU_DTCORTE, LAGU_NNSELOCORTE e // LAGU_ TMULTIMAALTERACAO update = "update gcom.atendimentopublico.ligacaoagua.LigacaoAgua set " + "lagu_id = :idligacaoAgua ," + "lagu_dtcorte = :dataExecOrdServico, " + "lagu_nnselocorte = :numeroSeloCorte, " + "lagu_tmultimaalteracao = :datahoracorrente " + "where lagu_id = :imovelId"; session.createQuery(update).setInteger("idligacaoAgua", idLigacaoAguaSituacao.intValue()).setDate( "dataExecOrdServico", new Date()).setInteger( "numeroSeloCorte", numeroSeloCorte.intValue()).setInteger( "imovelId", idImovel.intValue()).setDate( "datahoracorrente", new Date()).executeUpdate(); } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); // session.close(); } } /** * [UC-0355] - Efetuar Corte de Liga�� de �gua [SB001] Atualizar Hidrometro - * (corte de liga��o de �gua) Atualizar os campos hidi_nnleituracorte e * hidi_tmultimaalteracao de HidrometroInstalacaoHistorico * * @param imovel * Descri��o do par�metro * @exception ErroRepositorioExceptions * Descri��o da exce��o * @author Leandro Cavalcanti * @date 10/07/2006 * @param imovel * @param idLigacaoAguaSituacao * @throws ErroRepositorioException */ public void atualizarHidrometroLIgacaoAgua(Integer imovelId, Integer numeroLeituraCorte) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String update; try { update = "update gcom.micromedicao.hidrometro.HidrometroInstalacaoHistorico set " + "hidi_nnleituracorte = :numCorte, hidi_tmultimaalteracao = :datahoracorrente " + "where imov_id = :imovelId"; session.createQuery(update).setInteger("numCorte", numeroLeituraCorte.intValue()).setInteger("imovelId", imovelId.intValue()) .setDate("datahoracorrente", new Date()).executeUpdate(); } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); // session.close(); } } /** * [UC-0362] - Efetuar Instala��o de Hidr�metro [SB002] Atualizar Liga��o de * �gua Atualizar os campos hidi_id e lagu_tmultimaalteracao de LigacaoAgua * * @exception ErroRepositorioExceptions * Descri��o da exce��o * @author Ana Maria * @date 13/07/2006 * @param idLigacaoAgua * @param idHidrometroInstalacaoHistorico * @throws ErroRepositorioException */ public void atualizarHidrometroInstalacaoHistoricoLigacaoAgua( Integer idLigacaoAgua, Integer idHidrometroInstalacaoHistorico) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String update = null; try { if (idHidrometroInstalacaoHistorico != null && !idHidrometroInstalacaoHistorico.equals("")) { update = "update gcom.atendimentopublico.ligacaoagua.LigacaoAgua set " + "hidi_id = :idHidrometroInstalacaoHistorico, lagu_tmultimaalteracao = :datahoracorrente " + "where lagu_id = :idLigacaoAgua"; session.createQuery(update).setInteger( "idHidrometroInstalacaoHistorico", idHidrometroInstalacaoHistorico.intValue()) .setTimestamp("datahoracorrente", new Date()) .setInteger("idLigacaoAgua", idLigacaoAgua.intValue()) .executeUpdate(); } else { update = "update gcom.atendimentopublico.ligacaoagua.LigacaoAgua set " + "hidi_id = null, lagu_tmultimaalteracao = :datahoracorrente " + "where lagu_id = :idLigacaoAgua"; session.createQuery(update).setTimestamp("datahoracorrente", new Date()).setInteger("idLigacaoAgua", idLigacaoAgua.intValue()).executeUpdate(); } } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC-0362] - Efetuar Instala��o de Hidr�metro [SB002] Atualizar Im�vel * Atualizar os campos hidi_id e imov_tmultimaalteracao de Imovel * * @exception ErroRepositorioExceptions * Descri��o da exce��o * @author Ana Maria * @date 13/07/2006 * @param idImovel * @param idHidrometroInstalacaoHistorico * @throws ErroRepositorioException */ public void atualizarHidrometroIntalacaoHistoricoImovel(Integer idImovel, Integer idHidrometroInstalacaoHistorico, Integer idPocoTipo) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String update = null; try { if (idHidrometroInstalacaoHistorico != null && !idHidrometroInstalacaoHistorico.equals("")) { if ( idPocoTipo != null ) { update = "update gcom.cadastro.imovel.Imovel set " + "hidi_id = :idHidrometroInstalacaoHistorico, imov_tmultimaalteracao = :datahoracorrente, poco_id = :idPocoTipo " + "where imov_id = :idImovel"; session.createQuery(update).setInteger( "idHidrometroInstalacaoHistorico", idHidrometroInstalacaoHistorico.intValue()) .setTimestamp("datahoracorrente", new Date()) .setInteger("idImovel", idImovel.intValue()) .setInteger("idPocoTipo", idPocoTipo) .executeUpdate(); } else { update = "update gcom.cadastro.imovel.Imovel set " + "hidi_id = :idHidrometroInstalacaoHistorico, imov_tmultimaalteracao = :datahoracorrente, poco_id = null " + "where imov_id = :idImovel"; session.createQuery(update).setInteger( "idHidrometroInstalacaoHistorico", idHidrometroInstalacaoHistorico.intValue()) .setTimestamp("datahoracorrente", new Date()) .setInteger("idImovel", idImovel.intValue()) .executeUpdate(); } } else { update = "update gcom.cadastro.imovel.Imovel set " + "hidi_id = null, imov_tmultimaalteracao = :datahoracorrente, poco_id = null " + "where imov_id = :idImovel"; session.createQuery(update).setTimestamp("datahoracorrente", new Date()).setInteger("idImovel", idImovel.intValue()) .executeUpdate(); } } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC-0362] - Efetuar Instala��o de Hidr�metro [SB003] Atualizar Hidr�metro * Atualizar o campo hisi_id * * @exception ErroRepositorioExceptions * Descri��o da exce��o * @author Ana Maria * @date 17/07/2006 * @throws ErroRepositorioException */ public void atualizarSituacaoHidrometro(Integer idHidrometro, Integer situacaoHidrometro) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String update = null; try { update = "update gcom.micromedicao.hidrometro.Hidrometro set " + "hist_id = :idSituacaoHidrometro, hidr_tmultimaalteracao = :datahoracorrente " + "where hidr_id = :numeroHidrometro"; session.createQuery(update).setInteger("idSituacaoHidrometro", situacaoHidrometro).setTimestamp("datahoracorrente", new Date()).setInteger("numeroHidrometro", idHidrometro.intValue()).executeUpdate(); } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC-0362] - Efetuar Instala��o de Hidr�metro [SB003] Atualizar Hidr�metro * Atualizar o campo hisi_id * * @exception ErroRepositorioExceptions * Descri��o da exce��o * @author Ana Maria * @date 17/07/2006 * @throws ErroRepositorioException */ public void atualizarLocalArmazanagemHidrometro(Integer idHidrometro, Integer localArmazanagemHidrometro) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String update = null; try { update = "update gcom.micromedicao.hidrometro.Hidrometro set " + "hila_id = :localArmazanagemHidrometro " + "where hidr_id = :numeroHidrometro"; session.createQuery(update).setInteger( "localArmazanagemHidrometro", localArmazanagemHidrometro) .setInteger("numeroHidrometro", idHidrometro.intValue()) .executeUpdate(); } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * Substituicao de hidrometro */ public void atualizarSubstituicaoHidrometroInstalacoHistorico( HidrometroInstalacaoHistorico hidrometroSubstituicaoHistorico) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); try { if (hidrometroSubstituicaoHistorico.getNumeroLeituraRetirada() != null) { String sql = "update gcom.micromedicao.hidrometro.HidrometroInstalacaoHistorico " + "set hidi_dtretiradahidrometro = :dataRetirada " + ", hidi_nnleituraretiradahidrometro = :numeroLeituraRetirada " + ", hidi_tmultimaalteracao = :data " + ", hidi_icinstalacaosubstituicao =:indicadorSubstituicao" + " where hidi_id = :id "; session.createQuery(sql).setDate("dataRetirada", hidrometroSubstituicaoHistorico.getDataRetirada()) .setInteger( "numeroLeituraRetirada", hidrometroSubstituicaoHistorico .getNumeroLeituraRetirada()) .setTimestamp("data", new Date()).setInteger("id", hidrometroSubstituicaoHistorico.getId()) .setShort("indicadorSubstituicao", new Short("2")) .executeUpdate(); } else { String sql = "update gcom.micromedicao.hidrometro.HidrometroInstalacaoHistorico " + "set hidi_dtretiradahidrometro = :dataRetirada " + ", hidi_tmultimaalteracao = :data " + ", hidi_icinstalacaosubstituicao =:indicadorSubstituicao" + " where hidi_id = :id "; session.createQuery(sql).setDate("dataRetirada", hidrometroSubstituicaoHistorico.getDataRetirada()) .setTimestamp("data", new Date()).setInteger("id", hidrometroSubstituicaoHistorico.getId()) .setShort("indicadorSubstituicao", new Short("2")) .executeUpdate(); } } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC-0362] - Efetuar Instala��o de Hidr�metro [SB003] Atualizar Hidr�metro * Atualizar o campo hisi_id * * @exception ErroRepositorioExceptions * Descri��o da exce��o * @author Ana Maria * @date 17/07/2006 * @throws ErroRepositorioException */ public void atualizarHidrometroInstalacoHistorico( HidrometroInstalacaoHistorico hidrometroSubstituicaoHistorico) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); try { if (hidrometroSubstituicaoHistorico.getNumeroLeituraRetirada() != null) { String sql = "update gcom.micromedicao.hidrometro.HidrometroInstalacaoHistorico " + "set hidi_dtretiradahidrometro = :dataRetirada " + ", hidi_nnleitretiradahidmt = :numeroLeituraRetirada " + ", hidi_tmultimaalteracao = :data " + ", usur_idretirada = :idUsuarioRetirada " + "where hidi_id = :id "; session.createQuery(sql).setDate("dataRetirada", hidrometroSubstituicaoHistorico.getDataRetirada()) .setInteger( "numeroLeituraRetirada", hidrometroSubstituicaoHistorico .getNumeroLeituraRetirada()) .setTimestamp("data", new Date()).setInteger("id", hidrometroSubstituicaoHistorico.getId()) .setInteger("idUsuarioRetirada", hidrometroSubstituicaoHistorico. getUsuarioRetirada().getId()) .executeUpdate(); } else { String sql = "update gcom.micromedicao.hidrometro.HidrometroInstalacaoHistorico " + "set hidi_dtretiradahidrometro = :dataRetirada " + ", hidi_tmultimaalteracao = :data " + "where hidi_id = :id "; session.createQuery(sql).setDate("dataRetirada", hidrometroSubstituicaoHistorico.getDataRetirada()) .setTimestamp("data", new Date()).setInteger("id", hidrometroSubstituicaoHistorico.getId()) .executeUpdate(); } } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0396] - Inserir Tipo de retorno da OS Referida [FS0005] Validar * indicador de deferimento * * @author lms * @date 31/07/2006 * @throws ErroRepositorioException */ public int consultarTotalIndicadorDeferimentoAtivoPorServicoTipoReferencia( OsReferidaRetornoTipo osReferidaRetornoTipo) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String select = null; try { select = "select count(*) from gcom.atendimentopublico.ordemservico.OsReferidaRetornoTipo o where " + "o.indicadorDeferimento = " + ConstantesSistema.INDICADOR_USO_ATIVO + " and " + "o.indicadorUso = " + ConstantesSistema.INDICADOR_USO_ATIVO + " and " + "o.servicoTipoReferencia.id = :idServicoTipoReferencia"; return ((Integer) session.createQuery(select).setInteger( "idServicoTipoReferencia", osReferidaRetornoTipo.getServicoTipoReferencia().getId()) .uniqueResult()).intValue(); } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0463] Atualizar Consumo M�nimo da Liga��o de �gua * * @author Leonardo Regis * @date 30/08/2006 * @param ligacaoAgua * @exception ErroRepositorioExceptions */ public void atualizarConsumoMinimoLigacaoAgua(LigacaoAgua ligacaoAgua) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String update; try { update = "update LigacaoAgua set " + "numeroConsumoMinimoAgua = :consumoMinimo, " + "ultimaAlteracao = :dataCorrente " + "where id = :ligacaoAguaId"; session.createQuery(update).setInteger("consumoMinimo", ligacaoAgua.getNumeroConsumoMinimoAgua()).setTimestamp( "dataCorrente", ligacaoAgua.getUltimaAlteracao()) .setInteger("ligacaoAguaId", ligacaoAgua.getId()) .executeUpdate(); } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0475] Obter Valor do D�bito Verificar exist�ncia de hidr�metro na * liga��o de �gua. * * @author Leonardo Regis * @date 09/09/2006 * @param imovelId * @return existencia de hidrometro ou n�o * @throws ErroRepositorioException */ public boolean verificarExistenciaHidrometroEmLigacaoAgua(Integer imovelId) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String consulta; boolean retorno = false; Collection<HidrometroInstalacaoHistorico> retornoConsulta = new ArrayList(); try { consulta = "SELECT la.hidrometroInstalacaoHistorico " + "FROM LigacaoAgua la " + "where la.id = :imovelId"; retornoConsulta = (Collection<HidrometroInstalacaoHistorico>) session .createQuery(consulta).setInteger("imovelId", imovelId) .list(); if (retornoConsulta != null && !retornoConsulta.isEmpty()) { retorno = true; } } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0475] Obter Valor do D�bito Verificar exist�ncia de hidr�metro no * im�vel. * * @author Leonardo Regis * @date 09/09/2006 * @param imovelId * @return existencia de hidrometro ou n�o * @throws ErroRepositorioException */ public boolean verificarExistenciaHidrometroEmImovel(Integer imovelId) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String consulta; boolean retorno = false; Collection<HidrometroInstalacaoHistorico> retornoConsulta = new ArrayList(); try { consulta = "SELECT i.hidrometroInstalacaoHistorico " + "FROM Imovel i " + "where i.id = :imovelId"; retornoConsulta = (Collection<HidrometroInstalacaoHistorico>) session .createQuery(consulta).setInteger("imovelId", imovelId) .list(); if (retornoConsulta != null && !retornoConsulta.isEmpty()) { retorno = true; } } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0475] Obter Valor do D�bito Obter Capacidade de Hidr�metro pela * Liga��o de �gua. * * @author Leonardo Regis * @date 09/09/2006 * @param imovelId * @return existencia de hidrometro ou n�o * @throws ErroRepositorioException */ public HidrometroCapacidade obterHidrometroCapacidadeEmLigacaoAgua( Integer imovelId) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String consulta; HidrometroCapacidade retornoConsulta = null; try { consulta = "SELECT h.hidrometroCapacidade " + "FROM LigacaoAgua la " + "INNER JOIN la.hidrometroInstalacaoHistorico hih " + "INNER JOIN hih.hidrometro h " + "INNER JOIN h.hidrometroCapacidade hc " + "where la.id = :imovelId"; retornoConsulta = (HidrometroCapacidade) session.createQuery( consulta).setInteger("imovelId", imovelId).setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retornoConsulta; } /** * [UC0475] Obter Valor do D�bito Obter Capacidade de Hidr�metro pelo * Im�vel. * * @author Leonardo Regis * @date 09/09/2006 * @param imovelId * @return existencia de hidrometro ou n�o * @throws ErroRepositorioException */ public HidrometroCapacidade obterHidrometroCapacidadeEmImovel( Integer imovelId) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String consulta; HidrometroCapacidade retornoConsulta = null; try { consulta = "SELECT h.hidrometroCapacidade " + "FROM Imovel i " + "INNER JOIN i.hidrometroInstalacaoHistorico hih " + "INNER JOIN hih.hidrometro h " + "INNER JOIN h.hidrometroCapacidade hc " + "where i.id = :imovelId"; retornoConsulta = (HidrometroCapacidade) session.createQuery( consulta).setInteger("imovelId", imovelId).setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retornoConsulta; } /** * [UC0475] Obter Valor do D�bito Obter Valor do Debito pelos par�mtros * passados. * * @author Leonardo Regis * @date 09/09/2006 * @param obterValorDebitoHelper * @return o valor do d�bito * @throws ErroRepositorioException */ public BigDecimal obterValorDebito(ObterValorDebitoHelper params) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String consulta; BigDecimal retornoConsulta = null; try { consulta = "SELECT scv.valor" +" FROM ServicoCobrancaValor scv" +" where scv.servicoTipo.id = :servicoTipoId" +" and scv.dataVigenciaInicial <= :dataAtual" +" and scv.dataVigenciaFinal >= :dataAtual" +" and scv.indicadorMedido = :indicadorMedido AND (" +" (scv.imovelPerfil.id = :imovelPerfilid OR scv.imovelPerfil.id is null) AND" +" (scv.hidrometroCapacidade = :hidrometroCapacidade" +" OR scv.hidrometroCapacidade is null) AND" +" (scv.categoria = :categoria OR scv.categoria is null) AND" +" (scv.subCategoria = :subCategoria OR scv.subCategoria is null) AND" +" (scv.quantidadeEconomiasInicial <= :quantidadeEconomias" +" OR scv.quantidadeEconomiasInicial is null) AND" +" (scv.quantidadeEconomiasFinal >= :quantidadeEconomias OR scv.quantidadeEconomiasFinal is null))" +" ORDER BY scv.imovelPerfil,scv.hidrometroCapacidade,scv.categoria,scv.subCategoria"; retornoConsulta = (BigDecimal) session.createQuery(consulta) .setInteger("servicoTipoId",params.getServicoTipo().getId()) .setDate("dataAtual",new Date()) .setShort("indicadorMedido", params.getSituacaoMedicao()) .setInteger("imovelPerfilid", params.getImovelPerfil()!=null? params.getImovelPerfil().getId():0) .setInteger("hidrometroCapacidade", params.getHidrometroCapacidade()!=null? params.getHidrometroCapacidade().getId():0) .setInteger("categoria", params.getCategoria()!=null? params.getCategoria().getId():0) .setInteger("subCategoria", params.getSubcategoria()!=null? params.getSubcategoria().getId():0) .setInteger("quantidadeEconomias", params.getQuantidadeEconomia()!=null? params.getQuantidadeEconomia():0) .setMaxResults(1).uniqueResult(); if(retornoConsulta == null) { consulta = "SELECT st.valor " + "FROM ServicoTipo st " + "where st.id = :servicoTipoId "; retornoConsulta = (BigDecimal) session .createQuery(consulta) .setInteger("servicoTipoId",params.getServicoTipo().getId()) .setMaxResults(1).uniqueResult(); } } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retornoConsulta; } /** * M�todo que retorna o n�mero do hidr�metro da liga��o de �gua * * @author Ana Maria * @date 12/09/2006 * @param idImovel * @return * @throws ControladorException */ public String pesquisarNumeroHidrometroLigacaoAgua(Integer idLigacaoAgua) throws ErroRepositorioException { String retorno = ""; Session session = HibernateUtil.getSession(); String consulta; try { consulta = " select hidr.numero" + " from LigacaoAgua lagu" + " inner join lagu.hidrometroInstalacaoHistorico hidi" + " inner join hidi.hidrometro hidr" + " where lagu.id = :idLigacaoAgua"; retorno = (String) session.createQuery(consulta).setInteger( "idLigacaoAgua", idLigacaoAgua).setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * M�todo que retorna o tipo da liga��o de �gua, a data do corte da liga��o * de �gua e a data da Religa��o * * @author Ana Maria, Raphael Rossiter * @date 18/08/2006, 03/01/2008 * @param idLigacaoAgua * @throws ErroRepositorioException */ public Object[] pesquisarDadosLigacaoAgua(Integer idLigacaoAgua) throws ErroRepositorioException { Object[] retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "select lagu.corteTipo.id, lagu.dataCorteAdministrativo, lagu.dataReligacao," + " lagu.dataCorte, lagu.dataSupressao" + " from LigacaoAgua lagu" + " where lagu.id = :idLigacaoAgua"; retorno = (Object[]) session.createQuery(consulta).setInteger( "idLigacaoAgua", idLigacaoAgua).setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Consulta os dados das ordens de servi�o para a gera��o do relat�rio * * @author Rafael Corr�a, Vivianne Sousa * @created 07/10/2006, 09/03/2007 * @return * @throws ErroRepositorioException */ public Collection pesquisarOrdemServicoProgramacaoRelatorio( Integer idEquipe, Date dataRoteiro) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { if (dataRoteiro != null) { consulta = "SELECT ospg.nnSequencialProgramacao, ra.id, " + "orse.id, svtp.id, orse.observacao " + "FROM OrdemServicoProgramacao ospg " + "INNER JOIN ospg.ordemServico orse " + "INNER JOIN ospg.equipe equipe " + "INNER JOIN ospg.programacaoRoteiro progRot " + "INNER JOIN orse.servicoTipo svtp " + "LEFT JOIN orse.registroAtendimento ra " + "WHERE equipe.id = :idEquipe " + "AND progRot.dataRoteiro = :dataRoteiro " + "AND orse.indicadorProgramada = :programada " + "AND (ospg.indicadorAtivo = :indicadorAtivo " + "OR (ospg.indicadorAtivo = :indicadorAtivoNao AND ospg.situacaoFechamento = :situacaoFechamento )) " + "ORDER BY ospg.nnSequencialProgramacao "; retorno = session.createQuery(consulta).setInteger("idEquipe", idEquipe).setTimestamp("dataRoteiro", dataRoteiro) .setShort("indicadorAtivo", OrdemServicoProgramacao.INDICADOR_ATIVO) .setShort("indicadorAtivoNao", OrdemServicoProgramacao.INDICADOR_ATIVO_NAO) .setShort("situacaoFechamento", OrdemServicoProgramacao.SITUACAO_FECHAMENTO) .setShort("programada", ConstantesSistema.INDICADOR_USO_ATIVO).list(); } else { consulta = "select ospg.nnSequencialProgramacao, ra.id, " + "orse.id, svtp.id, orse.observacao " + "from OrdemServicoProgramacao ospg " + "inner join ospg.ordemServico orse " + "inner join ospg.equipe equipe " + "left join orse.registroAtendimento ra " + "inner join orse.servicoTipo svtp " + "where equipe.id = :idEquipe" + "AND orse.indicadorProgramada = :programada " + "AND (ospg.indicadorAtivo = :indicadorAtivo " + "OR (ospg.indicadorAtivo = :indicadorAtivoNao AND ospg.situacaoFechamento = :situacaoFechamento )) " + "ORDER BY ospg.nnSequencialProgramacao "; retorno = session.createQuery(consulta).setInteger("idEquipe", idEquipe).setShort("indicadorAtivo", OrdemServicoProgramacao.INDICADOR_ATIVO).setShort( "indicadorAtivoNao", OrdemServicoProgramacao.INDICADOR_ATIVO_NAO).setShort( "situacaoFechamento", OrdemServicoProgramacao.SITUACAO_FECHAMENTO).setShort( "programada", ConstantesSistema.INDICADOR_USO_ATIVO) .list(); } } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC0404] Manter Especifica��o da Situa��o do Imovel Este caso de uso * remove a especifica��o e os crit�rio [SB0002] Remover Especifica��o da * situacao * * @author Rafael Pinto * @created 08/11/2006 * @throws ControladorException * Controlador Exception */ public void removerEspecificacaoSituacaoImovelCriterio( String[] idsEspecificacaoSituacaoImovel) throws ErroRepositorioException { String remocao = null; Session session = HibernateUtil.getSession(); try { remocao = "delete EspecificacaoImovSitCriterio " + "where esim_id IN(:ids)"; session.createQuery(remocao).setParameterList("ids", idsEspecificacaoSituacaoImovel).executeUpdate(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } } /** * Pesquisa todos os ids das situa��es de liga��o de �gua. [UC0564 - Gerar * Resumo das Instala��es de Hidr�metros] * * @author Pedro Alexandre * @date 25/04/2007 * @return * @throws ErroRepositorioException */ public Collection<Integer> pesquisarTodosIdsSituacaoLigacaoAgua() throws ErroRepositorioException { Collection<Integer> retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "select last.id from LigacaoAguaSituacao last"; retorno = session.createQuery(consulta).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisa todos os ids das situa��es de liga��o de esgoto. [UC0564 - Gerar * Resumo das Instala��es de Hidr�metros] * * @author Pedro Alexandre * @date 25/04/2007 * @return * @throws ErroRepositorioException */ public Collection<Integer> pesquisarTodosIdsSituacaoLigacaoEsgoto() throws ErroRepositorioException { Collection<Integer> retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "select lest.id from LigacaoEsgotoSituacao lest"; retorno = session.createQuery(consulta).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Este cso de uso permite efetuar a liga��o de �gua e eventualmente a * instala��o de hidr�metro, sem informa��o de RA sendo chamado direto pelo * menu. [UC0579] - Efetuar Liga��o de �gua com Intala��o de Hidr�metro * * @author Fl�vio Leonardo * @date 25/04/2007 * @param idImovel * @return * @throws ErroRepositorioException */ public Collection pesquisarEfetuarLigacaoAguaHidrometroSemRA( Integer idImovel) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); try { String hql = "select imovel.id," // 0 + " cliente.nome,"// 1 + " cliente.cpf,"// 2 + " cliente.cnpj,"// 3 + " ligacaoAguaSituacao.descricao,"// 4 + " ligacaoEsgotoSituacao.descricao,"// 5 + " imovel.indicadorExclusao,"// 6 + " quadra.indicadorRedeAgua,"// 7 + " ligacaoAguaSituacao.id,"// 8 + " ligacaoEsgotoSituacao.id"// 9 + " from ClienteImovel clienteImovel" + " inner join clienteImovel.imovel imovel" + " inner join clienteImovel.cliente cliente" + " inner join imovel.ligacaoAguaSituacao ligacaoAguaSituacao" + " inner join imovel.ligacaoEsgotoSituacao ligacaoEsgotoSituacao" + " inner join imovel.quadra quadra" + " where imovel.id = :idImovel" + " and clienteImovel.clienteRelacaoTipo.id = :relacaoTipo" + " and clienteImovel.dataFimRelacao is null"; retorno = session.createQuery(hql).setInteger("idImovel", idImovel) .setInteger("relacaoTipo", new Integer(ClienteRelacaoTipo.USUARIO)) .setMaxResults(1).list(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC0XXX] Gerar Contrato de Presta��o de Servi�o * * @author Rafael Corr�a * @date 03/05/2007 * @throws ErroRepositorioException */ public Collection obterDadosContratoPrestacaoServico(Integer idImovel) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String consulta; Collection retorno = null; try { /* * consulta = "SELECT clie.clie_nmcliente as nomeCliente, * unidNeg.uneg_nmabreviado as nomeUnidadeNegocio, " // 0, 1 + * "clieResponsavel.clie_nmcliente as nomeResponsavel, * clieResponsavel.clie_nncpf as cpfResponsavel, " // 2, 3 + * "clieResponsavel.clie_nnrg as rgResponsavel, clie.clie_nncpf as * cpfCliente, clie.clie_nnrg as rgCliente, " // 4, // 5, 6 + * "clie.clie_id as idCliente, clieResponsavel.clie_id as * idResponsavel, imov.cstf_id as consumoTarifa, " // 7, // 8, 9 + * "municipio.muni_nmmunicipio as nomeMunicipio " // 10 + "FROM * cadastro.imovel imov " + "INNER JOIN cadastro.localidade loc " + * "on loc.loca_id = imov.loca_id " + "LEFT OUTER JOIN * cadastro.bairro bairro " + "on loc.bair_id = bairro.bair_id " + * "LEFT OUTER JOIN cadastro.municipio municipio " + "on * bairro.muni_id = municipio.muni_id " // + "INNER JOIN * cadastro.gerencia_regional greg " // + "on greg.greg_id = * loc.greg_id " + "INNER JOIN cadastro.unidade_negocio unidNeg " + * "on unidNeg.uneg_id = loc.uneg_id " + "INNER JOIN * cadastro.cliente_imovel clieImov " + "on clieImov.imov_id = * imov.imov_id and clieImov.crtp_id = " + * ClienteRelacaoTipo.USUARIO.toString() + "and * clieImov.clim_dtrelacaofim is null " + "INNER JOIN * cadastro.cliente clie " + "on clie.clie_id = clieImov.clie_id " + * "LEFT OUTER JOIN cadastro.cliente clieResponsavel " + "on * clieResponsavel.clie_id = unidNeg.clie_id " + "where imov.imov_id = * :idImovel"; */ consulta = "SELECT loc.loca_nmlocalidade as nomeLocalidade, "// 0 + "clieResponsavel.clie_nmcliente as nomeResponsavel, " // 1 + "clieResponsavel.clie_nncpf as cpfResponsavel, " // 2 + "clieResponsavel.clie_nnrg as rgResponsavel, " //3 + "clieResponsavel.clie_id as idResponsavel, " //4 + "imov.cstf_id as consumoTarifa, " // 5 + "municipio.muni_nmmunicipio as nomeMunicipio " //6 //+ "clie.clie_nncpf as cpfCliente, " //5 //+ "clie.clie_nnrg as rgCliente, " // 6 //+ "clie.clie_id as idCliente, " // 7 //+ "clieResponsavel.clie_id as idResponsavel, " //8 //+ "imov.cstf_id as consumoTarifa, " // 9 //+ "municipio.muni_nmmunicipio as nomeMunicipio " // 10 + "FROM cadastro.imovel imov " + "INNER JOIN cadastro.localidade loc " + "on loc.loca_id = imov.loca_id " + "LEFT OUTER JOIN cadastro.bairro bairro " + "on loc.bair_id = bairro.bair_id " + "LEFT OUTER JOIN cadastro.municipio municipio " + "on bairro.muni_id = municipio.muni_id " // + "INNER JOIN cadastro.gerencia_regional greg " // + "on greg.greg_id = loc.greg_id " /*+ "INNER JOIN cadastro.unidade_negocio unidNeg " + "on unidNeg.uneg_id = loc.uneg_id "*/ /*+ "INNER JOIN cadastro.cliente_imovel clieImov " + "on clieImov.imov_id = imov.imov_id and clieImov.crtp_id = " + ClienteRelacaoTipo.USUARIO.toString() + "and clieImov.clim_dtrelacaofim is null "*/ /*+ "INNER JOIN cadastro.cliente clie " + "on clie.clie_id = clieImov.clie_id "*/ + "LEFT OUTER JOIN cadastro.cliente clieResponsavel " + "on clieResponsavel.clie_id = loc.clie_id " + "where imov.imov_id = :idImovel"; retorno = (Collection) session.createSQLQuery(consulta)/*.addScalar( "nomeCliente", Hibernate.STRING)*/.addScalar( "nomeLocalidade", Hibernate.STRING).addScalar( "nomeResponsavel", Hibernate.STRING).addScalar( "cpfResponsavel", Hibernate.STRING).addScalar( "rgResponsavel", Hibernate.STRING)/*.addScalar("cpfCliente", Hibernate.STRING).addScalar("rgCliente", Hibernate.STRING)*/ /*.addScalar("idCliente", Hibernate.INTEGER)*/.addScalar( "idResponsavel", Hibernate.INTEGER).addScalar( "consumoTarifa", Hibernate.INTEGER).addScalar( "nomeMunicipio", Hibernate.STRING).setInteger( "idImovel", idImovel).list(); } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0582] - Emitir Boletim de Cadastro Obt�m os dados necess�rio da * liga��o de �gua, de esgoto e do hidr�metro instalado na liga��o de �gua * * @author Rafael Corr�a * @date 17/05/2007 * @throws ErroRepositorioException */ public Object[] obterDadosLigacaoAguaEsgoto(Integer idImovel) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String consulta; Object[] retorno = null; try { consulta = "SELECT lagu.lagd_id as diametroLigAgua, lagu.lagm_id as materialLigAgua, " + " lesg.legd_id as diametroLigEsgoto, lesg.legm_id as materialLigEsgoto, " + " hidrInstHist.hidi_nnleitinstalacaohidmt as leituraInicial, hidr.hicp_id as capacidade, " + " hidr.himc_id as marca, hidrInstHist.hili_id as localInstalacao, hidrInstHist.hipr_id as protecao, " + " hidrInstHist.hidi_iccavalete as cavalete, hidr.hidr_nnhidrometro as numeroHidrometro " + " FROM cadastro.imovel imov " + " LEFT OUTER JOIN atendimentopublico.ligacao_agua lagu on lagu.lagu_id = imov.imov_id " + " LEFT OUTER JOIN micromedicao.hidrometro_inst_hist hidrInstHist on hidrInstHist.hidi_id = lagu.hidi_id " + " LEFT OUTER JOIN micromedicao.hidrometro hidr on hidr.hidr_id = hidrInstHist.hidr_id " + " LEFT OUTER JOIN atendimentopublico.ligacao_esgoto lesg on lesg.lesg_id = imov.imov_id " + " WHERE imov.imov_id = :idImovel"; retorno = (Object[]) session.createSQLQuery(consulta). addScalar("diametroLigAgua", Hibernate.INTEGER). addScalar("materialLigAgua", Hibernate.INTEGER). addScalar("diametroLigEsgoto", Hibernate.INTEGER). addScalar("materialLigEsgoto", Hibernate.INTEGER). addScalar("leituraInicial", Hibernate.INTEGER). addScalar("capacidade", Hibernate.INTEGER). addScalar("marca",Hibernate.INTEGER). addScalar("localInstalacao",Hibernate.INTEGER). addScalar("protecao", Hibernate.INTEGER). addScalar("cavalete", Hibernate.SHORT). addScalar("numeroHidrometro", Hibernate.STRING). setInteger("idImovel", idImovel). setMaxResults(1). uniqueResult(); } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public void atualizarImovelLigacaoAguaInstalacaoHidrometroSemRA( Integer idImovel, Integer idHidrometro) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); try { if (idImovel != null) { String hql = "update gcom.cadastro.imovel.Imovel set " + "last_id = :situacao, imov_tmultimaalteracao = :ultimaAlteracao " +"where imov_id = :idImovel"; session.createQuery(hql).setInteger("situacao", LigacaoAguaSituacao.LIGADO) .setTimestamp("ultimaAlteracao", new Date()) .setInteger("idImovel",idImovel).executeUpdate(); } if (idHidrometro != null) { String hql2 = "update gcom.micromedicao.hidrometro.Hidrometro set " + "hist_id = :situacao, hidr_tmultimaalteracao = :ultimaAlteracao " + "where hidr_id = :idHidrometro"; session.createQuery(hql2).setInteger("situacao",HidrometroSituacao.INSTALADO) .setTimestamp("ultimaAlteracao", new Date()) .setInteger("idHidrometro", idHidrometro).executeUpdate(); } } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } } //********************************************************* //****************CONTRATO PESSOA JURIDICA***************** public Cliente pesquisaClienteContrato(Integer idCliente) throws ErroRepositorioException { Cliente retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "from Cliente cliente" + " left join fetch cliente.profissao profissao" + " inner join fetch cliente.clienteTipo clienteTipo" + " where cliente.id = :idCliente"; retorno = (Cliente) session.createQuery(consulta).setInteger( "idCliente", idCliente).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public ClienteImovel pesquisarDadosContratoJuridica(Integer idImovel) throws ErroRepositorioException { ClienteImovel retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "from ClienteImovel clienteImovel" + " inner join fetch clienteImovel.cliente cliente" + " inner join fetch clienteImovel.imovel imovel" + " inner join fetch cliente.clienteTipo clienteTipo" + " inner join fetch clienteTipo.esferaPoder esferaPoder" + " where imovel.id = " + idImovel + " and clienteImovel.clienteRelacaoTipo.id = " + ClienteRelacaoTipo.USUARIO; retorno = (ClienteImovel) session.createQuery(consulta) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public String pesquisarMunicipio(Integer idImovel) throws ErroRepositorioException { String retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "select municipio.nome from Imovel imovel" + " inner join fetch imovel.localidade localidade" + " inner join fetch localidade.logradouroBairro logradouro" + " inner join fetch logradouro.bairro bairro" + " inner join fetch bairro.municipio municipio" + " where imovel.id = :idImovel"; retorno = (String) session.createQuery(consulta).setInteger( "idImovel", idImovel).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } //********************************************************************************** /** * [UC0482]Emitir 2� Via de Conta *obter numero do hidr�metro na liga��o de �gua. * * @author Vivianne Sousa * @date 11/09/2007 * * @param imovelId * @return existencia de hidrometro ou n�o * @throws ErroRepositorioException */ public String obterNumeroHidrometroEmLigacaoAgua(Integer imovelId) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String consulta; String retornoConsulta = null; try { consulta = "SELECT hidr.numero " + "FROM LigacaoAgua la " + "inner join la.hidrometroInstalacaoHistorico hidi " + "inner join hidi.hidrometro hidr " + "where la.id = :imovelId "; retornoConsulta = (String) session.createQuery(consulta) .setInteger("imovelId", imovelId).uniqueResult(); } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retornoConsulta; } /** * * [UC0738] Retorna as informa��es para o relat�rio de certid�o negativa * * @param imo * * @return * * @throws ErroRepositorioException * */ public Collection<Object[]> pesquisarRelatorioCertidaoNegativa(Imovel imo) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String consulta; Collection retornoConsulta = null; try { consulta = " select \n" + // 0 " cli.nome, \n" + // 1 " imo.id, \n" + // 2 " loc.id, \n" + // 3 " sc.codigo, \n" + // 4 " qua.numeroQuadra, \n" + // 5 " imo.lote, \n" + // 6 " imo.subLote, \n" + // 7 " imo.quantidadeEconomias, \n" + // 8 " ip.descricao, \n" + // 9 " las.descricao, \n" + // 10 " les.descricao, \n" + // 11 " pt.descricao, \n" + // 12 " sp.nomeAbreviadoEmpresa, \n" + // 13 " sp.nomeEmpresa, \n" + // 14 " sp.cnpjEmpresa, \n" + // 15 " loc.descricao, \n" + // 16 " coalesce( ltp.descricao, '' ) || ' ' || coalesce( ltt.descricao, '' ) || ' ' || coalesce( log.nome, '' ) as logradouro, \n" + // 17 " sp.numeroImovel, \n" + // 18 " sp.complementoEndereco, \n" + // 19 " er.descricaoAbreviada, \n" + // 20 " bai.nome, \n" + // 21 " cep.codigo, \n" + // 22 " sp.nomeSiteEmpresa, \n" + // 23 " sp.numero0800Empresa, \n" + // 24 " sp.inscricaoEstadual, \n" + // 25 " imo.areaConstruida, \n" + // 26 " areaConstruidaFaixa, \n" + // 27 " hidr.numero, \n " + // 28 " unidNeg.nome, \n" + // 29 " cli.cpf, \n" + //30 " cli.cnpj, \n" + //31 " cliTipo.indicadorPessoaFisicaJuridica \n" + " from \n" + " ClienteImovel ci \n" + " inner join ci.clienteRelacaoTipo crt \n" + " inner join ci.cliente cli \n" + " inner join cli.clienteTipo cliTipo \n" + " inner join ci.imovel imo \n" + " inner join imo.localidade loc \n" + " inner join loc.unidadeNegocio unidNeg \n" + " inner join imo.setorComercial sc \n" + " inner join imo.quadra qua \n" + " inner join imo.imovelPerfil ip \n" + " inner join imo.ligacaoAguaSituacao las \n" + " inner join imo.ligacaoEsgotoSituacao les \n" + " left join imo.pocoTipo pt, \n" + " SistemaParametro sp \n" // + " left join sp.logradouro log \n" + " left join sp.logradouroCep logradouroCep " + " left join logradouroCep.logradouro log " + " left join log.logradouroTipo ltp \n" + " left join log.logradouroTitulo ltt \n" + " left join sp.enderecoReferencia er \n" // + " left join sp.bairro bai \n" + "left join sp.logradouroBairro logradouroBairro " + "left join logradouroBairro.bairro bai \n " // + " left join sp.cep cep \n" + " left join logradouroCep.cep cep " + " left join imo.areaConstruidaFaixa areaConstruidaFaixa \n" + " left join imo.ligacaoAgua lagu \n" + " left join lagu.hidrometroInstalacaoHistorico hidInsHist " + " left join hidInsHist.hidrometro hidr " + " where \n" + " crt.id = 2 and \n" + " ci.dataFimRelacao is null and \n " + " imo.id = :idImovel \n"; retornoConsulta = session.createQuery(consulta).setInteger( "idImovel", imo.getId()).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retornoConsulta; } /** * Pesquisa os dados necess�rios para a gera��o do relat�rio * * [UC0864] Gerar Certid�o Negativa por Cliente * * @return * * @throws ErroRepositorioException */ public Collection<Object[]> pesquisarRelatorioCertidaoNegativaCliente(Collection<Integer> idsClientes) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String consulta; Collection<Object[]> retorno = null; try { consulta = " SELECT DISTINCT clie.clie_id as idClienteResponsavel, " // 0 + " clieImov.imov_id as idImovel, " //1 + " ligAguaSit.last_dsabreviado as situacaoLigacaoAgua, " //2 + " clie.clie_nncpf as cpf, " //3 + " clie.clie_nncnpj as cnpj, " //4 + " clieTipo.cltp_icpessoafisicajuridica as incicadorCpfCnpj " //5 + " FROM cadastro.cliente clie " + " INNER JOIN cadastro.cliente_tipo clieTipo " + " on clieTipo.cltp_id = clie.cltp_id " + " INNER JOIN cadastro.cliente_imovel clieImov " + " on clieImov.clie_id = clie.clie_id and clieImov.clim_dtrelacaofim is null " + " INNER JOIN cadastro.imovel imov " + " on imov.imov_id = clieImov.imov_id " + " INNER JOIN atendimentopublico.ligacao_agua_situacao ligAguaSit " + " on ligAguaSit.last_id = imov.last_id " + " WHERE clie.clie_id in (:idsClientes)"; retorno = session.createSQLQuery(consulta) .addScalar( "idClienteResponsavel", Hibernate.INTEGER) .addScalar( "idImovel", Hibernate.INTEGER) .addScalar( "situacaoLigacaoAgua", Hibernate.STRING) .addScalar( "cpf", Hibernate.STRING) .addScalar( "cnpj", Hibernate.STRING) .addScalar( "incicadorCpfCnpj", Hibernate.SHORT) .setParameterList( "idsClientes", idsClientes).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0541] Emitir 2a Via Conta Internet * * [FS0004] - Cliente n�o associado ao documento * * @author Raphael Rossiter * @date 21/10/2008 * * @param idImovel * @param cpf * @return Collection * @throws ErroRepositorioException */ public Collection pesquisarClienteAssociadoImovelComCPF(Integer idImovel, String cpf) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT cliente " + "FROM ClienteImovel clienteImovel " + "INNER JOIN clienteImovel.cliente cliente " + "INNER JOIN clienteImovel.imovel imovel " + "WHERE imovel.id = :idImovel " + "AND clienteImovel.dataFimRelacao IS NULL " + "AND cliente.cpf = :cpf "; retorno = session.createQuery(consulta).setInteger("idImovel", idImovel.intValue()).setString("cpf", cpf.trim()).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0541] Emitir 2a Via Conta Internet * * [FS0004] - Cliente n�o associado ao documento * * @author Raphael Rossiter * @date 21/10/2008 * * @param idImovel * @param cnpj * @return Collection * @throws ErroRepositorioException */ public Collection pesquisarClienteAssociadoImovelComCNPJ(Integer idImovel, String cnpj) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT cliente " + "FROM ClienteImovel clienteImovel " + "INNER JOIN clienteImovel.cliente cliente " + "INNER JOIN clienteImovel.imovel imovel " + "WHERE imovel.id = :idImovel " + "AND clienteImovel.dataFimRelacao IS NULL " + "AND cliente.cnpj = :cnpj "; retorno = session.createQuery(consulta).setInteger("idImovel", idImovel.intValue()).setString("cnpj", cnpj.trim()).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0482] Emitir 2a Via Conta * * [FS0002] - Cliente sem documento * * @author Raphael Rossiter * @date 24/10/2008 * * @param idImovel * @return Collection * @throws ErroRepositorioException */ public Collection pesquisarClienteAssociadoImovelComDocumentoInformado(Integer idImovel) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT cliente " + "FROM ClienteImovel clienteImovel " + "INNER JOIN clienteImovel.cliente cliente " + "INNER JOIN clienteImovel.imovel imovel " + "WHERE imovel.id = :idImovel " + "AND clienteImovel.dataFimRelacao IS NULL " + "AND (cliente.cpf IS NOT NULL OR cliente.cnpj IS NOT NULL)"; retorno = session.createQuery(consulta).setInteger("idImovel", idImovel.intValue()).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0150] Retificar Conta * @author Vivianne Sousa * @date 26/11/2008 */ public BigDecimal obterPercentualAguaConsumidaColetadaImovel(Integer idImovel) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String consulta; BigDecimal retornoConsulta = null; try { consulta = "SELECT le.percentualAguaConsumidaColetada " + "FROM LigacaoEsgoto le " + "where le.id = :idImovel "; retornoConsulta = (BigDecimal) session.createQuery(consulta) .setInteger("idImovel", idImovel) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retornoConsulta; } /** * [UC0XXX] Gerar Contrato de Presta��o de Servi�o * * @author Rafael Corr�a * @date 03/05/2007 * @throws ErroRepositorioException */ public Collection obterDadosUnidadeNegocioeInformacoesResponsavel(Integer idImovel) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String consulta; Collection retorno = null; try { consulta = "SELECT unidNeg.uneg_nmabreviado as nomeUnidadeNegocio, " // 0 + "clieResponsavel.clie_nmcliente as nomeResponsavel, " // 1 + "clieResponsavel.clie_nncpf as cpfResponsavel, " // 2 + "clieResponsavel.clie_nnrg as rgResponsavel, " // 3 /*+ "clie.clie_nncpf as cpfCliente, " // 5 + "clie.clie_nnrg as rgCliente, " // 6 + "clie.clie_id as idCliente, " //7*/ + "clieResponsavel.clie_id as idResponsavel, " // 4 + "imov.cstf_id as consumoTarifa, " // 5 + "municipio.muni_nmmunicipio as nomeMunicipio " // 6 + "FROM cadastro.imovel imov " + "INNER JOIN cadastro.localidade loc " + "on loc.loca_id = imov.loca_id " + "LEFT OUTER JOIN cadastro.bairro bairro " + "on loc.bair_id = bairro.bair_id " + "LEFT OUTER JOIN cadastro.municipio municipio " + "on bairro.muni_id = municipio.muni_id " // + "INNER JOIN cadastro.gerencia_regional greg " // + "on greg.greg_id = loc.greg_id " + "INNER JOIN cadastro.unidade_negocio unidNeg " + "on unidNeg.uneg_id = loc.uneg_id " /*+ "INNER JOIN cadastro.cliente_imovel clieImov " + "on clieImov.imov_id = imov.imov_id and clieImov.crtp_id = " + ClienteRelacaoTipo.USUARIO.toString() + "and clieImov.clim_dtrelacaofim is null " + "INNER JOIN cadastro.cliente clie " + "on clie.clie_id = clieImov.clie_id "*/ + "LEFT OUTER JOIN cadastro.cliente clieResponsavel " + "on clieResponsavel.clie_id = unidNeg.clie_id " + "where imov.imov_id = :idImovel"; retorno = (Collection) session.createSQLQuery(consulta).addScalar( "nomeCliente", Hibernate.STRING).addScalar( "nomeUnidadeNegocio", Hibernate.STRING).addScalar( "nomeResponsavel", Hibernate.STRING).addScalar( "cpfResponsavel", Hibernate.STRING).addScalar( "rgResponsavel", Hibernate.STRING).addScalar("cpfCliente", Hibernate.STRING).addScalar("rgCliente", Hibernate.STRING) .addScalar("idCliente", Hibernate.INTEGER).addScalar( "idResponsavel", Hibernate.INTEGER).addScalar( "consumoTarifa", Hibernate.INTEGER).addScalar( "nomeMunicipio", Hibernate.STRING).setInteger( "idImovel", idImovel).list(); } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0898] Atualizar Autos de Infra��o com prazo de Recurso Vencido * * @author S�vio Luiz * @date 08/05/2009 */ public Collection<AutosInfracao> pesquisarAutoInfracaoRecursoVencido(Integer idSituacaoAutoInfracao,Date prazoEntregaRecursoVencido) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String consulta; Collection retornoConsulta = null; try { consulta = "SELECT ai " + "FROM AutosInfracao ai " + "INNER JOIN ai.fiscalizacaoSituacao fs " + "INNER JOIN ai.autoInfracaoSituacao ais " + "where ais.id = :idAutoInfracaoSituacao and ai.dataEmissao < :prazoEntregaRecursoVencido"; retornoConsulta = session.createQuery(consulta) .setInteger("idAutoInfracaoSituacao",idSituacaoAutoInfracao) .setDate("prazoEntregaRecursoVencido", prazoEntregaRecursoVencido) .list(); } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retornoConsulta; } /** * [UC0898] Atualizar Autos de Infra��o com prazo de Recurso Vencido * * [SB0001] Atualizar Autos Infra��o * * @author S�vio Luiz * @date 08/05/2009 */ public void atualizarAutosInfracao(Collection idsAutosInfracao, Integer idSituacaoAutoInfracao) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String update; try { update = "update AutosInfracao set " + "aist_id = :idSituacaoAutoInfracao," + "auif_tmultimaalteracao = :datahoracorrente " + "where auif_id in (:idsAutosInfracao)"; session.createQuery(update).setInteger("idSituacaoAutoInfracao", idSituacaoAutoInfracao).setParameterList("idsAutosInfracao", idsAutosInfracao) .setDate("datahoracorrente", new Date()).executeUpdate(); } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0898] Atualizar Autos de Infra��o com prazo de Recurso Vencido * * @author S�vio Luiz * @date 08/05/2009 */ public Collection<FiscalizacaoSituacaoServicoACobrar> pesquisarFiscalizacaoSituacaoServicoACobrar(Integer idFiscalizacaoSituacao) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String consulta; Collection<Object[]> retornoConsulta = null; Collection<FiscalizacaoSituacaoServicoACobrar> collFiscalizacaoSituacaoSAC = null; try { consulta = "SELECT fssc.consumoCalculo, "//0 + "fs.indicadorAtualizacaoAutosInfracao, "//1 + "dt.valorSugerido, "//2 + "fssc.numeroVezesServicoCalculadoValor, "//3 + "dt.id, "//4 + "fs.id, "//5 + "fssc.indicadorMultaInfracao "//6 + "FROM FiscalizacaoSituacaoServicoACobrar fssc " + "INNER JOIN fssc.fiscalizacaoSituacao fs " + "INNER JOIN fssc.debitoTipo dt " + "where fs.id = :idFiscalizacaoSituacao"; retornoConsulta = session.createQuery(consulta) .setInteger("idFiscalizacaoSituacao",idFiscalizacaoSituacao) .list(); collFiscalizacaoSituacaoSAC = new ArrayList(); if(retornoConsulta != null && !retornoConsulta.isEmpty()){ for(Object[] parmsFiscalizacao : retornoConsulta){ FiscalizacaoSituacaoServicoACobrar fiscalizacaoSituacaoServicoACobrar = new FiscalizacaoSituacaoServicoACobrar(); if(parmsFiscalizacao != null){ //consumo do calculo if (parmsFiscalizacao[0] != null) { fiscalizacaoSituacaoServicoACobrar.setConsumoCalculo((Short)parmsFiscalizacao[0]); } // indicador de multa de infra��o if (parmsFiscalizacao[6] != null) { fiscalizacaoSituacaoServicoACobrar.setIndicadorMultaInfracao((Short)parmsFiscalizacao[6]); } //id da situa��o do auto if (parmsFiscalizacao[5] != null) { FiscalizacaoSituacao fiscalizacaoSituacao = new FiscalizacaoSituacao(); fiscalizacaoSituacao.setId((Integer)parmsFiscalizacao[5]); // Inidicador atualiza��o autos infra��o if (parmsFiscalizacao[1] != null) { fiscalizacaoSituacao.setIndicadorAtualizacaoAutosInfracao((Short)parmsFiscalizacao[1]); fiscalizacaoSituacaoServicoACobrar.setFiscalizacaoSituacao(fiscalizacaoSituacao); } } //valor sugerido do d�bito tipo if (parmsFiscalizacao[4] != null) { DebitoTipo debitoTipo = new DebitoTipo(); debitoTipo.setId((Integer)parmsFiscalizacao[4]); if(parmsFiscalizacao[2] != null){ debitoTipo.setValorSugerido((BigDecimal)parmsFiscalizacao[2]); } fiscalizacaoSituacaoServicoACobrar.setDebitoTipo(debitoTipo); } //n�mero de vezes de c�lculo de valor if (parmsFiscalizacao[3] != null) { fiscalizacaoSituacaoServicoACobrar.setNumeroVezesServicoCalculadoValor((Short)parmsFiscalizacao[3]); } collFiscalizacaoSituacaoSAC.add(fiscalizacaoSituacaoServicoACobrar); } } } } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return collFiscalizacaoSituacaoSAC; } /** * [UC0996] Emitir Ordem de Fiscaliza��o para im�veis suprimidos * * @author Hugo Amorim * @date 08/03/2010 * @param idFuncionalidadeIniciada * @param usuarioLogado * @param setorComercial */ public Collection<Object[]> pesquisarImoveisBatchEmitirOrdemFiscalizacao( Integer idSetorComercial,Date data,Integer quantidadeInicio, Integer quantidadeMaxima) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String consulta; Collection<Object[]> retorno = null; try { consulta = "SELECT i.imov_id as imovel," +" iper_dsimovelperfil as perfil," +" i.loca_id as idLocalida," +" sc.stcm_id as idSetor," +" sc.stcm_cdsetorcomercial as codSetor," +" q.qdra_id as idQuadra," +" q.qdra_nnquadra as numeroQuadra," +" imov_nnlote as lote," +" imov_nnsublote as subLote," +" imov_tmultimaalteracao as ultimaAlteracao," +" last.last_id as ligacaoAguaSituacao," +" last.last_dsligacaoaguasituacao as desLigacaoAguaSituacao," +" lest.lest_id as ligacaoEsgotoSituacao," +" lest.lest_dsligacaoesgotosituacao as descLigacaoEsgotoSituacao," +" lagu.lagu_dtcorte as dataCorte," +" clie_nmcliente as nomeCliente," +" clie_nncpf as cpf," +" clie_nncnpj as cnpj," +" clie_nnrg as rg," +" cfon_nnfone as fone," +" cfon_nnfoneramal as ramal," +" fnet_dsfonetipo as foneTipo," +" lagu_dtsupressaoagua as dataSupressao," +" r.ftgr_id as faturamentoGrupo," +" lesg.lesg_nnconsumominimoesgoto as consumoMinimo" +" FROM cadastro.imovel i" +" INNER JOIN cadastro.setor_comercial sc on sc.stcm_id = i.stcm_id" +" INNER JOIN cadastro.quadra q on q.qdra_id = i.qdra_id" +" INNER JOIN micromedicao.rota r on r.rota_id = q.rota_id" +" INNER JOIN atendimentopublico.ligacao_agua lagu on lagu.lagu_id = i.imov_id" +" LEFT JOIN atendimentopublico.ligacao_esgoto lesg on lesg.lesg_id = i.imov_id" +" INNER JOIN atendimentopublico.ligacao_esgoto_situacao lest on lest.lest_id = i.lest_id" +" INNER JOIN cadastro.imovel_perfil ip on ip.iper_id = i.iper_id" +" INNER JOIN atendimentopublico.ligacao_agua_situacao last on last.last_id = i.last_id" +" INNER JOIN cadastro.cliente_imovel cliImov on cliImov.imov_id = i.imov_id" +" INNER JOIN cadastro.cliente cli on cli.clie_id = cliImov.clie_id" +" LEFT JOIN cadastro.cliente_fone cf on cf.clie_id = cli.clie_id AND cfon_icfonepadrao = :icFonePadrao" +" LEFT JOIN cadastro.fone_tipo ft on ft.fnet_id = cf.fnet_id" +" LEFT JOIN atendimentopublico.ordem_servico os on os.imov_id = i.imov_id and orse_cdsituacao = :osSituacao " +" AND os.svtp_id = (SELECT svtp_id FROM atendimentopublico.servico_tipo WHERE svtp_nncodigoconstante = :servicoTipoFisc ) " +" WHERE i.last_id in (:ligacoesAguaSituacao)" +" AND i.imov_icexclusao = :indicador" +" AND lagu_dtsupressaoagua < :data" +" AND cliImov.crtp_id = :clienteRelacaoTipo and clim_dtrelacaofim is null" +" AND i.imov_id not in " + "(SELECT imov_id FROM atendimentopublico.ordem_servico WHERE svtp_id = " + "(SELECT svtp_id FROM atendimentopublico.servico_tipo WHERE svtp_nncodigoconstante = :servicoTipoFisc ) " + "and orse_cdsituacao != :osSituacao ) " +" AND i.stcm_id = :idSetor" +" ORDER BY i.loca_id,sc.stcm_cdsetorcomercial,q.qdra_nnquadra,imov_nnlote,imov_nnsublote"; Collection ligacoesAguaSituacao =new ArrayList<Integer>(); ligacoesAguaSituacao.add(LigacaoAguaSituacao.SUPRIMIDO); ligacoesAguaSituacao.add(LigacaoAguaSituacao.SUPR_PARC); ligacoesAguaSituacao.add(LigacaoAguaSituacao.SUPR_PARC_PEDIDO); retorno = session.createSQLQuery(consulta) .addScalar("imovel", Hibernate.INTEGER) .addScalar("perfil", Hibernate.STRING) .addScalar("idLocalida", Hibernate.INTEGER) .addScalar("idSetor", Hibernate.INTEGER) .addScalar("codSetor", Hibernate.INTEGER) .addScalar("idQuadra", Hibernate.INTEGER) .addScalar("numeroQuadra", Hibernate.INTEGER) .addScalar("lote", Hibernate.SHORT) .addScalar("subLote", Hibernate.SHORT) .addScalar("ultimaAlteracao", Hibernate.TIMESTAMP) .addScalar("ligacaoAguaSituacao", Hibernate.INTEGER) .addScalar("desLigacaoAguaSituacao", Hibernate.STRING) .addScalar("ligacaoEsgotoSituacao", Hibernate.INTEGER) .addScalar("descLigacaoEsgotoSituacao", Hibernate.STRING) .addScalar("dataCorte", Hibernate.DATE) .addScalar("nomeCliente", Hibernate.STRING) .addScalar("cpf", Hibernate.STRING) .addScalar("cnpj", Hibernate.STRING) .addScalar("rg", Hibernate.STRING) .addScalar("fone", Hibernate.STRING) .addScalar("ramal", Hibernate.STRING) .addScalar("foneTipo", Hibernate.STRING) .addScalar("dataSupressao", Hibernate.DATE) .addScalar("faturamentoGrupo", Hibernate.INTEGER) .addScalar("consumoMinimo", Hibernate.INTEGER) .setParameterList("ligacoesAguaSituacao", ligacoesAguaSituacao) .setShort("osSituacao", OrdemServico.SITUACAO_ENCERRADO) .setInteger("servicoTipoFisc",ServicoTipo.TIPO_ORDEM_SERVICO_FISCALIZACAO) .setShort("indicador", ConstantesSistema.INDICADOR_USO_DESATIVO) .setShort("icFonePadrao", ConstantesSistema.SIM) .setDate("data", data) .setShort("clienteRelacaoTipo", ClienteRelacaoTipo.USUARIO) .setInteger("idSetor", idSetorComercial) .setFirstResult(quantidadeInicio).setMaxResults(quantidadeMaxima) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0996] Emitir Ordem de Fiscaliza��o para im�veis suprimidos * * Inseri objeto na base do tipo ImovelSuprimido * * @author Hugo Amorim * @date 08/03/2010 * @param idFuncionalidadeIniciada * @param usuarioLogado * @param setorComercial */ public void inserirImovelSuprimido(ImovelSuprimido imovelSuprimido)throws ErroRepositorioException{ Session session = HibernateUtil.getSession(); Connection con = null; Statement stmt = null; con = session.connection(); try { stmt = con.createStatement(); String insert = " INSERT INTO cadastro.imoveis_suprimidos(" +" imsu_id, orse_id, imsu_dstxtgerado, imsu_tmexecucao," +" imsu_tmultimaalteracao, loca_id, stcm_cdsetorcomercial, stcm_id," +" qdra_id, imsu_nnlote, imsu_nnsublote, qdra_nnquadra)" +" VALUES (nextval('cadastro.sequence_imoveis_suprimidos')" +" ,"+imovelSuprimido.getOrdemServico().getId() +" ,'"+imovelSuprimido.getLinhaTxt()+"'" +" ,'"+imovelSuprimido.getDataExecucao()+"'" +" , now()" +" ,"+imovelSuprimido.getIdLocalidade() +" ,"+imovelSuprimido.getCodigoSetorComercial() +" ,"+imovelSuprimido.getIdSetorComercial() +" ,"+imovelSuprimido.getIdQuadra() +" ,"+imovelSuprimido.getNumeroLote() +" ,"+imovelSuprimido.getNumeroSubLote() +" ,"+imovelSuprimido.getNumeroQuadra()+")"; stmt.executeUpdate(insert); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } catch (SQLException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0996] Emitir Ordem de Fiscaliza��o para im�veis suprimidos * * Pesquisas linhas do txt * * @author Hugo Amorim * @date 08/03/2010 * @param idFuncionalidadeIniciada * @param usuarioLogado * @param setorComercial */ public Collection<ImovelSuprimido> pesquisarDadosEmitirArquivoTextoDeOrdemFiscalizacao( Integer quantidadeInicio, Integer quantidadeMaxima) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); Collection retorno = null; String consulta; try { consulta = //"SELECT linhaTxt " "FROM ImovelSuprimido " + " ORDER BY idLocalidade,codigoSetorComercial,numeroQuadra,numeroLote,numeroSubLote "; retorno = session.createQuery(consulta).setFirstResult(quantidadeInicio).setMaxResults(quantidadeMaxima).list(); } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [SB0002] � Replicar os servi�os existentes para uma nova vig�ncia e valor. * Pesquisa a �ltima vig�ncia de cada tipo servi�o, e retorna uma cole��o. * * @author Josenildo Neves * @date 03/02/2010 */ public Collection<ServicoCobrancaValor> pesquisarServicoCobrancaValorUltimaVigencia(Integer numeroPagina) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "select " +"* " +"from atendimentopublico.servico_cobranca_valor scv, " +"(select " +"svtp_id as id, " +"max(scbv_dtvigenciafinal) as data " +"from atendimentopublico.servico_cobranca_valor " +"group by " +"svtp_id) sc " +"where " +"scv.svtp_id = id and " +"scv.scbv_dtvigenciafinal = sc.data"; retorno = session.createSQLQuery(consulta) .addScalar("scbv_id",Hibernate.INTEGER) .addScalar("svtp_id",Hibernate.INTEGER) .addScalar("iper_id",Hibernate.INTEGER) .addScalar("hicp_id",Hibernate.INTEGER) .addScalar("scbv_vlservico",Hibernate.BIG_DECIMAL) .addScalar("scbv_icmedido",Hibernate.SHORT) .addScalar("scbv_tmultimaalteracao",Hibernate.DATE) .addScalar("scat_id",Hibernate.INTEGER) .addScalar("scbv_dtvigenciainicial",Hibernate.DATE) .addScalar("scbv_dtvigenciafinal",Hibernate.DATE) .addScalar("scbv_qteconomiasinicial",Hibernate.INTEGER) .addScalar("scbv_qteconomiasfinal",Hibernate.INTEGER) .addScalar("scbv_icconsideraeconomias",Hibernate.SHORT) .addScalar("catg_id", Hibernate.INTEGER) .setFirstResult(10 * numeroPagina).setMaxResults(10).list(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** [SB0002] � Replicar os servi�os existentes para uma nova vig�ncia e valor. * Pesquisa a �ltima vig�ncia de cada tipo servi�o, e retorna o total. * * @author Josenildo Neves * @date 03/02/2010 */ public Integer pesquisarServicoCobrancaValorUltimaVigenciaTotal() throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "select " +"* " +"from atendimentopublico.servico_cobranca_valor scv, " +"(select " +"svtp_id as id, " +"max(scbv_dtvigenciafinal) as data " +"from atendimentopublico.servico_cobranca_valor " +"group by " +"svtp_id) sc " +"where " +"scv.svtp_id = id and " +"scv.scbv_dtvigenciafinal = sc.data"; retorno = session.createSQLQuery(consulta) .addScalar("scbv_id",Hibernate.INTEGER) .addScalar("svtp_id",Hibernate.INTEGER) .addScalar("iper_id",Hibernate.INTEGER) .addScalar("hicp_id",Hibernate.INTEGER) .addScalar("scbv_vlservico",Hibernate.DOUBLE) .addScalar("scbv_icmedido",Hibernate.SHORT) .addScalar("scbv_tmultimaalteracao",Hibernate.DATE) .addScalar("scbv_dtvigenciainicial",Hibernate.DATE) .addScalar("scbv_dtvigenciafinal",Hibernate.DATE) .addScalar("scat_id",Hibernate.INTEGER) .addScalar("scbv_qteconomiasinicial",Hibernate.INTEGER) .addScalar("scbv_qteconomiasfinal",Hibernate.INTEGER) .addScalar("scbv_icconsideraeconomias",Hibernate.SHORT) .list().size(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [SB0002] � Replicar os Valores de Cobran�a de Servi�o existentes para uma nova vig�ncia e valor. * Pesquisa a �ltima vig�ncia de cada tipo Cobran�a, e retorna uma cole��o. * * @author Hugo Leonardo * @date 14/04/2010 */ public Collection<ServicoCobrancaValor> replicarServicoCobrancaValorUltimaVigencia(String[] selecionados) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = " select * " + " from atendimentopublico.servico_cobranca_valor scv, " + " (select svtp_id as id, " + " max(scbv_dtvigenciafinal) as data " + " from atendimentopublico.servico_cobranca_valor " + " group by svtp_id) sc " + " where scv.svtp_id = id " + " and scv.scbv_dtvigenciafinal = sc.data " + " and scv.scbv_id in (:selecionados)"; retorno = session.createSQLQuery(consulta) .addScalar("scbv_id",Hibernate.INTEGER) .addScalar("svtp_id",Hibernate.INTEGER) .addScalar("iper_id",Hibernate.INTEGER) .addScalar("hicp_id",Hibernate.INTEGER) .addScalar("scbv_vlservico",Hibernate.BIG_DECIMAL) .addScalar("scbv_icmedido",Hibernate.SHORT) .addScalar("scbv_tmultimaalteracao",Hibernate.DATE) .addScalar("scat_id",Hibernate.INTEGER) .addScalar("scbv_dtvigenciainicial",Hibernate.DATE) .addScalar("scbv_dtvigenciafinal",Hibernate.DATE) .addScalar("scbv_qteconomiasinicial",Hibernate.INTEGER) .addScalar("scbv_qteconomiasfinal",Hibernate.INTEGER) .addScalar("scbv_icconsideraeconomias",Hibernate.SHORT) .setParameterList("selecionados",selecionados).list(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC0391] Inserir valor cobran�a Servi�o. * * Verificar se existe vig�ncia j� cadastrada para o Servi�o Tipo. * * @author Hugo Leonardo * @param dataVigenciaInicial * @param dataVigenciaFinal * @param idServicoTipo * @param opcao * @throws ErroRepositorioException * @data 03/05/2010 * * return String * * @see Caso a opcao = 1 - verifica as situa��es de inserir e atualizar Servi�o Tipo. * @see Caso a opcao = 2 - verifica a situa��o de retificar Servi�o Tipo. */ public String verificarExistenciaVigenciaServicoTipo(String dataVigenciaInicial, String dataVigenciaFinal, Integer idServicoTipo) throws ErroRepositorioException { String retorno = ""; Session session = HibernateUtil.getSession(); String consulta = ""; consulta +=" select svtp_id as cont " + " from atendimentopublico.servico_cobranca_valor " + " where ((scbv_dtvigenciainicial <= :dataInicial " + " or scbv_dtvigenciainicial <= :dataFinal) " + " and scbv_dtvigenciafinal >= :dataFinal ) " + " and svtp_id = :idServicoTipo"; try { retorno = (String) session.createSQLQuery(consulta) .addScalar("cont", Hibernate.STRING) .setInteger("idServicoTipo", idServicoTipo) .setDate("dataInicial", Util.converteStringParaDate(dataVigenciaInicial)) .setDate("dataFinal", Util.converteStringParaDate(dataVigenciaFinal)) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC0366] Inserir Registro de Atendimento * [SB0034] � Verificar RA de urg�ncia * * Verifica se o Registro de Atendimento tem o nivel selecionado como Urg�ncia * * @author Daniel Alves * @param ID do Registro de Atendimento * @throws ErroRepositorioException * @data 03/06/2010 * * */ public Integer verificarRegistroAtendimentoUrgencia(Integer idRegistroAtendimento) throws ErroRepositorioException { Integer retorno = 0; Session session = HibernateUtil.getSession(); String consulta = ""; consulta +="SELECT COUNT(*) AS contador " + "FROM gcom.atendimentopublico.registroatendimento.RegistroAtendimento ra " + "INNER JOIN ra.solicitacaoTipoEspecificacao step " + "WHERE ra.id = :registroAtendimento " + "AND step.indicadorUrgencia = 1"; try { retorno = (Integer) session.createQuery(consulta) .setInteger("registroAtendimento", idRegistroAtendimento) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC0366] Inserir Registro de Atendimento * [SB0034] � Verificar RA de urg�ncia * * Pesquisar os Usu�rios da Unidade relacionada a RA, na tabela "VisualizacaoRaUrgencia" * * @author Daniel Alves * @param ID do Registro de Atendimento * @throws ErroRepositorioException * @data 03/06/2010 * */ public Collection pesquisarUsuarioVisualizacaoRaUrgencia(Integer idRegistroAtendimento) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); Collection retorno = null; int quantidadeRA = verificarRegistroAtendimentoUrgencia(idRegistroAtendimento); if(quantidadeRA > 0){ String consulta = ""; consulta +="SELECT ra.id, usuario.id, 2, 2 " + "FROM gcom.atendimentopublico.registroatendimento.RegistroAtendimento ra " + "INNER JOIN ra.unidadeAtual unidade, " + "gcom.seguranca.acesso.usuario.Usuario usuario " + "WHERE usuario.unidadeOrganizacional.id = unidade.id " + "AND ra.id = :registroAtendimento "; try { retorno = (Collection) session.createQuery(consulta).setInteger("registroAtendimento", idRegistroAtendimento).list(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } } return retorno; } /** * [UC0503] Tramitar Conjunto Registro Atendimento * * [SB0004] � Verificar RA de urg�ncia * * Retorna um ou todos usu�rios da unidade relacionada a RA, * da tabela "VisualizacaoRaUrgencia" * * @author Daniel Alves * @param ID do Registro de Atendimento, ID da Unidade, ID do Usu�rio * @throws ErroRepositorioException * @data 04/06/2010 * */ public Collection pesquisarVisualizacaoRaUrgencia(Integer idRegistroAtendimento, Integer idUnidade, Integer idUsuario) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); Collection retorno = null; //valor padr�o, usado para entrar no if quando nao houver RA informada int quantidadeRA = 1; if(idRegistroAtendimento != null){ quantidadeRA = verificarRegistroAtendimentoUrgencia(idRegistroAtendimento); } if(quantidadeRA > 0){ String consulta = ""; consulta +="SELECT vrau.registroAtendimento.id, vrau.usuario.id, 2, 2, vrau.id " + "FROM gcom.atendimentopublico.registroatendimento.VisualizacaoRegistroAtendimentoUrgencia vrau " + "INNER JOIN vrau.usuario usuario "; if(idRegistroAtendimento != null){ consulta += "WHERE vrau.registroAtendimento.id = "+idRegistroAtendimento+" "; }else{ consulta += "WHERE "; } if(idUnidade != null){ consulta +="usuario.unidadeOrganizacional.id = "+ idUnidade +" AND "; }else if(idUsuario != null){ consulta += "usuario.id = "+ idUsuario +" AND "; } //remove o �ltimo AND consulta = Util.removerUltimosCaracteres(consulta, 4); try { retorno = (Collection) session.createQuery(consulta).list(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } } return retorno; } /** * [UC0503] Tramitar Conjunto Registro Atendimento * * [SB0004] � Verificar RA de urg�ncia * * Verifica se o Registro de Atendimento j� est� relacionado a uma Unidade informada. * * @author Daniel Alves * @param ID do Registro de Atendimento * @throws ErroRepositorioException * @data 05/06/2010 * */ public Integer verificarUsuariosRegistroAtendimentoUrgencia(Integer idRegistroAtendimento, Integer idUnidade) throws ErroRepositorioException { Integer retorno = 0; Session session = HibernateUtil.getSession(); String consulta = ""; consulta +="SELECT COUNT(*) as contador " + "FROM gcom.atendimentopublico.registroatendimento.VisualizacaoRegistroAtendimentoUrgencia vrau " + "INNER JOIN vrau.usuario usuario " + "WHERE vrau.registroAtendimento.id = :registroAtendimento " + "AND usuario.unidadeOrganizacional.id = "+ idUnidade +" "; try { retorno = (Integer) session.createQuery(consulta) .setInteger("registroAtendimento", idRegistroAtendimento) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * [UC1028] Exibir Registro Atendimento Urg�ncia * * Verifica se o Usuario possui algum Registro de Atendimento urgente. * * @author Daniel Alves * @param ID do Registro de Atendimento * @throws ErroRepositorioException * @data 07/06/2010 * */ public Collection verificarUsuarioRegistroAtendimentoUrgencia(Integer idUsuario) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; consulta +="SELECT DISTINCT(vrau.indicadorReiteracao) as indicador " + "FROM gcom.atendimentopublico.registroatendimento.VisualizacaoRegistroAtendimentoUrgencia vrau " + "INNER JOIN vrau.registroAtendimento rgat " + "WHERE vrau.usuario.id = :idUsuario " + "AND vrau.indicadorTramite = 2 " + "AND vrau.indicadorVisualizacao = 2 " ; // "AND rgat.parecerEncerramento is null " + // "AND rgat.dataEncerramento is null "; // consulta +="SELECT COUNT(*) as contador " + // "FROM gcom.atendimentopublico.registroatendimento.VisualizacaoRegistroAtendimentoUrgencia vrau " + // "WHERE vrau.usuario.id = :idUsuario " + // "AND vrau.indicadorTramite = 2 " + // "AND vrau.indicadorVisualizacao = 2 "; try { retorno = (Collection) session.createQuery(consulta) .setInteger("idUsuario", idUsuario) .list(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * Atualiza um ou v�rios campos da tabela "VisualizacaoRaUrgencia" * * @author Daniel Alves * @param ID do Registro de Atendimento, ID da Unidade, ID do Usu�rio, indicador Tramite e indicador Visualizacao * @throws ErroRepositorioException * @data 10/06/2010 * */ public void atualizarUsuarioRegistroAtendimentoUrgencia(Integer idRegistroAtendimento, String idUsuarios, Integer idUsuario, Integer indicadorTramite, Integer indicadorVisualizacao) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String update; try { update = "UPDATE gcom.atendimentopublico.registroatendimento.VisualizacaoRegistroAtendimentoUrgencia vrau set "; if(indicadorTramite != null){ update += "vrau.indicadorTramite = "+indicadorTramite+", "; } if(indicadorVisualizacao != null){ update += "vrau.indicadorVisualizacao = "+indicadorVisualizacao+", "; } update += "vrau.ultimaAlteracao = :ultimaAlteracao " + "WHERE "; if(idRegistroAtendimento != null){ update += "vrau.registroAtendimento.id = "+idRegistroAtendimento+" AND "; } if(idUsuario != null){ update += "vrau.usuario.id = "+idUsuario+" AND "; } if(idUsuarios != null){ update += "vrau.usuario.id IN( "+idUsuarios+" ) AND " ; } update = Util.removerUltimosCaracteres(update, 4); session.createQuery(update) .setDate("ultimaAlteracao", new Date()) .executeUpdate(); } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); // session.close(); } } /** * * * @author Arthur Carvalho * @date 19/06/2010 * @param obterValorDebitoHelper * @return o valor do d�bito * @throws ErroRepositorioException */ public BigDecimal obterValorDebitoHidrometroCapacidade(ObterValorDebitoHelper params) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String consulta; BigDecimal retornoConsulta = null; Query query = null; try { consulta = "SELECT scv.valor " + "FROM ServicoCobrancaValor scv " + "where scv.servicoTipo.id = :servicoTipoId " + "and scv.imovelPerfil.id = :imovelPerfilId " + "and scv.dataVigenciaInicial <= :dataAtual " + "and scv.dataVigenciaFinal >= :dataAtual "; if (params.getSituacaoMedicao() != null) { consulta += "and scv.indicadorMedido = :situacaoMedicao "; } if (params.getHidrometroCapacidade() != null) { consulta += "and scv.hidrometroCapacidade.id = :hidrometroCapacidadeId "; } consulta +=" ORDER BY scv.dataVigenciaFinal DESC "; query = session.createQuery(consulta) .setInteger("imovelPerfilId", params.getImovelPerfil().getId()) .setInteger("servicoTipoId", params.getServicoTipo().getId()) .setDate("dataAtual", new Date()); if (params.getSituacaoMedicao() != null) { query.setShort("situacaoMedicao", params.getSituacaoMedicao()); } if (params.getHidrometroCapacidade() != null) { query.setInteger("hidrometroCapacidadeId", params .getHidrometroCapacidade().getId()); } retornoConsulta = (BigDecimal) query.setMaxResults(1).uniqueResult(); if(retornoConsulta==null){ consulta = "SELECT scv.valor " + "FROM ServicoCobrancaValor scv " + "where scv.servicoTipo.id = :servicoTipoId " + "and scv.imovelPerfil.id = :imovelPerfilId " + "and scv.dataVigenciaInicial <= :dataAtual " + "and scv.dataVigenciaFinal >= :dataAtual "; if (params.getSituacaoMedicao() != null) { consulta += "and scv.indicadorMedido = :situacaoMedicao "; } consulta +=" ORDER BY scv.dataVigenciaFinal DESC "; query = session.createQuery(consulta) .setInteger("imovelPerfilId", params.getImovelPerfil().getId()) .setInteger("servicoTipoId", params.getServicoTipo().getId()) .setDate("dataAtual", new Date()); if (params.getSituacaoMedicao() != null) { query.setShort("situacaoMedicao", params.getSituacaoMedicao()); } retornoConsulta = (BigDecimal) query.setMaxResults(1).uniqueResult(); if(retornoConsulta==null){ consulta = "SELECT scv.valor " + "FROM ServicoCobrancaValor scv " + "where scv.servicoTipo.id = :servicoTipoId " + "and scv.dataVigenciaInicial <= :dataAtual " + "and scv.dataVigenciaFinal >= :dataAtual "; if (params.getSituacaoMedicao() != null) { consulta += "and scv.indicadorMedido = :situacaoMedicao "; } if (params.getHidrometroCapacidade() != null) { consulta += "and scv.hidrometroCapacidade.id = :hidrometroCapacidadeId "; } consulta +=" ORDER BY scv.dataVigenciaFinal DESC "; query = session.createQuery(consulta) .setInteger("servicoTipoId", params.getServicoTipo().getId()) .setDate("dataAtual", new Date()); if (params.getSituacaoMedicao() != null) { query.setShort("situacaoMedicao", params.getSituacaoMedicao()); } if (params.getHidrometroCapacidade() != null) { query.setInteger("hidrometroCapacidadeId", params .getHidrometroCapacidade().getId()); } retornoConsulta = (BigDecimal) query.setMaxResults(1).uniqueResult(); if(retornoConsulta == null) { consulta = "SELECT st.valor " + "FROM ServicoTipo st " + "where st.id = :servicoTipoId "; retornoConsulta = (BigDecimal) session .createQuery(consulta).setInteger("servicoTipoId", params.getServicoTipo().getId()) .setMaxResults(1).uniqueResult(); } } } } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retornoConsulta; } /** * [UC0251] Gerar Atividade de A��o de Cobran�a * * @author Hugo Amorim * @date 15/07/2010 */ public Collection<CobrancaAcaoAtividadeComandoFiscalizacaoSituacao> pesquisarCobrancaAcaoAtividadeComandoFiscalizacaoSituacao( Integer idComando, Collection idsSituacos)throws ErroRepositorioException { Session session = HibernateUtil.getSession(); Collection retorno = null; String consulta; try { consulta = "FROM CobrancaAcaoAtividadeComandoFiscalizacaoSituacao" + " INNER JOIN FETCH cobAcaoFisc.fiscalizacaoSituacao fiscSit" + " WHERE cobrancaAcaoAtividadeComando.id = :idComando" + " AND fiscSit.id in ( :idsSituacos )"; retorno = session.createQuery(consulta) .setInteger("idComando", idComando) .setParameterList("idsSituacos", idsSituacos) .list(); } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC1056] Gerar Relat�rio de Acompanhamento dos Registros de Atendimento * * @author Hugo Leonardo, Diogo Peixoto * @date 28/09/2010, 26/04/2011 * * @param FiltrarAcompanhamentoRegistroAtendimentoHelper * @return Collection * @throws ErroRepositorioException */ public Collection pesquisarRelatorioAcompanhamentoRAAnalitico( FiltrarAcompanhamentoRegistroAtendimentoHelper helper) throws ErroRepositorioException{ Collection retorno = null; String consulta = ""; Query query = null; Session session = HibernateUtil.getSession(); String groupByMunicipio = ""; String orderBy = " rau.unidadeOrganizacional "; if(!Util.isVazioOrNulo(helper.getMunicipiosAssociados())){ groupByMunicipio = " GROUP BY munRA.nome, munRA.id, rau.unidadeOrganizacional.id, step.descricao, ra.registroAtendimento, " + " ra.dataEncerramento, ra.dataEncerramento, ame.descricao, rau.unidadeOrganizacional.descricao, ame.id, ra.id "; orderBy = " munRA.nome "; } try { consulta += this.montarSelectRelatorioAcompanhamentoAnalitico(helper) + this.montarFromRelatorioAcompanhamentoAnalitico(helper) + " where ra.unidadeAtual = uni.id and "; if(Util.verificarNaoVazio( helper.getIdUnidadeAtendimento()) ){ consulta += " rau.unidadeOrganizacional = :unidade and " + " rau.atendimentoRelacaoTipo = 1 and "; } if(!Util.isVazioOrNulo(helper.getMunicipiosAssociados())){ consulta += " (munRA.id IN (:municipios) or munImo.id IN (:municipios)) and "; } if(!Util.isVazioOrNulo(helper.getIdsMotivoEncerramentoSelecionados()) ){ consulta += " ame.id in (:motivo) and "; } if(helper.getPeriodoAtendimentoInicial() != null && helper.getPeriodoAtendimentoFinal() != null ){ consulta += " (ra.registroAtendimento between :dtAtendimentoIncial and :dtAtendimentoFinal) and "; } if(helper.getPeriodoEncerramentoInicial() != null && helper.getPeriodoEncerramentoFinal() != null ){ consulta += " (ra.dataEncerramento between :dtEncerramentoIncial and :dtEncerramentoFinal) and "; } if(Util.verificarNaoVazio(helper.getSituacaoRA()) ){ consulta += " ra.codigoSituacao = :situacao and "; } if(Util.verificarNaoVazio(helper.getSituacaoRA()) && helper.getSituacaoRA().equals("0") && Util.verificarNaoVazio(helper.getSituacaoRAAbertos()) && helper.getSituacaoRAAbertos().equals("1")){ consulta += " (ra.dataPrevistaAtual >= :dtCorrente " + " or ra.dataPrevistaOriginal >= :dtCorrente) and "; }else if (Util.verificarNaoVazio(helper.getSituacaoRA()) && helper.getSituacaoRA().equals("0") && Util.verificarNaoVazio(helper.getSituacaoRAAbertos()) && helper.getSituacaoRAAbertos().equals("0")){ consulta += " (ra.dataPrevistaAtual < :dtCorrente " + " or ra.dataPrevistaOriginal < :dtCorrente) and "; } // remove o �ltimo AND consulta = Util.removerUltimosCaracteres(consulta, 4); consulta += groupByMunicipio; consulta += " ORDER BY " + orderBy; query = (Query) session.createQuery(consulta); if(Util.verificarNaoVazio( helper.getIdUnidadeAtendimento()) ){ query.setString("unidade", helper.getIdUnidadeAtendimento().toString()); } if(!Util.isVazioOrNulo(helper.getMunicipiosAssociados())){ query.setParameterList("municipios", helper.getMunicipiosAssociados()); } if(!Util.isVazioOrNulo(helper.getIdsMotivoEncerramentoSelecionados()) ){ query.setParameterList("motivo", helper.getIdsMotivoEncerramentoSelecionados()); } if(helper.getPeriodoAtendimentoInicial() != null && helper.getPeriodoAtendimentoFinal() != null ){ query.setDate("dtAtendimentoIncial", Util.formatarDataInicial(helper.getPeriodoAtendimentoInicial())); query.setDate("dtAtendimentoFinal", Util.formatarDataFinal(helper.getPeriodoAtendimentoFinal())); } if(helper.getPeriodoEncerramentoInicial() != null && helper.getPeriodoEncerramentoFinal() != null ){ query.setDate("dtEncerramentoIncial", Util.formatarDataInicial(helper.getPeriodoEncerramentoInicial())); query.setDate("dtEncerramentoFinal", Util.formatarDataFinal(helper.getPeriodoEncerramentoFinal())); } if(Util.verificarNaoVazio(helper.getSituacaoRA()) && helper.getSituacaoRA().equals("0") && Util.verificarNaoVazio(helper.getSituacaoRAAbertos()) && (helper.getSituacaoRAAbertos().equals("0") || helper.getSituacaoRAAbertos().equals("1"))){ query.setDate("dtCorrente", new Date()); } if(Util.verificarNaoVazio(helper.getSituacaoRA()) && helper.getSituacaoRA().equals("0")){ query.setShort("situacao", RegistroAtendimento.SITUACAO_PENDENTE); }else if(Util.verificarNaoVazio(helper.getSituacaoRA()) && helper.getSituacaoRA().equals("1")){ query.setShort("situacao", RegistroAtendimento.SITUACAO_ENCERRADO); } retorno = query.list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC1056] Gerar Relat�rio de Acompanhamento dos Registros de Atendimento * M�todo auxiliar para gerar o select HQL do relat�rio em quest�o * @author Diogo Peixoto * @date 28/04/2011 * * @param FiltrarAcompanhamentoRegistroAtendimentoHelper * @return String * @throws ErroRepositorioException */ private String montarSelectRelatorioAcompanhamentoAnalitico(FiltrarAcompanhamentoRegistroAtendimentoHelper helper){ StringBuilder sb = new StringBuilder(); sb.append(" SELECT DISTINCT (ra.id), "); sb.append(" rau.unidadeOrganizacional.id, "); sb.append(" step.descricao, "); sb.append(" ra.registroAtendimento, "); sb.append(" ra.dataEncerramento, "); sb.append(" ame.descricao, "); sb.append(" rau.unidadeOrganizacional.descricao, "); sb.append(" ame.id "); if(!Util.isVazioOrNulo(helper.getMunicipiosAssociados())){ sb.append(", munRA.nome "); sb.append(", munRA.id "); } return sb.toString(); } /** * [UC1056] Gerar Relat�rio de Acompanhamento dos Registros de Atendimento * M�todo auxiliar para gerar o select HQL do relat�rio em quest�o * @author Diogo Peixoto * @date 28/04/2011 * * @param FiltrarAcompanhamentoRegistroAtendimentoHelper * @return String * @throws ErroRepositorioException */ private String montarFromRelatorioAcompanhamentoAnalitico(FiltrarAcompanhamentoRegistroAtendimentoHelper helper){ StringBuilder sb = new StringBuilder(); sb.append(" from gcom.atendimentopublico.registroatendimento.RegistroAtendimento ra "); sb.append(" inner join ra.solicitacaoTipoEspecificacao step "); sb.append(" left join ra.atendimentoMotivoEncerramento ame "); sb.append(" inner join ra.registroAtendimentoUnidades rau "); sb.append(" inner join rau.unidadeOrganizacional uni "); sb.append(" left join ra.imovel imov "); sb.append(" left join imov.localidade locImo "); sb.append(" left join locImo.municipio munImo "); if(!Util.isVazioOrNulo(helper.getMunicipiosAssociados())){ sb.append(" inner join ra.localidade locRA "); sb.append(" inner join locRA.municipio munRA "); }else{ sb.append(" left join ra.localidade locRA "); sb.append(" left join locRA.municipio munRA "); } return sb.toString(); } /** * [UC1056] Gerar Relat�rio de Acompanhamento dos Registros de Atendimento * * @author Hugo Leonardo, Diogo Peixoto * @date 30/09/2010, 26/04/2011 * * @param FiltrarAcompanhamentoRegistroAtendimentoHelper * @return Integer * @throws ErroRepositorioException */ public Integer countPesquisarRelatorioAcompanhamentoRAAnalitico( FiltrarAcompanhamentoRegistroAtendimentoHelper helper) throws ErroRepositorioException{ Integer retorno = 0; String consulta = ""; Query query = null; Session session = HibernateUtil.getSession(); try { consulta += " select count(distinct ra.id) " //0 + " from gcom.atendimentopublico.registroatendimento.RegistroAtendimento ra " + " inner join ra.solicitacaoTipoEspecificacao step " + " left join ra.atendimentoMotivoEncerramento ame "; consulta += " inner join ra.registroAtendimentoUnidades rau " + " inner join rau.unidadeOrganizacional uni " + " left join ra.localidade locRA " + " left join locRA.municipio munRA " + " left join ra.imovel imov " + " left join imov.localidade locImo " + " left join locImo.municipio munImo " + " where ra.unidadeAtual = uni.id and "; if(Util.verificarNaoVazio( helper.getIdUnidadeAtendimento()) ){ consulta += " rau.unidadeOrganizacional = :unidade and " + " rau.atendimentoRelacaoTipo = 1 and "; } if(!Util.isVazioOrNulo(helper.getMunicipiosAssociados())){ consulta += " (munRA.id IN (:municipios) or munImo.id IN (:municipios)) and "; } if(!Util.isVazioOrNulo(helper.getIdsMotivoEncerramentoSelecionados()) ){ consulta += " ame.id in (:motivo) and "; } if(helper.getPeriodoAtendimentoInicial() != null && helper.getPeriodoAtendimentoFinal() != null ){ consulta += " (ra.registroAtendimento between :dtAtendimentoIncial and :dtAtendimentoFinal) and "; } if(helper.getPeriodoEncerramentoInicial() != null && helper.getPeriodoEncerramentoFinal() != null ){ consulta += " (ra.dataEncerramento between :dtEncerramentoIncial and :dtEncerramentoFinal) and "; } if(Util.verificarNaoVazio(helper.getSituacaoRA()) ){ consulta += " ra.codigoSituacao = :situacao and "; } if(Util.verificarNaoVazio(helper.getSituacaoRA()) && helper.getSituacaoRA().equals("0") && Util.verificarNaoVazio(helper.getSituacaoRAAbertos()) && helper.getSituacaoRAAbertos().equals("1")){ consulta += " (ra.dataPrevistaAtual >= :dtCorrente " + " or ra.dataPrevistaOriginal >= :dtCorrente) and "; }else if (Util.verificarNaoVazio(helper.getSituacaoRA()) && helper.getSituacaoRA().equals("0") && Util.verificarNaoVazio(helper.getSituacaoRAAbertos()) && helper.getSituacaoRAAbertos().equals("0")){ consulta += " (ra.dataPrevistaAtual < :dtCorrente " + " or ra.dataPrevistaOriginal < :dtCorrente) and "; } // remove o �ltimo AND consulta = Util.removerUltimosCaracteres(consulta, 4); query = (Query) session.createQuery(consulta); if(Util.verificarNaoVazio( helper.getIdUnidadeAtendimento()) ){ query.setString("unidade", helper.getIdUnidadeAtendimento().toString()); } if(!Util.isVazioOrNulo(helper.getMunicipiosAssociados())){ query.setParameterList("municipios", helper.getMunicipiosAssociados()); } if(!Util.isVazioOrNulo(helper.getIdsMotivoEncerramentoSelecionados()) ){ query.setParameterList("motivo", helper.getIdsMotivoEncerramentoSelecionados()); } if(helper.getPeriodoAtendimentoInicial() != null && helper.getPeriodoAtendimentoFinal() != null ){ query.setDate("dtAtendimentoIncial", Util.formatarDataInicial(helper.getPeriodoAtendimentoInicial())); query.setDate("dtAtendimentoFinal", Util.formatarDataFinal(helper.getPeriodoAtendimentoFinal())); } if(helper.getPeriodoEncerramentoInicial() != null && helper.getPeriodoEncerramentoFinal() != null ){ query.setDate("dtEncerramentoIncial", Util.formatarDataInicial(helper.getPeriodoEncerramentoInicial())); query.setDate("dtEncerramentoFinal", Util.formatarDataFinal(helper.getPeriodoEncerramentoFinal())); } if(Util.verificarNaoVazio(helper.getSituacaoRA()) && helper.getSituacaoRA().equals("0") && Util.verificarNaoVazio(helper.getSituacaoRAAbertos()) && (helper.getSituacaoRAAbertos().equals("0") || helper.getSituacaoRAAbertos().equals("1"))){ query.setDate("dtCorrente", new Date()); } if(Util.verificarNaoVazio(helper.getSituacaoRA()) && helper.getSituacaoRA().equals("0")){ query.setShort("situacao", RegistroAtendimento.SITUACAO_PENDENTE); }else if(Util.verificarNaoVazio(helper.getSituacaoRA()) && helper.getSituacaoRA().equals("1")){ query.setShort("situacao", RegistroAtendimento.SITUACAO_ENCERRADO); } retorno = (Integer) query.setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC1056] Gerar Relat�rio de Acompanhamento dos Registros de Atendimento * * @author Hugo Leonardo, Diogo Peixoto * @date 01/10/2010, 28/04/2011 * * @param FiltrarAcompanhamentoRegistroAtendimentoHelper * @return Collection * @throws ErroRepositorioException */ public Collection pesquisarRelatorioAcompanhamentoRASinteticoAberto( FiltrarAcompanhamentoRegistroAtendimentoHelper helper) throws ErroRepositorioException{ Collection retorno = null; String consulta = ""; Query query = null; Session session = HibernateUtil.getSession(); String joinMunicipio = ""; if(!Util.isVazioOrNulo(helper.getMunicipiosAssociados()) && (helper.getIdUnidadeAtendimento() == null || helper.getIdUnidadeAtendimento().equals(""))){ consulta += " select rau.unidadeOrganizacional.descricao, " + " muni.nome, " + " count(distinct ra.id) " + " from gcom.atendimentopublico.registroatendimento.RegistroAtendimento ra " + " inner join ra.solicitacaoTipoEspecificacao step " + " left join ra.atendimentoMotivoEncerramento ame "; consulta += " inner join ra.localidade loc " + " inner join loc.municipio muni "; }else{ consulta += " select rau.unidadeOrganizacional.descricao, "; if(!Util.isVazioOrNulo(helper.getMunicipiosAssociados())){ consulta += " muni.nome, "; joinMunicipio = " inner join ra.localidade loc " + " inner join loc.municipio muni "; } consulta += " count(distinct ra.id) " + " from gcom.atendimentopublico.registroatendimento.RegistroAtendimento ra " + " inner join ra.solicitacaoTipoEspecificacao step " + " left join ra.atendimentoMotivoEncerramento ame "; } consulta += joinMunicipio + " inner join ra.registroAtendimentoUnidades rau " + " inner join rau.unidadeOrganizacional uni " + " where ra.unidadeAtual = uni.id and "; try { if(Util.verificarNaoVazio( helper.getIdUnidadeAtendimento()) ){ consulta += " rau.unidadeOrganizacional = :unidade and " + " rau.atendimentoRelacaoTipo = 1 and "; } if(!Util.isVazioOrNulo(helper.getIdsMotivoEncerramentoSelecionados()) ){ consulta += " ame.id in (:motivo) and "; } if(!Util.isVazioOrNulo(helper.getMunicipiosAssociados()) ){ consulta += " muni.id in (:municipios) and "; } if(helper.getPeriodoAtendimentoInicial() != null && helper.getPeriodoAtendimentoFinal() != null ){ consulta += " (ra.registroAtendimento between :dtAtendimentoIncial and :dtAtendimentoFinal) and "; } if(helper.getPeriodoEncerramentoInicial() != null && helper.getPeriodoEncerramentoFinal() != null ){ consulta += " (ra.dataEncerramento between :dtEncerramentoIncial and :dtEncerramentoFinal) and "; } if(Util.verificarNaoVazio(helper.getSituacaoRA()) ){ consulta += " ra.codigoSituacao = :situacao and "; } if(Util.verificarNaoVazio(helper.getSituacaoRA()) && helper.getSituacaoRA().equals("0") && Util.verificarNaoVazio(helper.getSituacaoRAAbertos()) && helper.getSituacaoRAAbertos().equals("1")){ consulta += " (ra.dataPrevistaAtual >= :dtCorrente " + " or ra.dataPrevistaOriginal >= :dtCorrente) and "; }else if (Util.verificarNaoVazio(helper.getSituacaoRA()) && helper.getSituacaoRA().equals("0") && Util.verificarNaoVazio(helper.getSituacaoRAAbertos()) && helper.getSituacaoRAAbertos().equals("0")){ consulta += " (ra.dataPrevistaAtual < :dtCorrente " + " or ra.dataPrevistaOriginal < :dtCorrente) and "; } // remove o �ltimo AND consulta = Util.removerUltimosCaracteres(consulta, 4); if(!Util.isVazioOrNulo(helper.getMunicipiosAssociados()) && (helper.getIdUnidadeAtendimento() == null || helper.getIdUnidadeAtendimento().equals(""))){ consulta += " GROUP BY muni.nome, rau.unidadeOrganizacional.descricao " + " ORDER BY muni.nome, rau.unidadeOrganizacional.descricao "; }else{ String groupBy = " GROUP BY "; String orderBy = " ORDER BY "; if(!Util.isVazioOrNulo(helper.getMunicipiosAssociados())){ groupBy += " muni.nome, "; orderBy += " muni.nome, "; } groupBy += " rau.unidadeOrganizacional.descricao "; orderBy += " rau.unidadeOrganizacional.descricao "; consulta += groupBy + orderBy; } query = (Query) session.createQuery(consulta); if(Util.verificarNaoVazio( helper.getIdUnidadeAtendimento()) ){ query.setString("unidade", helper.getIdUnidadeAtendimento().toString()); } if(!Util.isVazioOrNulo(helper.getIdsMotivoEncerramentoSelecionados()) ){ query.setParameterList("motivo", helper.getIdsMotivoEncerramentoSelecionados()); } if(!Util.isVazioOrNulo(helper.getMunicipiosAssociados()) ){ query.setParameterList("municipios", helper.getMunicipiosAssociados()); } if(helper.getPeriodoAtendimentoInicial() != null && helper.getPeriodoAtendimentoFinal() != null ){ query.setDate("dtAtendimentoIncial", Util.formatarDataInicial(helper.getPeriodoAtendimentoInicial())); query.setDate("dtAtendimentoFinal", Util.formatarDataFinal(helper.getPeriodoAtendimentoFinal())); } if(helper.getPeriodoEncerramentoInicial() != null && helper.getPeriodoEncerramentoFinal() != null ){ query.setDate("dtEncerramentoIncial", Util.formatarDataInicial(helper.getPeriodoEncerramentoInicial())); query.setDate("dtEncerramentoFinal", Util.formatarDataFinal(helper.getPeriodoEncerramentoFinal())); } if(Util.verificarNaoVazio(helper.getSituacaoRA()) && helper.getSituacaoRA().equals("0") && Util.verificarNaoVazio(helper.getSituacaoRAAbertos()) && (helper.getSituacaoRAAbertos().equals("0") || helper.getSituacaoRAAbertos().equals("1"))){ query.setDate("dtCorrente", new Date()); } if(Util.verificarNaoVazio(helper.getSituacaoRA()) && helper.getSituacaoRA().equals("0")){ query.setShort("situacao", RegistroAtendimento.SITUACAO_PENDENTE); }else if(Util.verificarNaoVazio(helper.getSituacaoRA()) && helper.getSituacaoRA().equals("1")){ query.setShort("situacao", RegistroAtendimento.SITUACAO_ENCERRADO); } retorno = query.list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC1056] Gerar Relat�rio de Acompanhamento dos Registros de Atendimento * * @author Hugo Leonardo, Diogo Peixoto * @date 01/10/2010, 28/04/2011 * * @param FiltrarAcompanhamentoRegistroAtendimentoHelper * @return Collection * @throws ErroRepositorioException */ public Collection pesquisarRelatorioAcompanhamentoRASinteticoEncerrado( FiltrarAcompanhamentoRegistroAtendimentoHelper helper) throws ErroRepositorioException{ Collection retorno = null; String consulta = ""; Query query = null; Session session = HibernateUtil.getSession(); String selectMunicipio = ""; String joinMunicipio = ""; if(!Util.isVazioOrNulo(helper.getMunicipiosAssociados())){ selectMunicipio = ", muni.nome"; joinMunicipio = " inner join ra.localidade loc inner join loc.municipio muni "; } try { consulta += " select rau.unidadeOrganizacional.descricao, ame.descricao, " + " count(distinct ra.id) " + selectMunicipio + " from gcom.atendimentopublico.registroatendimento.RegistroAtendimento ra " + " inner join ra.solicitacaoTipoEspecificacao step " + " left join ra.atendimentoMotivoEncerramento ame "; consulta += " inner join ra.registroAtendimentoUnidades rau " + " inner join rau.unidadeOrganizacional uni " + joinMunicipio + " where ra.unidadeAtual = uni.id and "; if(Util.verificarNaoVazio( helper.getIdUnidadeAtendimento()) ){ consulta += " rau.unidadeOrganizacional = :unidade and " + " rau.atendimentoRelacaoTipo = 1 and "; } if(!Util.isVazioOrNulo(helper.getIdsMotivoEncerramentoSelecionados()) ){ consulta += " ame.id in (:motivo) and "; } if(!Util.isVazioOrNulo(helper.getMunicipiosAssociados())){ consulta += " muni.id in (:municipios) and "; } if(helper.getPeriodoAtendimentoInicial() != null && helper.getPeriodoAtendimentoFinal() != null ){ consulta += " (ra.registroAtendimento between :dtAtendimentoIncial and :dtAtendimentoFinal) and "; } if(helper.getPeriodoEncerramentoInicial() != null && helper.getPeriodoEncerramentoFinal() != null ){ consulta += " (ra.dataEncerramento between :dtEncerramentoIncial and :dtEncerramentoFinal) and "; } if(Util.verificarNaoVazio(helper.getSituacaoRA()) ){ consulta += " ra.codigoSituacao = :situacao and "; } if(Util.verificarNaoVazio(helper.getSituacaoRA()) && helper.getSituacaoRA().equals("0") && Util.verificarNaoVazio(helper.getSituacaoRAAbertos()) && helper.getSituacaoRAAbertos().equals("1")){ consulta += " (ra.dataPrevistaAtual >= :dtCorrente " + " or ra.dataPrevistaOriginal >= :dtCorrente) and "; }else if (Util.verificarNaoVazio(helper.getSituacaoRA()) && helper.getSituacaoRA().equals("0") && Util.verificarNaoVazio(helper.getSituacaoRAAbertos()) && helper.getSituacaoRAAbertos().equals("0")){ consulta += " (ra.dataPrevistaAtual < :dtCorrente " + " or ra.dataPrevistaOriginal < :dtCorrente) and "; } // remove o �ltimo AND consulta = Util.removerUltimosCaracteres(consulta, 4); if(!Util.isVazioOrNulo(helper.getMunicipiosAssociados()) && (helper.getIdUnidadeAtendimento() == null || helper.getIdUnidadeAtendimento().equals(""))){ consulta += " GROUP BY muni.nome, rau.unidadeOrganizacional.descricao, ame.descricao " + " ORDER BY muni.nome, rau.unidadeOrganizacional.descricao, ame.descricao "; }else{ String groupBy = " GROUP BY "; String orderBy = " ORDER BY "; if(!Util.isVazioOrNulo(helper.getMunicipiosAssociados())){ groupBy += " muni.nome, "; orderBy += " muni.nome, "; } groupBy += " rau.unidadeOrganizacional.descricao, ame.descricao "; orderBy += " rau.unidadeOrganizacional.descricao, ame.descricao "; consulta += groupBy + orderBy; } query = (Query) session.createQuery(consulta); if(Util.verificarNaoVazio( helper.getIdUnidadeAtendimento()) ){ query.setString("unidade", helper.getIdUnidadeAtendimento().toString()); } if(!Util.isVazioOrNulo(helper.getIdsMotivoEncerramentoSelecionados()) ){ query.setParameterList("motivo", helper.getIdsMotivoEncerramentoSelecionados()); } if(!Util.isVazioOrNulo(helper.getMunicipiosAssociados()) ){ query.setParameterList("municipios", helper.getMunicipiosAssociados()); } if(helper.getPeriodoAtendimentoInicial() != null && helper.getPeriodoAtendimentoFinal() != null ){ query.setDate("dtAtendimentoIncial", Util.formatarDataInicial(helper.getPeriodoAtendimentoInicial())); query.setDate("dtAtendimentoFinal", Util.formatarDataFinal(helper.getPeriodoAtendimentoFinal())); } if(helper.getPeriodoEncerramentoInicial() != null && helper.getPeriodoEncerramentoFinal() != null ){ query.setDate("dtEncerramentoIncial", Util.formatarDataInicial(helper.getPeriodoEncerramentoInicial())); query.setDate("dtEncerramentoFinal", Util.formatarDataFinal(helper.getPeriodoEncerramentoFinal())); } if(Util.verificarNaoVazio(helper.getSituacaoRA()) && helper.getSituacaoRA().equals("0") && Util.verificarNaoVazio(helper.getSituacaoRAAbertos()) && (helper.getSituacaoRAAbertos().equals("0") || helper.getSituacaoRAAbertos().equals("1"))){ query.setDate("dtCorrente", new Date()); } if(Util.verificarNaoVazio(helper.getSituacaoRA()) && helper.getSituacaoRA().equals("0")){ query.setShort("situacao", RegistroAtendimento.SITUACAO_PENDENTE); }else if(Util.verificarNaoVazio(helper.getSituacaoRA()) && helper.getSituacaoRA().equals("1")){ query.setShort("situacao", RegistroAtendimento.SITUACAO_ENCERRADO); } retorno = query.list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC1107] Manter Custo de Pavimento por Repavimentadora * * @author Hugo Leonardo * @date 27/12/2010 * * @param idRepavimentadora, idPavimento, indicadorPavimento: 1-Rua, 2-Cal�ada * @return boolean */ public boolean verificaRemoverCustoPavimentoPorRepavimentadora(Integer idRepavimentadora, Integer idPavimento, Integer indicadorPavimento)throws ErroRepositorioException{ // Cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // Retorno Consulta boolean retorno = false; // Cria a vari�vel que vai conter o hql String consulta = ""; try { if(indicadorPavimento == 1){ consulta += " SELECT ospv.id " + " FROM OrdemServicoPavimento ospv, UnidadeRepavimentadoraCustoPavimentoRua urr1, UnidadeRepavimentadoraCustoPavimentoRua urr2 " + " INNER JOIN ospv.ordemServico os" + " WHERE ospv.unidadeRepavimentadora.id = :repavimentadora " + " AND ((urr1.pavimentoRua.id = ospv.pavimentoRua.id and ospv.pavimentoRuaRetorno is null and urr1.pavimentoRua.id = :pavimento and urr1.unidadeRepavimentadora.id = :repavimentadora) " + " OR (urr2.pavimentoRua.id = ospv.pavimentoRuaRetorno.id and ospv.pavimentoRuaRetorno is not null and urr2.pavimentoRua.id = :pavimento and urr2.unidadeRepavimentadora.id = :repavimentadora)) " + " AND ( " + " ( " + " os.dataEncerramento >= urr1.dataVigenciaInicial " + " AND os.dataEncerramento <= urr1.dataVigenciaFinal " + " AND urr1.dataVigenciaFinal is not null " + " AND ospv.pavimentoRuaRetorno is null " + " ) " + " OR ( " + " os.dataEncerramento >= urr1.dataVigenciaInicial" + " AND urr1.dataVigenciaFinal is null" + " AND ospv.pavimentoRuaRetorno is null" + " )" + " OR ( " + " os.dataEncerramento >= urr2.dataVigenciaInicial" + " AND os.dataEncerramento <= urr2.dataVigenciaFinal" + " AND urr2.dataVigenciaFinal is not null " + " AND ospv.pavimentoRuaRetorno is not null" + " ) " + " OR ( " + " os.dataEncerramento >= urr2.dataVigenciaInicial " + " AND urr2.dataVigenciaFinal is null " + " AND ospv.pavimentoRuaRetorno is not null " + " ) " + " ) "; }else{ consulta += " SELECT ospv.id " + " FROM OrdemServicoPavimento ospv, UnidadeRepavimentadoraCustoPavimentoCalcada urr1, UnidadeRepavimentadoraCustoPavimentoCalcada urr2 " + " INNER JOIN ospv.ordemServico os" + " WHERE ospv.unidadeRepavimentadora.id = :repavimentadora " + " AND ((urr1.pavimentoCalcada.id = ospv.pavimentoCalcada.id and ospv.pavimentoCalcadaRetorno is null and urr1.pavimentoCalcada.id = :pavimento and urr1.unidadeRepavimentadora.id = :repavimentadora) " + " OR (urr2.pavimentoCalcada.id = ospv.pavimentoCalcadaRetorno.id and ospv.pavimentoCalcadaRetorno is not null and urr2.pavimentoCalcada.id = :pavimento and urr2.unidadeRepavimentadora.id = :repavimentadora)) " + " AND ( " + " ( " + " os.dataEncerramento >= urr1.dataVigenciaInicial " + " AND os.dataEncerramento <= urr1.dataVigenciaFinal " + " AND urr1.dataVigenciaFinal is not null " + " AND ospv.pavimentoCalcadaRetorno is null " + " ) " + " OR ( " + " os.dataEncerramento >= urr1.dataVigenciaInicial" + " AND urr1.dataVigenciaFinal is null" + " AND ospv.pavimentoCalcadaRetorno is null" + " )" + " OR ( " + " os.dataEncerramento >= urr2.dataVigenciaInicial" + " AND os.dataEncerramento <= urr2.dataVigenciaFinal" + " AND urr2.dataVigenciaFinal is not null " + " AND ospv.pavimentoCalcadaRetorno is not null" + " ) " + " OR ( " + " os.dataEncerramento >= urr2.dataVigenciaInicial " + " AND urr2.dataVigenciaFinal is null " + " AND ospv.pavimentoCalcadaRetorno is not null " + " ) " + " ) "; } Integer idRetorno = (Integer) session.createQuery(consulta) .setInteger("repavimentadora", idRepavimentadora) .setInteger("pavimento", idPavimento) .setMaxResults(1).uniqueResult(); if(idRetorno != null){ retorno = true; } // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC1107] Manter Custo de Pavimento por Repavimentadora * * @author Hugo Leonardo * @date 28/12/2010 * * @param id, idRepavimentadora, idPavimento, dataInicio, dataFinal, indicadorPavimento: 1-Rua, 2-Cal�ada * @return Integer * * @see Caso retorne resultado: return 0. * * @see Caso o indicadorPavimento = 1 e dataFinal = null: return 1. * @see Caso o indicadorPavimento = 1 e dataFinal != null: return 2. * * @see Caso o indicadorPavimento = 2 e dataFinal = null: return 3. * @see Caso o indicadorPavimento = 2 e dataFinal != null: return 4. */ public Integer verificaAtualizarCustoPavimentoPorRepavimentadora(Integer idAtualizacao, Integer idRepavimentadora, Integer idPavimento, Date dataInicio, Date dataFinal, Integer indicadorPavimento, Integer tipo) throws ErroRepositorioException{ // Cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // Retorno Consulta Integer retorno = 0; Integer idRetorno = null; // Cria a vari�vel que vai conter o hql String consulta = ""; try { if(indicadorPavimento == 1){ consulta += " select urr1.id " + " from UnidadeRepavimentadoraCustoPavimentoRua urr1 " + " where urr1.unidadeRepavimentadora.id = :repavimentadora " + " and urr1.pavimentoRua.id = :pavimento " + " and urr1.id <> :idAtu and ( "; if(tipo == 1){ consulta += " urr1.dataVigenciaFinal is null and " + " coalesce(urr1.dataVigenciaFinal, to_date('9999-12-31','YYYY/MM/DD')) >= :dtInicio and " + " urr1.dataVigenciaInicial <= :dtFinal and "; consulta = Util.removerUltimosCaracteres(consulta, 4) + ")"; }else{ consulta += " urr1.dataVigenciaFinal is not null and " + " coalesce(urr1.dataVigenciaFinal, to_date('9999-12-31','YYYY/MM/DD')) >= :dtInicio and " + " urr1.dataVigenciaInicial <= :dtFinal " + " or ( urr1.dataVigenciaFinal is null " + " or coalesce(urr1.dataVigenciaFinal, to_date('9999-12-31','YYYY/MM/DD')) >= :dtInicio ) " + " and urr1.dataVigenciaInicial <= :dtFinal) "; } }else{ consulta += " select urr1.id " + " from UnidadeRepavimentadoraCustoPavimentoCalcada urr1 " + " where urr1.unidadeRepavimentadora.id = :repavimentadora " + " and urr1.pavimentoCalcada.id = :pavimento " + " and urr1.id <> :idAtu and ( "; if(tipo == 1 ){ consulta += " urr1.dataVigenciaFinal is null and " + " coalesce(urr1.dataVigenciaFinal, to_date('9999-12-31','YYYY/MM/DD')) >= :dtInicio and " + " urr1.dataVigenciaInicial <= :dtFinal and "; consulta = Util.removerUltimosCaracteres(consulta, 4) + ")"; }else{ consulta += " urr1.dataVigenciaFinal is not null and " + " coalesce(urr1.dataVigenciaFinal, to_date('9999-12-31','YYYY/MM/DD')) >= :dtInicio and " + " urr1.dataVigenciaInicial <= :dtFinal " + " or ( urr1.dataVigenciaFinal is null " + " or coalesce(urr1.dataVigenciaFinal, to_date('9999-12-31','YYYY/MM/DD')) >= :dtInicio ) " + " and urr1.dataVigenciaInicial <= :dtFinal) "; } } if(indicadorPavimento == 1){ if(tipo == 1 ){ idRetorno = (Integer) session.createQuery(consulta) .setInteger("idAtu", idAtualizacao) .setInteger("repavimentadora", idRepavimentadora) .setInteger("pavimento", idPavimento) .setDate("dtInicio", dataInicio) .setDate("dtFinal", dataFinal) .setMaxResults(1).uniqueResult(); if(idRetorno != null){ retorno = 1; } }else{ idRetorno = (Integer) session.createQuery(consulta) .setInteger("idAtu", idAtualizacao) .setInteger("repavimentadora", idRepavimentadora) .setInteger("pavimento", idPavimento) .setDate("dtInicio", dataInicio) .setDate("dtFinal", dataFinal) .setMaxResults(1).uniqueResult(); if(idRetorno != null){ retorno = 2; } } }else{ if(tipo == 1){ idRetorno = (Integer) session.createQuery(consulta) .setInteger("idAtu", idAtualizacao) .setInteger("repavimentadora", idRepavimentadora) .setInteger("pavimento", idPavimento) .setDate("dtInicio", dataInicio) .setDate("dtFinal", dataFinal) .setMaxResults(1).uniqueResult(); if(idRetorno != null){ retorno = 3; } }else{ idRetorno = (Integer) session.createQuery(consulta) .setInteger("idAtu", idAtualizacao) .setInteger("repavimentadora", idRepavimentadora) .setInteger("pavimento", idPavimento) .setDate("dtInicio", dataInicio) .setDate("dtFinal", dataFinal) .setMaxResults(1).uniqueResult(); if(idRetorno != null){ retorno = 4; } } } // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC1107] Manter Custo de Pavimento por Repavimentadora * * [FS0010] Verificar se existem dias sem valor * * @author Hugo Leonardo * @date 11/01/2011 * * @param id, idRepavimentadora, idPavimento, dataInicio, dataFinal, indicadorPavimento: 1-Rua, 2-Cal�ada * @return Integer * * VerificarExistenciDiasSemValor */ public Integer verificarExistenciDiasSemValorCustoPavimentoPorRepavimentadora(Integer idAtualizacao, Integer idRepavimentadora, Integer idPavimento, Date dataInicio, Date dataFinal, Integer indicadorPavimento, Integer tipo) throws ErroRepositorioException{ // Cria uma sess�o com o hibernate Session session = HibernateUtil.getSession(); // Retorno Consulta Integer retorno = 0; Integer idRetorno = null; // Cria a vari�vel que vai conter o hql String consulta = ""; try { if(indicadorPavimento == 1){ if(tipo == 1 ){ consulta +=" select urr1.id " + " from UnidadeRepavimentadoraCustoPavimentoRua urr1 " + " where urr1.unidadeRepavimentadora.id = :repavimentadora " + " and urr1.pavimentoRua.id = :pavimento " + " and urr1.id <> :idAtu " + " and ( " + " urr1.id =( " + " select r.id " + " from UnidadeRepavimentadoraCustoPavimentoRua r " + " where r.unidadeRepavimentadora.id = :repavimentadora " + " and r.pavimentoRua.id = :pavimento " + " and r.id <> :idAtu " + " and r.dataVigenciaFinal = ( " + " select max(r2.dataVigenciaFinal) " + " from UnidadeRepavimentadoraCustoPavimentoRua r2 " + " where r2.unidadeRepavimentadora.id = :repavimentadora " + " and r2.pavimentoRua.id = :pavimento " + " and r2.id <> :idAtu " + " and coalesce(r2.dataVigenciaFinal, to_date('9999-12-31','YYYY/MM/DD')) = :dtInicio " + " ) " + " ) " + " ) " + " and coalesce(urr1.dataVigenciaFinal, to_date('9999-12-31','YYYY/MM/DD')) = :dtInicio "; }else if(tipo == 2 ){ consulta +=" select urr1.id " + " from UnidadeRepavimentadoraCustoPavimentoRua urr1 " + " where urr1.unidadeRepavimentadora.id = :repavimentadora " + " and urr1.pavimentoRua.id = :pavimento " + " and urr1.id <> :idAtu " + " and ( " + " urr1.id = ( " + " select r3.id " + " from UnidadeRepavimentadoraCustoPavimentoRua r3 " + " where r3.unidadeRepavimentadora.id = :repavimentadora " + " and r3.pavimentoRua.id = :pavimento " + " and r3.id <> :idAtu " + " and r3.dataVigenciaInicial = ( " + " select max(r4.dataVigenciaInicial) " + " from UnidadeRepavimentadoraCustoPavimentoRua r4 " + " where r4.unidadeRepavimentadora.id = :repavimentadora " + " and r4.pavimentoRua.id = :pavimento " + " and r4.id <> :idAtu " + " and coalesce(r4.dataVigenciaInicial, to_date('9999-12-31','YYYY/MM/DD')) = :dtFinal " + " ) " + " ) " + " and urr1.dataVigenciaInicial = :dtFinal " + " ) "; }else{ consulta +=" select urr1.id " + " from UnidadeRepavimentadoraCustoPavimentoRua urr1 " + " where urr1.unidadeRepavimentadora.id = :repavimentadora " + " and urr1.pavimentoRua.id = :pavimento " + " and urr1.id <> :idAtu " + " and urr1.dataVigenciaInicial > :dtInicio "; } }else{ if(tipo == 1 ){ consulta +=" select urr1.id " + " from UnidadeRepavimentadoraCustoPavimentoCalcada urr1 " + " where urr1.unidadeRepavimentadora.id = :repavimentadora " + " and urr1.pavimentoCalcada.id = :pavimento " + " and urr1.id <> :idAtu " + " and ( " + " urr1.id = ( " + " select r.id " + " from UnidadeRepavimentadoraCustoPavimentoCalcada r " + " where r.unidadeRepavimentadora.id = :repavimentadora " + " and r.pavimentoCalcada.id = :pavimento " + " and r.id <> :idAtu " + " and r.dataVigenciaFinal = ( " + " select max(r2.dataVigenciaFinal) " + " from UnidadeRepavimentadoraCustoPavimentoCalcada r2 " + " where r2.unidadeRepavimentadora.id = :repavimentadora " + " and r2.pavimentoCalcada.id = :pavimento " + " and r2.id <> :idAtu " + " and coalesce(r2.dataVigenciaFinal, to_date('9999-12-31','YYYY/MM/DD')) = :dtInicio " + " ) " + " ) " + " ) " + " and coalesce(urr1.dataVigenciaFinal, to_date('9999-12-31','YYYY/MM/DD')) = :dtInicio "; }else if(tipo == 2 ){ consulta +=" select urr1.id " + " from UnidadeRepavimentadoraCustoPavimentoCalcada urr1 " + " where urr1.unidadeRepavimentadora.id = :repavimentadora " + " and urr1.pavimentoCalcada.id = :pavimento " + " and urr1.id <> :idAtu " + " and ( " + " urr1.id = ( " + " select r.id " + " from UnidadeRepavimentadoraCustoPavimentoCalcada r " + " where r.unidadeRepavimentadora.id = :repavimentadora " + " and r.pavimentoCalcada.id = :pavimento " + " and r.id <> :idAtu " + " and r.dataVigenciaInicial = ( " + " select max(r2.dataVigenciaInicial) " + " from UnidadeRepavimentadoraCustoPavimentoCalcada r2 " + " where r2.unidadeRepavimentadora.id = :repavimentadora " + " and r2.pavimentoCalcada.id = :pavimento " + " and r2.id <> :idAtu " + " and coalesce(r2.dataVigenciaInicial, to_date('9999-12-31','YYYY/MM/DD')) = :dtFinal " + " ) " + " ) " + " and urr1.dataVigenciaInicial = :dtFinal " + " ) "; }else{ consulta +=" select urr1.id " + " from UnidadeRepavimentadoraCustoPavimentoCalcada urr1 " + " where urr1.unidadeRepavimentadora.id = :repavimentadora " + " and urr1.pavimentoCalcada.id = :pavimento " + " and urr1.id <> :idAtu " + " and urr1.dataVigenciaInicial > :dtInicio "; } } if(indicadorPavimento == 1){ if(tipo == 1 ){ idRetorno = (Integer) session.createQuery(consulta) .setInteger("idAtu", idAtualizacao) .setInteger("repavimentadora", idRepavimentadora) .setInteger("pavimento", idPavimento) .setDate("dtInicio", dataInicio) .setMaxResults(1).uniqueResult(); if(idRetorno == null){ retorno = 1; }else{ retorno = 0; } }else if(tipo == 2 ){ idRetorno = (Integer) session.createQuery(consulta) .setInteger("idAtu", idAtualizacao) .setInteger("repavimentadora", idRepavimentadora) .setInteger("pavimento", idPavimento) .setDate("dtFinal", dataFinal) .setMaxResults(1).uniqueResult(); if(idRetorno == null){ retorno = 2; }else{ retorno = 0; } }else{ idRetorno = (Integer) session.createQuery(consulta) .setInteger("idAtu", idAtualizacao) .setInteger("repavimentadora", idRepavimentadora) .setInteger("pavimento", idPavimento) .setDate("dtInicio", Util.adicionarNumeroDiasDeUmaData(dataInicio, 0)) .setMaxResults(1).uniqueResult(); if(idRetorno == null){ retorno = 0; }else{ retorno = 3; } } }else{ if(tipo == 1 ){ idRetorno = (Integer) session.createQuery(consulta) .setInteger("idAtu", idAtualizacao) .setInteger("repavimentadora", idRepavimentadora) .setInteger("pavimento", idPavimento) .setDate("dtInicio", dataInicio) .setMaxResults(1).uniqueResult(); if(idRetorno == null){ retorno = 4; }else{ retorno = 0; } }else if(tipo == 2 ){ idRetorno = (Integer) session.createQuery(consulta) .setInteger("idAtu", idAtualizacao) .setInteger("repavimentadora", idRepavimentadora) .setInteger("pavimento", idPavimento) .setDate("dtFinal", dataFinal) .setMaxResults(1).uniqueResult(); if(idRetorno != null){ retorno = 5; }else{ retorno = 0; } }else{ idRetorno = (Integer) session.createQuery(consulta) .setInteger("idAtu", idAtualizacao) .setInteger("repavimentadora", idRepavimentadora) .setInteger("pavimento", idPavimento) .setDate("dtInicio", Util.adicionarNumeroDiasDeUmaData(dataInicio, -1)) .setMaxResults(1).uniqueResult(); if(idRetorno == null){ retorno = 0; }else{ retorno = 6; } } } // Erro no hibernate } catch (HibernateException e) { // Levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sess�o com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0412] Manter Tipo de Servi�o * * @author Vivianne Sousa * @created 07/01/2011 */ public void removerServicoTipoBoletim(Integer idServicoTipo) throws ErroRepositorioException { String remocao = null; Session session = HibernateUtil.getSession(); try { remocao = "delete ServicoTipoBoletim " + "where svtp_id = :idServicoTipo "; session.createQuery(remocao).setInteger("idServicoTipo",idServicoTipo).executeUpdate(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } } /** * [UC1120] Gerar Relat�rio de religa��o de clientes inadimplentes. * * @author Hugo Leonardo * @date 25/01/2011 * * @throws ErroRepositorioException */ public Collection pesquisarRelatorioReligacaoClientesInadiplentesOS( FiltrarRelatorioReligacaoClientesInadiplentesHelper relatorioHelper) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; Query query = null; Map parameters = new HashMap(); try { if(relatorioHelper.getEscolhaRelatorio() == 1){ consulta = " select distinct (os.id), os.imovel.id, os.dataEncerramento " + " from OrdemServico os " + " inner join os.imovel imo " + " inner join os.ordemServicoUnidades orseunid " + " inner join os.servicoTipo servtipo " + " inner join imo.localidade loca "; } else if(relatorioHelper.getEscolhaRelatorio() == 2){ consulta = " select os.imovel.id, count(os.imovel.id) " + " from OrdemServico os " + " inner join os.imovel imo " + " inner join os.servicoTipo servtipo " + " inner join imo.localidade loca "; } else if(relatorioHelper.getEscolhaRelatorio() == 3 || relatorioHelper.getEscolhaRelatorio() == 4){ /* consulta = " select os.imovel.id, " + " orseunid.usuario.id, " + " count(os.imovel.id), " + " count (orseunid.usuario.id) " + " from OrdemServico os " + " inner join os.imovel imo " + " inner join os.ordemServicoUnidades orseunid " + " inner join os.servicoTipo servtipo " + " inner join imo.localidade loca "; */ consulta = " select orseunid.usuario.id " + " from OrdemServico os " + " inner join os.imovel imo " + " inner join os.ordemServicoUnidades orseunid " + " inner join os.servicoTipo servtipo " + " inner join imo.localidade loca "; } else if(relatorioHelper.getEscolhaRelatorio() == 5){ consulta = " select os.imovel.id, " + " orseunid.usuario.id, " + " clieimo.cliente.id, " + " count(os.imovel.id), " + " count (orseunid.usuario.id), " + " count (clieimo.cliente.id) " + " from OrdemServico os " + " inner join os.imovel imo " + " inner join imo.clienteImoveis clieimo " + " inner join os.ordemServicoUnidades orseunid " + " inner join os.servicoTipo servtipo " + " inner join imo.localidade loca "; } // Ger�ncia Regional if(relatorioHelper.getGerenciaRegional() != null){ consulta +=" inner join loca.gerenciaRegional gereg "; } // Unidade Neg�cio if(relatorioHelper.getUnidadeNegocio() != null){ consulta +=" inner join loca.unidadeNegocio unineg "; } // Setor Comercial if(relatorioHelper.getSetorComercial() != null){ consulta +=" inner join imo.setorComercial setcom "; } // Cliente if(relatorioHelper.getCliente() != null && relatorioHelper.getEscolhaRelatorio() != 5){ consulta +=" inner join imo.clienteImoveis clieimo "; } // Usu�rio if(relatorioHelper.getUsuario() != null){ consulta +=" inner join orseunid.usuario usua "; } consulta +=" where 1=1 "; if(relatorioHelper.getEscolhaRelatorio() == 1){ if(relatorioHelper.getDataInicioEncerramento() != null && relatorioHelper.getDataFimEncerramento() != null){ consulta +=" and os.dataEncerramento between :dataInicialEncerramento and :dataFinalEncerramento "; parameters.put("dataInicialEncerramento", relatorioHelper.getDataInicioEncerramento()); parameters.put("dataFinalEncerramento", relatorioHelper.getDataFimEncerramento()); } }else{ consulta +=" and os.dataEncerramento between :dataInicialEncerramento and :dataFinalEncerramento "; parameters.put("dataInicialEncerramento", relatorioHelper.getDataInicioRecorrencia()); parameters.put("dataFinalEncerramento", relatorioHelper.getDataFimRecorrencia()); } consulta +=" and os.situacao = 2 " + " and servtipo.constanteFuncionalidadeTipoServico = 243 "; if(relatorioHelper.getEscolhaRelatorio() == 1 ){ consulta += " and orseunid.atendimentoRelacaoTipo in (1, 3) "; } else if(relatorioHelper.getEscolhaRelatorio() == 2){ //consulta += " and orseunid.atendimentoRelacaoTipo in (1, 3) "; } else if(relatorioHelper.getEscolhaRelatorio() == 3){ consulta += " and orseunid.atendimentoRelacaoTipo = 1 "; } else if(relatorioHelper.getEscolhaRelatorio() == 4){ consulta += " and orseunid.atendimentoRelacaoTipo = 3 "; } else if(relatorioHelper.getEscolhaRelatorio() == 5){ consulta += " and orseunid.atendimentoRelacaoTipo = 3 " + " and clieimo.clienteRelacaoTipo.id = 2 " + " and clieimo.dataFimRelacao is null "; } // Ger�ncia Regional if(relatorioHelper.getGerenciaRegional() != null){ consulta +=" and gereg.id = :gerencia "; parameters.put("gerencia", relatorioHelper.getGerenciaRegional()); } // Unidade Neg�cio if(relatorioHelper.getUnidadeNegocio() != null){ consulta +=" and unineg.id = :unidade "; parameters.put("unidade", relatorioHelper.getUnidadeNegocio()); } // Localidade if(relatorioHelper.getLocalidade() != null){ consulta +=" and loca.id = :localidade "; parameters.put("localidade", relatorioHelper.getLocalidade()); } // Setor Comercial if(relatorioHelper.getSetorComercial() != null){ consulta +=" and setcom.id = :setor "; parameters.put("setor", relatorioHelper.getSetorComercial()); } // Cliente if(relatorioHelper.getCliente() != null){ consulta +=" and clieimo.clie.id = :cliente "; parameters.put("cliente", relatorioHelper.getCliente()); } // Usu�rio if(relatorioHelper.getUsuario() != null){ consulta +=" and usua.id = :usuario "; parameters.put("usuario", relatorioHelper.getUsuario()); } if(relatorioHelper.getEscolhaRelatorio() == 1){ consulta += " order by os.imovel, os.id "; } else if(relatorioHelper.getEscolhaRelatorio() == 2){ consulta += " group by os.imovel.id " + " having count(os.imovel.id) > 1 " + " order by os.imovel.id "; } else if(relatorioHelper.getEscolhaRelatorio() == 3 || relatorioHelper.getEscolhaRelatorio() == 4){ /* consulta += " group by os.imovel.id, orseunid.usuario.id " + " having count(os.imovel.id) > 1 and count(orseunid.usuario.id) > 1 " + " order by os.imovel.id "; */ consulta += " group by orseunid.usuario.id " + " having count(orseunid.usuario.id) > 1 " + " order by orseunid.usuario.id "; } else if(relatorioHelper.getEscolhaRelatorio() == 5){ consulta += " group by os.imovel.id, orseunid.usuario.id, clieimo.cliente.id " + " having count(os.imovel.id) > 1 and count(orseunid.usuario.id) > 1 " + " and count(clieimo.cliente.id) > 1 " + " order by os.imovel.id "; } query = session.createQuery(consulta); //ITERA OS PARAMETROS E COLOCA // OS MESMOS NA QUERY Set set = parameters.keySet(); Iterator iterMap = set.iterator(); while (iterMap.hasNext()) { String key = (String) iterMap.next(); if (parameters.get(key) instanceof Set) { Set setList = (HashSet) parameters.get(key); query.setParameterList(key, setList); } else if (parameters.get(key) instanceof Collection) { Collection collection = (ArrayList) parameters.get(key); query.setParameterList(key, collection); }else if (parameters.get(key) instanceof Date) { Date data = (Date) parameters.get(key); query.setTimestamp(key, data); }else { query.setParameter(key, parameters.get(key)); } } retorno = query.list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC1120] Gerar Relat�rio de religa��o de clientes inadimplentes. * * @author Hugo Leonardo * @date 28/01/2011 * * @see opcao = 1 - pagamento * @see opcao = 2 - historico * * @throws ErroRepositorioException */ public Collection pesquisarRelatorioReligacaoClientesInadiplentes( Integer os, Integer imovel, Date dataEncerramentoOS, Integer tipo) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { if(tipo == 1){ consulta = " SELECT contas11_.cnta_id as conta " + " FROM faturamento.conta contas11_ " + " WHERE contas11_.imov_id = :imovel " + " AND ( contas11_.dcst_idatual IN ( 0 , 1 , 2 ) ) " + " AND contas11_.cnta_dtvencimentoconta <= :dataEncerramentoOS " + " AND ( " + " EXISTS ( " + " SELECT pag1.pgmt_id " + " FROM arrecadacao.pagamento pag1 " + " WHERE pag1.cnta_id = contas11_.cnta_id " + " AND pag1.pgmt_dtpagamento > :dataEncerramentoOS " + " ) " + " OR " + " NOT EXISTS ( " + " SELECT pag.pgmt_id " + " FROM arrecadacao.pagamento pag " + " WHERE pag.cnta_id = contas11_.cnta_id " + " ) " + " ) " + " order by contas11_.cnta_id "; }else{ consulta = " SELECT contas11_.cnta_id as conta " + " FROM faturamento.conta_historico contas11_ " + " WHERE contas11_.imov_id = :imovel " + " AND ( contas11_.dcst_idatual IN ( 0 , 1 , 2 ) ) " + " AND contas11_.cnhi_dtvencimentoconta <= :dataEncerramentoOS " + " AND ( " + " EXISTS ( " + " SELECT pag1.pghi_id " + " FROM arrecadacao.pagamento_historico pag1 " + " WHERE pag1.cnta_id = contas11_.cnta_id " + " AND pag1.pghi_dtpagamento > :dataEncerramentoOS " + " ) " + " ) " + " order by contas11_.cnta_id "; } retorno = session.createSQLQuery(consulta) .addScalar("conta", Hibernate.INTEGER) .setInteger("imovel", imovel) .setDate("dataEncerramentoOS", dataEncerramentoOS) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC1120] Gerar Relat�rio de religa��o de clientes inadimplentes. * * @author Hugo Leonardo * @date 31/01/2011 * * @throws ErroRepositorioException */ public Collection<OrdemServico> pesquisarRelatorioReligacaoClientesInadiplentes( Collection<Integer> idsOS) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String consulta = ""; Collection<OrdemServico> retornoConsulta = new ArrayList(); try { consulta = " SELECT os " + " FROM OrdemServico os " + " inner join fetch os.imovel imo " + " WHERE os.id in (:idsOS) " + " ORDER BY imo.id "; if(idsOS.size() > 999){ System.out.println("## TAMANHO TOTAL = " + idsOS.size()); List<List<Integer>> particoes = CollectionUtil.particao((List<Integer>) idsOS, 999); int qtdQuebras = 999; int indice = idsOS.size() / qtdQuebras; if (idsOS.size() % qtdQuebras != 0){ indice ++; } System.out.println("## QUANTIDADE PARTI��ES = " + indice); for (int i = 0; i < indice; i++) { System.out.println("## TAMANHO PARTI��O DE INDICE " + indice +" = " + particoes.get(i).size()); Collection<OrdemServico> retornoConsultaParte = null; retornoConsultaParte = session.createQuery(consulta).setParameterList( "idsOS", particoes.get(i)).list(); retornoConsulta.addAll(retornoConsultaParte); } } else { retornoConsulta = session.createQuery(consulta).setParameterList( "idsOS", idsOS).list(); } } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retornoConsulta; } /** * [UC1120] Gerar Relat�rio de religa��o de clientes inadimplentes * * @author Hugo Leonardo * @date 01/02/2011 * * @throws ErroRepositorioException */ public Collection pesquisarRelatorioReligacaoClientesInadiplentesRecorrentes( Integer imovel, FiltrarRelatorioReligacaoClientesInadiplentesHelper relatorioHelper) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; Query query = null; Map parameters = new HashMap(); try { consulta = " select distinct (os.id) " + " from OrdemServico os " + " inner join os.imovel imo " + " inner join os.ordemServicoUnidades orseunid " + " inner join os.servicoTipo servtipo " + " inner join imo.localidade loca "; // Ger�ncia Regional if(relatorioHelper.getGerenciaRegional() != null){ consulta +=" inner join loca.gerenciaRegional gereg "; } // Unidade Neg�cio if(relatorioHelper.getUnidadeNegocio() != null){ consulta +=" inner join loca.unidadeNegocio unineg "; } // Setor Comercial if(relatorioHelper.getSetorComercial() != null){ consulta +=" inner join imo.setorComercial setcom "; } // Cliente if(relatorioHelper.getCliente() != null){ consulta +=" inner join imo.clienteImoveis clieimo "; } // Usu�rio if(relatorioHelper.getUsuario() != null){ consulta +=" inner join orseunid.usuario usua "; } consulta +=" where imo.id = :imovel "; parameters.put("imovel", imovel); if(relatorioHelper.getEscolhaRelatorio() == 1){ if(relatorioHelper.getDataInicioEncerramento() != null && relatorioHelper.getDataFimEncerramento() != null){ consulta +=" and os.dataEncerramento between :dataInicialEncerramento and :dataFinalEncerramento "; parameters.put("dataInicialEncerramento", relatorioHelper.getDataInicioEncerramento()); parameters.put("dataFinalEncerramento", relatorioHelper.getDataFimEncerramento()); } }else{ if(relatorioHelper.getDataInicioRecorrencia() != null && relatorioHelper.getDataFimRecorrencia() != null){ consulta +=" and os.dataEncerramento between :dataInicialRecorrencia and :dataFinalRecorrencia "; parameters.put("dataInicialRecorrencia", relatorioHelper.getDataInicioRecorrencia()); parameters.put("dataFinalRecorrencia", relatorioHelper.getDataFimRecorrencia()); } } consulta +=" and os.situacao = 2 " + " and servtipo.constanteFuncionalidadeTipoServico = 243 " + " and orseunid.atendimentoRelacaoTipo.id in (1, 3) "; // Ger�ncia Regional if(relatorioHelper.getGerenciaRegional() != null){ consulta +=" and gereg.id = :gerencia "; parameters.put("gerencia", relatorioHelper.getGerenciaRegional()); } // Unidade Neg�cio if(relatorioHelper.getUnidadeNegocio() != null){ consulta +=" and unineg.id = :unidade "; parameters.put("unidade", relatorioHelper.getUnidadeNegocio()); } // Localidade if(relatorioHelper.getLocalidade() != null){ consulta +=" and loca.id = :localidade "; parameters.put("localidade", relatorioHelper.getLocalidade()); } // Setor Comercial if(relatorioHelper.getSetorComercial() != null){ consulta +=" and setcom.id = :setor "; parameters.put("setor", relatorioHelper.getSetorComercial()); } // Cliente if(relatorioHelper.getCliente() != null){ consulta +=" and clieimo.cliente.id = :cliente "; parameters.put("cliente", relatorioHelper.getCliente()); } // Usu�rio if(relatorioHelper.getUsuario() != null){ consulta +=" and usua.id = :usuario "; parameters.put("usuario", relatorioHelper.getUsuario()); } consulta += " order by os.id "; query = session.createQuery(consulta); //ITERA OS PARAMETROS E COLOCA // OS MESMOS NA QUERY Set set = parameters.keySet(); Iterator iterMap = set.iterator(); while (iterMap.hasNext()) { String key = (String) iterMap.next(); if (parameters.get(key) instanceof Set) { Set setList = (HashSet) parameters.get(key); query.setParameterList(key, setList); } else if (parameters.get(key) instanceof Collection) { Collection collection = (ArrayList) parameters.get(key); query.setParameterList(key, collection); }else if (parameters.get(key) instanceof Date) { Date data = (Date) parameters.get(key); query.setTimestamp(key, data); }else { query.setParameter(key, parameters.get(key)); } } retorno = query.list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC1120] Gerar Relat�rio de religa��o de clientes inadimplentes. * * @author Hugo Leonardo * @date 09/02/2011 * * @throws ErroRepositorioException */ public Collection pesquisarRelatorioReligacaoClientesInadiplentesDatasOS( FiltrarRelatorioReligacaoClientesInadiplentesHelper relatorioHelper, Integer imovel) throws ErroRepositorioException { Collection<Object[]> retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; Query query = null; Map parameters = new HashMap(); try { consulta = " select distinct(os.dataEncerramento), os.id " + " from OrdemServico os " + " inner join os.imovel imo " + " inner join os.ordemServicoUnidades orseunid " + " inner join os.servicoTipo servtipo " + " inner join imo.localidade loca "; // Ger�ncia Regional if(relatorioHelper.getGerenciaRegional() != null){ consulta +=" inner join loca.gerenciaRegional gereg "; } // Unidade Neg�cio if(relatorioHelper.getUnidadeNegocio() != null){ consulta +=" inner join loca.unidadeNegocio unineg "; } // Setor Comercial if(relatorioHelper.getSetorComercial() != null){ consulta +=" inner join imo.setorComercial setcom "; } // Cliente if(relatorioHelper.getCliente() != null){ consulta +=" inner join imo.clienteImoveis clieimo "; } // Usu�rio if(relatorioHelper.getUsuario() != null){ consulta +=" inner join orseunid.usuario usua "; } consulta +=" where imo.id = :imovel " + " and os.dataEncerramento between :dataInicialEncerramento and :dataFinalEncerramento "; parameters.put("imovel", imovel); parameters.put("dataInicialEncerramento", relatorioHelper.getDataInicioRecorrencia()); parameters.put("dataFinalEncerramento", relatorioHelper.getDataFimRecorrencia()); consulta +=" and os.situacao = 2 " + " and servtipo.constanteFuncionalidadeTipoServico = 243 " + " and orseunid.atendimentoRelacaoTipo in (1,3) "; // Ger�ncia Regional if(relatorioHelper.getGerenciaRegional() != null){ consulta +=" and gereg.id = :gerencia "; parameters.put("gerencia", relatorioHelper.getGerenciaRegional()); } // Unidade Neg�cio if(relatorioHelper.getUnidadeNegocio() != null){ consulta +=" and unineg.id = :unidade "; parameters.put("unidade", relatorioHelper.getUnidadeNegocio()); } // Localidade if(relatorioHelper.getLocalidade() != null){ consulta +=" and loca.id = :localidade "; parameters.put("localidade", relatorioHelper.getLocalidade()); } // Setor Comercial if(relatorioHelper.getSetorComercial() != null){ consulta +=" and setcom.id = :setor "; parameters.put("setor", relatorioHelper.getSetorComercial()); } // Cliente if(relatorioHelper.getCliente() != null){ consulta +=" and clieimo.cliente.id = :cliente "; parameters.put("cliente", relatorioHelper.getCliente()); } // Usu�rio if(relatorioHelper.getUsuario() != null){ consulta +=" and usua.id = :usuario "; parameters.put("usuario", relatorioHelper.getUsuario()); } consulta += " order by os.dataEncerramento "; query = session.createQuery(consulta); //ITERA OS PARAMETROS E COLOCA // OS MESMOS NA QUERY Set set = parameters.keySet(); Iterator iterMap = set.iterator(); while (iterMap.hasNext()) { String key = (String) iterMap.next(); if (parameters.get(key) instanceof Set) { Set setList = (HashSet) parameters.get(key); query.setParameterList(key, setList); } else if (parameters.get(key) instanceof Collection) { Collection collection = (ArrayList) parameters.get(key); query.setParameterList(key, collection); }else if (parameters.get(key) instanceof Date) { Date data = (Date) parameters.get(key); query.setTimestamp(key, data); }else { query.setParameter(key, parameters.get(key)); } } retorno = query.list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC1120] Gerar Relat�rio de religa��o de clientes inadimplentes * * @author Hugo Leonardo * @date 16/02/2011 * * @throws ErroRepositorioException */ public Collection pesquisarRecorrenciaPorUsuarioQueAbriuOuEncerrouOS( Integer usuario, FiltrarRelatorioReligacaoClientesInadiplentesHelper relatorioHelper) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; Query query = null; Map parameters = new HashMap(); try { consulta = " select os.id, imo.id, os.dataEncerramento " + " from OrdemServico os " + " inner join os.imovel imo " + " inner join os.ordemServicoUnidades orseunid " + " inner join os.servicoTipo servtipo " + " inner join imo.localidade loca "; // Ger�ncia Regional if(relatorioHelper.getGerenciaRegional() != null){ consulta +=" inner join loca.gerenciaRegional gereg "; } // Unidade Neg�cio if(relatorioHelper.getUnidadeNegocio() != null){ consulta +=" inner join loca.unidadeNegocio unineg "; } // Setor Comercial if(relatorioHelper.getSetorComercial() != null){ consulta +=" inner join imo.setorComercial setcom "; } // Cliente if(relatorioHelper.getCliente() != null){ consulta +=" inner join imo.clienteImoveis clieimo "; } // Usu�rio if(relatorioHelper.getUsuario() != null){ //consulta +=" inner join orseunid.usuario usua "; } consulta +=" where orseunid.usuario.id = :usuario "; parameters.put("usuario", usuario); if(relatorioHelper.getEscolhaRelatorio() == 1){ if(relatorioHelper.getDataInicioEncerramento() != null && relatorioHelper.getDataFimEncerramento() != null){ consulta +=" and os.dataEncerramento between :dataInicialEncerramento and :dataFinalEncerramento "; parameters.put("dataInicialEncerramento", relatorioHelper.getDataInicioEncerramento()); parameters.put("dataFinalEncerramento", relatorioHelper.getDataFimEncerramento()); } }else{ if(relatorioHelper.getDataInicioRecorrencia() != null && relatorioHelper.getDataFimRecorrencia() != null){ consulta +=" and os.dataEncerramento between :dataInicialRecorrencia and :dataFinalRecorrencia "; parameters.put("dataInicialRecorrencia", relatorioHelper.getDataInicioRecorrencia()); parameters.put("dataFinalRecorrencia", relatorioHelper.getDataFimRecorrencia()); } } consulta +=" and os.situacao = 2 " + " and servtipo.constanteFuncionalidadeTipoServico = 243 "; if(relatorioHelper.getEscolhaRelatorio() == 3){ consulta += " and orseunid.atendimentoRelacaoTipo.id = 1 "; } else if(relatorioHelper.getEscolhaRelatorio() == 4){ consulta += " and orseunid.atendimentoRelacaoTipo.id = 3 "; } // Ger�ncia Regional if(relatorioHelper.getGerenciaRegional() != null){ consulta +=" and gereg.id = :gerencia "; parameters.put("gerencia", relatorioHelper.getGerenciaRegional()); } // Unidade Neg�cio if(relatorioHelper.getUnidadeNegocio() != null){ consulta +=" and unineg.id = :unidade "; parameters.put("unidade", relatorioHelper.getUnidadeNegocio()); } // Localidade if(relatorioHelper.getLocalidade() != null){ consulta +=" and loca.id = :localidade "; parameters.put("localidade", relatorioHelper.getLocalidade()); } // Setor Comercial if(relatorioHelper.getSetorComercial() != null){ consulta +=" and setcom.id = :setor "; parameters.put("setor", relatorioHelper.getSetorComercial()); } // Cliente if(relatorioHelper.getCliente() != null){ consulta +=" and clieimo.cliente.id = :cliente "; parameters.put("cliente", relatorioHelper.getCliente()); } // Usu�rio if(relatorioHelper.getUsuario() != null){ consulta +=" and orseunid.usuario.id = :usuario "; parameters.put("usuario", relatorioHelper.getUsuario()); } consulta += " order by os.id "; query = session.createQuery(consulta); //ITERA OS PARAMETROS E COLOCA // OS MESMOS NA QUERY Set set = parameters.keySet(); Iterator iterMap = set.iterator(); while (iterMap.hasNext()) { String key = (String) iterMap.next(); if (parameters.get(key) instanceof Set) { Set setList = (HashSet) parameters.get(key); query.setParameterList(key, setList); } else if (parameters.get(key) instanceof Collection) { Collection collection = (ArrayList) parameters.get(key); query.setParameterList(key, collection); }else if (parameters.get(key) instanceof Date) { Date data = (Date) parameters.get(key); query.setTimestamp(key, data); }else { query.setParameter(key, parameters.get(key)); } } retorno = query.list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Obt�m a cole��o de perfis de tipo de servi�o para OS. * * @author Hugo Azevedo * @date 22/06/2011 * * @throws ControladorException */ public Collection obterColecaoTipoOSgerada() throws ErroRepositorioException{ Session session = HibernateUtil.getSession(); String consulta = ""; Collection retorno = null; consulta = "SELECT st.id, st.descricao " + " FROM ServicoTipo st " + " WHERE st.indicadorEmpresaCobranca = :indicador"; try{ retorno = session.createQuery(consulta) .setInteger("indicador",ConstantesSistema.INDICADOR_USO_ATIVO) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * * [UC1186] Gerar Relat�rio Ordem de Servi�o Cobran�a p/Resultado * * Obt�m a cole��o de OS a partir dos par�metros passados pela funcionalidade de Acompanhamento de Cobran�a por Resultado. * * @author Hugo Azevedo * @date 27/06/2011 * * @throws ErroRepositorioException */ public Collection obterColecaoImovelOSCobrancaResultado(String[] categoriaImovel, String[] perfilImovel, String[] gerenciaRegional, String[] unidadeNegocio, String idLocalidadeInicial, String idLocalidadeFinal, String idSetorComercialInicial, String idSetorComercialFinal, String idQuadraInicial, String idQuadraFinal, String tipoServico, String comando) throws ErroRepositorioException{ Session sessao = HibernateUtil.getSession(); String consulta = ""; Collection retorno = null; consulta = "select distinct imcon.id, grc.id, grc.nome, unc.id, unc.nome " + "from EmpresaCobrancaConta emcobco " //+ "inner join fetch emcobco.contaGeral cong " // + "inner join fetch cong.conta con " + "inner join emcobco.imovel imcon " + "inner join imcon.imovelSubcategorias imconsubc " + "inner join imconsubc.comp_id.subcategoria subcc " + "inner join subcc.categoria catc " + "inner join imcon.imovelPerfil ipc " + "inner join imcon.localidade locc " + "inner join locc.gerenciaRegional grc " + "inner join locc.unidadeNegocio unc " + "inner join imcon.setorComercial scc " + "inner join imcon.quadra qc " /*+ "inner join cong.contaHistorico conh " + "inner join conh.imovel imconh " + "inner join imconh.imovelSubcategorias imconhsubch " + "inner join imconhsubch.comp_id.subcategoria subcch " + "inner join subcch.categoria catch " + "inner join imconh.imovelPerfil ipch " + "inner join imconh.localidade locch " + "inner join locch.gerenciaRegional grch " + "inner join locch.unidadeNegocio unch " + "inner join imconh.setorComercial scch " + "inner join imconh.quadra qch "*/ + "where emcobco.comandoEmpresaCobrancaConta = :comando and imcon.indicadorExclusao = :indicadorExclusao " ; //Cole��o de categorias if(categoriaImovel != null && categoriaImovel.length > 0){ consulta += "and catc.id in ( :categoria ) "; } //Cole��o de perfis do im�vel if(perfilImovel != null && perfilImovel.length > 0){ consulta += "and ipc.id in ( :perfil ) "; } //Cole��o de ger�ncias regionais if(gerenciaRegional != null && gerenciaRegional.length > 0){ consulta += "and grc.id in ( :gerenciaR ) "; } //Cole��o de unidades de neg�cio if(unidadeNegocio != null && unidadeNegocio.length > 0){ consulta += "and unc.id in ( :unidadeN ) "; } //Localidade inicial e final if(idLocalidadeInicial != null && !"".equals(idLocalidadeInicial) && idLocalidadeFinal != null && !"".equals(idLocalidadeFinal)){ consulta +="and locc.id between :localidadeI AND :localidadeF "; } //Setor comercial inicial e final if(idSetorComercialInicial != null && !"".equals(idSetorComercialInicial) && idSetorComercialFinal != null && !"".equals(idSetorComercialFinal)){ consulta +="and scc between :setorI AND :setorF "; } //Quadra inicial e final if(idQuadraInicial != null && !"".equals(idQuadraInicial) && idQuadraFinal != null && !"".equals(idQuadraFinal)){ consulta +="and qc between :quadraI AND :quadraF "; } //Criando a query Query query = sessao.createQuery(consulta); //Inserindo os par�metros nos seus respectivos campos query.setString("comando",comando).setInteger("indicadorExclusao", ConstantesSistema.INDICADOR_IMOVEL_ATIVO ); if(categoriaImovel != null && categoriaImovel.length > 0) query.setParameterList("categoria",categoriaImovel); if(perfilImovel != null && perfilImovel.length > 0) query.setParameterList("perfil",perfilImovel); if(gerenciaRegional != null && gerenciaRegional.length > 0) query.setParameterList("gerenciaR",gerenciaRegional); if(unidadeNegocio != null && unidadeNegocio.length > 0) query.setParameterList("unidadeN",unidadeNegocio); if(idLocalidadeInicial != null && !"".equals(idLocalidadeInicial) && idLocalidadeFinal != null && !"".equals(idLocalidadeFinal)) query.setInteger("localidadeI",new Integer(idLocalidadeInicial)).setInteger("localidadeF",new Integer(idLocalidadeFinal)); if(idSetorComercialInicial != null && !"".equals(idSetorComercialInicial) && idSetorComercialFinal != null && !"".equals(idSetorComercialFinal)) query.setInteger("setorI",new Integer(idSetorComercialInicial)).setInteger("setorF",new Integer(idSetorComercialFinal)); if(idQuadraInicial != null && !"".equals(idQuadraInicial) && idQuadraFinal != null && !"".equals(idQuadraFinal)) query.setInteger("quadraI",new Integer(idQuadraInicial)).setInteger("quadraF",new Integer(idQuadraFinal)); try{ retorno = query.list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(sessao); } return retorno; } /** * [UC1182] Recepcionar Arquivo TXT Encerramento OS Cobran�a * * Consulta chamada pelo "[FS0008 � Validar Motivo Encerramento]" * * @author Mariana Victor * @data 20/06/2011 */ public Boolean verificarAtendimentoMotivoEncerramento(Integer idMotivoEncerramento) throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta; try{ consulta = " SELECT count(*) AS quantidade " //0 + " FROM atendimentopublico.atend_motivo_encmt " + " WHERE amen_id = :idMotivoEncerramento "; retorno = (Integer) session.createSQLQuery(consulta) .addScalar("quantidade", Hibernate.INTEGER) .setInteger("idMotivoEncerramento", idMotivoEncerramento) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } if (retorno != null && retorno.compareTo(new Integer(0)) > 0) { return true; } return false; } /** * [UC1177] Gerar Relat�rio de Ordens de Servi�o por Situa��o * * M�todo auxiliar utilizado para montar toda a estrutura SELECT do relat�rio * de ordem de servico por situa��o. No SELECT, pode haver uma par�metro para ser * passado na query (caso a situa��o da OS seja diferente de 8 (TODAS as OS). * * As colunas resultantes para o relat�rio anal�tico s�o: * * (numeroOS, INTEGER) * (matriculaImovel, INTEGER) * (tipoServico, STRING) * (dataEncerramento, DATE) * (naoCobrada, STRING) * (valorConsumoFraudado, BIG_DECIMAL) * (numeroOS, INTEGER) * (valorMulta, BIG_DECIMAL) * (motivoEncerramento, STRING) * (retornoFiscalizacao, STRING) * (parecerEncerramento, STRING) * (situacaoOS, STRING) * * As colunas resultantes para o relat�rio sint�tico s�o: * * (tipoServico, STRING) * (motivoEncerramento, STRING) * (retornoFiscalizacao, STRING) * (situacaoOS, STRING) * (quantidade, Integer) * * @author Diogo Peixoto * @date 02/08/2011 * * @return String */ private String filtrarRelatorioOSSituacaoSelect(FiltrarRelatorioOSSituacaoHelper helper, boolean boletimGerado, boolean unionFiscalizadas, String situacao){ StringBuilder sb = new StringBuilder(); if(helper.getOpcaoRelatorio().equals("1")){ sb.append("SELECT "); sb.append("orse.orse_id AS numeroOS, "); //0 - N�mero Ordem Servi�o sb.append("imov.imov_id AS matriculaImovel, "); //1 - Matr�cula do Im�vel sb.append("svtp.svtp_dsservicotipo AS tipoServico, "); //2 - Tipo de Servi�o sb.append("orse.orse_tmencerramento AS dataEncerramento, "); //3 - Data Encerramento sb.append("(CASE WHEN ((SELECT COUNT(*) "); sb.append("FROM atendimentopublico.ordem_servico orse2 "); sb.append("INNER JOIN atendimentopublico.fiscaliz_sit_serv_a_cob fzstSit ON fzstSit.fzst_id = orse2.fzst_id "); sb.append("WHERE NOT EXISTS (SELECT dbtCo.imov_id "); sb.append("FROM faturamento.debito_a_cobrar dbtCo "); sb.append("WHERE dbtCo.imov_id = orse2.imov_id AND dbtCo.dbtp_id = fzstSit.dbtp_id AND dbtCo.dbac_tmatudebito = orse2.orse_tmencerramento) "); sb.append("AND NOT EXISTS (SELECT dbtHist.imov_id "); sb.append("FROM faturamento.deb_a_cobrar_hist dbtHist "); sb.append("WHERE dbtHist.imov_id = orse2.imov_id AND dbtHist.dbtp_id = fzstSit.dbtp_id AND dbtHist.dahi_tmatudebito = orse2.orse_tmencerramento) "); sb.append("AND orse2.orse_id = orse.orse_id) > 0) THEN '*' "); sb.append("ELSE '' END) AS naoCobrada, ");//4 - N�o Cobrada Automaticamente sb.append("((SELECT dbac.dbac_vldebito AS valorConsumoFraudado "); sb.append("FROM faturamento.debito_a_cobrar dbac "); sb.append("INNER JOIN faturamento.debito_tipo dbtp ON dbac.dbtp_id = dbtp.dbtp_id "); sb.append("WHERE dbac.imov_id = imov.imov_id AND dbac.dbac_tmatudebito = orse.orse_tmencerramento AND dbtp.dbtp_nncodigoconstante = 206) "); sb.append("UNION "); sb.append("(SELECT dbach.dahi_vldebito AS valorConsumoFraudado "); sb.append("FROM faturamento.deb_a_cobrar_hist dbach "); sb.append("INNER JOIN faturamento.debito_tipo dbtp ON dbach.dbtp_id = dbtp.dbtp_id "); sb.append("WHERE dbach.imov_id = imov.imov_id AND dbach.dahi_tmatudebito = orse.orse_tmencerramento AND dbtp.dbtp_nncodigoconstante = 206)) "); sb.append("AS valorConsumoFraudado, ");//5 - Valor do Consumo Fraudado sb.append("((SELECT dbac.dbac_vldebito AS valorMulta "); sb.append("FROM faturamento.debito_a_cobrar dbac "); sb.append("INNER JOIN faturamento.debito_tipo dbtp ON dbac.dbtp_id = dbtp.dbtp_id "); sb.append("WHERE dbac.imov_id = imov.imov_id AND dbac.dbac_tmatudebito = orse.orse_tmencerramento AND dbtp.dbtp_nncodigoconstante = 205) "); sb.append("UNION "); sb.append("(SELECT dbach.dahi_vldebito AS valorMulta "); sb.append("FROM faturamento.deb_a_cobrar_hist dbach "); sb.append("INNER JOIN faturamento.debito_tipo dbtp ON dbach.dbtp_id = dbtp.dbtp_id "); sb.append("WHERE dbach.imov_id = imov.imov_id AND dbach.dahi_tmatudebito = orse.orse_tmencerramento AND dbtp.dbtp_nncodigoconstante = 205)) "); sb.append("AS valorMulta, ");//6 - Valor da Multa sb.append("encmt.amen_dsmotivoencerramento AS motivoEncerramento, ");//7 - Motivo Encerramento sb.append("fzst.fzst_dsfiscalizacaosituacao AS retornoFiscalizacao, ");//8 - Retorno de Fiscaliza�� sb.append("orse.orse_dsparecerencerramento AS parecerEncerramento ");//9 - Parecer Encerramento }else{ if(!unionFiscalizadas){ sb.append("SELECT "); if(helper.getSituacaoOS().equals("8") || helper.getSituacaoOS().equals("13")){ sb.append("temp.numeroOS, "); } sb.append("temp.tipoServico, ");//1 Tipo de Servi�o sb.append("temp.motivoEncerramento, ");//2 - Motivo Encerramento sb.append("temp.retornoFiscalizacao, ");//3 - Retorno de Fiscaliza��o //Caso a situa��o seja todas, pegar do par�metro a situa��o da os if(helper.getSituacaoOS().equals("8")){ sb.append(situacao); }else{ sb.append("temp.situacaoOS, "); }//4 - Situa��o da Ordem de Servi�o sb.append("SUM(temp.quantidade) AS quantidade ");//5 - Quantidade de OS por tipo/motivo/retorno sb.append("FROM ("); } sb.append("SELECT "); sb.append("orse.orse_id AS numeroOS, "); sb.append("svtp.svtp_dsservicotipo AS tipoServico, "); sb.append("encmt.amen_dsmotivoencerramento AS motivoEncerramento, "); sb.append("fzst.fzst_dsfiscalizacaosituacao AS retornoFiscalizacao, "); if(helper.getSituacaoOS().equals("13")){ sb.append(situacao); } sb.append("1 AS quantidade "); } /*Se a situa��o da OS for diferente de TODAS, os registros encontrados ser�o * da situa��o passada no filtro. */ if(!helper.getSituacaoOS().equals("8") && !helper.getSituacaoOS().equals("13")){ sb.append(", :situacaoOS AS situacaoOS ");//10 - Situa��o da Ordem de Servi�o } return sb.toString(); } /** * [UC1177] Gerar Relat�rio de Ordens de Servi�o por Situa��o * * O segundo par�metro (boletimGerado) � um booleano que * indica se para um dado grupo de cobran�a e um m�s referencia * foi gerado um boletim de medi��o. * * @author Diogo Peixoto * @date 09/06/2011 * * @param FiltrarRelatorioOSSituacaoHelper * @param boletimGerado * @return Collection<FiltrarRelatorioOSSituacaoHelper> * @throws ErroRepositorioException */ public Collection<Object[]> filtrarRelatorioOSSituacao(FiltrarRelatorioOSSituacaoHelper helper, boolean boletimGerado) throws ErroRepositorioException{ Collection<Object[]> relatorios = new ArrayList<Object[]>(); /* * Esse m�todo pesquisa as ordens de servi�o por situa��o. O helper do par�metro * possui a situa��o da os com os seguintes valores: * * 1 Descontadas * 2 Encerradas * 3 Executadas * 4 Fiscalizadas * 5 Justificadas * 6 Penalizadas por Fiscaliza��o * 7 Penalizadas por Decurso de Prazo * 8 Todas * 9 Encerradas com Execu��o * 10 Encerradas por Decurso de Prazo * 11 Pendentes * 12 Fiscalizadas Boletim N�o Gerado * 13 Todas Boletim N�o Gerado * */ Session session = HibernateUtil.getSession(); String consulta = ""; Map<String, Object> parameters = new HashMap<String, Object>(); StringBuilder sb = new StringBuilder(); StringBuilder sbParametrosOpcionais = new StringBuilder(); String clausulaWhere = ""; String groupBy = ""; String orderBy = ""; try { if(!helper.getSituacaoOS().equals("2") && !helper.getSituacaoOS().equals("4") && !helper.getSituacaoOS().equals("8") && !helper.getSituacaoOS().equals("13")){ sb.append(this.filtrarRelatorioOSSituacaoSelect(helper, boletimGerado, false, null)); sb.append("FROM atendimentopublico.ordem_servico orse "); } //Descontadas if(helper.getSituacaoOS().equals("1")){ sb.append(this.filtrarRelatorioOSSituacaoDescontadas()); parameters.put("situacaoOS", "DESCONTADAS"); //Executadas }else if(helper.getSituacaoOS().equals("3")){ sb.append(this.filtrarRelatorioOSSituacaoExecutadas()); parameters.put("situacaoOS", "EXECUTADAS"); //Justificadas }else if(helper.getSituacaoOS().equals("5")){ sb.append(this.filtrarRelatorioOSSituacaoJustificadas()); parameters.put("situacaoOS", "JUSTIFICADAS"); //Penalizadas por fiscaliza��o }else if(helper.getSituacaoOS().equals("6")){ sb.append(this.filtrarRelatorioOSSituacaoPenalizadaFiscalizacao()); parameters.put("situacaoOS", "PENALIZADAS POR FISCALIZA��O"); //Penalizadas por Decurso de Prazo }else if(helper.getSituacaoOS().equals("7")){ sb.append(this.filtrarRelatorioOSSituacaoPenalizadaDecursoPrazo()); parameters.put("situacaoOS", "PENALIZADAS POR DECURSO DE PRAZO"); //Encerradas com Execu��o }else if(helper.getSituacaoOS().equals("9")){ sb.append(this.filtrarRelatorioOSSituacaoBoletimNaoGerado()); clausulaWhere += " AND orse.orse_cdsituacao = 2 AND orse.amen_id != 32 AND encmt.amen_icexecucao = 1 "; parameters.put("situacaoOS", "ENCERRADAS COM EXECU��O"); //Pendentes }else if(helper.getSituacaoOS().equals("11")){ sb.append(this.filtrarRelatorioOSSituacaoBoletimNaoGerado()); clausulaWhere += " AND orse.orse_cdsituacao = 1 "; parameters.put("situacaoOS", "PENDENTES"); //Fiscalizadas Boletim N�o Gerado }else if(helper.getSituacaoOS().equals("12")){ sb.append(this.filtrarRelatorioOSSituacaoBoletimNaoGerado()); sb.append("INNER JOIN atendimentopublico.ordem_servico orseRef ON orseRef.orse_idreferencia = orse.orse_id "); parameters.put("situacaoOS", "FISCALIZADAS"); //Encerradas com decurso de prazo }else if(helper.getSituacaoOS().equals("10")){ sb.append(this.filtrarRelatorioOSSituacaoBoletimNaoGerado()); clausulaWhere += " AND orse.orse_cdsituacao = 2 AND orse.amen_id = 32 "; parameters.put("situacaoOS", "ENCERRADAS COM DECURSO DE PRAZO"); } if(helper.getOpcaoOSCobranca() != null && helper.getOpcaoOSCobranca().equalsIgnoreCase("naoCobradasAutomaticamente")){ sbParametrosOpcionais.append("INNER JOIN atendimentopublico.fiscaliz_sit_serv_a_cob fiscACobrar ON orse.fzst_id = fiscACobrar.fzst_id "); clausulaWhere += " AND NOT EXISTS (SELECT dbtCo.imov_id "; clausulaWhere += "FROM faturamento.debito_a_cobrar dbtCo "; clausulaWhere += "WHERE dbtCo.imov_id = orse.imov_id AND dbtCo.dbtp_id = fiscACobrar.dbtp_id AND dbtCo.dbac_tmatudebito = orse.orse_tmencerramento) "; clausulaWhere += " AND NOT EXISTS (SELECT dbtHist.imov_id "; clausulaWhere += " FROM faturamento.deb_a_cobrar_hist dbtHist "; clausulaWhere += " WHERE dbtHist.imov_id = orse.imov_id AND dbtHist.dbtp_id = fiscACobrar.dbtp_id AND dbtHist.dahi_tmatudebito = orse.orse_tmencerramento) "; } if(helper.getServicoTipo() != null){ clausulaWhere += " AND orse.svtp_id = :servicoTipo "; parameters.put("servicoTipo", helper.getServicoTipo().getId()); } boolean existeLocalidade; existeLocalidade = (helper.getLocalidade() != null ? existeLocalidade = true : false); // Localidade if(existeLocalidade){ sbParametrosOpcionais.append("INNER JOIN cadastro.localidade loca ON loca.loca_id = imov.loca_id "); clausulaWhere += " AND loca.loca_id = :idLocalidade "; parameters.put("idLocalidade", helper.getLocalidade().getId()); } if(helper.getEloPolo() != null){ // Elo Polo if(!existeLocalidade){ sbParametrosOpcionais.append("INNER JOIN cadastro.localidade loca ON loca.loca_id = imov.loca_id "); existeLocalidade = true; } clausulaWhere += " AND loca.loca_cdelo = :idEloPolo "; parameters.put("idEloPolo", helper.getEloPolo().getId()); } // Ger�ncia Regional GerenciaRegional gerencia = helper.getGerenciaRegional(); if(gerencia != null){ if(existeLocalidade){ sbParametrosOpcionais.append("INNER JOIN cadastro.gerencia_regional ger ON ger.greg_id = loca.greg_id "); }else{ sbParametrosOpcionais.append("INNER JOIN cadastro.localidade loca ON loca.loca_id = imov.loca_id "); sbParametrosOpcionais.append("INNER JOIN cadastro.gerencia_regional ger ON ger.greg_id = loca.greg_id "); existeLocalidade = true; } clausulaWhere += " AND ger.greg_id = :idGerencia "; parameters.put("idGerencia", gerencia.getId()); } // Unidade Neg�cio UnidadeNegocio unidade = helper.getUnidadeNegocio(); if(unidade != null){ if(existeLocalidade){ sbParametrosOpcionais.append("INNER JOIN cadastro.unidade_negocio uni ON uni.uneg_id = loca.uneg_id "); }else{ sbParametrosOpcionais.append("INNER JOIN cadastro.localidade loca ON loca.loca_id = imov.loca_id "); sbParametrosOpcionais.append("INNER JOIN cadastro.unidade_negocio uni ON uni.uneg_id = loca.uneg_id "); } clausulaWhere += " AND uni.uneg_id = :idUnidade "; parameters.put("idUnidade", unidade.getId()); } // Setor Comercial if(helper.getSetorComercial() != null){ sbParametrosOpcionais.append("INNER JOIN cadastro.setor_comercial setor ON setor.stcm_id = imov.stcm_id "); clausulaWhere += " AND setor.stcm_id = :idSetor "; parameters.put("idSetor", helper.getSetorComercial().getId()); } // Quadra if(helper.getQuadra() != null){ sbParametrosOpcionais.append("INNER JOIN cadastro.quadra quadra ON quadra.qdra_id = imov.qdra_id "); clausulaWhere += " AND quadra.qdra_id = :idQuadra "; parameters.put("idQuadra", helper.getQuadra().getId()); } if(helper.getSituacaoOS().equals("2")){ if(helper.getOpcaoRelatorio().equals("1")){ sb.append("SELECT DISTINCT aux.numeroOS, "); sb.append("aux.matriculaImovel, "); sb.append("aux.tipoServico, "); sb.append("aux.dataEncerramento, "); sb.append("aux.naoCobrada, "); sb.append("aux.valorConsumoFraudado, "); sb.append("aux.valorMulta, "); sb.append("aux.motivoEncerramento, "); sb.append("aux.retornoFiscalizacao, "); sb.append("aux.parecerEncerramento, "); sb.append("aux.situacaoOS "); }else if(helper.getOpcaoRelatorio().equals("2")){ sb.append("SELECT DISTINCT aux.tipoServico, "); sb.append("aux.motivoEncerramento, "); sb.append("aux.retornoFiscalizacao, "); sb.append("aux.situacaoOS AS situacaoOS, "); sb.append("SUM(aux.quantidade) AS quantidade "); } sb.append("FROM ("); sb.append(this.filtrarRelatorioOSSituacaoSelect(helper, boletimGerado, true, null)); sb.append("FROM atendimentopublico.ordem_servico orse "); sb.append(this.filtrarRelatorioOSSituacaoExecutadas()); sb.append(sbParametrosOpcionais.toString()); if(!clausulaWhere.trim().equals("")){ sb.append(" WHERE "); clausulaWhere = clausulaWhere.replaceFirst("AND", ""); sb.append(clausulaWhere); } sb.append(" UNION ALL "); sb.append(this.filtrarRelatorioOSSituacaoSelect(helper, boletimGerado, true, null)); sb.append("FROM atendimentopublico.ordem_servico orse "); sb.append(this.filtrarRelatorioOSSituacaoJustificadas()); sb.append(sbParametrosOpcionais.toString()); if(!clausulaWhere.trim().equals("")){ sb.append(" WHERE "); clausulaWhere = clausulaWhere.replaceFirst("AND", ""); sb.append(clausulaWhere); } sb.append(") aux"); parameters.put("situacaoOS", "ENCERRADAS"); }else if (helper.getSituacaoOS().equals("4")){ sb.append(this.filtrarRelatorioOSSituacaoSelect(helper, boletimGerado, false, null)); sb.append("FROM atendimentopublico.ordem_servico orse "); sb.append(this.filtrarRelatorioOSSituacaoFiscalizadas(helper, boletimGerado, sbParametrosOpcionais.toString(), clausulaWhere)); parameters.put("situacaoOS", "FISCALIZADAS"); }else if(helper.getSituacaoOS().equals("8") || helper.getSituacaoOS().equals("13")){ sb.append(this.filtrarRelatorioOSSituacaoTodas(helper, boletimGerado, sbParametrosOpcionais.toString(), clausulaWhere)); }else{ sb.append(sbParametrosOpcionais.toString()); } if(!clausulaWhere.equals("") && !helper.getSituacaoOS().equals("2") && !helper.getSituacaoOS().equals("4") && !helper.getSituacaoOS().equals("8") && !helper.getSituacaoOS().equals("13")){ /* * Este trecho do c�digo retira o primeiro AND da cl�usula where e adiciona espa�o em branco * na �ltima compara��o para n�o dar erro na query. * Ex: 'WHERE AND os.orse_id' => 'WHERE os.orse_id ' */ sb.append("WHERE "); clausulaWhere = clausulaWhere.trim(); clausulaWhere = clausulaWhere.replaceFirst("AND", ""); clausulaWhere += " "; sb.append(clausulaWhere); } //Caso seja o relat�rio sint�tico if(helper.getOpcaoRelatorio().equals("2") && !helper.getSituacaoOS().equals("8") && !helper.getSituacaoOS().equals("13")){ groupBy += " GROUP BY tipoServico, motivoEncerramento, retornoFiscalizacao, situacaoOS "; orderBy += " ORDER BY tipoServico, motivoEncerramento, retornoFiscalizacao "; if(!helper.getSituacaoOS().equals("2")){ sb.append(") temp"); } } sb.append(groupBy); sb.append(orderBy); consulta = sb.toString(); SQLQuery sqlQuery = session.createSQLQuery(consulta); sqlQuery.setInteger("amReferencia", helper.getDataReferencia()); sqlQuery.setInteger("cobrancaGrupoID", helper.getIdGrupoCobranca()); if(helper.getOpcaoRelatorio().equalsIgnoreCase("1")){ sqlQuery = sqlQuery.addScalar("numeroOS",Hibernate.INTEGER). addScalar("matriculaImovel",Hibernate.INTEGER). addScalar("tipoServico",Hibernate.STRING). addScalar("dataEncerramento",Hibernate.DATE). addScalar("naoCobrada", Hibernate.STRING). addScalar("valorConsumoFraudado", Hibernate.BIG_DECIMAL). addScalar("valorMulta", Hibernate.BIG_DECIMAL). addScalar("motivoEncerramento", Hibernate.STRING). addScalar("retornoFiscalizacao", Hibernate.STRING). addScalar("parecerEncerramento", Hibernate.STRING). addScalar("situacaoOS", Hibernate.STRING); }else{ sqlQuery = sqlQuery.addScalar("tipoServico",Hibernate.STRING). addScalar("motivoEncerramento",Hibernate.STRING). addScalar("retornoFiscalizacao",Hibernate.STRING). addScalar("situacaoOS",Hibernate.STRING). addScalar("quantidade",Hibernate.INTEGER); } //ITERA OS PARAMETROS E COLOCA // OS MESMOS NA QUERY Set<String> set = parameters.keySet(); Iterator<String> iterMap = set.iterator(); while (iterMap.hasNext()) { String key = iterMap.next(); sqlQuery.setParameter(key, parameters.get(key)); } relatorios = sqlQuery.list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return relatorios; } private String filtrarRelatorioOSSituacaoTodas(FiltrarRelatorioOSSituacaoHelper filtro, boolean boletimGerado, String joins, String where){ StringBuilder sb = new StringBuilder(); if(boletimGerado){ if(filtro.getOpcaoRelatorio().equals("1")){ sb.append("SELECT aux4.numeroOS AS numeroOS, "); sb.append("aux4.matriculaImovel AS matriculaImovel, "); sb.append("aux4.tipoServico AS tipoServico, "); sb.append("aux4.dataEncerramento AS dataEncerramento, "); sb.append("aux4.naoCobrada AS naoCobrada, "); sb.append("aux4.valorConsumoFraudado AS valorConsumoFraudado, "); sb.append("aux4.valorMulta AS valorMulta, "); sb.append("aux4.motivoEncerramento AS motivoEncerramento, "); sb.append("aux4.retornoFiscalizacao AS retornoFiscalizacao, "); sb.append("aux4.parecerEncerramento, "); sb.append("aux4.SITUACAO AS situacaoOS "); sb.append("FROM ("); sb.append("SELECT aux3.numeroOS, "); sb.append("aux3.matriculaImovel, "); sb.append("aux3.tipoServico, "); sb.append("aux3.dataEncerramento, "); sb.append("aux3.naoCobrada, "); sb.append("aux3.valorConsumoFraudado, "); sb.append("aux3.valorMulta, "); sb.append("aux3.motivoEncerramento, "); sb.append("aux3.retornoFiscalizacao, "); sb.append("aux3.parecerEncerramento, "); sb.append("min(aux3.Situacao) as SITUACAO "); sb.append("FROM ("); sb.append("SELECT aux.numeroOS, "); sb.append("aux.matriculaImovel, "); sb.append("aux.tipoServico, "); sb.append("aux.dataEncerramento, "); sb.append("aux.naoCobrada, "); sb.append("aux.valorConsumoFraudado, "); sb.append("aux.valorMulta, "); sb.append("aux.motivoEncerramento, "); sb.append("aux.retornoFiscalizacao, "); sb.append("aux.parecerEncerramento, "); sb.append("1 AS SITUACAO "); sb.append("FROM ("); sb.append(this.filtrarRelatorioOSSituacaoSelect(filtro, boletimGerado, false, null)); sb.append("FROM atendimentopublico.ordem_servico orse "); sb.append(this.filtrarRelatorioOSSituacaoFiscalizadas(filtro, boletimGerado, joins, where)); sb.append(") aux "); sb.append("UNION ALL "); sb.append(this.filtrarRelatorioOSSituacaoSelect(filtro, boletimGerado, false, null)); sb.append(", 2 AS SITUACAO "); sb.append("FROM atendimentopublico.ordem_servico orse "); sb.append(this.filtrarRelatorioOSSituacaoDescontadas()); sb.append(joins); String whereTratado = ""; if(!where.trim().equals("")){ sb.append("WHERE "); whereTratado = where.trim(); whereTratado = whereTratado.replaceFirst("AND", ""); whereTratado += " "; } sb.append(whereTratado); sb.append(" UNION ALL "); sb.append(this.filtrarRelatorioOSSituacaoSelect(filtro, boletimGerado, false, null)); sb.append(", 3 AS SITUACAO "); sb.append("FROM atendimentopublico.ordem_servico orse "); sb.append(this.filtrarRelatorioOSSituacaoExecutadas()); sb.append(joins); whereTratado = ""; if(!where.trim().equals("")){ sb.append("WHERE "); whereTratado = where.trim(); whereTratado = whereTratado.replaceFirst("AND", ""); whereTratado += " "; } sb.append(whereTratado); sb.append(" UNION ALL "); sb.append(this.filtrarRelatorioOSSituacaoSelect(filtro, boletimGerado, false, null)); sb.append(", 4 AS SITUACAO "); sb.append("FROM atendimentopublico.ordem_servico orse "); sb.append(this.filtrarRelatorioOSSituacaoJustificadas()); sb.append(joins); whereTratado = ""; if(!where.trim().equals("")){ sb.append("WHERE "); whereTratado = where.trim(); whereTratado = whereTratado.replaceFirst("AND", ""); whereTratado += " "; } sb.append(whereTratado); sb.append(" UNION ALL "); sb.append(this.filtrarRelatorioOSSituacaoSelect(filtro, boletimGerado, false, null)); sb.append(", 5 AS SITUACAO "); sb.append("FROM atendimentopublico.ordem_servico orse "); sb.append(this.filtrarRelatorioOSSituacaoPenalizadaFiscalizacao()); sb.append(joins); whereTratado = ""; if(!where.trim().equals("")){ sb.append("WHERE "); whereTratado = where.trim(); whereTratado = whereTratado.replaceFirst("AND", ""); whereTratado += " "; } sb.append(whereTratado); sb.append(" UNION ALL "); sb.append(this.filtrarRelatorioOSSituacaoSelect(filtro, boletimGerado, false, null)); sb.append(", 6 AS SITUACAO "); sb.append("FROM atendimentopublico.ordem_servico orse "); sb.append(this.filtrarRelatorioOSSituacaoPenalizadaDecursoPrazo()); sb.append(joins); whereTratado = ""; if(!where.trim().equals("")){ sb.append("WHERE "); whereTratado = where.trim(); whereTratado = whereTratado.replaceFirst("AND", ""); whereTratado += " "; } sb.append(whereTratado); sb.append(") aux3 "); sb.append("GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 "); sb.append("ORDER BY 11, 2 "); sb.append(") aux4 "); sb.append("ORDER BY 11, 1 "); }else if(filtro.getOpcaoRelatorio().equals("2")){ sb.append("SELECT "); if(filtro.getSituacaoOS().equals("8") || filtro.getSituacaoOS().equals("13")){ sb.append("aux4.numeroOS, "); } sb.append("aux4.tipoServico AS tipoServico, "); sb.append("aux4.motivoEncerramento AS motivoEncerramento, "); sb.append("aux4.retornoFiscalizacao AS retornoFiscalizacao, "); sb.append("aux4.situacaoOS AS situacaoOS, "); sb.append("aux4.quantidade AS quantidade "); sb.append("FROM( "); sb.append("SELECT aux3.numeroOS, "); sb.append("aux3.tipoServico, "); sb.append("aux3.motivoEncerramento, "); sb.append("aux3.retornoFiscalizacao, "); sb.append("min(aux3.situacaoOS) as situacaoOS, "); sb.append("aux3.quantidade AS quantidade "); sb.append("FROM( "); sb.append(this.filtrarRelatorioOSSituacaoSelect(filtro, boletimGerado, false, "1 AS situacaoOS, ")); sb.append("FROM atendimentopublico.ordem_servico orse "); sb.append(this.filtrarRelatorioOSSituacaoFiscalizadas(filtro, boletimGerado, joins, where)); sb.append(") temp "); sb.append("GROUP BY numeroOS, tipoServico, motivoEncerramento, retornoFiscalizacao "); sb.append(" UNION ALL "); sb.append(this.filtrarRelatorioOSSituacaoSelect(filtro, boletimGerado, false, "2 AS situacaoOS, ")); sb.append("FROM atendimentopublico.ordem_servico orse "); sb.append(this.filtrarRelatorioOSSituacaoDescontadas()); sb.append(joins); String whereTratado = ""; if(!where.trim().equals("")){ sb.append("WHERE "); whereTratado = where.trim(); whereTratado = whereTratado.replaceFirst("AND", ""); whereTratado += " "; } sb.append(whereTratado); sb.append(") temp "); sb.append("GROUP BY numeroOS, tipoServico, motivoEncerramento, retornoFiscalizacao "); sb.append(" UNION ALL "); sb.append(this.filtrarRelatorioOSSituacaoSelect(filtro, boletimGerado, false, "3 AS situacaoOS, ")); sb.append("FROM atendimentopublico.ordem_servico orse "); sb.append(this.filtrarRelatorioOSSituacaoExecutadas()); sb.append(joins); whereTratado = ""; if(!where.trim().equals("")){ sb.append("WHERE "); whereTratado = where.trim(); whereTratado = whereTratado.replaceFirst("AND", ""); whereTratado += " "; } sb.append(whereTratado); sb.append(") temp "); sb.append("GROUP BY numeroOS, tipoServico, motivoEncerramento, retornoFiscalizacao "); sb.append(" UNION ALL "); sb.append(this.filtrarRelatorioOSSituacaoSelect(filtro, boletimGerado, false, "4 AS situacaoOS, ")); sb.append("FROM atendimentopublico.ordem_servico orse "); sb.append(this.filtrarRelatorioOSSituacaoJustificadas()); sb.append(joins); whereTratado = ""; if(!where.trim().equals("")){ sb.append("WHERE "); whereTratado = where.trim(); whereTratado = whereTratado.replaceFirst("AND", ""); whereTratado += " "; } sb.append(whereTratado); sb.append(") temp "); sb.append("GROUP BY numeroOS, tipoServico, motivoEncerramento, retornoFiscalizacao "); sb.append(" UNION ALL "); sb.append(this.filtrarRelatorioOSSituacaoSelect(filtro, boletimGerado, false, "5 AS situacaoOS, ")); sb.append("FROM atendimentopublico.ordem_servico orse "); sb.append(this.filtrarRelatorioOSSituacaoPenalizadaFiscalizacao()); sb.append(joins); whereTratado = ""; if(!where.trim().equals("")){ sb.append("WHERE "); whereTratado = where.trim(); whereTratado = whereTratado.replaceFirst("AND", ""); whereTratado += " "; } sb.append(whereTratado); sb.append(") temp "); sb.append("GROUP BY numeroOS, tipoServico, motivoEncerramento, retornoFiscalizacao "); sb.append(" UNION ALL "); sb.append(this.filtrarRelatorioOSSituacaoSelect(filtro, boletimGerado, false, "6 AS situacaoOS, ")); sb.append("FROM atendimentopublico.ordem_servico orse "); sb.append(this.filtrarRelatorioOSSituacaoPenalizadaDecursoPrazo()); sb.append(joins); whereTratado = ""; if(!where.trim().equals("")){ sb.append("WHERE "); whereTratado = where.trim(); whereTratado = whereTratado.replaceFirst("AND", ""); whereTratado += " "; } sb.append(whereTratado); sb.append(") temp "); sb.append("GROUP BY numeroOS, tipoServico, motivoEncerramento, retornoFiscalizacao "); sb.append(") aux3 "); if(filtro.getSituacaoOS().equals("8") || filtro.getSituacaoOS().equals("13")){ sb.append("GROUP BY 1, 2, 3, 4, 6 "); sb.append("ORDER BY 1, 2 "); sb.append(") aux4 "); sb.append("ORDER BY 5, 2, 3, 4 "); }else{ sb.append("GROUP BY 1, 2, 3, 5 "); sb.append("ORDER BY 1, 2 "); sb.append(") aux4 "); sb.append("ORDER BY 4, 1, 2, 3, 5"); } } }else{ if(filtro.getOpcaoRelatorio().equals("1")){ sb.append("SELECT aux4.numeroOS, "); sb.append("aux4.matriculaImovel, "); sb.append("aux4.tipoServico, "); sb.append("aux4.dataEncerramento, "); sb.append("aux4.naoCobrada, "); sb.append("aux4.valorConsumoFraudado, "); sb.append("aux4.valorMulta, "); sb.append("aux4.motivoEncerramento, "); sb.append("aux4.retornoFiscalizacao, "); sb.append("aux4.parecerEncerramento, "); sb.append("aux4.SITUACAO AS situacaoOS "); sb.append("FROM ("); sb.append("SELECT "); sb.append("aux3.numeroOS, "); sb.append("aux3.matriculaImovel, "); sb.append("aux3.tipoServico, "); sb.append("aux3.dataEncerramento, "); sb.append("aux3.naoCobrada, "); sb.append("aux3.valorConsumoFraudado, "); sb.append("aux3.valorMulta, "); sb.append("aux3.motivoEncerramento, "); sb.append("aux3.retornoFiscalizacao, "); sb.append("aux3.parecerEncerramento, "); sb.append("min(aux3.situacaoOS) as SITUACAO "); sb.append("FROM ("); sb.append(this.filtrarRelatorioOSSituacaoSelect(filtro, boletimGerado, false, null)); sb.append(", 7 AS situacaoOS "); sb.append("FROM atendimentopublico.ordem_servico orse "); sb.append(this.filtrarRelatorioOSSituacaoBoletimNaoGerado()); sb.append("INNER JOIN atendimentopublico.ordem_servico orseRef ON orseRef.orse_idreferencia = orse.orse_id "); sb.append(joins); String whereTratado = ""; if(!where.trim().equals("")){ sb.append("WHERE "); whereTratado = where.trim(); whereTratado = whereTratado.replaceFirst("AND", ""); whereTratado += " "; } sb.append(whereTratado); sb.append(" UNION ALL "); sb.append(this.filtrarRelatorioOSSituacaoSelect(filtro, boletimGerado, false, null)); sb.append(", 8 AS situacaoOS "); sb.append("FROM atendimentopublico.ordem_servico orse "); sb.append(this.filtrarRelatorioOSSituacaoBoletimNaoGerado()); sb.append(joins); sb.append("WHERE orse.orse_cdsituacao = 2 AND orse.amen_id != 32 AND encmt.amen_icexecucao = 1 "); sb.append(where); sb.append(" UNION ALL "); sb.append(this.filtrarRelatorioOSSituacaoSelect(filtro, boletimGerado, false, null)); sb.append(", 9 AS situacaoOS "); sb.append("FROM atendimentopublico.ordem_servico orse "); sb.append(this.filtrarRelatorioOSSituacaoBoletimNaoGerado()); sb.append(joins); sb.append("WHERE orse.orse_cdsituacao = 1 "); sb.append(where); sb.append(" UNION ALL "); sb.append(this.filtrarRelatorioOSSituacaoSelect(filtro, boletimGerado, false, null)); sb.append(", 10 AS situacaoOS "); sb.append("FROM atendimentopublico.ordem_servico orse "); sb.append(this.filtrarRelatorioOSSituacaoBoletimNaoGerado()); sb.append(joins); sb.append("WHERE orse.orse_cdsituacao = 2 AND orse.amen_id = 32 "); sb.append(where); sb.append(") aux3 "); sb.append("GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 "); sb.append("ORDER BY 1, 2 "); sb.append(") aux4 ORDER BY 11, 1 "); }else if(filtro.getOpcaoRelatorio().equals("2")){ sb.append("SELECT "); if(filtro.getSituacaoOS().equals("8") || filtro.getSituacaoOS().equals("13")){ sb.append("aux4.numeroOS, "); } sb.append("aux4.tipoServico, "); sb.append("aux4.motivoEncerramento, "); sb.append("aux4.retornoFiscalizacao, "); sb.append("aux4.SITUACAO AS situacaoOS, "); sb.append("aux4.quantidade AS quantidade "); sb.append("FROM ("); sb.append("SELECT "); sb.append("aux3.numeroOS, "); sb.append("aux3.tipoServico, "); sb.append("aux3.motivoEncerramento, "); sb.append("aux3.retornoFiscalizacao, "); sb.append("min(aux3.situacaoOS) AS SITUACAO, "); sb.append("aux3.quantidade AS quantidade "); sb.append("FROM ("); sb.append(this.filtrarRelatorioOSSituacaoSelect(filtro, boletimGerado, true, " 7 AS situacaoOS, ")); sb.append("FROM atendimentopublico.ordem_servico orse "); sb.append(this.filtrarRelatorioOSSituacaoBoletimNaoGerado()); sb.append("INNER JOIN atendimentopublico.ordem_servico orseRef ON orseRef.orse_idreferencia = orse.orse_id "); sb.append(joins); String whereTratado = ""; if(!where.trim().equals("")){ whereTratado = where.trim(); whereTratado = whereTratado.replaceFirst("AND", ""); sb.append("WHERE "); whereTratado += " "; } sb.append(whereTratado); sb.append(" UNION ALL "); sb.append(this.filtrarRelatorioOSSituacaoSelect(filtro, boletimGerado, true, " 8 AS situacaoOS, ")); sb.append("FROM atendimentopublico.ordem_servico orse "); sb.append(this.filtrarRelatorioOSSituacaoBoletimNaoGerado()); sb.append(joins); sb.append("WHERE orse.orse_cdsituacao = 2 AND orse.amen_id != 32 AND encmt.amen_icexecucao = 1 "); sb.append(where); sb.append(" UNION ALL "); sb.append(this.filtrarRelatorioOSSituacaoSelect(filtro, boletimGerado, true, " 9 AS situacaoOS, ")); sb.append("FROM atendimentopublico.ordem_servico orse "); sb.append(this.filtrarRelatorioOSSituacaoBoletimNaoGerado()); sb.append(joins); sb.append("WHERE orse.orse_cdsituacao = 1 "); sb.append(where); sb.append(" UNION ALL "); sb.append(this.filtrarRelatorioOSSituacaoSelect(filtro, boletimGerado, true, " 10 AS situacaoOS, ")); sb.append("FROM atendimentopublico.ordem_servico orse "); sb.append(this.filtrarRelatorioOSSituacaoBoletimNaoGerado()); sb.append(joins); sb.append("WHERE orse.orse_cdsituacao = 2 AND orse.amen_id = 32 "); sb.append(where); if(filtro.getSituacaoOS().equals("8") || filtro.getSituacaoOS().equals("13")){ sb.append(") aux3 GROUP BY 1, 2, 3, 4, 6 "); sb.append(") aux4 ORDER BY 5, 2, 3, 4, 1 "); }else{ sb.append(") aux3 GROUP BY 1, 2, 3 "); sb.append(") aux4 ORDER BY 4, 1, 2, 3 "); } } } return sb.toString(); } /** * [UC1177] Gerar Relat�rio de Ordens de Servi�o por Situa��o * * M�todo auxiliar para a gera��o do relat�rio de ordem de servi�o * por situa��o. * * @return String */ private String filtrarRelatorioOSSituacaoDescontadas(){ StringBuilder sb = new StringBuilder(); sb.append("INNER JOIN cobranca.cobr_boletim_desc desco ON desco.orse_id = orse.orse_id "); sb.append("INNER JOIN cobranca.cobr_boletim_medicao medicao ON desco.cobm_id = medicao.cobm_id AND "); sb.append("medicao.cbgr_id = :cobrancaGrupoID AND medicao.cobm_amreferencia = :amReferencia "); sb.append("INNER JOIN cadastro.imovel imov ON orse.imov_id = imov.imov_id "); sb.append("LEFT OUTER JOIN atendimentopublico.servico_tipo svtp ON svtp.svtp_id = orse.svtp_id "); sb.append("LEFT OUTER JOIN atendimentopublico.atend_motivo_encmt encmt ON encmt.amen_id = orse.amen_id "); sb.append("LEFT OUTER JOIN atendimentopublico.fiscalizacao_situacao fzst ON fzst.fzst_id = orse.fzst_id "); return sb.toString(); } /** * [UC1177] Gerar Relat�rio de Ordens de Servi�o por Situa��o * * M�todo auxiliar para a gera��o do relat�rio de ordem de servi�o * por situa��o. * * @return String */ private String filtrarRelatorioOSSituacaoExecutadas(){ StringBuilder sb = new StringBuilder(); sb.append("INNER JOIN cobranca.cobr_boletim_exec execu ON execu.orse_id = orse.orse_id "); sb.append("INNER JOIN cobranca.cobr_boletim_medicao medicao ON execu.cobm_id = medicao.cobm_id AND "); sb.append("medicao.cbgr_id = :cobrancaGrupoID AND medicao.cobm_amreferencia = :amReferencia "); sb.append("INNER JOIN cadastro.imovel imov ON orse.imov_id = imov.imov_id "); sb.append("LEFT OUTER JOIN atendimentopublico.servico_tipo svtp ON svtp.svtp_id = orse.svtp_id "); sb.append("LEFT OUTER JOIN atendimentopublico.atend_motivo_encmt encmt ON encmt.amen_id = orse.amen_id "); sb.append("LEFT OUTER JOIN atendimentopublico.fiscalizacao_situacao fzst ON fzst.fzst_id = orse.fzst_id "); return sb.toString(); } /** * [UC1177] Gerar Relat�rio de Ordens de Servi�o por Situa��o * * M�todo auxiliar para a gera��o do relat�rio de ordem de servi�o * por situa��o. * * @return String */ private String filtrarRelatorioOSSituacaoJustificadas(){ StringBuilder sb = new StringBuilder(); sb.append("INNER JOIN cobranca.cobranca_documento cbdo ON cbdo.cbdo_id = orse.cbdo_id AND orse.orse_cdsituacao = 2 "); sb.append("INNER JOIN cobranca.cobranca_acao_ativ_crg caac ON caac.caac_id = cbdo.caac_id "); sb.append("INNER JOIN cobranca.cobranca_acao_cronograma cbcr ON cbcr.cbcr_id = caac.cbcr_id "); sb.append("INNER JOIN cobranca.cobranca_grupo_crg_mes cbcm ON cbcm.cbcm_id = cbcr.cbcm_id AND cbcm.cbgr_id = :cobrancaGrupoID "); sb.append("AND cbcm.cbcm_amreferencia = :amReferencia "); sb.append("INNER JOIN cadastro.imovel imov ON orse.imov_id = imov.imov_id "); sb.append("LEFT OUTER JOIN atendimentopublico.servico_tipo svtp ON svtp.svtp_id = orse.svtp_id "); sb.append("INNER JOIN atendimentopublico.atend_motivo_encmt encmt ON encmt.amen_id = orse.amen_id AND encmt.amen_icexecucao = 2 "); sb.append("LEFT OUTER JOIN atendimentopublico.fiscalizacao_situacao fzst ON fzst.fzst_id = orse.fzst_id "); return sb.toString(); } /** * [UC1177] Gerar Relat�rio de Ordens de Servi�o por Situa��o * * M�todo auxiliar para a gera��o do relat�rio de ordem de servi�o * por situa��o. * * @return String */ private String filtrarRelatorioOSSituacaoBoletimNaoGerado(){ StringBuilder sb = new StringBuilder(); sb.append("INNER JOIN cobranca.cobranca_documento cbdo ON cbdo.cbdo_id = orse.cbdo_id "); sb.append("INNER JOIN cobranca.cobranca_acao_ativ_crg caac ON caac.caac_id = cbdo.caac_id "); sb.append("INNER JOIN cobranca.cobranca_acao_cronograma cbcr ON cbcr.cbcr_id = caac.cbcr_id "); sb.append("INNER JOIN cobranca.cobranca_grupo_crg_mes cbcm ON cbcm.cbcm_id = cbcr.cbcm_id AND cbcm.cbgr_id = :cobrancaGrupoID "); sb.append("AND cbcm.cbcm_amreferencia = :amReferencia "); sb.append("INNER JOIN cadastro.imovel imov ON orse.imov_id = imov.imov_id "); sb.append("LEFT OUTER JOIN atendimentopublico.servico_tipo svtp ON svtp.svtp_id = orse.svtp_id "); sb.append("LEFT OUTER JOIN atendimentopublico.atend_motivo_encmt encmt ON encmt.amen_id = orse.amen_id "); sb.append("LEFT OUTER JOIN atendimentopublico.fiscalizacao_situacao fzst ON fzst.fzst_id = orse.fzst_id "); return sb.toString(); } /** * [UC1177] Gerar Relat�rio de Ordens de Servi�o por Situa��o * * M�todo auxiliar para a gera��o do relat�rio de ordem de servi�o * por situa��o. * * @return String */ private String filtrarRelatorioOSSituacaoPenalizadaFiscalizacao(){ StringBuilder sb = new StringBuilder(); sb.append("INNER JOIN cobranca.cob_ac_os_nao_aceitas naoAc ON naoAc.orse_id = orse.orse_id AND naoAc.caon_icaceita = 2 "); sb.append("INNER JOIN cobranca.cobr_boletim_desc desco ON desco.orse_id = naoAc.orse_id "); sb.append("INNER JOIN cobranca.cobr_boletim_medicao medicao ON desco.cobm_id = medicao.cobm_id AND "); sb.append("medicao.cbgr_id = :cobrancaGrupoID AND medicao.cobm_amreferencia = :amReferencia "); sb.append("INNER JOIN cadastro.imovel imov ON orse.imov_id = imov.imov_id "); sb.append("LEFT OUTER JOIN atendimentopublico.servico_tipo svtp ON svtp.svtp_id = orse.svtp_id "); sb.append("LEFT OUTER JOIN atendimentopublico.atend_motivo_encmt encmt ON encmt.amen_id = orse.amen_id "); sb.append("LEFT OUTER JOIN atendimentopublico.fiscalizacao_situacao fzst ON fzst.fzst_id = orse.fzst_id "); return sb.toString(); } /** * [UC1177] Gerar Relat�rio de Ordens de Servi�o por Situa��o * * M�todo auxiliar para a gera��o do relat�rio de ordem de servi�o * por situa��o. * * @return String */ private String filtrarRelatorioOSSituacaoPenalizadaDecursoPrazo(){ StringBuilder sb = new StringBuilder(); sb.append("INNER JOIN cobranca.cobr_boletim_desc desco ON desco.orse_id = orse.orse_id "); sb.append("AND desco.orse_id NOT IN (SELECT orse_id FROM cobranca.cob_ac_os_nao_aceitas naoAc) "); sb.append("INNER JOIN cobranca.cobr_boletim_medicao medicao ON desco.cobm_id = medicao.cobm_id AND "); sb.append("medicao.cbgr_id = :cobrancaGrupoID AND medicao.cobm_amreferencia = :amReferencia "); sb.append("INNER JOIN cadastro.imovel imov ON orse.imov_id = imov.imov_id "); sb.append("LEFT OUTER JOIN atendimentopublico.servico_tipo svtp ON svtp.svtp_id = orse.svtp_id "); sb.append("LEFT OUTER JOIN atendimentopublico.atend_motivo_encmt encmt ON encmt.amen_id = orse.amen_id "); sb.append("LEFT OUTER JOIN atendimentopublico.fiscalizacao_situacao fzst ON fzst.fzst_id = orse.fzst_id "); return sb.toString(); } /** * [UC1177] Gerar Relat�rio de Ordens de Servi�o por Situa��o * * M�todo auxiliar para a gera��o do relat�rio de ordem de servi�o * por situa��o. * * @param filtro * @param boletimGerado * @return String */ private String filtrarRelatorioOSSituacaoFiscalizadas(FiltrarRelatorioOSSituacaoHelper filtro, boolean boletimGerado, String joins, String where){ StringBuilder sb = new StringBuilder(); StringBuilder join = new StringBuilder(); String whereTratado = ""; sb.append("INNER JOIN atendimentopublico.ordem_servico orseRef ON orseRef.orse_idreferencia = orse.orse_id "); sb.append("LEFT OUTER JOIN cobranca.cobr_boletim_exec execu ON execu.orse_id = orse.orse_id "); sb.append("INNER JOIN cobranca.cobr_boletim_medicao medicao ON execu.cobm_id = medicao.cobm_id AND "); sb.append("medicao.cbgr_id = :cobrancaGrupoID AND medicao.cobm_amreferencia = :amReferencia "); sb.append("INNER JOIN cadastro.imovel imov ON orse.imov_id = imov.imov_id "); sb.append("LEFT OUTER JOIN atendimentopublico.servico_tipo svtp ON svtp.svtp_id = orse.svtp_id "); sb.append("LEFT OUTER JOIN atendimentopublico.atend_motivo_encmt encmt ON encmt.amen_id = orse.amen_id "); sb.append("LEFT OUTER JOIN atendimentopublico.fiscalizacao_situacao fzst ON fzst.fzst_id = orse.fzst_id "); sb.append(joins); if(!where.trim().equals("")){ sb.append("WHERE "); whereTratado = where.replaceFirst("AND", ""); sb.append(whereTratado); } sb.append("UNION "); join.append(this.filtrarRelatorioOSSituacaoSelect(filtro, boletimGerado, true, null)); join.append("FROM atendimentopublico.ordem_servico orse "); join.append("INNER JOIN atendimentopublico.ordem_servico orseRef ON orseRef.orse_idreferencia = orse.orse_id "); join.append("LEFT OUTER JOIN cobranca.cobr_boletim_desc desco ON desco.orse_id = orse.orse_id "); join.append("INNER JOIN cobranca.cobr_boletim_medicao medicao ON desco.cobm_id = medicao.cobm_id AND "); join.append("medicao.cbgr_id = :cobrancaGrupoID AND medicao.cobm_amreferencia = :amReferencia "); join.append("INNER JOIN cadastro.imovel imov ON orse.imov_id = imov.imov_id "); join.append("LEFT OUTER JOIN atendimentopublico.servico_tipo svtp ON svtp.svtp_id = orse.svtp_id "); join.append("LEFT OUTER JOIN atendimentopublico.atend_motivo_encmt encmt ON encmt.amen_id = orse.amen_id "); join.append("LEFT OUTER JOIN atendimentopublico.fiscalizacao_situacao fzst ON fzst.fzst_id = orse.fzst_id "); join.append(joins); if(!where.trim().equals("")){ join.append("WHERE "); whereTratado = where.replaceFirst("AND", ""); join.append(whereTratado); } sb.append(join.toString()); return sb.toString(); } /** * [UC1178] Gerar Relat�rio de Acompanhamento dos Boletins de Medi��o * * O segundo par�metro (relatorioDefinitivo) � um booleano que * indica se o relat�rio � definitivo ou n�o, pois o resultado * da query � diferente para os relat�rios definitivos e os * n�o-definitivos * * @author Diogo Peixoto * @date 26/07/2011 * * @param FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper * @param relatorioDefinitivo * @return Collection<Object[]> * @throws ErroRepositorioException */ public Collection<Object[]> filtrarRelatorioAcompanhamentoBoletimMedicao( FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper filtro, boolean relatorioDefinitivo) throws ErroRepositorioException{ Collection<Object[]> relatorios = new ArrayList<Object[]>(); Session session = HibernateUtil.getSession(); StringBuilder sb = new StringBuilder(); try { sb.append("SELECT itensServico.idItemServico, ");//0 - ID Item Servi�o sb.append("itensServico.descricaoServico, ");//1 - Descri��o Item Servi�o sb.append("itensServico.quantidadeOrcada, ");//2 - Quantidade Or�ada sb.append("itensServico.valorUnitario, ");//3 - Valor Unit�rio sb.append("sum(itensServico.quantidade) as quantidadeItem, ");//4 - Quantidade do Item sb.append("(itensServico.valorUnitario * sum(itensServico.quantidade)) as valorItem, ");//5 - Valor Item sb.append("itensServico.unidadeItem, ");//6 - Unidade do Item sb.append("itensServico.valorOrcado, ");//7 - Valor Orcado sb.append("sum(itensServico.valorMedidoPeriodo) AS valorMedidoPeriodo ");//8 - Valor medido no per�odo sb.append("FROM (SELECT "); sb.append("itse.itse_id AS idItemServico, "); sb.append("itse.itse_dsitemservico AS descricaoServico, "); sb.append("itsc.itsc_qtorcadaitemservico AS quantidadeOrcada, "); sb.append("1 AS quantidade, "); sb.append("itsc.itsc_vlitemservcontr AS valorUnitario, "); sb.append("(CASE WHEN itse.itse_cdconstantecalculo IN (3, 7, 9, 11, 13, 4, 8, 10, 12, 14) THEN 'UND' "); sb.append("WHEN itse.itse_cdconstantecalculo IN (15, 16, 17) THEN 'M2' "); sb.append("ELSE '' END) AS unidadeItem, "); sb.append("itsc.itsc_vlorcadoitemservico AS valorOrcado, "); sb.append("cbex.cbex_vlservico AS valorMedidoPeriodo "); sb.append("FROM cobranca.cobr_boletim_exec cbex "); sb.append("INNER JOIN cobranca.cobr_boletim_medicao cobm ON (cbex.cobm_id = cobm.cobm_id AND cobm.cobm_amreferencia = :amReferencia) "); sb.append("INNER JOIN micromedicao.contrato_empresa_servico cese ON (cobm.cese_id = cese.cese_id AND cese.cese_id = :idContrato) "); sb.append("INNER JOIN atendimentopublico.ordem_servico orse ON (cbex.orse_id = orse.orse_id) "); sb.append("INNER JOIN micromedicao.item_servico_contrato itsc ON (cese.cese_id = itsc.cese_id AND orse.svtp_id = itsc.svtp_id) "); sb.append("INNER JOIN micromedicao.item_servico itse ON (itsc.itse_id = itse.itse_id) "); sb.append("LEFT OUTER JOIN atendimentopublico.ordem_servico_boletim orbo ON (cbex.orse_id = orbo.orse_id) "); sb.append("WHERE (itse.itse_cdconstantecalculo IN (2,6) AND orbo.orbo_icpavimento = 3) "); sb.append("OR (itse.itse_cdconstantecalculo IN (3,7,9,11,13) AND orbo.orbo_icpavimento = 2) "); sb.append("OR (itse.itse_cdconstantecalculo IN (4,8,10,12,14) AND orbo.orbo_icpavimento = 1) "); sb.append("OR (itse.itse_cdconstantecalculo IN (1,5) OR itse.itse_cdconstantecalculo > 14) "); sb.append("ORDER BY idItemServico) itensServico "); sb.append("GROUP BY idItemServico, descricaoServico, quantidadeOrcada, valorUnitario, unidadeItem, valorOrcado "); sb.append("ORDER BY idItemServico "); SQLQuery sqlQuery = session.createSQLQuery(sb.toString()); sqlQuery = sqlQuery.addScalar("idItemServico",Hibernate.INTEGER). addScalar("descricaoServico",Hibernate.STRING). addScalar("quantidadeOrcada",Hibernate.BIG_DECIMAL). addScalar("valorUnitario",Hibernate.BIG_DECIMAL). addScalar("quantidadeItem", Hibernate.INTEGER). addScalar("valorItem", Hibernate.BIG_DECIMAL). addScalar("unidadeItem", Hibernate.STRING). addScalar("valorOrcado", Hibernate.BIG_DECIMAL). addScalar("valorMedidoPeriodo", Hibernate.BIG_DECIMAL); sqlQuery.setInteger("idContrato", filtro.getIdContratoEmpresaServico()); sqlQuery.setInteger("amReferencia", filtro.getMesAnoReferencia()); relatorios = sqlQuery.list(); }catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return relatorios; } /** * [UC1178] Gerar Relat�rio de Acompanhamento dos Boletins de Medi��o * * M�todo que vai retornar as quantidades acumuladas e os valores acumulados * no per�odo para gera��o do relat�rio de acompanhamento do boletim de medi��o. * * @author Diogo Peixoto * @date 01/08/2011 * * @param FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper * @param relatorioDefinitivo * @return Collection<Object[]> * @throws ErroRepositorioException */ public Collection<Object[]> filtrarRelatorioAcompanhamentoBoletimMedicaoAcumuladas(FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper filtro) throws ErroRepositorioException{ Collection<Object[]> relatorios = new ArrayList<Object[]>(); Session session = HibernateUtil.getSession(); StringBuilder sb = new StringBuilder(); try { sb.append("SELECT itensServico.idItemServico, ");//0 - ID Item Servi�o sb.append("itensServico.descricaoServico, ");//1 - Descri��o Item Servi�o sb.append("sum(itensServico.quantidade) as quantidadeAcumuladaPeriodo, ");//2 - Quantidade Acumulada Per�odo sb.append("sum(itensServico.valorMedidoPeriodo) AS valorAcumuladoPeriodo ");//3 - Valor Acumulado Per�odo sb.append("FROM (SELECT "); sb.append("itse.itse_id AS idItemServico, "); sb.append("itse.itse_dsitemservico AS descricaoServico, "); sb.append("1 AS quantidade, "); sb.append("cbex.cbex_vlservico AS valorMedidoPeriodo "); sb.append("FROM cobranca.cobr_boletim_exec cbex "); sb.append("INNER JOIN cobranca.cobr_boletim_medicao cobm ON (cbex.cobm_id = cobm.cobm_id) "); sb.append("INNER JOIN micromedicao.contrato_empresa_servico cese ON (cobm.cese_id = cese.cese_id AND cese.cese_id = :idContrato) "); sb.append("INNER JOIN atendimentopublico.ordem_servico orse ON (cbex.orse_id = orse.orse_id) "); sb.append("INNER JOIN micromedicao.item_servico_contrato itsc ON (cese.cese_id = itsc.cese_id AND orse.svtp_id = itsc.svtp_id) "); sb.append("INNER JOIN micromedicao.item_servico itse ON (itsc.itse_id = itse.itse_id) "); sb.append("LEFT OUTER JOIN atendimentopublico.ordem_servico_boletim orbo ON (cbex.orse_id = orbo.orse_id) "); sb.append("WHERE (itse.itse_cdconstantecalculo IN (2,6) AND orbo.orbo_icpavimento = 3) "); sb.append("OR (itse.itse_cdconstantecalculo IN (3,7,9,11,13) AND orbo.orbo_icpavimento = 2) "); sb.append("OR (itse.itse_cdconstantecalculo IN (4,8,10,12,14) AND orbo.orbo_icpavimento = 1) "); sb.append("OR (itse.itse_cdconstantecalculo IN (1,5) OR itse.itse_cdconstantecalculo > 14) "); sb.append("ORDER BY idItemServico) itensServico "); sb.append("GROUP BY idItemServico, descricaoServico "); sb.append("ORDER BY idItemServico "); SQLQuery sqlQuery = session.createSQLQuery(sb.toString()); sqlQuery = sqlQuery.addScalar("idItemServico",Hibernate.INTEGER). addScalar("descricaoServico",Hibernate.STRING). addScalar("quantidadeAcumuladaPeriodo", Hibernate.INTEGER). addScalar("valorAcumuladoPeriodo", Hibernate.BIG_DECIMAL); sqlQuery.setInteger("idContrato", filtro.getIdContratoEmpresaServico()); relatorios = sqlQuery.list(); }catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return relatorios; } /** * [UC1178] Gerar Relat�rio de Acompanhamento dos Boletins de Medi��o * * @author Diogo Peixoto * @date 01/08/2011 * * @param FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper * * @return Collection<BigDecimal> * @throws ErroRepositorioException */ public Collection<BigDecimal> filtrarRelatorioAcompanhamentoBoletimMedicaoPenalidades(FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper filtro, boolean relatorioDefinitivo) throws ErroRepositorioException{ Collection<BigDecimal> relatorios = null; try { relatorios = this.filtrarRelatorioAcompanhamentoBoletimMedicaoPenalidadesOSFiscalizacao(filtro); if(relatorioDefinitivo){ relatorios.addAll(this.filtrarRelatorioAcompanhamentoBoletimMedicaoPenalidadesCorteSupressaoNaoRealizacaoServico(filtro)); } }catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } return relatorios; } /* * [UC1178] Gerar Relat�rio de Acompanhamento dos Boletins de Medi��o * * M�todo auxiliar que vai retornar as penalidades de ordem de servi�o * e as penalidades de fiscaliza��o. * * @author Diogo Peixoto * @date 01/08/2011 * * @param FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper * * @return Collection<BigDecimal> * @throws ErroRepositorioException */ private Collection<BigDecimal> filtrarRelatorioAcompanhamentoBoletimMedicaoPenalidadesOSFiscalizacao( FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper filtro) throws ErroRepositorioException{ Collection<Object[]> relatorios = new ArrayList<Object[]>(); Collection<BigDecimal> retorno = new ArrayList<BigDecimal>(); Session session = HibernateUtil.getSession(); StringBuilder sb = new StringBuilder(); try { sb.append("SELECT "); sb.append("SUM((SELECT cbde.cbde_vldesconto "); sb.append("FROM atendimentopublico.ordem_servico orse "); sb.append("WHERE orse.orse_id = cbde.orse_id AND orse.amen_id = 32)) AS penalidadeOS, ");//0 - Penalidade OS sb.append("SUM((SELECT cbde.cbde_vldesconto "); sb.append("FROM atendimentopublico.ordem_servico orse "); sb.append("WHERE orse.orse_id = cbde.orse_id AND orse.amen_id != 32)) AS penalidadeFiscalizacao ");//0 - Penalidade Fiscaliza��o sb.append("FROM cobranca.COBR_BOLETIM_DESC cbde "); sb.append("INNER JOIN cobranca.cobr_boletim_medicao cobm on (cbde.cobm_id = cobm.cobm_id and cobm.cobm_amreferencia = :amReferencia) "); sb.append("INNER JOIN micromedicao.CONTRATO_EMPRESA_SERVICO cese on (cobm.cese_id = cese.cese_id and cese.cese_id = :idContrato) "); SQLQuery sqlQuery = session.createSQLQuery(sb.toString()); sqlQuery = sqlQuery.addScalar("penalidadeOS", Hibernate.BIG_DECIMAL). addScalar("penalidadeFiscalizacao", Hibernate.BIG_DECIMAL); sqlQuery.setInteger("idContrato", filtro.getIdContratoEmpresaServico()); sqlQuery.setInteger("amReferencia", filtro.getMesAnoReferencia()); relatorios = sqlQuery.list(); Object[] penalidades = relatorios.iterator().next(); BigDecimal penalidadeOS = new BigDecimal("0.00"); if(penalidades[0] != null){ penalidadeOS = (BigDecimal) penalidades[0]; } BigDecimal penalidadeFiscalizacao = new BigDecimal("0.00"); if(penalidades[1] != null){ penalidadeFiscalizacao = (BigDecimal) penalidades[1]; } retorno.add(penalidadeOS); retorno.add(penalidadeFiscalizacao); }catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /* * [UC1178] Gerar Relat�rio de Acompanhamento dos Boletins de Medi��o * * M�todo auxiliar que vai retornar as penalidades de ordem de servi�o * e as penalidades de fiscaliza��o. * * @author Diogo Peixoto * @date 01/08/2011 * * @param FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper * * @return Collection<BigDecimal> * @throws ErroRepositorioException */ private Collection<BigDecimal> filtrarRelatorioAcompanhamentoBoletimMedicaoPenalidadesCorteSupressaoNaoRealizacaoServico( FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper filtro) throws ErroRepositorioException{ Collection<Object[]> relatorios = new ArrayList<Object[]>(); Collection<BigDecimal> retorno = new ArrayList<BigDecimal>(); Session session = HibernateUtil.getSession(); StringBuilder sb = new StringBuilder(); try { sb.append("SELECT "); sb.append("SUM((SELECT (cbex.cbex_vlservico) * 2 "); sb.append("FROM cobranca.motivo_nao_aceit_enc_os mnac "); sb.append("WHERE caon.mnac_id = mnac.mnac_id and mnac.mnac_nnmultdesccortesupindev IS NOT NULL)) AS penalidadeCorteSupressao, "); sb.append("SUM((SELECT (cbex.cbex_vlservico) * 2 "); sb.append("FROM cobranca.motivo_nao_aceit_enc_os mnac "); sb.append("WHERE caon.mnac_id = mnac.mnac_id and mnac.mnac_nnmultdescservnaoexec IS NOT NULL)) AS penalidadeNaoRealizacaoServico "); sb.append("FROM cobranca.cobr_boletim_exec cbex "); sb.append("INNER JOIN cobranca.cobr_boletim_medicao cobm on (cbex.cobm_id = cobm.cobm_id and cobm.cobm_amreferencia = :amReferencia) "); sb.append("INNER JOIN micromedicao.contrato_empresa_servico cese on (cobm.cese_id = cese.cese_id and cese.cese_id = :idContrato) "); sb.append("INNER JOIN cobranca.cob_ac_os_nao_aceitas caon on (cbex.orse_id = caon.orse_id) "); SQLQuery sqlQuery = session.createSQLQuery(sb.toString()); sqlQuery = sqlQuery.addScalar("penalidadeCorteSupressao", Hibernate.BIG_DECIMAL). addScalar("penalidadeNaoRealizacaoServico", Hibernate.BIG_DECIMAL); sqlQuery.setInteger("idContrato", filtro.getIdContratoEmpresaServico()); sqlQuery.setInteger("amReferencia", filtro.getMesAnoReferencia()); relatorios = sqlQuery.list(); Object[] penalidades = relatorios.iterator().next(); BigDecimal penalidadeCorteSupressao = new BigDecimal("0.00"); if(penalidades[0] != null){ penalidadeCorteSupressao = (BigDecimal) penalidades[0]; } BigDecimal penalidadeNaoRealizacaoServicos = new BigDecimal("0.00"); if(penalidades[1] != null){ penalidadeNaoRealizacaoServicos = (BigDecimal) penalidades[1]; } retorno.add(penalidadeCorteSupressao); retorno.add(penalidadeNaoRealizacaoServicos); }catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC1178] Gerar Relat�rio de Acompanhamento dos Boletins de Medi��o * * @author Diogo Peixoto * @date 28/07/2011 * * @param FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper * @param relatorioDefinitivo * @return Quantidade de OS Executadas para determinado boletim de medi��o * @throws ErroRepositorioException */ public Integer pesquisarQuantidadeOSExecutadas(FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper filtro) throws ErroRepositorioException{ Session session = HibernateUtil.getSession(); StringBuilder sb = new StringBuilder(); Integer qtdeOSExecutadas = 0; try { sb.append("SELECT COUNT(execu.orse_id) AS quantidade "); sb.append("FROM cobranca.cobr_boletim_exec execu "); sb.append("INNER JOIN cobranca.cobr_boletim_medicao med ON execu.cobm_id = med.cobm_id AND med.cobm_amreferencia = :amReferencia "); sb.append("AND med.cese_id = :idContrato "); String consulta = sb.toString(); SQLQuery sqlQuery = session.createSQLQuery(consulta); sqlQuery = sqlQuery.addScalar("quantidade",Hibernate.INTEGER); sqlQuery.setInteger("idContrato", filtro.getIdContratoEmpresaServico()); sqlQuery.setInteger("amReferencia", filtro.getMesAnoReferencia()); qtdeOSExecutadas = (Integer) sqlQuery.uniqueResult(); }catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return qtdeOSExecutadas; } /** * [UC1178] Gerar Relat�rio de Acompanhamento dos Boletins de Medi��o * * @author Diogo Peixoto * @date 28/07/2011 * * @param FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper * @param relatorioDefinitivo * @return Quantidade de OS Penalizadas para determinado boletim de medi��o * @throws ErroRepositorioException */ public Integer pesquisarQuantidadeOSPenalizadas(FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper filtro) throws ErroRepositorioException{ Session session = HibernateUtil.getSession(); StringBuilder sb = new StringBuilder(); Integer qtdeOSPenalizadas = 0; try { sb.append("SELECT COUNT(desco.orse_id) AS quantidade "); sb.append("FROM cobranca.cobr_boletim_desc desco "); sb.append("INNER JOIN cobranca.cobr_boletim_medicao med ON med.cobm_id = desco.cobm_id AND med.cobm_amreferencia = :amReferencia "); sb.append("AND med.cese_id = :idContrato "); String consulta = sb.toString(); SQLQuery sqlQuery = session.createSQLQuery(consulta); sqlQuery = sqlQuery.addScalar("quantidade",Hibernate.INTEGER); sqlQuery.setInteger("idContrato", filtro.getIdContratoEmpresaServico()); sqlQuery.setInteger("amReferencia", filtro.getMesAnoReferencia()); qtdeOSPenalizadas = (Integer) sqlQuery.uniqueResult(); }catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return qtdeOSPenalizadas; } /** * [UC1178] Gerar Relat�rio de Acompanhamento dos Boletins de Medi��o * * @author Diogo Peixoto * @date 01/08/2011 * * @param FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper * @return Taxa de Sucesso do Boletim de Medi��o * * @throws ErroRepositorioException */ public BigDecimal pesquisarTaxaSucessoBoletimMedicao(FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper filtro) throws ErroRepositorioException{ Session session = HibernateUtil.getSession(); StringBuilder sb = new StringBuilder(); BigDecimal taxaSucesso = new BigDecimal("0.00"); try { sb.append("SELECT sum(cbsu.CBSU_VLTXSUCESSO) AS taxaSucesso "); sb.append("FROM cobranca.COBR_BOLETIM_SUCESSO cbsu "); sb.append("INNER JOIN cobranca.cobr_boletim_medicao cobm on (cbsu.cobm_id = cobm.cobm_id and cobm.cobm_amreferencia = :amReferencia) "); sb.append("INNER JOIN micromedicao.contrato_empresa_servico cese on (cobm.cese_id = cese.cese_id and cese.cese_id = :idContrato) "); String consulta = sb.toString(); SQLQuery sqlQuery = session.createSQLQuery(consulta); sqlQuery = sqlQuery.addScalar("taxaSucesso",Hibernate.BIG_DECIMAL); sqlQuery.setInteger("amReferencia", filtro.getMesAnoReferencia()); sqlQuery.setInteger("idContrato", filtro.getIdContratoEmpresaServico()); taxaSucesso = (BigDecimal) sqlQuery.uniqueResult(); }catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return taxaSucesso; } public boolean gruposIniciaodsJaForamEncerrados(FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper filtro) throws ErroRepositorioException{ Session sessao = HibernateUtil.getSession(); boolean encerrado = true; StringBuilder sb = new StringBuilder(); sb.append("SELECT acao.caac_tmrealizacao AS dataRealizacao "); sb.append("FROM cobranca.cobranca_acao_ativ_crg acao "); sb.append("INNER JOIN cobranca.cobranca_acao_cronograma cron ON cron.cbcr_id = acao.cbcr_id "); sb.append("INNER JOIN cobranca.cobranca_grupo_crg_mes mes ON mes.cbcm_id = cron.cbcm_id AND mes.cbcm_amreferencia = :amReferencia "); sb.append("INNER JOIN cobranca.cobranca_grupo grupo ON grupo.cbgr_id = mes.cbgr_id "); sb.append("INNER JOIN micromedicao.contrato_empresa_servico cont ON cont.cese_id = grupo.cese_id AND grupo.cese_id = :numeroContrato"); SQLQuery query = sessao.createSQLQuery(sb.toString()); query.setInteger("amReferencia", filtro.getMesAnoReferencia()); query.setInteger("numeroContrato", filtro.getIdContratoEmpresaServico()); query.addScalar("dataRealizacao", Hibernate.DATE); List<Date> retorno = (List<Date>) query.list(); /*Verifica se existe alguma data igual a NULL, se existe � porque os grupos iniciados * n�o foram executados. */ for (Date date : retorno) { if(date == null){ encerrado = false; break; } } return encerrado; } /** * [UC1186] Gerar Relat�rio Ordem de Servi�o Cobran�a p/Resultado * * Pesquisar as Ordens de servi�os a partir de seu im�vel e tipo de servi�o * * @author Hugo Azevedo * @data 02/07/2011 */ public Collection obterOSImovelTipoServico(Integer id, Integer tipoServico) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); Collection<OrdemServico> retorno = new ArrayList(); try { Criteria crit = session.createCriteria(OrdemServico.class); crit.setFetchMode("imovel", FetchMode.JOIN); crit.setFetchMode("servicoTipo", FetchMode.JOIN); crit.setFetchMode("atendimentoMotivoEncerramento", FetchMode.JOIN); crit.add(Restrictions.eq("imovel.id",id)); if(tipoServico != null && tipoServico.intValue() != -1){ crit.add(Restrictions.eq("servicoTipo.id",tipoServico.intValue())); } retorno = (Collection<OrdemServico>) crit.list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); }return retorno; } /** * * [UC1186] Gerar Relat�rio Ordem de Servi�o Cobran�a p/Resultado * * Obt�m a quantida de OS a partir dos par�metros passados pela funcionalidade de Acompanhamento de Cobran�a por Resultado. * * @author Hugo Azevedo * @date 27/06/2011 * * @throws ErroRepositorioException */ public Collection obterTotalOSColecaoImovelTipoServico(Collection colecaoImovel,Integer tipoServico) throws ErroRepositorioException{ Session sessao = HibernateUtil.getSession(); String consulta = ""; Collection retorno = null; consulta = "select count(os.id) " +"from OrdemServico os " +"inner join os.imovel imo " +"inner join os.servicoTipo st " +"where imo.id in ( :colecaoImovel ) "; if(tipoServico != null && tipoServico.intValue() != -1) consulta += "and st.id = :tipoServico"; try{ Query query = sessao.createQuery(consulta); query.setParameterList("colecaoImovel",colecaoImovel); if(tipoServico != null && tipoServico.intValue() != -1) query.setInteger("tipoServico",tipoServico); retorno = query.list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(sessao); } return retorno; } /** * [UC1189] Inserir Registro de Atendimento Loja Virtual * * @author Magno Gouveia * @date 12/07/2011 * * @return * @throws ErroRepositorioException */ public Collection<Object[]> pesquisarSolicitacaoTipoLojaVirtual() throws ErroRepositorioException{ Session sessao = HibernateUtil.getSession(); Collection<Object[]> retorno = null; String consulta = "SELECT " + " DISTINCT(sotp.sotp_id) AS idSolicitacao, sotp.sotp_dssolicitacaotipo AS descricao " + " FROM atendimentopublico.solicitacao_tipo sotp " + " INNER JOIN atendimentopublico.solicitacao_tipo_espec step ON step.sotp_id = sotp.sotp_id " + " WHERE step.step_icuso = 1 " + " AND step.step_iclojavirtual = 1 " + " ORDER BY sotp.sotp_dssolicitacaotipo"; try{ retorno = sessao.createSQLQuery(consulta) .addScalar("idSolicitacao", Hibernate.SHORT) .addScalar("descricao", Hibernate.STRING) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(sessao); } return retorno; } /** * [UC1196] Exibir Lojas de Atendimento na Loja Virtual * [SB0001] Selecionar Munic�pios da Regi�o * * @author Magno Gouveia * @date 14/07/2011 * * @return colecaoDeMunicipios * @throws ErroRepositorioException */ public Collection<Object[]> pesquisarMunicipiosLojaVirtualCompesa() throws ErroRepositorioException { Session sessao = HibernateUtil.getSession(); Collection<Object[]> retorno = null; String consulta = "SELECT DISTINCT " + " m.mreg_id AS microrregiao, " + " m.muni_id AS idMunicipio, " + " m.muni_nmmunicipio AS municipio " + " FROM cadastro.municipio m " + " INNER JOIN cadastro.bairro b ON b.muni_id = m.muni_id " + " INNER JOIN cadastro.loja_atendimento la ON la.bair_id = b.bair_id " + " WHERE m.muni_icuso = 1 " + " ORDER BY m.muni_nmmunicipio"; try{ retorno = sessao.createSQLQuery(consulta) .addScalar("microrregiao", Hibernate.INTEGER) .addScalar("idMunicipio", Hibernate.INTEGER) .addScalar("municipio", Hibernate.STRING) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(sessao); } return retorno; } /** * [UC1196] Exibir Lojas de Atendimento na Loja Virtual * [SB0002] Exibir Dados da Loja * * @author Magno Gouveia * @date 14/07/2011 * * @param id do munic�pio * @return colecaoDeLojasDeAtendimento * @throws ErroRepositorioException */ public Collection<Object[]> pesquisarLojasDeAtendimentoLojaVirtualCompesa(Integer idMunicipio) throws ErroRepositorioException { Session sessao = HibernateUtil.getSession(); Collection<Object[]> retorno = null; String consulta = "SELECT la.loja_nmloja AS nomeLoja, " + " l.logr_nmlogradouro AS logradouro, " + " la.loja_nnimovel AS numero, " + " m.muni_nmmunicipio AS municipio, " + " b.bair_nmbairro AS bairro, " + " la.loja_dspontorefencia AS pontoReferencia, " + " la.loja_cdddd AS ddd, " + " la.loja_nnfone AS fone, " + " la.loja_nnfonefax AS fax, " + " la.loja_dsemail AS email, " + " la.loja_imloja AS imagem, " + " lt.lgtp_dslogradourotipo AS logradouroTipo, " + " ltl.lgtt_dslogradourotitulo AS logradouroTitulo " + " FROM cadastro.loja_atendimento la " + " INNER JOIN cadastro.bairro b ON b.bair_id = la.bair_id " + " INNER JOIN cadastro.logradouro l ON l.logr_id = la.logr_id " + " INNER JOIN cadastro.logradouro_tipo lt ON lt.lgtp_id = l.lgtp_id " + " LEFT JOIN cadastro.logradouro_titulo ltl ON ltl.lgtt_id = l.lgtt_id " + " INNER JOIN cadastro.municipio m ON m.muni_id = b.muni_id " + " WHERE m.muni_icuso = 1 " + " AND b.bair_icuso = 1 " + " AND l.logr_icuso = 1 " + " AND m.muni_id = :idMunicipio " + " ORDER BY la.loja_nmloja"; try{ retorno = sessao.createSQLQuery(consulta) .addScalar("nomeLoja", Hibernate.STRING) .addScalar("logradouro", Hibernate.STRING) .addScalar("numero", Hibernate.STRING) .addScalar("municipio", Hibernate.STRING) .addScalar("bairro", Hibernate.STRING) .addScalar("pontoReferencia", Hibernate.STRING) .addScalar("ddd", Hibernate.STRING) .addScalar("fone", Hibernate.STRING) .addScalar("fax", Hibernate.STRING) .addScalar("email", Hibernate.STRING) .addScalar("imagem", Hibernate.BLOB) .addScalar("logradouroTipo", Hibernate.STRING) .addScalar("logradouroTitulo", Hibernate.STRING) .setInteger("idMunicipio", idMunicipio) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(sessao); } return retorno; } public Collection obterColecaoOSFiscalizacaoNaoExecutadas() throws ErroRepositorioException{ Session sessao = HibernateUtil.getSession(); String consulta = ""; Collection retorno = new ArrayList(); try{ consulta = " select os.orse_id," + " os.orse_tmgeracao " + " from atendimentopublico.ordem_servico os" + " inner join atendimentopublico.servico_tipo st on os.svtp_id = st.svtp_id" + " inner join atendimentopublico.servico_tipo_referencia str on st.strf_id = str.strf_id" + " where os.orse_tmencerramento is null" + " and os.orse_idreferencia is not null" + " and str.strf_icfiscalizacao = :idFiscalizacao"; Query query = sessao.createSQLQuery(consulta) .addScalar("orse_id", Hibernate.INTEGER) .addScalar("orse_tmgeracao",Hibernate.DATE) .setInteger("idFiscalizacao",ConstantesSistema.INDICADOR_USO_ATIVO); retorno = query.list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(sessao); } return retorno; } /** * [UC1199] � Acompanhar Arquivos de Roteiro * [SB0003] � Pesquisar Fotos da OS * * M�todo que vai retornar as fotos de uma determinada * ordem de servi�o passada no par�metro. * * @author Diogo Peixoto * @date 12/08/2011 * * @param Integer - ID da Ordem de Servi�o * * @return Collection<Object[]> - Cole��o das Fotos da OS * @throws ErroRepositorioException */ public Collection<Object[]> pesquisarFotosOrdemServico(Integer idOS) throws ErroRepositorioException { Session sessao = HibernateUtil.getSession(); Collection<Object[]> retorno = null; StringBuilder sb = new StringBuilder(); sb.append("SELECT "); sb.append("osFoto.osft_id AS id, ");//0 - ID Ordem Servi�o Foto sb.append("osFoto.orse_id AS idOS, ");//1 - ID Ordem Servi�o sb.append("osFoto.osft_dsfoto AS descricaoFoto, ");//2 - Descri��o Foto sb.append("osFoto.osft_imfoto AS foto ");//3 - Foto sb.append("FROM "); sb.append("atendimentopublico.ordem_servico_foto osFoto "); sb.append("INNER JOIN atendimentopublico.ordem_servico orse ON orse.orse_id = osFoto.orse_id AND orse.orse_id = :idOS "); sb.append("ORDER BY idOS,osFoto.fsos_id "); try{ Query query = sessao.createSQLQuery(sb.toString()) .addScalar("id", Hibernate.INTEGER) .addScalar("idOS", Hibernate.INTEGER) .addScalar("descricaoFoto", Hibernate.STRING) .addScalar("foto", Hibernate.BINARY) .setInteger("idOS", idOS); retorno = query.list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(sessao); } return retorno; } /** * [UC1199] � Acompanhar Arquivos de Roteiro * [SB0003] � Pesquisar Fotos da OS * * M�todo que vai retornar as fotos de uma determinada * ordem de servi�o passada no par�metro. * * @author Diogo Peixoto * @date 12/08/2011 * * @param Integer - ID da Foto da Ordem de Servi�o * * @return Collection<Object[]> - Foto da Ordem de Servi�o * @throws ErroRepositorioException */ public Collection<Object[]> pesquisarFotosOrdemServicoPorIdFoto(Integer idFoto) throws ErroRepositorioException { Session sessao = HibernateUtil.getSession(); Collection<Object[]> retorno = null; StringBuilder sb = new StringBuilder(); sb.append("SELECT "); sb.append("osFoto.osft_id AS id, ");//0 - ID Ordem Servi�o Foto sb.append("osFoto.orse_id AS idOS, ");//1 - ID Ordem Servi�o sb.append("osFoto.osft_dsfoto AS descricaoFoto, ");//2 - Descri��o Foto sb.append("osFoto.osft_imfoto AS foto ");//3 - Foto sb.append("FROM "); sb.append("atendimentopublico.ordem_servico_foto osFoto "); sb.append("INNER JOIN atendimentopublico.ordem_servico orse ON orse.orse_id = osFoto.orse_id "); sb.append("WHERE osFoto.osft_id = :idFoto "); try{ Query query = sessao.createSQLQuery(sb.toString()) .addScalar("id", Hibernate.INTEGER) .addScalar("idOS", Hibernate.INTEGER) .addScalar("descricaoFoto", Hibernate.STRING) .addScalar("foto", Hibernate.BINARY) .setInteger("idFoto", idFoto); retorno = query.list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(sessao); } return retorno; } /** * Felipe Santos - 24/10/2013 * * Retorna o n�mero de dias e quantidade de OS para Prazo M�dio de Atendimento * * @param dataInicial * @param dataFinal * @param idLocalidade * @return Object[] * @throws ErroRepositorioException */ public Object[] pesquisarPrazoMedioAtendimentoOSRelatorioBIG( Date dataInicial, Date dataFinal, Integer idLocalidade) throws ErroRepositorioException { Object[] retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT coalesce(sum(numeroDias), 0) as numeroDias, count(orse_id) as qtd " + "FROM(" + "SELECT case when (date(orse_tmencerramento) - date(orse_tmgeracao)) < 0 then 0 " + "else (date(orse_tmencerramento) - date(orse_tmgeracao)) end as numeroDias, " + "orse_id " + "FROM atendimentopublico.ordem_servico os " + "INNER JOIN atendimentopublico.registro_atendimento ra on os.rgat_id = ra.rgat_id " + "INNER JOIN atendimentopublico.servico_tipo svtp on svtp.svtp_id = os.svtp_id " + "WHERE loca_id = :idLocalidade " + "AND svtp_cdservicotipo='C' " + "AND orse_tmgeracao > '2011-01-01' " + "AND orse_tmencerramento between :dataInicial AND :dataFinal " + ") as prazoOS"; retorno = (Object[]) session.createSQLQuery(consulta) .addScalar("numeroDias", Hibernate.INTEGER) .addScalar("qtd", Hibernate.INTEGER) .setDate("dataInicial", dataInicial) .setDate("dataFinal", dataFinal) .setInteger("idLocalidade", idLocalidade) .setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Felipe Santos - 24/10/2013 * * Retorna Quantidade e Economias de Liga��o de �gua por Per�odo e Localidade * * @param dataInicial * @param dataFinal * @param idLocalidade * @return Object[] * @throws ErroRepositorioException */ public Object[] pesquisarNovasLigacoesAguaRelatorioBIG( Date dataInicial, Date dataFinal, Integer idLocalidade) throws ErroRepositorioException { Object[] retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT count(distinct(lagu_id)) as ligacoes, coalesce(sum(imsb_qteconomia), 0) as economias " + "FROM atendimentopublico.ligacao_agua lagu " + "INNER JOIN cadastro.imovel imov ON imov.imov_id = lagu.lagu_id " + "INNER JOIN cadastro.imovel_subcategoria scat ON scat.imov_id = imov.imov_id " + "WHERE imov.loca_id = :idLocalidade " + "AND lagu_dtligacaoagua between :dataInicial AND :dataFinal"; retorno = (Object[]) session.createSQLQuery(consulta) .addScalar("ligacoes", Hibernate.INTEGER) .addScalar("economias", Hibernate.INTEGER) .setDate("dataInicial", dataInicial) .setDate("dataFinal", dataFinal) .setInteger("idLocalidade", idLocalidade) .setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Felipe Santos - 24/10/2013 * * Retorna Quantidade e Economias de Liga��o de Esgoto por Per�odo e Localidade * * @param dataInicial * @param dataFinal * @param idLocalidade * @return Object[] * @throws ErroRepositorioException */ public Object[] pesquisarNovasLigacoesEsgotoRelatorioBIG( Date dataInicial, Date dataFinal, Integer idLocalidade) throws ErroRepositorioException { Object[] retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT count(distinct(lesg_id)) as ligacoes, coalesce(sum(imsb_qteconomia), 0) as economias " + "FROM atendimentopublico.ligacao_esgoto lesg " + "INNER JOIN cadastro.imovel imov ON imov.imov_id = lesg.lesg_id " + "INNER JOIN cadastro.imovel_subcategoria scat ON scat.imov_id = imov.imov_id " + "WHERE imov.loca_id = :idLocalidade " + "AND lesg_dtligacao between :dataInicial AND :dataFinal"; retorno = (Object[]) session.createSQLQuery(consulta) .addScalar("ligacoes", Hibernate.INTEGER) .addScalar("economias", Hibernate.INTEGER) .setDate("dataInicial", dataInicial) .setDate("dataFinal", dataFinal) .setInteger("idLocalidade", idLocalidade) .setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Felipe Santos - 24/10/2013 * * Retorna Quantidade de Liga��es de �gua por Situa��o e Localidade * * @param idLocalidade * Integer situacao * @return Integer * @throws ErroRepositorioException */ public Integer pesquisarQuantidadeConsumidoresRelatorioBIG( Integer idLocalidade, Integer situacao) throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT count(*) as qtd FROM cadastro.imovel " + "WHERE loca_id = :idLocalidade " + "AND last_id = :situacao"; retorno = (Integer) session.createSQLQuery(consulta) .addScalar("qtd", Hibernate.INTEGER) .setInteger("idLocalidade", idLocalidade) .setInteger("situacao", situacao) .setMaxResults(1) .uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * @author Wellington Rocha * Data: 03/07/2012 * * Pesquisar todas os Locais de Instala��o de Ramal * * Gera��o de Rotas para Recadastramento * * @return Collection * @throws ControladorException * */ public Collection pesquisarRamalLocalInstalacao() throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try{ consulta = "select ramalLocalInstalacao " + " from RamalLocalInstalacao ramalLocalInstalacao " + " where ramalLocalInstalacao.indicadorUso = :indicadorUso "; retorno = (Collection) session.createQuery(consulta) .setInteger("indicadorUso", ConstantesSistema.SIM.intValue()).list(); }catch(HibernateException e) { throw new ErroRepositorioException(e,"Erro no hibernate"); }finally { HibernateUtil.closeSession(session); } return retorno; } public List<Municipio> obterMunicipiosAgenciaReguladora(Integer idAgencia) throws ErroRepositorioException { List<Municipio> retorno = null; Session session = HibernateUtil.getSession(); StringBuilder consulta = null; try { consulta.append("select municipio from AgenciaReguladoraMunicipio agencia ") .append("inner join fetch agencia.municipio municipio ") .append(" where agencia.comp_id.agenciaReguladoraId = :idAgencia "); retorno = (List<Municipio>) session.createQuery(consulta.toString()) .setInteger("idAgencia", idAgencia).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } public List<AgenciaReguladora> obterAgenciasReguladorasAtivas() throws ErroRepositorioException { List<AgenciaReguladora> retorno = null; Session session = HibernateUtil.getSession(); StringBuilder consulta = new StringBuilder(); try { consulta.append("select agencia from AgenciaReguladora agencia ") .append(" where agencia.dataFimVigencia is null "); retorno = (List<AgenciaReguladora>) session.createQuery(consulta.toString()).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } }