package gcom.relatorio.cadastro;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import gcom.atendimentopublico.registroatendimento.FiltroMeioSolicitacao;
import gcom.atendimentopublico.registroatendimento.MeioSolicitacao;
import gcom.batch.Relatorio;
import gcom.cadastro.localidade.FiltroGerenciaRegional;
import gcom.cadastro.localidade.FiltroLocalidade;
import gcom.cadastro.localidade.FiltroUnidadeNegocio;
import gcom.cadastro.localidade.GerenciaRegional;
import gcom.cadastro.localidade.Localidade;
import gcom.cadastro.localidade.UnidadeNegocio;
import gcom.fachada.Fachada;
import gcom.gui.relatorio.cadastro.GerarRelatorioAlteracoesCpfCnpjHelper;
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;
/**
* [UC1124] Gerar Relat�rio de Altera��es de CPF/CNPJ
*
* @autor Mariana Victor
* @date 16/02/2011
*/
public class RelatorioAlteracoesCpfCnpj extends TarefaRelatorio {
private static final long serialVersionUID = 1L;
public RelatorioAlteracoesCpfCnpj(Usuario usuario, String nomeRelatorio) {
super(usuario, nomeRelatorio);
}
@Deprecated
public RelatorioAlteracoesCpfCnpj() {
super(null, "");
}
/**
* M�todo que executa a tarefa
*
* @return Object
*/
public Object executar() throws TarefaException {
Fachada fachada = Fachada.getInstancia();
// helper pesquisa
GerarRelatorioAlteracoesCpfCnpjHelper helper =
(GerarRelatorioAlteracoesCpfCnpjHelper) getParametro("filtroHelper");
// tipo relatorio
int tipoFormatoRelatorio = (Integer) getParametro("tipoFormatoRelatorio");
// valor de retorno
byte[] retorno = null;
// cole��o de beans do relat�rio
List relatorioBeans = new ArrayList();
// Par�metros do relat�rio
Map parametros = new HashMap();
String meio = "";
if (Util.isCampoComboboxMultiploInformado(helper.getColecaoMeio())){
String[] colecaoMeio = helper.getColecaoMeio();
Collection<Integer> idsMeio = new ArrayList<Integer>();
for (int i = 0; i < colecaoMeio.length; i++) {
idsMeio.add(Integer.parseInt(colecaoMeio[i]));
}
if (!idsMeio.isEmpty()) {
FiltroMeioSolicitacao filtroMeioSolicitacao = new FiltroMeioSolicitacao();
Collection colecaoMeioSolicitacao = fachada.pesquisar(idsMeio, filtroMeioSolicitacao, MeioSolicitacao.class.getName());
Iterator iterator = colecaoMeioSolicitacao.iterator();
while (iterator.hasNext()) {
MeioSolicitacao meioSolicitacao = (MeioSolicitacao) iterator.next();
meio += meioSolicitacao.getDescricao();
meio += ", ";
}
}
}
if (!meio.equals("")) {
meio = meio.substring(0, meio.length() - 2);
parametros.put("meio", meio);
}
parametros.put("periodo", helper.getPeriodoInicial() + " A " + helper.getPeriodoFinal());
parametros.put("imagem", fachada.pesquisarParametrosDoSistema().getImagemRelatorio());
parametros.put("relatorio", "R1124");
if (Integer.parseInt(helper.getTipoRelatorio()) == 2){
if (helper.getOpcaoTotalizacao() != null
&& !helper.getOpcaoTotalizacao().equals("")) {
parametros.put("codigoOpcaoTotalizacao", helper.getOpcaoTotalizacao());
if (helper.getOpcaoTotalizacao().equals("estado")) {
parametros.put("titulo", "RELAT�RIO QUANTIDADES DE OPERA��ES - ESTADO");
parametros.put("gerenciaRegionalHeader", false);
parametros.put("unidadeHeader", false);
parametros.put("localidadeHeader", false);
parametros.put("gerenciaRegionalFooter", false);
} else if (helper.getOpcaoTotalizacao().equals("estadoGerencia")) {
parametros.put("titulo", "RELAT�RIO QUANTIDADES DE OPERA��ES - ESTADO POR GERENCIA REGIONAL");
parametros.put("nomeGerencia", "Ger�ncia Regional");
parametros.put("gerenciaRegionalHeader", true);
parametros.put("unidadeHeader", false);
parametros.put("localidadeHeader", false);
parametros.put("gerenciaRegionalFooter", false);
} else if (helper.getOpcaoTotalizacao().equals("estadoUnidadeNegocio")) {
parametros.put("titulo", "RELAT�RIO QUANTIDADES DE OPERA��ES - ESTADO POR UNIDADE DE NEG�CIO");
parametros.put("nomeUnidade", "Unidade de Neg�cio");
parametros.put("gerenciaRegionalHeader", false);
parametros.put("unidadeHeader", true);
parametros.put("localidadeHeader", false);
parametros.put("gerenciaRegionalFooter", false);
} else if (helper.getOpcaoTotalizacao().equals("estadoLocalidade")) {
parametros.put("titulo", "RELAT�RIO QUANTIDADES DE OPERA��ES - ESTADO POR LOCALIDADE");
parametros.put("nomeLocalidade", "Localidade");
parametros.put("gerenciaRegionalHeader", false);
parametros.put("unidadeHeader", false);
parametros.put("localidadeHeader", true);
parametros.put("gerenciaRegionalFooter", false);
} else if (helper.getOpcaoTotalizacao().equals("gerenciaRegional")) {
parametros.put("titulo", "RELAT�RIO QUANTIDADES DE OPERA��ES - GERENCIA REGIONAL");
parametros.put("nomeGerencia", "Ger�ncia Regional");
parametros.put("gerenciaRegionalHeader", true);
parametros.put("unidadeHeader", false);
parametros.put("localidadeHeader", false);
parametros.put("gerenciaRegionalFooter", false);
parametros.put("nomeOpcaoTotalizacao", "GER�NCIA REGIONAL");
FiltroGerenciaRegional filtroGerenciaRegional = new FiltroGerenciaRegional();
filtroGerenciaRegional.adicionarParametro(
new ParametroSimples(FiltroGerenciaRegional.ID, helper.getIdGerenciaRegional()));
Collection colecao = fachada.pesquisar(filtroGerenciaRegional, GerenciaRegional.class.getName());
if (colecao != null && !colecao.isEmpty()) {
GerenciaRegional gerenciaRegional = (GerenciaRegional) Util.retonarObjetoDeColecao(colecao);
parametros.put("opcaoTotalizacao", gerenciaRegional.getNome());
}
} else if (helper.getOpcaoTotalizacao().equals("unidadeNegocio")) {
parametros.put("titulo", "RELAT�RIO QUANTIDADES DE OPERA��ES - UNIDADE DE NEG�CIO");
parametros.put("nomeUnidade", "Unidade de Neg�cio");
parametros.put("gerenciaRegionalHeader", false);
parametros.put("unidadeHeader", true);
parametros.put("localidadeHeader", false);
parametros.put("gerenciaRegionalFooter", false);
parametros.put("nomeOpcaoTotalizacao", "UNIDADE DE NEG�CIO");
FiltroUnidadeNegocio filtroUnidadeNegocio = new FiltroUnidadeNegocio();
filtroUnidadeNegocio.adicionarParametro(
new ParametroSimples(FiltroUnidadeNegocio.ID, helper.getIdUnidadeNegocio()));
Collection colecao = fachada.pesquisar(filtroUnidadeNegocio, UnidadeNegocio.class.getName());
if (colecao != null && !colecao.isEmpty()) {
UnidadeNegocio unidadeNegocio = (UnidadeNegocio) Util.retonarObjetoDeColecao(colecao);
parametros.put("opcaoTotalizacao", unidadeNegocio.getNome());
}
} else if (helper.getOpcaoTotalizacao().equals("gerenciaRegionalLocalidade")) {
parametros.put("titulo", "RELAT�RIO QUANTIDADES DE OPERA��ES - GERENCIA REGIONAL POR LOCALIDADE");
parametros.put("nomeGerencia", "Ger�ncia Regional");
parametros.put("nomeLocalidade", "Localidade");
parametros.put("gerenciaRegionalHeader", true);
parametros.put("unidadeHeader", false);
parametros.put("localidadeHeader", true);
parametros.put("gerenciaRegionalFooter", true);
} else if (helper.getOpcaoTotalizacao().equals("localidade")) {
parametros.put("titulo", "RELAT�RIO QUANTIDADES DE OPERA��ES - LOCALIDADE");
parametros.put("nomeLocalidade", "Localidade");
parametros.put("gerenciaRegionalHeader", false);
parametros.put("unidadeHeader", false);
parametros.put("localidadeHeader", true);
parametros.put("gerenciaRegionalFooter", false);
parametros.put("nomeOpcaoTotalizacao", "LOCALIDADE");
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
filtroLocalidade.adicionarParametro(
new ParametroSimples(FiltroLocalidade.ID, helper.getIdLocalidade()));
Collection colecao = fachada.pesquisar(filtroLocalidade, Localidade.class.getName());
if (colecao != null && !colecao.isEmpty()) {
Localidade localidade = (Localidade) Util.retonarObjetoDeColecao(colecao);
parametros.put("opcaoTotalizacao", localidade.getDescricao());
}
}
}
}
Collection<Object[]> colecaoDados = fachada.pesquisarDadosRelatorioAlteracoesCpfCnpj(helper);
for (Object[] objetos : colecaoDados) {
RelatorioAlteracoesCpfCnpjBean relatorioAlteracoesCpfCnpjBean = null;
switch (Integer.parseInt(helper.getTipoRelatorio())) {
//TIPO POR USUARIO
case 1:
relatorioAlteracoesCpfCnpjBean = new RelatorioAlteracoesCpfCnpjBean(
//nome
objetos[0]!=null?(String)objetos[0]:null,
//login
objetos[1]!=null?(String)objetos[1]:null,
//lotacao
objetos[2]!=null?(String)objetos[2]:null,
//meio
objetos[3]!=null?(String)objetos[3]:null,
//cpf
objetos[4]!=null?((Double)objetos[4]):0,
//cnpj
objetos[5]!=null?((Double)objetos[5]):0,
//total
objetos[6]!=null?((Double)objetos[6]):0);
break;
//TIPO POR LOCALIDADE
case 2:
relatorioAlteracoesCpfCnpjBean = new RelatorioAlteracoesCpfCnpjBean(
//gerenciaRegional
objetos[0]!=null?(String)objetos[0]:null,
//unidadeNegocio
objetos[1]!=null?(String)objetos[1]:null,
//localidade
objetos[1]!=null?(String)objetos[2]:null,
//cpf
objetos[2]!=null?(Double)objetos[3]:0,
//cnpj
objetos[3]!=null?(Double)objetos[4]:0,
//total
objetos[4]!=null?(Double)objetos[5]:0);
break;
//TIPO POR MEIO
case 3:
relatorioAlteracoesCpfCnpjBean = new RelatorioAlteracoesCpfCnpjBean(
//meio
objetos[0]!=null?(String)objetos[0]:null,
//cpf
objetos[1]!=null?(Double)objetos[1]:0,
//cnpj
objetos[2]!=null?(Double)objetos[2]:0,
//total
objetos[3]!=null?(Double)objetos[3]:0);
break;
default:
break;
}
relatorioBeans.add(relatorioAlteracoesCpfCnpjBean);
}
//Caso n�o possua dados aprensetar mensagem de relatorio vazio ao usuario.
if(Util.isVazioOrNulo(relatorioBeans)){
this.nomeRelatorio = ConstantesRelatorios.RELATORIO_VAZIO;
RelatorioAlteracoesCpfCnpjBean relatorioAlteracoesCpfCnpjBean =
new RelatorioAlteracoesCpfCnpjBean();
relatorioBeans.add(relatorioAlteracoesCpfCnpjBean);
}else if(helper.getTipoRelatorio().equals("1")){
this.nomeRelatorio = ConstantesRelatorios.RELATORIO_ALTERACOES_CPF_CNPJ_USUARIO;
}else if(helper.getTipoRelatorio().equals("2")){
this.nomeRelatorio = ConstantesRelatorios.RELATORIO_ALTERACOES_CPF_CNPJ_LOCALIDADE;
}else if(helper.getTipoRelatorio().equals("3")){
this.nomeRelatorio = ConstantesRelatorios.RELATORIO_ALTERACOES_CPF_CNPJ_MEIO;
}
// cria uma inst�ncia do dataSource do relat�rio
RelatorioDataSource ds = new RelatorioDataSource(relatorioBeans);
retorno = this.gerarRelatorio(this.nomeRelatorio,parametros, ds, tipoFormatoRelatorio);
// ------------------------------------
// Grava o relat�rio no sistema
try {
Integer idFuncionalidadeIniciada = this.getIdFuncionalidadeIniciada();
persistirRelatorioConcluido(retorno,
Relatorio.REL_ALTERACOES_NO_SISTEMA_COLUNA,
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() {
return 0;
}
public void agendarTarefaBatch() {
AgendadorTarefas.agendarTarefa("RelatorioAlteracoesCpfCnpj", this);
}
}