package gcom.relatorio.micromedicao;
import gcom.batch.Relatorio;
import gcom.cadastro.empresa.Empresa;
import gcom.cadastro.empresa.FiltroEmpresa;
import gcom.cadastro.localidade.FiltroGerenciaRegional;
import gcom.cadastro.localidade.FiltroLocalidade;
import gcom.cadastro.localidade.FiltroSetorComercial;
import gcom.cadastro.localidade.FiltroUnidadeNegocio;
import gcom.cadastro.localidade.GerenciaRegional;
import gcom.cadastro.localidade.Localidade;
import gcom.cadastro.localidade.SetorComercial;
import gcom.cadastro.localidade.UnidadeNegocio;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.fachada.Fachada;
import gcom.faturamento.FaturamentoGrupo;
import gcom.faturamento.FiltroFaturamentoGrupo;
import gcom.micromedicao.FiltroLeiturista;
import gcom.micromedicao.Leiturista;
import gcom.micromedicao.bean.AnormalidadeLeituraHelper;
import gcom.micromedicao.bean.ComparativoLeiturasEAnormalidadesRelatorioHelper;
import gcom.micromedicao.leitura.FiltroLeituraAnormalidade;
import gcom.micromedicao.leitura.LeituraAnormalidade;
import gcom.relatorio.ConstantesRelatorios;
import gcom.relatorio.RelatorioDataSource;
import gcom.relatorio.RelatorioVazioException;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.tarefa.TarefaException;
import gcom.tarefa.TarefaRelatorio;
import gcom.util.ConstantesSistema;
import gcom.util.ControladorException;
import gcom.util.Util;
import gcom.util.agendadortarefas.AgendadorTarefas;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* classe respons�vel por criar o relat�rio do comparativo de leituras e anormalidades
*
* @author Rafael Corr�a - Hugo Leonardo
* @created 12/04/2007 - 18/03/2010
*/
public class RelatorioComparativoLeiturasEAnormalidades extends TarefaRelatorio {
private static final long serialVersionUID = 1L;
public RelatorioComparativoLeiturasEAnormalidades(Usuario usuario) {
super(usuario, ConstantesRelatorios.RELATORIO_COMPARATIVOS_LEITURAS_E_ANORMALIDADES);
}
@Deprecated
public RelatorioComparativoLeiturasEAnormalidades() {
super(null, "");
}
/**
* < <Descri��o do m�todo>>
*
* @param bairros
* Description of the Parameter
* @param bairroParametros
* Description of the Parameter
* @return Descri��o do retorno
* @exception RelatorioVazioException
* Descri��o da exce��o
*/
public Object executar() throws TarefaException {
// valor de retorno
byte[] retorno = null;
// ------------------------------------
Integer idFuncionalidadeIniciada = this.getIdFuncionalidadeIniciada();
// ------------------------------------
Integer idGrupoFaturamento = (Integer) getParametro("idGrupoFaturamento");
Integer idEmpresa = (Integer) getParametro("idEmpresa");
Integer anoMes = (Integer) getParametro("anoMes");
Integer idLocalidadeInicial = (Integer) getParametro("idLocalidadeInicial");
Integer idLocalidadeFinal = (Integer) getParametro("idLocalidadeFinal");
Integer idSetorInicial = (Integer) getParametro("idSetorInicial");
Integer idSetorFinal = (Integer) getParametro("idSetorFinal");
Integer idGerencia = (Integer) getParametro("idGerencia");
Integer idUnidadeNegocio = (Integer) getParametro("idUnidadeNegocio");
Integer idLeiturista = (Integer) getParametro("idLeiturista");
Integer idRotaInicial = (Integer) getParametro("idRotaInicial");
Integer idRotaFinal = (Integer) getParametro("idRotaFinal");
Integer idPerfilImovel = (Integer) getParametro("idPerfilImovel");
Integer numOcorrenciasConsecutivas = (Integer) getParametro("numOcorrenciasConsecutivas");
Collection<Integer> colecaoAnormalidadesLeituras = (Collection) getParametro("colecaoAnormalidadesLeituras");
int tipoFormatoRelatorio = (Integer) getParametro("tipoFormatoRelatorio");
// cole��o de beans do relat�rio
List relatorioBeans = new ArrayList();
Fachada fachada = Fachada.getInstancia();
RelatorioComparativoLeiturasEAnormalidadesBean relatorioBean = null;
Collection colecaoDadosRelatorioComparativoLeiturasEAnormalidades = fachada
.pesquisarDadosRelatorioComparativoLeiturasEAnormalidades(
idGrupoFaturamento, idEmpresa, anoMes,
idLocalidadeInicial, idLocalidadeFinal,
idSetorInicial, idSetorFinal,
idGerencia, idUnidadeNegocio, idLeiturista, idRotaInicial, idRotaFinal,
idPerfilImovel, numOcorrenciasConsecutivas, colecaoAnormalidadesLeituras);
// se a cole��o de par�metros da analise n�o for vazia
if (colecaoDadosRelatorioComparativoLeiturasEAnormalidades != null && !colecaoDadosRelatorioComparativoLeiturasEAnormalidades.isEmpty()) {
String empresa = "";
String grupoFaturamento = "";
if (idEmpresa != null) {
FiltroEmpresa filtroEmpresa = new FiltroEmpresa();
filtroEmpresa.adicionarParametro(new ParametroSimples(
FiltroEmpresa.ID, idEmpresa));
Collection colecaoPesquisa = fachada.pesquisar(
filtroEmpresa, Empresa.class.getName());
Empresa emp = (Empresa) Util.retonarObjetoDeColecao(colecaoPesquisa);
empresa = emp.getId()+ "-" + emp.getDescricao();
}
if(idGrupoFaturamento != null){
FiltroFaturamentoGrupo filtroFaturamentoGrupo = new FiltroFaturamentoGrupo();
filtroFaturamentoGrupo.adicionarParametro(new ParametroSimples(
FiltroFaturamentoGrupo.ID, idGrupoFaturamento));
Collection colecaoPesquisa = fachada.pesquisar(
filtroFaturamentoGrupo, FaturamentoGrupo.class.getName());
FaturamentoGrupo faturamentoGrupo = (FaturamentoGrupo) Util.retonarObjetoDeColecao(colecaoPesquisa);
grupoFaturamento = faturamentoGrupo.getDescricao();
}
// coloca a cole��o de par�metros da analise no iterator
Iterator colecaoDadosRelatorioComparativoLeiturasEAnormalidadesIterator = colecaoDadosRelatorioComparativoLeiturasEAnormalidades.iterator();
// la�o para criar a cole��o de par�metros da analise
while (colecaoDadosRelatorioComparativoLeiturasEAnormalidadesIterator.hasNext()) {
ComparativoLeiturasEAnormalidadesRelatorioHelper comparativoLeiturasEAnormalidadesRelatorioHelper = (ComparativoLeiturasEAnormalidadesRelatorioHelper) colecaoDadosRelatorioComparativoLeiturasEAnormalidadesIterator
.next();
relatorioBean = new RelatorioComparativoLeiturasEAnormalidadesBean(
// Grupo de Faturamento
grupoFaturamento,
// Empresa
empresa,
// Id do Setor Comercial
comparativoLeiturasEAnormalidadesRelatorioHelper.getCodigoSetorComercial().toString(),
// Id da Localidade
comparativoLeiturasEAnormalidadesRelatorioHelper.getIdLocalidade().toString(),
// C�digo do Setor Comercial
comparativoLeiturasEAnormalidadesRelatorioHelper.getCodigoSetorComercial().toString(),
// Registros Recebidos
comparativoLeiturasEAnormalidadesRelatorioHelper.getRegistrosRecebidos().toString(),
// Registros c/ Leitura
comparativoLeiturasEAnormalidadesRelatorioHelper.getRegistrosComLeitura().toString(),
// Registros c/ Anormalidade
comparativoLeiturasEAnormalidadesRelatorioHelper.getRegistrosComAnormalidade().toString(),
// Registros c/ Leitura e Anormalidade
comparativoLeiturasEAnormalidadesRelatorioHelper.getRegistrosComLeituraEAnormalidade().toString(),
// Anormalidade de Leitura
null,
// Quantidade de Anormalidades de Leitura
null,
//Quantidade de Leituras Enviadas
comparativoLeiturasEAnormalidadesRelatorioHelper.getRegistrosEnviados().toString(),
//rota
comparativoLeiturasEAnormalidadesRelatorioHelper.getCodigoRota().toString(),
// Registros Recebidos Convencional
comparativoLeiturasEAnormalidadesRelatorioHelper.getRegistrosRecebidosConvencional().toString(),
// Registros Recebidos Simultaneo
comparativoLeiturasEAnormalidadesRelatorioHelper.getRegistrosRecebidosSimultaneo().toString()
);
// adiciona o bean a cole��o
relatorioBeans.add(relatorioBean);
}
}
Collection colecaoAnormalidadesLeiturasRelatorio = fachada
.pesquisarAnormalidadesRelatorioComparativoLeiturasEAnormalidades(
idGrupoFaturamento, idEmpresa, anoMes,
idLocalidadeInicial, idLocalidadeFinal,
idSetorInicial, idSetorFinal,
idGerencia, idUnidadeNegocio, idLeiturista, idRotaInicial, idRotaFinal,
idPerfilImovel, numOcorrenciasConsecutivas, colecaoAnormalidadesLeituras);
// se a cole��o de par�metros da analise n�o for vazia
if (colecaoAnormalidadesLeiturasRelatorio != null
&& !colecaoAnormalidadesLeiturasRelatorio
.isEmpty()) {
// coloca a cole��o de par�metros da analise no iterator
Iterator colecaoAnormalidadesLeiturasRelatorioIterator = colecaoAnormalidadesLeiturasRelatorio
.iterator();
// la�o para criar a cole��o de par�metros da analise
while (colecaoAnormalidadesLeiturasRelatorioIterator
.hasNext()) {
AnormalidadeLeituraHelper anormalidadeLeituraHelper = (AnormalidadeLeituraHelper) colecaoAnormalidadesLeiturasRelatorioIterator
.next();
String anormalidadeLeitura = "";
if (anormalidadeLeituraHelper
.getIdAnormalidadeLeitura() != null) {
anormalidadeLeitura = anormalidadeLeituraHelper
.getIdAnormalidadeLeitura()
+ " - "
+ anormalidadeLeituraHelper
.getDescricaoAnormalidadeLeitura();
}
String empresa = "";
if (idEmpresa != null) {
empresa = anormalidadeLeituraHelper.getIdEmpresa() + " - " + anormalidadeLeituraHelper.getNomeEmpresa();
}
String grupoFaturamento = null;
if(idGrupoFaturamento != null){
grupoFaturamento = anormalidadeLeituraHelper
.getIdGrupoFaturamento().toString();
}
relatorioBean = new RelatorioComparativoLeiturasEAnormalidadesBean(
// Grupo de Faturamento
grupoFaturamento,
// Empresa
empresa,
// Id do Setor Comercial
null,
// Id da Localidade
null,
// C�digo do Setor Comercial
null,
// Registros Recebidos
null,
// Registros c/ Leitura
null,
// Registros c/ Anormalidade
null,
// Registros c/ Leitura e Anormalidade
null,
// Anormalidade de Leitura
anormalidadeLeitura,
// Quantidade de Anormalidades de Leitura
anormalidadeLeituraHelper.getQuantidade().toString(),
// Quantidade de Leituras Enviadas
null,
//Rota
null,
// Registros Recebidos Convencional
null,
// Registros Recebidos Simultaneo
null
);
// adiciona o bean a cole��o
relatorioBeans.add(relatorioBean);
}
}
// __________________________________________________________________
// Par�metros do relat�rio
Map parametros = new HashMap();
// adiciona os par�metros do relat�rio
// adiciona o laudo da an�lise
SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema();
parametros.put("imagem", sistemaParametro.getImagemRelatorio());
parametros.put("mesAno", Util.formatarAnoMesParaMesAno(anoMes));
parametros.put("tipoFormatoRelatorio", "R0939");
//Localidade Inicial
if ( idLocalidadeInicial != null && !idLocalidadeInicial.equals("") ) {
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
filtroLocalidade.adicionarParametro( new ParametroSimples( FiltroLocalidade.ID, idLocalidadeInicial));
Collection colecaoLocalidadeInicial = fachada.pesquisar(filtroLocalidade, Localidade.class.getName());
Localidade localidadeInicial = (Localidade) Util.retonarObjetoDeColecao(colecaoLocalidadeInicial);
parametros.put("localidadeInicialDescricao", localidadeInicial.getDescricao() );
}
//Localidade Final
if ( idLocalidadeFinal != null && !idLocalidadeFinal.equals("") ) {
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
filtroLocalidade.adicionarParametro( new ParametroSimples( FiltroLocalidade.ID, idLocalidadeFinal));
Collection colecaoLocalidadeFinal = fachada.pesquisar(filtroLocalidade, Localidade.class.getName());
Localidade localidadeFinal = (Localidade) Util.retonarObjetoDeColecao(colecaoLocalidadeFinal);
parametros.put("localidadeFinalDescricao", localidadeFinal.getDescricao() );
}
//Setor Comercial Inicial
if ( idSetorInicial != null && !idSetorInicial.equals("") ) {
FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial();
filtroSetorComercial.adicionarParametro( new ParametroSimples( FiltroSetorComercial.ID, idSetorInicial));
Collection colecaoSetor = fachada.pesquisar(filtroSetorComercial, SetorComercial.class.getName());
SetorComercial setorComercial = (SetorComercial) Util.retonarObjetoDeColecao(colecaoSetor);
parametros.put("setorComercialInicialDescricao", setorComercial.getDescricao());
}
//Setor Comercial Final
if ( idSetorFinal != null && !idSetorFinal.equals("") ) {
FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial();
filtroSetorComercial.adicionarParametro( new ParametroSimples( FiltroSetorComercial.ID, idSetorFinal));
Collection colecaoSetor = fachada.pesquisar(filtroSetorComercial, SetorComercial.class.getName());
SetorComercial setorComercial = (SetorComercial) Util.retonarObjetoDeColecao(colecaoSetor);
parametros.put("setorComercialFinalDescricao", setorComercial.getDescricao());
}
//Unidade Negocio
if ( idUnidadeNegocio != null && !idUnidadeNegocio.equals("") ) {
FiltroUnidadeNegocio filtroUnidadeNegocio = new FiltroUnidadeNegocio();
filtroUnidadeNegocio.adicionarParametro( new ParametroSimples( FiltroUnidadeNegocio.ID, idUnidadeNegocio));
Collection colecaoUnidade = fachada.pesquisar(filtroUnidadeNegocio, UnidadeNegocio.class.getName());
UnidadeNegocio unidadeNegocio = (UnidadeNegocio) Util.retonarObjetoDeColecao(colecaoUnidade);
parametros.put("unidadeNegocioDescricao", unidadeNegocio.getNome());
}
//Gerencia Regional
if ( idGerencia != null && !idGerencia.equals("") ) {
FiltroGerenciaRegional filtroGerencia = new FiltroGerenciaRegional();
filtroGerencia.adicionarParametro( new ParametroSimples( FiltroGerenciaRegional.ID, idGerencia));
Collection colecaoGerencia = fachada.pesquisar(filtroGerencia, GerenciaRegional.class.getName());
GerenciaRegional gerenciaRegional = (GerenciaRegional) Util.retonarObjetoDeColecao(colecaoGerencia);
parametros.put("gerenciaRegionalDescricao", gerenciaRegional.getNome());
}
// Leiturista
if(idLeiturista != null && !idLeiturista.equals("") && !idLeiturista.equals(ConstantesSistema.NUMERO_NAO_INFORMADO)){
FiltroLeiturista filtroLeiturista = new FiltroLeiturista();
filtroLeiturista.adicionarParametro( new ParametroSimples( FiltroLeiturista.ID, idLeiturista));
filtroLeiturista.adicionarParametro(new ParametroSimples(
FiltroLeiturista.INDICADOR_USO, ConstantesSistema.SIM));
filtroLeiturista
.adicionarCaminhoParaCarregamentoEntidade(FiltroLeiturista.CLIENTE);
filtroLeiturista
.adicionarCaminhoParaCarregamentoEntidade(FiltroLeiturista.FUNCIONARIO);
Collection colecaoLeiturista = fachada.pesquisar(filtroLeiturista, Leiturista.class.getName());
Leiturista leiturista = (Leiturista) Util.retonarObjetoDeColecao(colecaoLeiturista);
if ( leiturista.getFuncionario() != null ){
parametros.put("leituristaDescicao", leiturista.getFuncionario().getNome() );
} else {
parametros.put("leituristaDescicao", leiturista.getCliente().getNome() );
}
}
// Rota Inicial
if(idRotaInicial != null && !idRotaInicial.equals("")){
parametros.put("rotaInicialDescricao", idRotaInicial.toString());
}
// Rota Final
if(idRotaFinal != null && !idRotaFinal.equals("")){
parametros.put("rotaFinalDescricao", idRotaFinal.toString());
}
// Perfil do Im�vel
if(Util.verificarIdNaoVazio(String.valueOf(idPerfilImovel))){
parametros.put("perfilImovel", fachada.pesquisarImovelPerfil(idPerfilImovel).getDescricao());
}
// Anormalidade de Leitura
if(colecaoAnormalidadesLeituras != null && !colecaoAnormalidadesLeituras.isEmpty()){
if(colecaoAnormalidadesLeituras.size() >= 1){
String anormalidades = "";
Iterator iter = colecaoAnormalidadesLeituras.iterator();
int contador = 0;
while (iter.hasNext()) {
String idAnormladidade = (String) iter.next();
if(!idAnormladidade.equals("-1")){
FiltroLeituraAnormalidade filtro = new FiltroLeituraAnormalidade();
filtro.adicionarParametro(new ParametroSimples(FiltroLeituraAnormalidade.ID, new Integer(idAnormladidade)));
anormalidades += ((LeituraAnormalidade) Util.retonarObjetoDeColecao(fachada.pesquisar(filtro, LeituraAnormalidade.class.getName()))).getDescricao();
if (iter.hasNext()) {
anormalidades += ", ";
}
contador++;
if (contador == 3) {
anormalidades += "etc";
break;
}
}
}
if(anormalidades != null && !anormalidades.equals("")){
parametros.put("anormalidadesLeituras", anormalidades);
}
}
}
if(Util.verificarIdNaoVazio(String.valueOf(numOcorrenciasConsecutivas))){
parametros.put("numOcorrenciasConsecutivas", numOcorrenciasConsecutivas);
}
// cria uma inst�ncia do dataSource do relat�rio
RelatorioDataSource ds = new RelatorioDataSource(relatorioBeans);
retorno = gerarRelatorio(ConstantesRelatorios.RELATORIO_COMPARATIVOS_LEITURAS_E_ANORMALIDADES,
parametros, ds, tipoFormatoRelatorio);
// ------------------------------------
// Grava o relat�rio no sistema
try {
persistirRelatorioConcluido(retorno, Relatorio.COMPARATIVO_LEITURAS_E_ANORMALIDADES,
idFuncionalidadeIniciada);
} catch (ControladorException e) {
e.printStackTrace();
throw new TarefaException("Erro ao gravar relat�rio no sistema", e);
}
// ------------------------------------
// retorna o relat�rio gerado
return retorno;
}
@Override
public int calcularTotalRegistrosRelatorio() {
/*
Fachada fachada = Fachada.getInstancia();
Integer idGrupoFaturamento = (Integer) getParametro("idGrupoFaturamento");
Integer idEmpresa = (Integer) getParametro("idEmpresa");
Integer anoMes = (Integer) getParametro("anoMes");
Integer idLocalidadeInicial = (Integer) getParametro("idLocalidadeInicial");
Integer idLocalidadeFinal = (Integer) getParametro("idLocalidadeFinal");
Integer idSetorInicial = (Integer) getParametro("idSetorInicial");
Integer idSetorFinal = (Integer) getParametro("idSetorFinal");
Integer idGerencia = (Integer) getParametro("idGerencia");
Integer idUnidadeNegocio = (Integer) getParametro("idUnidadeNegocio");
Integer idLeiturista = (Integer) getParametro("idLeiturista");
Integer idRotaInicial = (Integer) getParametro("idRotaInicial");
Integer idRotaFinal = (Integer) getParametro("idRotaFinal");
Integer idPerfilImovel = (Integer) getParametro("idPerfilImovel");
Integer numOcorrenciasConsecutivas = (Integer) getParametro("numOcorrenciasConsecutivas");
Collection<Integer> colecaoAnormalidadesLeituras = (Collection) getParametro("colecaoAnormalidadesLeituras");
Integer colecaoDadosRelatorioComparativoLeiturasEAnormalidades = fachada
.pesquisarDadosRelatorioComparativoLeiturasEAnormalidadesCount(
idGrupoFaturamento, idEmpresa, anoMes,
idLocalidadeInicial, idLocalidadeFinal,
idSetorInicial, idSetorFinal,
idGerencia, idUnidadeNegocio, idLeiturista, idRotaInicial, idRotaFinal,
idPerfilImovel, numOcorrenciasConsecutivas, colecaoAnormalidadesLeituras);
if (colecaoDadosRelatorioComparativoLeiturasEAnormalidades > 0) {
int retorno = 10;
return retorno;
} else {
throw new ActionServletException("atencao.pesquisa.nenhumresultado");
}
*/
return 10;
}
public void agendarTarefaBatch() {
AgendadorTarefas.agendarTarefa("RelatorioComparativoLeiturasEAnormalidades", this);
}
}