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