package gcom.relatorio.cadastro;
import gcom.batch.Relatorio;
import gcom.cadastro.localidade.FiltroGerenciaRegional;
import gcom.cadastro.localidade.FiltroUnidadeNegocio;
import gcom.cadastro.localidade.GerenciaRegional;
import gcom.cadastro.localidade.UnidadeNegocio;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
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 gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* [UC1076] Gerar Relat�rio Atualiza��es Cadastrais Via Internet.
*
* @author Daniel Alves,Hugo Amorim
* @date 28/09/2010,04/10/2010
*/
public class RelatorioAtualizacaoCadastralViaInternet extends TarefaRelatorio {
private static final long serialVersionUID = 1L;
public RelatorioAtualizacaoCadastralViaInternet(Usuario usuario) {
super(usuario, ConstantesRelatorios.RELATORIO_ATUALIZACAO_CADASTRAL_VIA_INTERNET);
}
@Deprecated
public RelatorioAtualizacaoCadastralViaInternet() {
super(null, "");
}
/**
* M�todo que executa a tarefa
*
* @return Object
*
*/
public Object executar() throws TarefaException {
// ------------------------------------
Integer idFuncionalidadeIniciada = this.getIdFuncionalidadeIniciada();
// ------------------------------------
Fachada fachada = Fachada.getInstancia();
String filtroPeriodoInicial = (String) getParametro("filtroPeriodoInicial");
String filtroPeriodoFinal = (String) getParametro("filtroPeriodoFinal");
String filtroGerenciaRegional = (String) getParametro("filtroGerenciaRegional");
String filtroUnidadeNegocio = (String) getParametro("filtroUnidadeNegocio");
String filtroLocalidadeInicial = (String) getParametro("filtroLocalidadeInicial");
String filtroLocalidadeFinal = (String) getParametro("filtroLocalidadeFinal");
int tipoFormatoRelatorio = (Integer) getParametro("tipoFormatoRelatorio");
//Parametros
String gerencia = "";
String unidade = "";
// cole��o de beans do relat�rio
List relatorioBeans = new ArrayList();
SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema();
GerarRelatorioAtualizacaoCadastralViaInternetHelper filtro = new GerarRelatorioAtualizacaoCadastralViaInternetHelper();
filtro.setPeriodoReferenciaInicial(filtroPeriodoInicial);
filtro.setPeriodoReferenciaFinal(filtroPeriodoFinal);
if(filtroGerenciaRegional != null && !filtroGerenciaRegional.equals("-1")){
filtro.setIdGerenciaRegional(Integer.parseInt(filtroGerenciaRegional));
FiltroGerenciaRegional pesquisaGerenciaRegional = new FiltroGerenciaRegional();
pesquisaGerenciaRegional.adicionarParametro(new ParametroSimples(FiltroGerenciaRegional.ID, filtroGerenciaRegional));
Collection<GerenciaRegional> colecaoGerencias = fachada.pesquisar(pesquisaGerenciaRegional, GerenciaRegional.class.getName());
for (GerenciaRegional gerenciaRegional : colecaoGerencias) {
gerencia = gerenciaRegional.getNome();
}
}
if(filtroUnidadeNegocio != null && !filtroUnidadeNegocio.equals("-1")){
filtro.setIdUnidadeNegocio(Integer.parseInt(filtroUnidadeNegocio));
FiltroUnidadeNegocio pesquisaUnidadeNegocio = new FiltroUnidadeNegocio();
pesquisaUnidadeNegocio.adicionarParametro(new ParametroSimples(FiltroUnidadeNegocio.ID, filtroUnidadeNegocio));
Collection<UnidadeNegocio> colecaoUnidade = fachada.pesquisar(pesquisaUnidadeNegocio, UnidadeNegocio.class.getName());
for (UnidadeNegocio unidadeNegocio : colecaoUnidade) {
unidade = unidadeNegocio.getNome();
}
}
if(filtroLocalidadeInicial != null && !filtroLocalidadeInicial.equals("")
&& filtroLocalidadeFinal != null && !filtroLocalidadeFinal.equals("")){
filtro.setIdLocalidadeInicial(Integer.parseInt(filtroLocalidadeInicial));
filtro.setIdLocalidadeFinal(Integer.parseInt(filtroLocalidadeFinal));
}
Collection colecaAtualizacaoCadastralViaInternet = null;
try {
colecaAtualizacaoCadastralViaInternet = fachada.pesquisarDadosRelatorioAtualizacaoCadastralViaInternet(filtro);
} catch (ControladorException e1) {
//throw new ActionServletException("atencao.naocadastrado", null, "Unidade de Neg�cio");
}
Iterator iterator = colecaAtualizacaoCadastralViaInternet.iterator();
RelatorioAtualizacaoCadastralViaInternetBean relatorioBean = null;
while(iterator.hasNext()){
relatorioBean = new RelatorioAtualizacaoCadastralViaInternetBean();
Object[] obj = (Object[]) iterator.next();
relatorioBean.setMatricula((Integer)obj[0]+"");
relatorioBean.setLocalidade((Integer)obj[1]+"");
relatorioBean.setUnidade(obj[14]+"");
relatorioBean.setGerencia(obj[15]+"");
relatorioBean.setDataConfirmacao(Util.formatarData((Date) obj[16]));
relatorioBean.setIdCliente((Integer)obj[17]+"");
//Dados Alterados
String nomeClienteAnterior = ((String)obj[2]);
String nomeClienteAtual = ((String)obj[3]);
String cpfAnterior = ((String)obj[4]);
String cpfAtual = ((String)obj[5]);
String cnpjAnterior = ((String)obj[6]);
String cnpjAtual = ((String)obj[7]);
String emailAnterior = ((String)obj[8]);
String emailAtual = ((String)obj[9]);
//criar uma colecao de "Dados Alterados" e formatar conforme abaixo.
String alteracao = "";
nomeClienteAnterior = nomeClienteAnterior != null ?nomeClienteAnterior:"N�o Informado";
nomeClienteAtual = nomeClienteAtual != null ?nomeClienteAtual:"N�o Informado";
cpfAnterior = cpfAnterior != null ?cpfAnterior:"N�o Informado";
cpfAtual = cpfAtual != null ?cpfAtual:"N�o Informado";
cnpjAnterior = cnpjAnterior != null ?cnpjAnterior:"N�o Informado";
cnpjAtual = cnpjAtual != null ?cnpjAtual:"N�o Informado";
emailAnterior = emailAnterior != null ?emailAnterior:"N�o Informado";
emailAtual = emailAtual != null ?emailAtual:"N�o Informado";
if(!nomeClienteAnterior.equals(nomeClienteAtual)){
alteracao += "Nome Anterior: " + nomeClienteAnterior +" Nome Atual: " +nomeClienteAtual+"\n";
}
if(!cpfAnterior.equals(cpfAtual)){
alteracao += "Cpf Anterior: " + cpfAnterior +" Cpf Atual: " +cpfAtual+"\n";
}
if(!cnpjAnterior.equals(cnpjAtual)){
alteracao += "Cnpj Anterior: " + cnpjAnterior +" Cnpj Atual: " +cnpjAtual+"\n";
}
if(!emailAnterior.equalsIgnoreCase(emailAtual)){
alteracao += "Email Anterior: " + emailAnterior +" Email Atual: " +emailAtual+"\n";
}
relatorioBean.setAlteracao(alteracao);
//Solicitante
String confirmacaoOnline = (Util.formatarDataComHora((Date)obj[10]));
String nomeSolicitante = ((String)obj[11]);
String cpfSolicitante = ((String)obj[12]);
Integer telefoneContato = (Integer)obj[13];
String solicitante = "";
solicitante = "Alterado em "+ confirmacaoOnline
+ " por "+nomeSolicitante+" CPF:"
+cpfSolicitante;
if(telefoneContato!=null && !telefoneContato.equals("")){
solicitante += " Fone: " +telefoneContato;
}
relatorioBean.setSolicitante(solicitante);
relatorioBeans.add(relatorioBean);
}
// valor de retorno
byte[] retorno = null;
// Par�metros do relat�rio
Map<String, String> parametros = new HashMap();
parametros.put("filtroGerenciaRegional", gerencia);
parametros.put("filtroUnidadeNegocio", unidade);
parametros.put("filtroLocalidadeInicial", filtroLocalidadeInicial);
parametros.put("filtroLocalidadeFinal", filtroLocalidadeFinal);
parametros.put("imagem", sistemaParametro.getImagemRelatorio());
parametros.put("filtroPeriodoInicial", filtroPeriodoInicial);
parametros.put("filtroPeriodoFinal", filtroPeriodoFinal);
parametros.put("tipoRelatorio", "R1076");
Collection colecaResumoAtualizacaoCadastralViaInternet = null;
try {
colecaResumoAtualizacaoCadastralViaInternet = fachada.pesquisarDadosRelatorioResumoAtualizacaoCadastralViaInternet(filtro);
} catch (ControladorException e1) {
e1.printStackTrace();
//throw new ActionServletException("atencao.naocadastrado", null, "Unidade de Neg�cio");
}
Iterator iteratorResumo = colecaResumoAtualizacaoCadastralViaInternet.iterator();
while(iteratorResumo.hasNext()){
Object[] obj = (Object[]) iteratorResumo.next();
parametros.put("QuantidadeNome", (obj[0]!=null?((Integer)obj[0]).toString():"0"));
parametros.put("QuantidadeCPF", (obj[1]!=null?((Integer)obj[1]).toString():"0"));
parametros.put("QuantidadeCNPJ", (obj[2]!=null?((Integer)obj[2]).toString():"0"));
parametros.put("QuantidadeEmail", (obj[3]!=null?((Integer)obj[3]).toString():"0"));
parametros.put("QuantidadeClientesAlterados", (obj[4]!=null?((Integer)obj[4]).toString():"0"));
break;
}
RelatorioDataSource ds = new RelatorioDataSource((java.util.List) relatorioBeans );
retorno = this.gerarRelatorio(
ConstantesRelatorios.RELATORIO_ATUALIZACAO_CADASTRAL_VIA_INTERNET, parametros, ds,
tipoFormatoRelatorio);
// ------------------------------------
// Grava o relat�rio no sistema
try {
persistirRelatorioConcluido(retorno, Relatorio.RELATORIO_ATUALIZACAO_CADASTRAL_VIA_INTERNET,
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() {
String filtroPeriodoInicial = (String) getParametro("filtroPeriodoInicial");
String filtroPeriodoFinal = (String) getParametro("filtroPeriodoFinal");
String filtroGerenciaRegional = (String) getParametro("filtroGerenciaRegional");
String filtroUnidadeNegocio = (String) getParametro("filtroUnidadeNegocio");
String filtroLocalidadeInicial = (String) getParametro("filtroLocalidadeInicial");
String filtroLocalidadeFinal = (String) getParametro("filtroLocalidadeFinal");
GerarRelatorioAtualizacaoCadastralViaInternetHelper filtro = new GerarRelatorioAtualizacaoCadastralViaInternetHelper();
filtro.setPeriodoReferenciaInicial(filtroPeriodoInicial);
filtro.setPeriodoReferenciaFinal(filtroPeriodoFinal);
if(filtroGerenciaRegional != null && !filtroGerenciaRegional.equals("-1")){
filtro.setIdGerenciaRegional(Integer.parseInt(filtroGerenciaRegional));
}
if(filtroUnidadeNegocio != null && !filtroUnidadeNegocio.equals("-1")){
filtro.setIdUnidadeNegocio(Integer.parseInt(filtroUnidadeNegocio));
}
if(filtroLocalidadeInicial != null && !filtroLocalidadeInicial.equals("")
&& filtroLocalidadeFinal != null && !filtroLocalidadeFinal.equals("")){
filtro.setIdLocalidadeInicial(Integer.parseInt(filtroLocalidadeInicial));
filtro.setIdLocalidadeFinal(Integer.parseInt(filtroLocalidadeFinal));
}
Integer retorno = new Integer(0);
retorno = Fachada.getInstancia().countRelatorioAtualizacaoCadastralViaInternet(filtro);
if(retorno.intValue() == 0 ){
throw new ActionServletException("atencao.pesquisa.nenhumresultado");
}
return retorno;
}
public void agendarTarefaBatch() {
AgendadorTarefas.agendarTarefa("RelatorioAtualizacaoCadastralViaInternet", this);
}
}