package gcom.relatorio.cadastro.cliente; import gcom.batch.Relatorio; import gcom.cadastro.cliente.Cliente; import gcom.cadastro.cliente.ClienteEndereco; import gcom.cadastro.cliente.ClienteFone; import gcom.cadastro.cliente.ClienteImovel; import gcom.cadastro.cliente.FiltroCliente; import gcom.cadastro.cliente.FiltroClienteEndereco; import gcom.cadastro.cliente.FiltroClienteFone; import gcom.cadastro.geografico.Municipio; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.fachada.Fachada; 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.ControladorException; import gcom.util.agendadortarefas.AgendadorTarefas; import gcom.util.filtro.ParametroSimples; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; /** * <p> * * Title: GCOM * </p> * <p> * * Description: Sistema de Gest�o Comercial * </p> * <p> * * Copyright: Copyright (c) 2004 * </p> * <p> * * Company: COMPESA - Companhia Pernambucana de Saneamento * </p> * * @author Rafael Corr�a * @created 13 de Outubro de 2005 * @version 1.0 */ public class RelatorioManterCliente extends TarefaRelatorio { private static final long serialVersionUID = 1L; /** * Constructor for the RelatorioManterCliente object */ public RelatorioManterCliente(Usuario usuario) { super(usuario, ConstantesRelatorios.RELATORIO_CLIENTE_MANTER); } @Deprecated public RelatorioManterCliente() { super(null, ""); } /** * < <Descri��o do m�todo>> * * @param clientes * Description of the Parameter * @param clienteParametros * Description of the Parameter * @param clienteEnderecoParametros * Description of the Parameter * @param municipio * Description of the Parameter * @return Descri��o do retorno * @exception RelatorioVazioException * Descri��o da exce��o */ public Object executar() throws TarefaException { // ------------------------------------ Integer idFuncionalidadeIniciada = this.getIdFuncionalidadeIniciada(); // ------------------------------------ FiltroCliente filtroCliente = (FiltroCliente) getParametro("filtroCliente"); Cliente clienteParametros = (Cliente) getParametro("clienteParametros"); ClienteEndereco clienteEnderecoParametros = (ClienteEndereco) getParametro("clienteEnderecoParametros"); Municipio municipio = (Municipio) getParametro("municipio"); String indicadorTela = (String) getParametro("indicadorTela"); ClienteImovel clienteImovelParametros = (ClienteImovel) getParametro("clienteImovelParametros"); int tipoFormatoRelatorio = (Integer) getParametro("tipoFormatoRelatorio"); // valor de retorno byte[] retorno = null; // cole��o de beans do relat�rio List relatorioBeans = new ArrayList(); Fachada fachada = Fachada.getInstancia(); RelatorioManterClienteBean relatorioBean = null; filtroCliente.adicionarCaminhoParaCarregamentoEntidade("clienteTipo"); filtroCliente .adicionarCaminhoParaCarregamentoEntidade("orgaoExpedidorRg"); filtroCliente .adicionarCaminhoParaCarregamentoEntidade("unidadeFederacao"); filtroCliente.adicionarCaminhoParaCarregamentoEntidade("profissao"); filtroCliente.adicionarCaminhoParaCarregamentoEntidade("pessoaSexo"); filtroCliente.adicionarCaminhoParaCarregamentoEntidade("ramoAtividade"); filtroCliente.adicionarCaminhoParaCarregamentoEntidade("cliente"); filtroCliente.setConsultaSemLimites(true); Collection clientesNovos = fachada .pesquisarClienteDadosClienteEnderecoRelatorio(filtroCliente); if (clientesNovos != null && !clientesNovos.isEmpty()) { // coloca a cole��o de par�metros da analise no iterator Iterator clienteNovoIterator = clientesNovos.iterator(); // la�o para criar a cole��o de par�metros da analise while (clienteNovoIterator.hasNext()) { Cliente clienteNovo = (Cliente) clienteNovoIterator.next(); SimpleDateFormat dataFormatada = new SimpleDateFormat( "dd/MM/yyyy"); ClienteEndereco clienteEndereco = null; if (clienteNovo.getId() != null && !clienteNovo.getId().equals("")) { FiltroClienteEndereco filtroClienteEndereco = new FiltroClienteEndereco(); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.cep"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro.municipio"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro.logradouroTipo"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro.logradouroTitulo"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("enderecoReferencia"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("logradouroBairro.bairro.municipio.unidadeFederacao"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("perimetroInicial.logradouroTipo"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("perimetroInicial.logradouroTitulo"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("perimetroFinal.logradouroTipo"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("perimetroFinal.logradouroTitulo"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("cliente"); filtroClienteEndereco .adicionarParametro(new ParametroSimples( FiltroClienteEndereco.CLIENTE_ID, clienteNovo.getId())); Collection clientesEnderecos = fachada.pesquisar( filtroClienteEndereco, ClienteEndereco.class .getName()); if (clientesEnderecos != null && !clientesEnderecos.isEmpty()) { // O Endere�o foi encontrado Iterator clienteEnderecoIterator = clientesEnderecos .iterator(); while (clienteEnderecoIterator.hasNext()) { clienteEndereco = (ClienteEndereco) clienteEnderecoIterator .next(); if (clienteEndereco .getIndicadorEnderecoCorrespondencia() .equals(new Short("1"))) { break; } } } } ClienteFone clienteFone = null; if (clienteNovo.getId() != null && !clienteNovo.getId().equals("")) { FiltroClienteFone filtroClienteFone = new FiltroClienteFone(); filtroClienteFone .adicionarCaminhoParaCarregamentoEntidade("foneTipo"); filtroClienteFone.adicionarParametro(new ParametroSimples( FiltroClienteFone.CLIENTE_ID, clienteNovo.getId())); Collection clientesFones = fachada.pesquisar( filtroClienteFone, ClienteFone.class.getName()); if (clientesFones != null && !clientesFones.isEmpty()) { // O telefone foi encontrado Iterator clienteFoneIterator = clientesFones.iterator(); while (clienteFoneIterator.hasNext()) { clienteFone = (ClienteFone) clienteFoneIterator .next(); if (clienteFone.getIndicadorTelefonePadrao() != null && clienteFone.getIndicadorTelefonePadrao() .equals(new Short("1"))) { break; } } } } if (clienteNovo.getClienteTipo() .getIndicadorPessoaFisicaJuridica().equals( new Short("1"))) { relatorioBean = new RelatorioManterClienteBean( //C�digo clienteNovo.getId().toString(), // Nome clienteNovo.getNome(), // Tipo do Cliente clienteNovo.getClienteTipo() == null ? "" : clienteNovo.getClienteTipo() .getDescricao(), // Email clienteNovo.getEmail() == null ? "" : clienteNovo .getEmail(), // CPF clienteNovo.getCpfFormatado() == null ? "" : clienteNovo.getCpfFormatado(), // RG clienteNovo.getRg() == null ? "" : clienteNovo .getRg(), // Data Emiss�o do RG clienteNovo.getDataEmissaoRg() == null ? "" : dataFormatada.format(clienteNovo .getDataEmissaoRg()), // �rg�o Expedidor RG clienteNovo.getOrgaoExpedidorRg() == null ? "" : clienteNovo.getOrgaoExpedidorRg() .getDescricaoAbreviada().trim() .equalsIgnoreCase("ninf") ? "" : clienteNovo.getOrgaoExpedidorRg() .getDescricaoAbreviada(), // Unidade Federa��o clienteNovo.getUnidadeFederacao() == null ? "" : clienteNovo.getUnidadeFederacao() .getSigla(), // Data de Nascimento clienteNovo.getDataNascimento() == null ? "" : dataFormatada.format(clienteNovo .getDataNascimento()), // Profiss�o clienteNovo.getProfissao() == null ? "" : clienteNovo.getProfissao().getDescricao(), // Pessoa Sexo clienteNovo.getPessoaSexo() == null ? "" : clienteNovo.getPessoaSexo() .getDescricao(), // Endere�o clienteEndereco == null ? "" : clienteEndereco .getEnderecoFormatado(), // Telefone clienteFone == null ? "" : clienteFone .getTelefone() == null ? "" : clienteFone .getTelefone(), // Ramal clienteFone == null ? "" : clienteFone.getRamal() == null ? "" : clienteFone.getRamal(), // Tipo do Fone clienteFone == null ? "" : clienteFone .getFoneTipo() == null ? "" : clienteFone .getFoneTipo().getDescricao(), // Munic�pio clienteEndereco == null ? "MUNIC�PIO N�O INFORMADO" : clienteEndereco.getLogradouroBairro() == null ? "MUNIC�PIO N�O INFORMADO" : clienteEndereco .getLogradouroBairro() .getBairro() == null ? "MUNIC�PIO N�O INFORMADO" : clienteEndereco .getLogradouroCep() == null ? "MUNIC�PIO N�O INFORMADO" : clienteEndereco .getLogradouroCep() .getLogradouro() == null ? clienteEndereco .getLogradouroCep() == null ? "MUNIC�PIO N�O INFORMADO" : clienteEndereco .getLogradouroCep() .getCep() == null ? "MUNIC�PIO N�O INFORMADO" : clienteEndereco .getLogradouroCep() .getCep() .getMunicipio() : clienteEndereco .getLogradouroCep() .getLogradouro() .getMunicipio() == null ? "MUNIC�PIO N�O INFORMADO" : clienteEndereco .getLogradouroCep() .getLogradouro() .getMunicipio() .getNome(), // Indicador de Uso "" + clienteNovo.getIndicadorUso(), clienteNovo .getClienteTipo() == null ? "" : "" + clienteNovo.getClienteTipo() .getIndicadorPessoaFisicaJuridica()); // adiciona o bean a cole��o relatorioBeans.add(relatorioBean); } else { relatorioBean = new RelatorioManterClienteBean( clienteNovo.getId().toString(), clienteNovo.getNome(), clienteNovo.getClienteTipo() == null ? "" : clienteNovo.getClienteTipo() .getDescricao(), clienteNovo.getEmail() == null ? "" : clienteNovo .getEmail(), clienteNovo.getCnpjFormatado() == null ? "" : clienteNovo.getCnpjFormatado(), clienteNovo.getRamoAtividade() == null ? "" : clienteNovo.getRamoAtividade() .getDescricao(), clienteNovo.getCliente() == null ? "" : "" + clienteNovo.getCliente().getId(), clienteNovo.getCliente() == null ? "" : clienteNovo .getCliente().getNome(), clienteEndereco == null ? "" : clienteEndereco .getEnderecoFormatado(), clienteFone == null ? "" : clienteFone .getTelefone() == null ? "" : clienteFone .getTelefone(), clienteFone == null ? "" : clienteFone.getRamal() == null ? "" : clienteFone.getRamal(), clienteFone == null ? "" : clienteFone .getFoneTipo() == null ? "" : clienteFone .getFoneTipo().getDescricao(), clienteEndereco == null ? "MUNIC�PIO N�O INFORMADO" : clienteEndereco.getLogradouroBairro() == null ? "MUNIC�PIO N�O INFORMADO" : clienteEndereco .getLogradouroBairro() .getBairro() == null ? "MUNIC�PIO N�O INFORMADO" : clienteEndereco .getLogradouroCep() == null ? "MUNIC�PIO N�O INFORMADO" : clienteEndereco .getLogradouroCep() .getLogradouro() == null ? clienteEndereco .getLogradouroCep() == null ? "MUNIC�PIO N�O INFORMADO" : clienteEndereco .getLogradouroCep() .getCep() == null ? "MUNIC�PIO N�O INFORMADO" : clienteEndereco .getLogradouroCep() .getCep() .getMunicipio() : clienteEndereco .getLogradouroCep() .getLogradouro() .getMunicipio() == null ? "MUNIC�PIO N�O INFORMADO" : clienteEndereco .getLogradouroCep() .getLogradouro() .getMunicipio() .getNome(), "" + clienteNovo.getIndicadorUso(), clienteNovo .getClienteTipo() == null ? "" : "" + clienteNovo.getClienteTipo() .getIndicadorPessoaFisicaJuridica()); // adiciona o bean a cole��o relatorioBeans.add(relatorioBean); } } // Organizar a cole��o Collections.sort((List) relatorioBeans, new Comparator() { public int compare(Object a, Object b) { String municipio1 = ((RelatorioManterClienteBean) a) .getMunicipio() == null ? "" : ((RelatorioManterClienteBean) a) .getMunicipio() .equalsIgnoreCase("MUNIC�PIO N�O INFORMADO") ? "" : ((RelatorioManterClienteBean) a) .getMunicipio(); String municipio2 = ((RelatorioManterClienteBean) b) .getMunicipio() == null ? "" : ((RelatorioManterClienteBean) b) .getMunicipio() .equalsIgnoreCase("MUNIC�PIO N�O INFORMADO") ? "" : ((RelatorioManterClienteBean) b) .getMunicipio(); return municipio1.compareTo(municipio2); } }); // 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()); if (indicadorTela == null || indicadorTela.equals("")) { parametros.put("cpf", clienteParametros.getCpfFormatado() == null ? "" : clienteParametros.getCpfFormatado()); parametros.put("rg", clienteParametros.getRg() == null ? "" : clienteParametros.getRg()); parametros.put("cnpj", clienteParametros.getCnpjFormatado() == null ? "" : clienteParametros.getCnpjFormatado()); parametros.put("codigo", clienteParametros.getId() == null ? "" : "" + clienteParametros.getId()); parametros.put("nome", clienteParametros.getNome()); parametros.put("cep", clienteEnderecoParametros .getLogradouroCep().getCep() == null ? "" : clienteEnderecoParametros.getLogradouroCep().getCep() .getCodigo() == null ? "" : "" + clienteEnderecoParametros.getLogradouroCep() .getCep().getCodigo()); parametros.put("idMunicipio", municipio.getId() == null ? "" : "" + municipio.getId()); parametros.put("nomeMunicipio", municipio.getNome() == null ? "" : municipio.getNome()); parametros.put("idBairro", clienteEnderecoParametros .getLogradouroBairro().getBairro() == null ? "" : clienteEnderecoParametros.getLogradouroBairro() .getBairro().getId() == null ? "" : "" + clienteEnderecoParametros .getLogradouroBairro().getBairro() .getCodigo()); parametros.put("nomeBairro", clienteEnderecoParametros .getLogradouroBairro().getBairro() == null ? "" : clienteEnderecoParametros.getLogradouroBairro() .getBairro().getNome()); parametros.put("nomeLogradouro", clienteEnderecoParametros .getLogradouroCep().getLogradouro() == null ? "" : clienteEnderecoParametros.getLogradouroCep() .getLogradouro().getNome()); String indicadorUso = ""; if (clienteParametros.getIndicadorUso() != null && !clienteParametros.getIndicadorUso().equals("")) { if (clienteParametros.getIndicadorUso().equals( new Short("1"))) { indicadorUso = "Ativo"; } else { indicadorUso = "Inativo"; } } parametros.put("indicadorUso", indicadorUso); RelatorioDataSource ds = new RelatorioDataSource(relatorioBeans); retorno = this.gerarRelatorio( ConstantesRelatorios.RELATORIO_CLIENTE_MANTER, parametros, ds, tipoFormatoRelatorio); } else { SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy"); String dataEmissaoRg = ""; if (clienteParametros.getDataEmissaoRg() != null && !clienteParametros.getDataEmissaoRg().equals("")) { dataEmissaoRg = format.format(clienteParametros .getDataEmissaoRg()); } String dataNascimento = ""; if (clienteParametros.getDataNascimento() != null && !clienteParametros.getDataNascimento().equals("")) { dataNascimento = format.format(clienteParametros .getDataNascimento()); } parametros.put("dataEmissao", dataEmissaoRg); parametros.put("dataNascimento", dataNascimento); parametros.put("cpf", clienteParametros.getCpfFormatado() == null ? "" : clienteParametros.getCpfFormatado()); parametros.put("rg", clienteParametros.getRg() == null ? "" : clienteParametros.getRg()); parametros.put("cnpj", clienteParametros.getCnpjFormatado() == null ? "" : clienteParametros.getCnpjFormatado()); parametros.put("codigo", clienteParametros.getId() == null ? "" : "" + clienteParametros.getId()); parametros.put("codigoClienteResponsavel", clienteParametros .getCliente() == null ? "" : clienteParametros .getCliente().getId() == null ? "" : "" + clienteParametros.getCliente().getId()); parametros.put("nome", clienteParametros.getNome()); parametros.put("nomeAbreviado", clienteParametros .getNomeAbreviado()); parametros.put("sexo", clienteParametros.getPessoaSexo() == null ? "" : clienteParametros.getPessoaSexo() .getDescricao()); parametros.put("tipoCliente", clienteParametros .getClienteTipo() == null ? "" : clienteParametros .getClienteTipo().getDescricao()); parametros.put("orgaoEmissor", clienteParametros .getOrgaoExpedidorRg() == null ? "" : clienteParametros .getOrgaoExpedidorRg().getDescricaoAbreviada()); parametros.put("profissao", clienteParametros.getProfissao() == null ? "" : clienteParametros.getProfissao() .getDescricao()); parametros.put("ramoAtividade", clienteParametros .getRamoAtividade() == null ? "" : clienteParametros .getRamoAtividade().getDescricao()); parametros.put("email", clienteParametros.getEmail()); parametros.put("cep", clienteEnderecoParametros .getLogradouroCep().getCep() == null ? "" : clienteEnderecoParametros.getLogradouroCep().getCep() .getCodigo() == null ? "" : "" + clienteEnderecoParametros.getLogradouroCep() .getCep().getCodigo()); parametros.put("idMunicipio", municipio.getId() == null ? "" : "" + municipio.getId()); parametros.put("nomeMunicipio", municipio.getNome() == null ? "" : municipio.getNome()); parametros.put("idBairro", clienteEnderecoParametros .getLogradouroBairro() == null ? "" : clienteEnderecoParametros.getLogradouroBairro() .getBairro() == null ? "" : "" + clienteEnderecoParametros .getLogradouroBairro().getBairro() .getId() == null ? "" : "" + clienteEnderecoParametros .getLogradouroBairro().getBairro() .getId()); parametros.put("nomeBairro", clienteEnderecoParametros .getLogradouroBairro() == null? "": clienteEnderecoParametros .getLogradouroBairro().getBairro() == null ? "" : clienteEnderecoParametros.getLogradouroBairro() .getBairro().getNome()); parametros.put("codigoLogradouro", clienteEnderecoParametros .getLogradouroCep().getLogradouro() == null ? "" : clienteEnderecoParametros.getLogradouroCep() .getLogradouro().getId() == null ? "" : "" + clienteEnderecoParametros.getLogradouroCep() .getLogradouro().getId()); parametros.put("nomeLogradouro", clienteEnderecoParametros .getLogradouroCep().getLogradouro() == null ? "" : clienteEnderecoParametros.getLogradouroCep() .getLogradouro().getNome()); parametros.put("matriculaImovel", clienteImovelParametros .getImovel() == null ? "" : clienteImovelParametros .getImovel().getId() == null ? "" : "" + clienteImovelParametros.getImovel().getId()); String indicadorUso = ""; if (clienteParametros.getIndicadorUso() != null && !clienteParametros.getIndicadorUso().equals("")) { if (clienteParametros.getIndicadorUso().equals( new Short("1"))) { indicadorUso = "Ativo"; } else if (clienteParametros.getIndicadorUso().equals( new Short("2"))) { indicadorUso = "Inativo"; } } parametros.put("indicadorUso", indicadorUso); parametros.put("tipoFormatoRelatorio", "R0160"); RelatorioDataSource ds = new RelatorioDataSource(relatorioBeans); retorno = this .gerarRelatorio( ConstantesRelatorios.RELATORIO_CLIENTE_OUTROS_CRITERIOS_MANTER, parametros, ds, tipoFormatoRelatorio); } // cria uma inst�ncia do dataSource do relat�rio } // ------------------------------------ // Grava o relat�rio no sistema try { persistirRelatorioConcluido(retorno, Relatorio.MANTER_CLIENTE, 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() { int retorno = Fachada.getInstancia() .pesquisarClienteDadosClienteEnderecoCount( (FiltroCliente) getParametro("filtroCliente")); return retorno; } public void agendarTarefaBatch() { AgendadorTarefas.agendarTarefa("RelatorioManterCliente", this); } }