package gcom.relatorio.arrecadacao; import gcom.arrecadacao.bean.PesquisarAvisoBancarioPorContaCorrenteHelper; 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.agendadortarefas.AgendadorTarefas; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; /** * [UC0829] Gerar Relat�rio Avisos Bancarios Por Conta Corrente * * @author Victor Cisneiros * @date 21/08/2008 */ public class RelatorioAvisoBancarioPorContaCorrente extends TarefaRelatorio { public RelatorioAvisoBancarioPorContaCorrente(Usuario usuario) { super(usuario, ConstantesRelatorios.RELATORIO_AVISO_BANCARIO_POR_CONTA_CORRENTE); } private static final long serialVersionUID = 1L; @Override public Object executar() throws TarefaException { Fachada fachada = Fachada.getInstancia(); Map<String, Object> parametros = new HashMap<String, Object>(); SistemaParametro sistemaParametro = Fachada.getInstancia().pesquisarParametrosDoSistema(); parametros.put("imagem", sistemaParametro.getImagemRelatorio()); parametros.put("tipoRelatorio", "RF0829"); Integer mesAno = (Integer) getParametro("mesAno"); Integer idBanco = (Integer) getParametro("idBanco"); Integer idContaBancaria = (Integer) getParametro("idContaBancaria"); Integer tipoRelatorio = (Integer) getParametro("tipoRelatorio"); parametros.put("mesAno", mesAno.toString().substring(4) + "/" + mesAno.toString().substring(0, 4)); PesquisarAvisoBancarioPorContaCorrenteHelper filtro = new PesquisarAvisoBancarioPorContaCorrenteHelper(); filtro.setMesAno(mesAno); filtro.setIdBanco(idBanco); filtro.setIdContaBancaria(idContaBancaria); Collection<RelatorioAvisoBancarioPorContaCorrenteBean> pesquisa = fachada.pesquisarAvisoBancarioPorContaCorrente(filtro); if (pesquisa.isEmpty()) { throw new ActionServletException("atencao.dados.inexistente.parametros.informados"); } Integer idAntigoBanco = 0; Integer idAntigoConta = 0; long dataAntigaAviso = 0; for (RelatorioAvisoBancarioPorContaCorrenteBean bean : pesquisa) { if (bean.getIdAviso() == null || bean.getIdAviso().equals(0) || bean.getDataRealizada() == null) continue; Integer idAtualBanco = bean.getIdBanco(); Integer idAtualConta = bean.getIdConta(); /* * Se a data for igual � data da linha anterior para um mesmo banco * e conta, ent�o n�o mostrar a data da linha atual no relatorio */ if (!idAntigoBanco.equals(idAtualBanco) || !idAntigoConta.equals(idAtualConta)) { idAntigoBanco = idAtualBanco; idAntigoConta = idAtualConta; dataAntigaAviso = 0; } long dataAtualAviso = bean.getDataRealizada().getTime(); if (dataAntigaAviso == dataAtualAviso) { bean.setDataRealizada(null); } else { dataAntigaAviso = dataAtualAviso; } } List<RelatorioAvisoBancarioPorContaCorrenteBean> beans = new ArrayList<RelatorioAvisoBancarioPorContaCorrenteBean>(); beans.addAll(pesquisa); byte[] retorno = this.gerarRelatorio(ConstantesRelatorios.RELATORIO_AVISO_BANCARIO_POR_CONTA_CORRENTE, parametros, new RelatorioDataSource(beans), tipoRelatorio); return retorno; } @Override public int calcularTotalRegistrosRelatorio() { return 0; } @Override public void agendarTarefaBatch() { AgendadorTarefas.agendarTarefa("RelatotorioAvisoBancarioPorContaCorrente", this); } }