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
*
* @author Diogo Peixoto
* @since 03/06/2011
*
*/
public class RelatorioOSSituacao extends TarefaRelatorio {
private static final long serialVersionUID = 1L;
public RelatorioOSSituacao(Usuario usuario, String nomeRelatorio) {
super(usuario, nomeRelatorio);
}
@Override
public int calcularTotalRegistrosRelatorio() {
return 1;
}
@Override
public Object executar() throws TarefaException {
Integer idFuncionalidadeIniciada = this.getIdFuncionalidadeIniciada();
RelatorioOSSituacaoHelper helper = (RelatorioOSSituacaoHelper)getParametro("dadosRelatorio");
if(helper == null || Util.isVazioOrNulo(helper.getBeans())){
throw new RelatorioVazioException("atencao.relatorio.vazio");
}
Collection<RelatorioOSSituacaoBean> beans = helper.getBeans();
int tipoFormatoRelatorio = (Integer) getParametro("tipoFormatoRelatorio");
String dataReferencia = (String) getParametro("dataReferencia");
String tipoRelatorio = getParametro("tipoRelatorio").toString();
Integer situacaoOS = Integer.valueOf((String)getParametro("situacaoOS"));
String descricaoEmpresa = (String) getParametro("descricaoEmpresa");
String numeroContrato = (String) getParametro("numeroContrato");
String cobrancaGrupo = (String) getParametro("cobrancaGrupo");
String strSituacaoOS = null;
switch (situacaoOS) {
case 1:
strSituacaoOS = "Descontadas";
break;
case 2:
strSituacaoOS = "Encerradas";
break;
case 3:
strSituacaoOS = "Executadas";
break;
case 4:
strSituacaoOS = "Fiscalizadas";
break;
case 5:
strSituacaoOS = "Justificadas";
break;
case 6:
strSituacaoOS = "Penalizadas por Fiscaliza��o";
break;
case 7:
strSituacaoOS = "Penalizadas por Decurso de Prazo";
break;
case 8:
strSituacaoOS = "Todas";
break;
case 9:
strSituacaoOS = "Encerradas com Execu��o";
break;
case 10:
strSituacaoOS = "Encerradas por Decurso de Prazo";
break;
case 11:
strSituacaoOS = "Pendentes";
break;
case 12:
strSituacaoOS = "Fiscalizadas";
break;
case 13:
strSituacaoOS = "Todas";
break;
default:
strSituacaoOS = "";
break;
}
// Par�metros do relat�rio
Map<String, String> parametros = new HashMap<String, String>();
SistemaParametro sistemaParametro = Fachada.getInstancia().pesquisarParametrosDoSistema();
parametros.put("imagem", sistemaParametro.getImagemRelatorio());
parametros.put("numeroRelatorio", "R1177");
parametros.put("periodoReferencia", dataReferencia);
parametros.put("tipoRelatorio", tipoRelatorio);
parametros.put("situacaoOS", strSituacaoOS);
parametros.put("descricaoEmpresa", descricaoEmpresa);
parametros.put("numeroContrato", numeroContrato);
parametros.put("gerenciaRegional", helper.getGerenciaRegional());
parametros.put("setorComercial", helper.getSetorComercial());
parametros.put("quadra", helper.getQuadra());
parametros.put("unidadeNegocio", helper.getUnidadeNegocio());
parametros.put("grupoCobranca", cobrancaGrupo);
parametros.put("localidadeEloPolo", helper.getLocalidadeEloPolo());
parametros.put("localidade", helper.getLocalidade());
parametros.put("servicoTipo", helper.getTipoServico());
byte[] retorno = null;
RelatorioDataSource ds = new RelatorioDataSource((List<RelatorioOSSituacaoBean>) beans);
try {
if(tipoRelatorio.equalsIgnoreCase("Anal�tico")){
retorno = this.gerarRelatorio(ConstantesRelatorios.RELATORIO_OS_SITUACAO_ANALITICO, parametros, ds, tipoFormatoRelatorio);
persistirRelatorioConcluido(retorno, Relatorio.RELATORIO_OS_SITUACAO_ANALITICO, idFuncionalidadeIniciada);
}else if(tipoRelatorio.equalsIgnoreCase("Sint�tico")){
retorno = this.gerarRelatorio(ConstantesRelatorios.RELATORIO_OS_SITUACAO_SINTETICO, parametros, ds, tipoFormatoRelatorio);
persistirRelatorioConcluido(retorno, Relatorio.RELATORIO_OS_SITUACAO_SINTETICO, 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("RelatorioOSSituacao", this);
}
}