package gcom.relatorio.faturamento.conta;
import gcom.batch.Relatorio;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.fachada.Fachada;
import gcom.faturamento.conta.ContaMensagem;
import gcom.faturamento.conta.FiltroContaMensagem;
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.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.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
* @version 1.0
*/
public class RelatorioManterMensagemConta extends TarefaRelatorio {
private static final long serialVersionUID = 1L;
public RelatorioManterMensagemConta(Usuario usuario) {
super(usuario, ConstantesRelatorios.RELATORIO_MENSAGEM_CONTA_MANTER);
}
@Deprecated
public RelatorioManterMensagemConta() {
super(null, "");
}
/**
* < <Descri��o do m�todo>>
*
* @param localidades
* Description of the Parameter
* @param localidadeParametros
* 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();
// ------------------------------------
FiltroContaMensagem filtroContaMensagem = (FiltroContaMensagem) getParametro("filtroContaMensagem");
ContaMensagem contaMensagemParametros = (ContaMensagem) getParametro("contaMensagemParametros");
int tipoFormatoRelatorio = (Integer) getParametro("tipoFormatoRelatorio");
// valor de retorno
byte[] retorno = null;
// cole��o de beans do relat�rio
List relatorioBeans = new ArrayList();
RelatorioManterMensagemContaBean relatorioBean = null;
Fachada fachada = Fachada.getInstancia();
filtroContaMensagem.limparCamposOrderBy();
// filtroContaMensagem
// .setCampoOrderBy(FiltroContaMensagem.ANO_MES_REFERECIA_FATURAMENTO
// ,FiltroContaMensagem.GRUPO_FATURAMENTO_ID,
// FiltroContaMensagem.GERENCIA_REGIONAL_ID,
// FiltroContaMensagem.LOCALIDADE_ID,
// FiltroContaMensagem.SETOR_COMERCIAL_CD
// );
filtroContaMensagem.setConsultaSemLimites(true);
filtroContaMensagem.adicionarCaminhoParaCarregamentoEntidade( "setorComercial" );
Collection colecaoContaMensagem = fachada.pesquisar(
filtroContaMensagem, ContaMensagem.class.getName());
// se a cole��o de par�metros da analise n�o for vazia
if (colecaoContaMensagem != null && !colecaoContaMensagem.isEmpty()) {
// Organiza a cole��o
Collections.sort((List) colecaoContaMensagem, new Comparator() {
public int compare(Object a, Object b) {
String posicao1 = ((ContaMensagem) a)
.getAnoMesRreferenciaFaturamento().toString()
+ (((ContaMensagem) a).getFaturamentoGrupo() == null ? " "
: ((ContaMensagem) a).getFaturamentoGrupo()
.getId())
+ (((ContaMensagem) a).getGerenciaRegional() == null ? " "
: ((ContaMensagem) a).getGerenciaRegional()
.getId())
+ (((ContaMensagem) a).getLocalidade() == null ? " "
: ((ContaMensagem) a).getLocalidade()
.getId())
+ (((ContaMensagem) a).getSetorComercial() == null ? " "
: ((ContaMensagem) a).getSetorComercial()
.getCodigo());
String posicao2 = ((ContaMensagem) b)
.getAnoMesRreferenciaFaturamento().toString()
+ (((ContaMensagem) b).getFaturamentoGrupo() == null ? " "
: ((ContaMensagem) b).getFaturamentoGrupo()
.getId())
+ (((ContaMensagem) b).getGerenciaRegional() == null ? " "
: ((ContaMensagem) b).getGerenciaRegional()
.getId())
+ (((ContaMensagem) b).getLocalidade() == null ? " "
: ((ContaMensagem) b).getLocalidade()
.getId())
+ (((ContaMensagem) b).getSetorComercial() == null ? " "
: ((ContaMensagem) b).getSetorComercial()
.getCodigo());
return posicao1.compareTo(posicao2);
}
});
// coloca a cole��o de par�metros da analise no iterator
Iterator colecaoContaMensagemIterator = colecaoContaMensagem
.iterator();
// la�o para criar a cole��o de par�metros da analise
while (colecaoContaMensagemIterator.hasNext()) {
ContaMensagem contaMensagem = (ContaMensagem) colecaoContaMensagemIterator
.next();
// Faz as valida��es dos campos necess�riose e formata a String
// para a forma como ir� aparecer no relat�rio
// Grupo de Faturamento
String grupoFaturamento = "";
if (contaMensagem.getFaturamentoGrupo() != null) {
grupoFaturamento = contaMensagem.getFaturamentoGrupo()
.getDescricao();
}
// Ger�ncia Regional
String gerenciaRegional = "";
if (contaMensagem.getGerenciaRegional() != null) {
gerenciaRegional = contaMensagem.getGerenciaRegional()
.getNomeAbreviado();
}
// Localidade
String localidade = "";
if (contaMensagem.getLocalidade() != null) {
localidade = contaMensagem.getLocalidade().getId()
.toString();
}
// Setor Comercial
String setorComercial = "";
if (contaMensagem.getSetorComercial() != null) {
setorComercial = ""
+ contaMensagem.getSetorComercial().getCodigo();
}
relatorioBean = new RelatorioManterMensagemContaBean(
// Refer�ncia
Util.formatarAnoMesParaMesAno(contaMensagem
.getAnoMesRreferenciaFaturamento().intValue()),
// Mensagem
contaMensagem.getDescricaoContaMensagem01(),
// Grupo Faturamento
grupoFaturamento,
// Ger�ncia Regional
gerenciaRegional,
// Localidade
localidade,
// Setor Comercial
setorComercial);
// adiciona o bean a cole��o
relatorioBeans.add(relatorioBean);
// Verifica se Mensagem da conta � composta de uma segunda
// mensagem para adicionar no bean e ser mostrado relat�rio
// apenas a segunda mensagem com os outros campos vazios
if (contaMensagem.getDescricaoContaMensagem02() != null
&& !contaMensagem.getDescricaoContaMensagem02().trim()
.equals("")) {
relatorioBean = new RelatorioManterMensagemContaBean(
// Refer�ncia
"",
// Mensagem
contaMensagem.getDescricaoContaMensagem02(),
// Grupo Faturamento
"",
// Ger�ncia Regional
"",
// Localidade
"",
// Setor Comercial
"");
// adiciona o bean a cole��o
relatorioBeans.add(relatorioBean);
// Verifica se Mensagem da conta � composta de uma terceira
// mensagem para adicionar no bean e ser mostrado relat�rio
// apenas a terceira mensagem com os outros campos vazios
if (contaMensagem.getDescricaoContaMensagem03() != null
&& !contaMensagem.getDescricaoContaMensagem03()
.trim().equals("")) {
relatorioBean = new RelatorioManterMensagemContaBean(
// Refer�ncia
"",
// Mensagem
contaMensagem.getDescricaoContaMensagem03(),
// Grupo Faturamento
"",
// Ger�ncia Regional
"",
// Localidade
"",
// Setor Comercial
"");
// 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());
if (contaMensagemParametros.getAnoMesRreferenciaFaturamento() != null) {
parametros.put("referencia", Util
.formatarAnoMesParaMesAno(contaMensagemParametros
.getAnoMesRreferenciaFaturamento().intValue()));
} else {
parametros.put("referencia", "");
}
parametros.put("mensagem", contaMensagemParametros
.getDescricaoContaMensagem01());
parametros.put("grupo", contaMensagemParametros.getFaturamentoGrupo()
.getDescricao());
if (contaMensagemParametros.getLocalidade().getId() != null) {
parametros.put("idLocalidade", contaMensagemParametros
.getLocalidade().getId().toString());
parametros.put("nomeLocalidade", contaMensagemParametros
.getLocalidade().getDescricao());
} else {
parametros.put("idLocalidade", "");
parametros.put("nomeLocalidade", "");
}
if (contaMensagemParametros.getSetorComercial().getId() != null) {
parametros.put("idSetorComercial", ""
+ contaMensagemParametros.getSetorComercial().getCodigo());
parametros.put("nomeSetorComercial", contaMensagemParametros
.getSetorComercial().getDescricao());
} else {
parametros.put("idSetorComercial", "");
parametros.put("nomeSetorComercial", "");
}
parametros.put("gerenciaRegional", contaMensagemParametros
.getGerenciaRegional().getNomeAbreviado());
// cria uma inst�ncia do dataSource do relat�rio
RelatorioDataSource ds = new RelatorioDataSource(relatorioBeans);
retorno = this.gerarRelatorio(
ConstantesRelatorios.RELATORIO_MENSAGEM_CONTA_MANTER,
parametros, ds, tipoFormatoRelatorio);
// ------------------------------------
// Grava o relat�rio no sistema
try {
persistirRelatorioConcluido(retorno,
Relatorio.MANTER_MENSAGEM_CONTA, 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 = 0;
retorno = Fachada.getInstancia().totalRegistrosPesquisa(
(FiltroContaMensagem) getParametro("filtroContaMensagem"),
ContaMensagem.class.getName());
return retorno;
}
public void agendarTarefaBatch() {
AgendadorTarefas.agendarTarefa("RelatorioManterMensagemConta", this);
}
}