package gcom.relatorio.cadastro.imovel;
import gcom.batch.Relatorio;
import gcom.cadastro.imovel.Imovel;
import gcom.cadastro.imovel.bean.ImovelClientesEspeciaisRelatorioHelper;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.micromedicao.medicao.MedicaoTipo;
import gcom.relatorio.ConstantesRelatorios;
import gcom.relatorio.RelatorioDataSource;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.tarefa.TarefaException;
import gcom.tarefa.TarefaRelatorio;
import gcom.util.ControladorException;
import gcom.util.Util;
import gcom.util.agendadortarefas.AgendadorTarefas;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* classe respons�vel por criar o relat�rio de bairro manter de �gua
*
* @author S�vio Luiz
* @created 11 de Julho de 2005
*/
public class RelatorioClientesEspeciais extends TarefaRelatorio {
private static final long serialVersionUID = 1L;
public RelatorioClientesEspeciais(Usuario usuario) {
super(usuario, ConstantesRelatorios.RELATORIO_CLIENTES_ESPECIAIS);
}
@Deprecated
public RelatorioClientesEspeciais() {
super(null, "");
}
public Object executar() throws TarefaException {
List<RelatorioClientesEspeciaisBean> relatorioBeans = executarConsultaECriarRelatoriosBean();
if(Util.isVazioOrNulo(relatorioBeans)){
throw new ActionServletException("atencao.pesquisa.nenhumresultado");
}
RelatorioDataSource ds = new RelatorioDataSource(relatorioBeans);
int tipoFormatoRelatorio = (Integer) getParametro("tipoFormatoRelatorio");
byte[] retorno = gerarRelatorio(ConstantesRelatorios.RELATORIO_CLIENTES_ESPECIAIS,
criarParametros() , ds, tipoFormatoRelatorio);
try {
persistirRelatorioConcluido(retorno, Relatorio.CLIENTES_ESPECIAIS,this.getIdFuncionalidadeIniciada());
} catch (ControladorException e) {
e.printStackTrace();
throw new TarefaException("Erro ao gravar relat�rio no sistema", e);
}
return retorno;
}
/**
* O m�todo cria os parametros necess�rios a gera��o do relatorio.
*
*@since 06/10/2009
*@author Marlon Patrick
*/
private Map<String, Object> criarParametros() {
Map<String,Object> parametros = new HashMap<String,Object>();
parametros.put("imagem", Fachada.getInstancia().pesquisarParametrosDoSistema().getImagemRelatorio());
parametros.put("tipoFormatoRelatorio", "R0591");
return parametros;
}
/**
* Esse m�todo tem a l�gica para realizar a consulta referente ao relatorio
* e a partir do resultado obtido criar os beans.
*
*@since 06/10/2009
*@author Marlon Patrick
*/
private List<RelatorioClientesEspeciaisBean> executarConsultaECriarRelatoriosBean() {
Collection<ImovelClientesEspeciaisRelatorioHelper>
colecaoImovelClientesEspeciaisRelatorioHelper = executarConsulta();
List<RelatorioClientesEspeciaisBean> relatorioBeans = new ArrayList<RelatorioClientesEspeciaisBean>();
if ( !Util.isVazioOrNulo(colecaoImovelClientesEspeciaisRelatorioHelper)) {
Collections.sort(
(List<ImovelClientesEspeciaisRelatorioHelper>) colecaoImovelClientesEspeciaisRelatorioHelper,
new ComparatorImovelClientesEspeciaisRelatorioHelper());
Iterator<ImovelClientesEspeciaisRelatorioHelper> colecaoImovelClientesEspeciaisRelatorioHelperIterator =
colecaoImovelClientesEspeciaisRelatorioHelper.iterator();
while (colecaoImovelClientesEspeciaisRelatorioHelperIterator.hasNext()) {
ImovelClientesEspeciaisRelatorioHelper imovelClientesEspeciaisRelatorioHelper = colecaoImovelClientesEspeciaisRelatorioHelperIterator.next();
RelatorioClientesEspeciaisBean relatorioBean = new RelatorioClientesEspeciaisBean();
if (imovelClientesEspeciaisRelatorioHelper.getIdGerenciaRegional() != null) {
relatorioBean.setGerenciaRegional(
imovelClientesEspeciaisRelatorioHelper.getIdGerenciaRegional()
+ " - "
+ imovelClientesEspeciaisRelatorioHelper.getNomeGerenciaRegional());
}
if (imovelClientesEspeciaisRelatorioHelper.getIdCategoria() != null) {
relatorioBean.setCategoria(
imovelClientesEspeciaisRelatorioHelper.getIdCategoria()
+ " - "
+ imovelClientesEspeciaisRelatorioHelper.getDescricaoCategoria());
}
if (imovelClientesEspeciaisRelatorioHelper.getIdLocalidade() != null) {
relatorioBean.setLocalidade(
imovelClientesEspeciaisRelatorioHelper.getIdLocalidade()
+ " - "
+ imovelClientesEspeciaisRelatorioHelper.getNomeLocalidade());
}
if (imovelClientesEspeciaisRelatorioHelper.getIdSubcategoria() != null) {
relatorioBean.setSubcategoria(
imovelClientesEspeciaisRelatorioHelper.getIdSubcategoria().toString());
}
if (imovelClientesEspeciaisRelatorioHelper.getDataInstalacaoHidrometro() != null) {
relatorioBean.setDataInstalacao(
Util.formatarData(imovelClientesEspeciaisRelatorioHelper
.getDataInstalacaoHidrometro()));
}
if (imovelClientesEspeciaisRelatorioHelper.getIdClienteUsuario() != null) {
relatorioBean.setClienteUsuario(
imovelClientesEspeciaisRelatorioHelper.getIdClienteUsuario()
+ " - "
+ imovelClientesEspeciaisRelatorioHelper.getNomeClienteUsuario());
}
if (imovelClientesEspeciaisRelatorioHelper.getIdClienteResponsavel() != null) {
relatorioBean.setClienteResponsavel(
imovelClientesEspeciaisRelatorioHelper.getIdClienteResponsavel()
+ " - "
+ imovelClientesEspeciaisRelatorioHelper.getNomeClienteResponsavel());
}
if (imovelClientesEspeciaisRelatorioHelper.getQtdeEconomias() != null) {
relatorioBean.setQtdeEconomias(
imovelClientesEspeciaisRelatorioHelper.getQtdeEconomias().toString());
}
if (imovelClientesEspeciaisRelatorioHelper.getConsumoAgua() != null) {
relatorioBean.setConsumoAgua(
imovelClientesEspeciaisRelatorioHelper.getConsumoAgua().toString());
}
if (imovelClientesEspeciaisRelatorioHelper.getConsumoEsgoto() != null) {
relatorioBean.setConsumoEsgoto(
imovelClientesEspeciaisRelatorioHelper.getConsumoEsgoto().toString());
}
/**
* Alterando o c�lculo da m�dia
*/
Fachada fachada = Fachada.getInstancia();
Imovel imovel = new Imovel(imovelClientesEspeciaisRelatorioHelper.getIdImovel());
MedicaoTipo medicao = new MedicaoTipo();
medicao.setId(new Integer(MedicaoTipo.LIGACAO_AGUA));
boolean houveIntslacaoHidrometro = false;
try {
houveIntslacaoHidrometro = fachada.verificarInstalacaoSubstituicaoHidrometro(imovel.getId(), medicao);
} catch (ControladorException e) {
e.printStackTrace();
}
SistemaParametro sistemaParametro = Fachada.getInstancia().pesquisarParametrosDoSistema();
int[] consumoMedioImovel = Fachada.getInstancia().obterVolumeMedioAguaEsgoto(
imovel.getId(),sistemaParametro.getAnoMesFaturamento(),1, houveIntslacaoHidrometro );
relatorioBean.setMedia(String.valueOf(consumoMedioImovel[0]));
if (imovelClientesEspeciaisRelatorioHelper.getConsumoMinimoEsgoto() != null) {
relatorioBean.setEsgotoFixo(imovelClientesEspeciaisRelatorioHelper.getConsumoMinimoEsgoto().toString());
}
if (imovelClientesEspeciaisRelatorioHelper.getValorDebitosVencidos() != null) {
relatorioBean.setDebitosVencidos(imovelClientesEspeciaisRelatorioHelper.getValorDebitosVencidos());
}
if (imovelClientesEspeciaisRelatorioHelper.getQtdeDebitosVencidos() != null) {
relatorioBean.setFaturasEmAtraso(
imovelClientesEspeciaisRelatorioHelper.getQtdeDebitosVencidos().toString());
}
if (imovelClientesEspeciaisRelatorioHelper.getValorAgua() != null) {
relatorioBean.setValorAgua(imovelClientesEspeciaisRelatorioHelper.getValorAgua());
}
if (imovelClientesEspeciaisRelatorioHelper.getValorEsgoto() != null) {
relatorioBean.setValorEsgoto(imovelClientesEspeciaisRelatorioHelper.getValorEsgoto());
}
if (imovelClientesEspeciaisRelatorioHelper.getValorConta() != null) {
relatorioBean.setValorFatura(
Util.formatarMoedaReal(imovelClientesEspeciaisRelatorioHelper.getValorConta()));
}
if(imovelClientesEspeciaisRelatorioHelper.getIdImovel()!=null){
relatorioBean.setMatricula(
imovelClientesEspeciaisRelatorioHelper.getIdImovel().toString());
}
if(imovelClientesEspeciaisRelatorioHelper.getCodigoSetor()!=null){
relatorioBean.setSetor(
imovelClientesEspeciaisRelatorioHelper.getCodigoSetor()
+ " - " +
imovelClientesEspeciaisRelatorioHelper.getDescricaoSetor());
}
if(imovelClientesEspeciaisRelatorioHelper.getCodigoRota()!=null){
relatorioBean.setCodigoRota(
imovelClientesEspeciaisRelatorioHelper.getCodigoRota().toString());
}
if(imovelClientesEspeciaisRelatorioHelper.getIndicadorCobrarMulta()!=null){
relatorioBean.setIndicadorCobraMulta(
imovelClientesEspeciaisRelatorioHelper.getIndicadorCobrarMulta());
}
relatorioBean.setInscricao(imovelClientesEspeciaisRelatorioHelper.getInscricaoImovel());
relatorioBean.setCapacidadeHidrometro(
imovelClientesEspeciaisRelatorioHelper.getDescricaoCapacidadeHidrometro());
relatorioBean.setLigacaoAgua(
imovelClientesEspeciaisRelatorioHelper.getDescricaoSituacaoLigacaoAgua());
relatorioBean.setLigacaoEsgoto(
imovelClientesEspeciaisRelatorioHelper.getDescricaoSituacaoLigacaoEsgoto());
relatorioBean.setTarifaConsumo(
imovelClientesEspeciaisRelatorioHelper.getDescricaoTarifaConsumo());
relatorioBeans.add(relatorioBean);
}
}
return relatorioBeans;
}
/**
* Esse m�todo obtem os parametros e realiza a consulta referente ao relatorio.
*
*@since 06/10/2009
*@author Marlon Patrick
*/
private Collection<ImovelClientesEspeciaisRelatorioHelper> executarConsulta() {
String idUnidadeNegocio = (String) getParametro("idUnidadeNegocio");
String idGerenciaRegional = (String) getParametro("idGerenciaRegional");
String idLocalidadeInicial = (String) getParametro("idLocalidadeInicial");
String idLocalidadeFinal = (String) getParametro("idLocalidadeFinal");
String codigoSetorInicial = (String) getParametro("codigoSetorInicial");
String codigoSetorFinal = (String) getParametro("codigoSetorFinal");
String codigoRotaInicial = (String) getParametro("codigoRotaInicial");
String codigoRotaFinal = (String) getParametro("codigoRotaFinal");
String[] idsPerfilImovel = (String[]) getParametro("idsPerfilImovel");
String[] idsCategoria = (String[]) getParametro("idsCategoria");
String[] idsSubcategoria = (String[]) getParametro("idsSubcategoria");
String idSituacaoAgua = (String) getParametro("idSituacaoAgua");
String idSituacaoEsgoto = (String) getParametro("idSituacaoEsgoto");
String qtdeEconomiasInicial = (String) getParametro("qtdeEconomiasInicial");
String qtdeEconomiasFinal = (String) getParametro("qtdeEconomiasFinal");
String intervaloConsumoAguaInicial = (String) getParametro("intervaloConsumoAguaInicial");
String intervaloConsumoAguaFinal = (String) getParametro("intervaloConsumoAguaFinal");
String intervaloConsumoEsgotoInicial = (String) getParametro("intervaloConsumoEsgotoInicial");
String intervaloConsumoEsgotoFinal = (String) getParametro("intervaloConsumoEsgotoFinal");
String idClienteResponsavel = (String) getParametro("idClienteResponsavel");
String intervaloConsumoResponsavelInicial = (String) getParametro("intervaloConsumoResponsavelInicial");
String intervaloConsumoResponsavelFinal = (String) getParametro("intervaloConsumoResponsavelFinal");
Date dataInstalacaoHidrometroInicial = (Date) getParametro("dataInstalacaoHidrometroInicial");
Date dataInstalacaoHidrometroFinal = (Date) getParametro("dataInstalacaoHidrometroFinal");
String[] idsCapacidadesHidrometro = (String[]) getParametro("idsCapacidadesHidrometro");
String[] idsTarifasConsumo = (String[]) getParametro("idsTarifasConsumo");
String idLeituraAnormalidade = (String) getParametro("idLeituraAnormalidade");
String idConsumoAnormalidade = (String) getParametro("idConsumoAnormalidade");
String leituraAnormalidade = (String) getParametro("leituraAnormalidade");
String consumoAnormalidade = (String) getParametro("consumoAnormalidade");
Fachada fachada = Fachada.getInstancia();
SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema();
Collection<ImovelClientesEspeciaisRelatorioHelper> colecaoImovelClientesEspeciaisRelatorioHelper =
fachada.pesquisarImovelClientesEspeciaisRelatorio(idUnidadeNegocio,idGerenciaRegional,
idLocalidadeInicial,idLocalidadeFinal,
codigoSetorInicial, codigoSetorFinal,
codigoRotaInicial, codigoRotaFinal,
idsPerfilImovel, idsCategoria,
idsSubcategoria, idSituacaoAgua, idSituacaoEsgoto,
qtdeEconomiasInicial, qtdeEconomiasFinal,
intervaloConsumoAguaInicial, intervaloConsumoAguaFinal,
intervaloConsumoEsgotoInicial,
intervaloConsumoEsgotoFinal, idClienteResponsavel,
intervaloConsumoResponsavelInicial,
intervaloConsumoResponsavelFinal,
dataInstalacaoHidrometroInicial,
dataInstalacaoHidrometroFinal,
idsCapacidadesHidrometro, idsTarifasConsumo,
Util.subtrairMesDoAnoMes(sistemaParametro.getAnoMesFaturamento(), 1),
idLeituraAnormalidade, leituraAnormalidade,
idConsumoAnormalidade, consumoAnormalidade);
return colecaoImovelClientesEspeciaisRelatorioHelper;
}
class ComparatorImovelClientesEspeciaisRelatorioHelper implements Comparator<ImovelClientesEspeciaisRelatorioHelper>{
public int compare(ImovelClientesEspeciaisRelatorioHelper a, ImovelClientesEspeciaisRelatorioHelper b) {
String chave1 = a.getIdGerenciaRegional().toString()
+ a.getIdLocalidade().toString()
+ a.getCodigoSetor().toString()
+ a.getCodigoRota().toString()
+ a.getIdCategoria().toString()
+ a.getIdSubcategoria().toString();
String chave2 = b.getIdGerenciaRegional().toString()
+ b.getIdLocalidade().toString()
+ b.getCodigoSetor().toString()
+ b.getCodigoRota().toString()
+ b.getIdCategoria().toString()
+ b.getIdSubcategoria().toString();
return chave1.compareTo(chave2);
}
}
@Override
public int calcularTotalRegistrosRelatorio() {
int retorno = 0;
String idUnidadeNegocio = (String) getParametro("idUnidadeNegocio");
String idGerenciaRegional = (String) getParametro("idGerenciaRegional");
String idLocalidadeInicial = (String) getParametro("idLocalidadeInicial");
String idLocalidadeFinal = (String) getParametro("idLocalidadeFinal");
String codigoSetorInicial = (String) getParametro("codigoSetorInicial");
String codigoSetorFinal = (String) getParametro("codigoSetorFinal");
String codigoRotaInicial = (String) getParametro("codigoRotaInicial");
String codigoRotaFinal = (String) getParametro("codigoRotaFinal");
String[] idsPerfilImovel = (String[]) getParametro("idsPerfilImovel");
String[] idsCategoria = (String[]) getParametro("idsCategoria");
String[] idsSubcategoria = (String[]) getParametro("idsSubcategoria");
String idSituacaoAgua = (String) getParametro("idSituacaoAgua");
String idSituacaoEsgoto = (String) getParametro("idSituacaoEsgoto");
String qtdeEconomiasInicial = (String) getParametro("qtdeEconomiasInicial");
String qtdeEconomiasFinal = (String) getParametro("qtdeEconomiasFinal");
String intervaloConsumoAguaInicial = (String) getParametro("intervaloConsumoAguaInicial");
String intervaloConsumoAguaFinal = (String) getParametro("intervaloConsumoAguaFinal");
String intervaloConsumoEsgotoInicial = (String) getParametro("intervaloConsumoEsgotoInicial");
String intervaloConsumoEsgotoFinal = (String) getParametro("intervaloConsumoEsgotoFinal");
String idClienteResponsavel = (String) getParametro("idClienteResponsavel");
String intervaloConsumoResponsavelInicial = (String) getParametro("intervaloConsumoResponsavelInicial");
String intervaloConsumoResponsavelFinal = (String) getParametro("intervaloConsumoResponsavelFinal");
Date dataInstalacaoHidrometroInicial = (Date) getParametro("dataInstalacaoHidrometroInicial");
Date dataInstalacaoHidrometroFinal = (Date) getParametro("dataInstalacaoHidrometroFinal");
String[] idsCapacidadesHidrometro = (String[]) getParametro("idsCapacidadesHidrometro");
String[] idsTarifasConsumo = (String[]) getParametro("idsTarifasConsumo");
String idLeituraAnormalidade = (String) getParametro("idLeituraAnormalidade");
String idConsumoAnormalidade = (String) getParametro("idConsumoAnormalidade");
String leituraAnormalidade = (String) getParametro("leituraAnormalidade");
String consumoAnormalidade = (String) getParametro("consumoAnormalidade");
Fachada fachada = Fachada.getInstancia();
SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema();
Integer colecaoCount =
fachada.pesquisarImovelClientesEspeciaisRelatorioCount(idUnidadeNegocio,idGerenciaRegional,
idLocalidadeInicial,idLocalidadeFinal,
codigoSetorInicial, codigoSetorFinal,
codigoRotaInicial, codigoRotaFinal,
idsPerfilImovel, idsCategoria,
idsSubcategoria, idSituacaoAgua, idSituacaoEsgoto,
qtdeEconomiasInicial, qtdeEconomiasFinal,
intervaloConsumoAguaInicial, intervaloConsumoAguaFinal,
intervaloConsumoEsgotoInicial,
intervaloConsumoEsgotoFinal, idClienteResponsavel,
intervaloConsumoResponsavelInicial,
intervaloConsumoResponsavelFinal,
dataInstalacaoHidrometroInicial,
dataInstalacaoHidrometroFinal,
idsCapacidadesHidrometro, idsTarifasConsumo,
Util.subtrairMesDoAnoMes(sistemaParametro.getAnoMesFaturamento(), 1),
idLeituraAnormalidade, leituraAnormalidade,
idConsumoAnormalidade, consumoAnormalidade);
if(colecaoCount!=null){
retorno = colecaoCount;
}
return retorno;
}
public void agendarTarefaBatch() {
AgendadorTarefas.agendarTarefa("RelatorioClientesEspeciais", this);
}
}