package gcom.relatorio.micromedicao;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.fachada.Fachada;
import gcom.gui.relatorio.micromedicao.FiltroRelatorioLeituraConsultarArquivosTextoHelper;
import gcom.micromedicao.ArquivoTextoRoteiroEmpresa;
import gcom.micromedicao.bean.SituacaoLeituraHelper;
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.Util;
import gcom.util.agendadortarefas.AgendadorTarefas;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
*
* Descri��o da classe
*
* Essa classe � respons�vel por realizar a formata��o
* e l�gica do relat�rio
*
* @author Jos� Guilherme Macedo Vieira
* @date 09/06/2009
*/
public class RelatorioLeituraConsultarArquivoTextos extends TarefaRelatorio {
/**
*
*/
private static final long serialVersionUID = 1L;
public RelatorioLeituraConsultarArquivoTextos(Usuario usuario) {
super(usuario, ConstantesRelatorios.RELATORIO_LEITURA_CONSULTAR_ARQUIVO_TEXTOS);
}
@Override
public int calcularTotalRegistrosRelatorio() {
int tamanhoColecao = new Integer((Integer)this.getParametro("tamanhoColecaoArquivosText"));
return tamanhoColecao;
}
@Override
public Object executar() throws TarefaException {
int tipoFormatoRelatorio = (Integer) getParametro("tipoFormatoRelatorio");
FiltroRelatorioLeituraConsultarArquivosTextoHelper helper =
(FiltroRelatorioLeituraConsultarArquivosTextoHelper) getParametro("helper");
//Collection colecaoArquivosTextos = (Collection)getParametro("colecaoArquivosText");
//valor de retorno
byte[] retorno = null;
// cole��o de beans do relat�rio
List relatorioBeans = new ArrayList();
Fachada fachada = Fachada.getInstancia();
//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(this.getParametro("nomeEmpresa")!= null){
parametros.put("nomeEmpresa", this.getParametro("nomeEmpresa"));
}
if(this.getParametro("nomeGrupoFaturamento") != null){
parametros.put("nomeGrupoFaturamento", this.getParametro("nomeGrupoFaturamento"));
}else{
parametros.put("nomeGrupoFaturamento","");
}
if(this.getParametro("mesAno") != null){
parametros.put("mesAno", this.getParametro("mesAno")+"");
}else{
parametros.put("mesAno", this.getParametro("mesAno")+"");
}
if(this.getParametro("nomeLeiturista") != null){
parametros.put("nomeLeiturista", this.getParametro("nomeLeiturista"));
}else{
parametros.put("nomeLeiturista", "");
}
if(this.getParametro("nomeEmpresa") != null ){
parametros.put("nomeEmpresa", this.getParametro("nomeEmpresa"));
}else{
parametros.put("nomeEmpresa", "");
}
parametros.put("tipoFormatoRelatorio","R0629");
if(this.getParametro("situacaoTextoLeitura") != null){
parametros.put("situacaoTextoLeitura",this.getParametro("situacaoTextoLeitura"));
}
String servicoTipoCelularDescricao = "";
Collection colecaoArquivosTextos = fachada.consultarRelatorioLeituraConsultarArquivosTexto(helper);
for (Iterator iter = colecaoArquivosTextos.iterator(); iter.hasNext();) {
ArquivoTextoRoteiroEmpresa arq = (ArquivoTextoRoteiroEmpresa) iter.next();
if(arq != null){
String nomeLeiturista = null;
if(arq.getLeiturista() != null){
if(arq.getLeiturista().getFuncionario() != null){
nomeLeiturista = arq.getLeiturista().getFuncionario().getNome();
}else{
nomeLeiturista = arq.getLeiturista().getCliente().getNome();
}
}
if(servicoTipoCelularDescricao != null || servicoTipoCelularDescricao.equals("")){
if(arq.getServicoTipoCelular() != null){
servicoTipoCelularDescricao = arq.getServicoTipoCelular().getDescricao();
}
}
SituacaoLeituraHelper helperSituacao =
fachada.pesquisarSituacaoLeitura(
arq.getAnoMesReferencia(),
arq.getFaturamentoGrupo().getId(),
arq.getRota().getId());
Integer qtdLeiturasRealizadas =
fachada.quantidadeLeiturasRealizada(
arq.getRota().getId(),
arq.getAnoMesReferencia(),
arq.getServicoTipoCelular().getId());
RelatorioLeituraConsultarArquivosTextosBean relatorioLeituraArquivoTextoBean =
new RelatorioLeituraConsultarArquivosTextosBean(
arq.getNumeroSequenciaLeitura()+"",
arq.getLocalidade().getId()+" - "+ arq.getLocalidade().getDescricao(),
arq.getCodigoSetorComercial1()+"",
arq.getRota().getCodigo()+"",
arq.getQuantidadeImovel()+"",
nomeLeiturista,
arq.getSituacaoTransmissaoLeitura().getDescricaoSituacao(),
Util.formatarData(arq.getUltimaAlteracao()),servicoTipoCelularDescricao,
arq.getMotivoFinalizacao()!=null?arq.getMotivoFinalizacao():"",
helperSituacao.getMedidosEnviados(),
helperSituacao.getMedidosImpressos(),
helperSituacao.getMedidosNaoImpressos(),
helperSituacao.getNaoMedidosEnviados(),
helperSituacao.getNaoMedidosImpressos(),
helperSituacao.getNaoMedidosNaoImpressos(),
qtdLeiturasRealizadas.toString());
relatorioBeans.add(relatorioLeituraArquivoTextoBean);
}
}
parametros.put("servicoTipoCelular",servicoTipoCelularDescricao);
RelatorioDataSource ds = new RelatorioDataSource(relatorioBeans);
retorno = this.gerarRelatorio(
ConstantesRelatorios.RELATORIO_LEITURA_CONSULTAR_ARQUIVO_TEXTOS,
parametros, ds, tipoFormatoRelatorio);
return retorno;
}
@Override
public void agendarTarefaBatch() {
AgendadorTarefas.agendarTarefa("RelatorioLeituraConsultarArquivosTextos", this);
}
}