Java tutorial
/* * Copyright (C) 2007-2007 the GSAN - Sistema Integrado de Gesto de Servios 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 Gesto de Servios de Saneamento Copyright (C) * <2007> Adriano Britto Siqueira Alexandre Santos Cabral Ana Carolina Alves * Breda Ana Maria Andrade Cavalcante Aryed Lins de Arajo Bruno Leonardo * Rodrigues Barros Carlos Elmano Rodrigues Ferreira Cludio de Andrade Lira * Denys Guimares Guenes Tavares Eduardo Breckenfeld da Rosa Borges Fabola * Gomes de Arajo Flvio Leonardo Cavalcanti Cordeiro Francisco do Nascimento * Jnior Homero Sampaio Cavalcanti Ivan Srgio da Silva Jnior Jos Edmar de * Siqueira Jos Thiago Tenrio Lopes Kssia Regina Silvestre de Albuquerque * Leonardo Luiz Vieira da Silva Mrcio Roberto Batista da Silva Maria de Ftima * Sampaio Leite Micaela Maria Coelho de Arajo Nelson Mendona de Carvalho * Newton Morais e Silva Pedro Alexandre Santos da Silva Filho Rafael Corra * Lima e Silva Rafael Francisco Pinto Rafael Koury Monteiro Rafael Palermo de * Arajo Raphael Veras Rossiter Roberto Sobreira Barbalho Rodrigo Avellar * Silveira Rosana Carvalho Barbosa Svio 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 Licena Pblica Geral GNU, conforme publicada * pela Free Software Foundation; verso 2 da Licena. Este programa * distribudo na expectativa de ser til, mas SEM QUALQUER GARANTIA; sem mesmo * a garantia implcita de COMERCIALIZAO ou de ADEQUAO A QUALQUER PROPSITO * EM PARTICULAR. Consulte a Licena Pblica Geral GNU para obter mais detalhes. * Voc deve ter recebido uma cpia da Licena Pblica Geral GNU junto com este * programa; se no, 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; /** * < <Descrio 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 Ligao - * (corte de ligao de gua) gua- os campos LAGU_DTCORTE e * LAGU_NNSELOCORTE e LAGU_ TMULTIMAALTERACAO * * @param imovel * Descrio do parmetro * @exception ErroRepositorioExceptions * Descrio da exceo * @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 ligao de gua) Atualizar os campos hidi_nnleituracorte e * hidi_tmultimaalteracao de HidrometroInstalacaoHistorico * * @param imovel * Descrio do parmetro * @exception ErroRepositorioExceptions * Descrio da exceo * @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 Instalao de Hidrmetro [SB002] Atualizar Ligao de * gua Atualizar os campos hidi_id e lagu_tmultimaalteracao de LigacaoAgua * * @exception ErroRepositorioExceptions * Descrio da exceo * @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 Instalao de Hidrmetro [SB002] Atualizar Imvel * Atualizar os campos hidi_id e imov_tmultimaalteracao de Imovel * * @exception ErroRepositorioExceptions * Descrio da exceo * @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 Instalao de Hidrmetro [SB003] Atualizar Hidrmetro * Atualizar o campo hisi_id * * @exception ErroRepositorioExceptions * Descrio da exceo * @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 Instalao de Hidrmetro [SB003] Atualizar Hidrmetro * Atualizar o campo hisi_id * * @exception ErroRepositorioExceptions * Descrio da exceo * @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 Instalao de Hidrmetro [SB003] Atualizar Hidrmetro * Atualizar o campo hisi_id * * @exception ErroRepositorioExceptions * Descrio da exceo * @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 Mnimo da Ligao 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 Dbito Verificar existncia de hidrmetro na * ligao de gua. * * @author Leonardo Regis * @date 09/09/2006 * @param imovelId * @return existencia de hidrometro ou no * @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 Dbito Verificar existncia de hidrmetro no * imvel. * * @author Leonardo Regis * @date 09/09/2006 * @param imovelId * @return existencia de hidrometro ou no * @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 Dbito Obter Capacidade de Hidrmetro pela * Ligao de gua. * * @author Leonardo Regis * @date 09/09/2006 * @param imovelId * @return existencia de hidrometro ou no * @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 Dbito Obter Capacidade de Hidrmetro pelo * Imvel. * * @author Leonardo Regis * @date 09/09/2006 * @param imovelId * @return existencia de hidrometro ou no * @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 Dbito Obter Valor do Debito pelos parmtros * passados. * * @author Leonardo Regis * @date 09/09/2006 * @param obterValorDebitoHelper * @return o valor do dbito * @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; } /** * Mtodo que retorna o nmero do hidrmetro da ligao 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; } /** * Mtodo que retorna o tipo da ligao de gua, a data do corte da ligao * de gua e a data da Religao * * @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 servio para a gerao do relatrio * * @author Rafael Corra, 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 exceo para a prxima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sesso HibernateUtil.closeSession(session); } return retorno; } /** * [UC0404] Manter Especificao da Situao do Imovel Este caso de uso * remove a especificao e os critrio [SB0002] Remover Especificao 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 exceo para a prxima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sesso HibernateUtil.closeSession(session); } } /** * Pesquisa todos os ids das situaes de ligao de gua. [UC0564 - Gerar * Resumo das Instalaes de Hidrmetros] * * @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 situaes de ligao de esgoto. [UC0564 - Gerar * Resumo das Instalaes de Hidrmetros] * * @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 ligao de gua e eventualmente a * instalao de hidrmetro, sem informao de RA sendo chamado direto pelo * menu. [UC0579] - Efetuar Ligao de gua com Intalao de Hidrmetro * * @author Flvio 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 exceo para a prxima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sesso HibernateUtil.closeSession(session); } return retorno; } /** * [UC0XXX] Gerar Contrato de Prestao de Servio * * @author Rafael Corra * @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 Obtm os dados necessrio da * ligao de gua, de esgoto e do hidrmetro instalado na ligao de gua * * @author Rafael Corra * @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 exceo para a prxima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sesso 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 hidrmetro na ligao de gua. * * @author Vivianne Sousa * @date 11/09/2007 * * @param imovelId * @return existencia de hidrometro ou no * @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 informaes para o relatrio de certido 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 necessrios para a gerao do relatrio * * [UC0864] Gerar Certido 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 no 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 no 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 Prestao de Servio * * @author Rafael Corra * @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 Infrao com prazo de Recurso Vencido * * @author Svio 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 Infrao com prazo de Recurso Vencido * * [SB0001] Atualizar Autos Infrao * * @author Svio 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 Infrao com prazo de Recurso Vencido * * @author Svio 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 infrao if (parmsFiscalizacao[6] != null) { fiscalizacaoSituacaoServicoACobrar .setIndicadorMultaInfracao((Short) parmsFiscalizacao[6]); } //id da situao do auto if (parmsFiscalizacao[5] != null) { FiscalizacaoSituacao fiscalizacaoSituacao = new FiscalizacaoSituacao(); fiscalizacaoSituacao.setId((Integer) parmsFiscalizacao[5]); // Inidicador atualizao autos infrao if (parmsFiscalizacao[1] != null) { fiscalizacaoSituacao .setIndicadorAtualizacaoAutosInfracao((Short) parmsFiscalizacao[1]); fiscalizacaoSituacaoServicoACobrar.setFiscalizacaoSituacao(fiscalizacaoSituacao); } } //valor sugerido do dbito 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); } //nmero de vezes de clculo 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 Fiscalizao para imveis 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 Fiscalizao para imveis 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 Fiscalizao para imveis 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 servios existentes para uma nova vigncia e valor. * Pesquisa a ltima vigncia de cada tipo servio, e retorna uma coleo. * * @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 exceo para a prxima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sesso HibernateUtil.closeSession(session); } return retorno; } /** [SB0002] Replicar os servios existentes para uma nova vigncia e valor. * Pesquisa a ltima vigncia de cada tipo servio, 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 exceo para a prxima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sesso HibernateUtil.closeSession(session); } return retorno; } /** * [SB0002] Replicar os Valores de Cobrana de Servio existentes para uma nova vigncia e valor. * Pesquisa a ltima vigncia de cada tipo Cobrana, e retorna uma coleo. * * @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 exceo para a prxima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sesso HibernateUtil.closeSession(session); } return retorno; } /** * [UC0391] Inserir valor cobrana Servio. * * Verificar se existe vigncia j cadastrada para o Servio 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 situaes de inserir e atualizar Servio Tipo. * @see Caso a opcao = 2 - verifica a situao de retificar Servio 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 exceo para a prxima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sesso HibernateUtil.closeSession(session); } return retorno; } /** * [UC0366] Inserir Registro de Atendimento * [SB0034] Verificar RA de urgncia * * Verifica se o Registro de Atendimento tem o nivel selecionado como Urgncia * * @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 exceo para a prxima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sesso HibernateUtil.closeSession(session); } return retorno; } /** * [UC0366] Inserir Registro de Atendimento * [SB0034] Verificar RA de urgncia * * Pesquisar os Usurios 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 exceo para a prxima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sesso HibernateUtil.closeSession(session); } } return retorno; } /** * [UC0503] Tramitar Conjunto Registro Atendimento * * [SB0004] Verificar RA de urgncia * * Retorna um ou todos usurios da unidade relacionada a RA, * da tabela "VisualizacaoRaUrgencia" * * @author Daniel Alves * @param ID do Registro de Atendimento, ID da Unidade, ID do Usurio * @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 padro, 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 exceo para a prxima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sesso HibernateUtil.closeSession(session); } } return retorno; } /** * [UC0503] Tramitar Conjunto Registro Atendimento * * [SB0004] Verificar RA de urgncia * * 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 exceo para a prxima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sesso HibernateUtil.closeSession(session); } return retorno; } /** * [UC1028] Exibir Registro Atendimento Urgncia * * 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 exceo para a prxima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sesso HibernateUtil.closeSession(session); } return retorno; } /** * Atualiza um ou vrios campos da tabela "VisualizacaoRaUrgencia" * * @author Daniel Alves * @param ID do Registro de Atendimento, ID da Unidade, ID do Usurio, 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 dbito * @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 Ao de Cobrana * * @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 Relatrio 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 Relatrio de Acompanhamento dos Registros de Atendimento * Mtodo auxiliar para gerar o select HQL do relatrio em questo * @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 Relatrio de Acompanhamento dos Registros de Atendimento * Mtodo auxiliar para gerar o select HQL do relatrio em questo * @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 Relatrio 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 Relatrio 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 Relatrio 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-Calada * @return boolean */ public boolean verificaRemoverCustoPavimentoPorRepavimentadora(Integer idRepavimentadora, Integer idPavimento, Integer indicadorPavimento) throws ErroRepositorioException { // Cria uma sesso com o hibernate Session session = HibernateUtil.getSession(); // Retorno Consulta boolean retorno = false; // Cria a varivel 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 exceo para a prxima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sesso 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-Calada * @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 sesso com o hibernate Session session = HibernateUtil.getSession(); // Retorno Consulta Integer retorno = 0; Integer idRetorno = null; // Cria a varivel 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 exceo para a prxima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sesso 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-Calada * @return Integer * * VerificarExistenciDiasSemValor */ public Integer verificarExistenciDiasSemValorCustoPavimentoPorRepavimentadora(Integer idAtualizacao, Integer idRepavimentadora, Integer idPavimento, Date dataInicio, Date dataFinal, Integer indicadorPavimento, Integer tipo) throws ErroRepositorioException { // Cria uma sesso com o hibernate Session session = HibernateUtil.getSession(); // Retorno Consulta Integer retorno = 0; Integer idRetorno = null; // Cria a varivel 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 exceo para a prxima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // Fecha a sesso com o hibernate HibernateUtil.closeSession(session); } return retorno; } /** * [UC0412] Manter Tipo de Servio * * @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 exceo para a prxima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sesso HibernateUtil.closeSession(session); } } /** * [UC1120] Gerar Relatrio de religao 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 "; } // Gerncia Regional if (relatorioHelper.getGerenciaRegional() != null) { consulta += " inner join loca.gerenciaRegional gereg "; } // Unidade Negcio 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 "; } // Usurio 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 "; } // Gerncia Regional if (relatorioHelper.getGerenciaRegional() != null) { consulta += " and gereg.id = :gerencia "; parameters.put("gerencia", relatorioHelper.getGerenciaRegional()); } // Unidade Negcio 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()); } // Usurio 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 Relatrio de religao 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 Relatrio de religao 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 PARTIES = " + indice); for (int i = 0; i < indice; i++) { System.out .println("## TAMANHO PARTIO 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 Relatrio de religao 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 "; // Gerncia Regional if (relatorioHelper.getGerenciaRegional() != null) { consulta += " inner join loca.gerenciaRegional gereg "; } // Unidade Negcio 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 "; } // Usurio 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) "; // Gerncia Regional if (relatorioHelper.getGerenciaRegional() != null) { consulta += " and gereg.id = :gerencia "; parameters.put("gerencia", relatorioHelper.getGerenciaRegional()); } // Unidade Negcio 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()); } // Usurio 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 Relatrio de religao 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 "; // Gerncia Regional if (relatorioHelper.getGerenciaRegional() != null) { consulta += " inner join loca.gerenciaRegional gereg "; } // Unidade Negcio 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 "; } // Usurio 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) "; // Gerncia Regional if (relatorioHelper.getGerenciaRegional() != null) { consulta += " and gereg.id = :gerencia "; parameters.put("gerencia", relatorioHelper.getGerenciaRegional()); } // Unidade Negcio 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()); } // Usurio 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 Relatrio de religao 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 "; // Gerncia Regional if (relatorioHelper.getGerenciaRegional() != null) { consulta += " inner join loca.gerenciaRegional gereg "; } // Unidade Negcio 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 "; } // Usurio 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 "; } // Gerncia Regional if (relatorioHelper.getGerenciaRegional() != null) { consulta += " and gereg.id = :gerencia "; parameters.put("gerencia", relatorioHelper.getGerenciaRegional()); } // Unidade Negcio 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()); } // Usurio 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; } /** * Obtm a coleo de perfis de tipo de servio 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 Relatrio Ordem de Servio Cobrana p/Resultado * * Obtm a coleo de OS a partir dos parmetros passados pela funcionalidade de Acompanhamento de Cobrana 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 "; //Coleo de categorias if (categoriaImovel != null && categoriaImovel.length > 0) { consulta += "and catc.id in ( :categoria ) "; } //Coleo de perfis do imvel if (perfilImovel != null && perfilImovel.length > 0) { consulta += "and ipc.id in ( :perfil ) "; } //Coleo de gerncias regionais if (gerenciaRegional != null && gerenciaRegional.length > 0) { consulta += "and grc.id in ( :gerenciaR ) "; } //Coleo de unidades de negcio 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 parmetros 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 Cobrana * * 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 Relatrio de Ordens de Servio por Situao * * Mtodo auxiliar utilizado para montar toda a estrutura SELECT do relatrio * de ordem de servico por situao. No SELECT, pode haver uma parmetro para ser * passado na query (caso a situao da OS seja diferente de 8 (TODAS as OS). * * As colunas resultantes para o relatrio analtico so: * * (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 relatrio sinttico so: * * (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 - Nmero Ordem Servio sb.append("imov.imov_id AS matriculaImovel, "); //1 - Matrcula do Imvel sb.append("svtp.svtp_dsservicotipo AS tipoServico, "); //2 - Tipo de Servio 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 - No 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 Servio sb.append("temp.motivoEncerramento, ");//2 - Motivo Encerramento sb.append("temp.retornoFiscalizacao, ");//3 - Retorno de Fiscalizao //Caso a situao seja todas, pegar do parmetro a situao da os if (helper.getSituacaoOS().equals("8")) { sb.append(situacao); } else { sb.append("temp.situacaoOS, "); } //4 - Situao da Ordem de Servio 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 situao da OS for diferente de TODAS, os registros encontrados sero * da situao passada no filtro. */ if (!helper.getSituacaoOS().equals("8") && !helper.getSituacaoOS().equals("13")) { sb.append(", :situacaoOS AS situacaoOS ");//10 - Situao da Ordem de Servio } return sb.toString(); } /** * [UC1177] Gerar Relatrio de Ordens de Servio por Situao * * O segundo parmetro (boletimGerado) um booleano que * indica se para um dado grupo de cobrana e um ms referencia * foi gerado um boletim de medio. * * @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 mtodo pesquisa as ordens de servio por situao. O helper do parmetro * possui a situao da os com os seguintes valores: * * 1 Descontadas * 2 Encerradas * 3 Executadas * 4 Fiscalizadas * 5 Justificadas * 6 Penalizadas por Fiscalizao * 7 Penalizadas por Decurso de Prazo * 8 Todas * 9 Encerradas com Execuo * 10 Encerradas por Decurso de Prazo * 11 Pendentes * 12 Fiscalizadas Boletim No Gerado * 13 Todas Boletim No 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 fiscalizao } else if (helper.getSituacaoOS().equals("6")) { sb.append(this.filtrarRelatorioOSSituacaoPenalizadaFiscalizacao()); parameters.put("situacaoOS", "PENALIZADAS POR FISCALIZAO"); //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 Execuo } 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 EXECUO"); //Pendentes } else if (helper.getSituacaoOS().equals("11")) { sb.append(this.filtrarRelatorioOSSituacaoBoletimNaoGerado()); clausulaWhere += " AND orse.orse_cdsituacao = 1 "; parameters.put("situacaoOS", "PENDENTES"); //Fiscalizadas Boletim No 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()); } // Gerncia 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 Negcio 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 cdigo retira o primeiro AND da clusula where e adiciona espao em branco * na ltima comparao para no 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 relatrio sinttico 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 Relatrio de Ordens de Servio por Situao * * Mtodo auxiliar para a gerao do relatrio de ordem de servio * por situao. * * @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 Relatrio de Ordens de Servio por Situao * * Mtodo auxiliar para a gerao do relatrio de ordem de servio * por situao. * * @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 Relatrio de Ordens de Servio por Situao * * Mtodo auxiliar para a gerao do relatrio de ordem de servio * por situao. * * @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 Relatrio de Ordens de Servio por Situao * * Mtodo auxiliar para a gerao do relatrio de ordem de servio * por situao. * * @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 Relatrio de Ordens de Servio por Situao * * Mtodo auxiliar para a gerao do relatrio de ordem de servio * por situao. * * @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 Relatrio de Ordens de Servio por Situao * * Mtodo auxiliar para a gerao do relatrio de ordem de servio * por situao. * * @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 Relatrio de Ordens de Servio por Situao * * Mtodo auxiliar para a gerao do relatrio de ordem de servio * por situao. * * @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 Relatrio de Acompanhamento dos Boletins de Medio * * O segundo parmetro (relatorioDefinitivo) um booleano que * indica se o relatrio definitivo ou no, pois o resultado * da query diferente para os relatrios definitivos e os * no-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 Servio sb.append("itensServico.descricaoServico, ");//1 - Descrio Item Servio sb.append("itensServico.quantidadeOrcada, ");//2 - Quantidade Orada sb.append("itensServico.valorUnitario, ");//3 - Valor Unitrio 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 perodo 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 Relatrio de Acompanhamento dos Boletins de Medio * * Mtodo que vai retornar as quantidades acumuladas e os valores acumulados * no perodo para gerao do relatrio de acompanhamento do boletim de medio. * * @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 Servio sb.append("itensServico.descricaoServico, ");//1 - Descrio Item Servio sb.append("sum(itensServico.quantidade) as quantidadeAcumuladaPeriodo, ");//2 - Quantidade Acumulada Perodo sb.append("sum(itensServico.valorMedidoPeriodo) AS valorAcumuladoPeriodo ");//3 - Valor Acumulado Perodo 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 Relatrio de Acompanhamento dos Boletins de Medio * * @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 Relatrio de Acompanhamento dos Boletins de Medio * * Mtodo auxiliar que vai retornar as penalidades de ordem de servio * e as penalidades de fiscalizao. * * @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 Fiscalizao 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 Relatrio de Acompanhamento dos Boletins de Medio * * Mtodo auxiliar que vai retornar as penalidades de ordem de servio * e as penalidades de fiscalizao. * * @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 Relatrio de Acompanhamento dos Boletins de Medio * * @author Diogo Peixoto * @date 28/07/2011 * * @param FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper * @param relatorioDefinitivo * @return Quantidade de OS Executadas para determinado boletim de medio * @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 Relatrio de Acompanhamento dos Boletins de Medio * * @author Diogo Peixoto * @date 28/07/2011 * * @param FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper * @param relatorioDefinitivo * @return Quantidade de OS Penalizadas para determinado boletim de medio * @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 Relatrio de Acompanhamento dos Boletins de Medio * * @author Diogo Peixoto * @date 01/08/2011 * * @param FiltrarRelatorioAcompanhamentoBoletimMedicaoHelper * @return Taxa de Sucesso do Boletim de Medio * * @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 * no foram executados. */ for (Date date : retorno) { if (date == null) { encerrado = false; break; } } return encerrado; } /** * [UC1186] Gerar Relatrio Ordem de Servio Cobrana p/Resultado * * Pesquisar as Ordens de servios a partir de seu imvel e tipo de servio * * @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 Relatrio Ordem de Servio Cobrana p/Resultado * * Obtm a quantida de OS a partir dos parmetros passados pela funcionalidade de Acompanhamento de Cobrana 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 Municpios da Regio * * @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 municpio * @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 * * Mtodo que vai retornar as fotos de uma determinada * ordem de servio passada no parmetro. * * @author Diogo Peixoto * @date 12/08/2011 * * @param Integer - ID da Ordem de Servio * * @return Collection<Object[]> - Coleo 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 Servio Foto sb.append("osFoto.orse_id AS idOS, ");//1 - ID Ordem Servio sb.append("osFoto.osft_dsfoto AS descricaoFoto, ");//2 - Descrio 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 * * Mtodo que vai retornar as fotos de uma determinada * ordem de servio passada no parmetro. * * @author Diogo Peixoto * @date 12/08/2011 * * @param Integer - ID da Foto da Ordem de Servio * * @return Collection<Object[]> - Foto da Ordem de Servio * @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 Servio Foto sb.append("osFoto.orse_id AS idOS, ");//1 - ID Ordem Servio sb.append("osFoto.osft_dsfoto AS descricaoFoto, ");//2 - Descrio 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 nmero de dias e quantidade de OS para Prazo Mdio 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 Ligao de gua por Perodo 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 Ligao de Esgoto por Perodo 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 Ligaes de gua por Situao 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 Instalao de Ramal * * Gerao 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; } }