package gcom.relatorio.atendimentopublico;
import gcom.batch.Relatorio;
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.Util;
import gcom.util.agendadortarefas.AgendadorTarefas;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**[UC1177] Gerar Relat�rio de Ordens de Servi�o por Situa��o
*
* Classe Respons�vel por gerar o Relat�rio Acompanhamento Boletim Medi��o
*
* @author Diogo Peixoto
* @since 17/06/2011
*
*/
public class RelatorioAcompanhamentoBoletimMedicao extends TarefaRelatorio {
private static final long serialVersionUID = 1L;
public RelatorioAcompanhamentoBoletimMedicao(Usuario usuario, String nomeRelatorio) {
super(usuario, nomeRelatorio);
}
@Override
public int calcularTotalRegistrosRelatorio() {
return 1;
}
@Override
public Object executar() throws TarefaException {
Integer idFuncionalidadeIniciada = this.getIdFuncionalidadeIniciada();
RelatorioAcompanhamentoBoletimMedicaoHelper helperRelatorio = (RelatorioAcompanhamentoBoletimMedicaoHelper)getParametro("dadosRelatorio");
if(helperRelatorio == null || Util.isVazioOrNulo(helperRelatorio.getBeans())){
throw new RelatorioVazioException("atencao.relatorio.vazio");
}
Collection<RelatorioAcompanhamentoBoletimMedicaoBean> beans = helperRelatorio.getBeans();
Integer tipoFormatoRelatorio = (Integer) getParametro("tipoRelatorio");
String definitivoSimulacao = (String) getParametro("definitivoSimulacao");
String nomeEmpresa = (String) getParametro("nomeEmpresa");
String numeroContrato = (String) getParametro("numeroContrato");
String dataReferencia = (String) getParametro("dataReferencia");
// Par�metros do relat�rio
Map<String, Object> parametros = new HashMap<String, Object>();
SistemaParametro sistemaParametro = Fachada.getInstancia().pesquisarParametrosDoSistema();
parametros.put("imagem", sistemaParametro.getImagemRelatorio());
parametros.put("numeroRelatorio", "R1178");
parametros.put("tipoRelatorio", tipoFormatoRelatorio);
parametros.put("definitivoSimulacao", definitivoSimulacao);
parametros.put("nomeEmpresa", nomeEmpresa);
parametros.put("numeroContrato", Integer.valueOf(numeroContrato));
parametros.put("anoMesReferencia", dataReferencia);
parametros.put("taxaSucesso", helperRelatorio.getTaxaSucesso());
parametros.put("penalidadeOS", helperRelatorio.getPenalidadeOS());
parametros.put("penalidadeFiscalizacao", helperRelatorio.getPenalidadeFiscalizacao());
parametros.put("penalidadeNaoExecucao", helperRelatorio.getPenalidadeContratoNaoExecucao());
parametros.put("penalidadeCorteSupressao", helperRelatorio.getPenalidadeCorteSupressaoIndevida());
parametros.put("penalidadeNaoRealizacaoServicos", helperRelatorio.getPenalidadeNaoRealizacaoServico());
parametros.put("valorDesconto", helperRelatorio.getValorDesconto());
parametros.put("definitivoSimulacao", helperRelatorio.getTipoRelatorio());
byte[] retorno = null;
RelatorioDataSource ds = new RelatorioDataSource((List<RelatorioAcompanhamentoBoletimMedicaoBean>) beans);
try {
retorno = this.gerarRelatorio(ConstantesRelatorios.RELATORIO_ACOMPANHAMENTO_BOLETIM_MEDICAO, parametros, ds, tipoFormatoRelatorio);
persistirRelatorioConcluido(retorno, Relatorio.RELATORIO_ACOMPANHAMENTO_BOLETIM_MEDICAO, idFuncionalidadeIniciada);
} catch (ControladorException e) {
e.printStackTrace();
throw new TarefaException("Erro ao gravar relat�rio no sistema", e);
}
return retorno;
}
@Override
public void agendarTarefaBatch() {
AgendadorTarefas.agendarTarefa("RelatorioAcompanhamentoBoletimMedicao", this);
}
}