package gcom.relatorio.atendimentopublico.ordemservico;
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.relatorio.atendimentopublico.OSExecutadasRelatorioHelper;
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.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* [UC1163] Gerar Relat�rio de OS executadas por Prestadora de Servi�o
*
* @author Vivianne Sousa
* @date 18/04/2011
*/
public class RelatorioOSExecutadasPrestadoraServicoSintetico extends TarefaRelatorio {
private static final long serialVersionUID = -7034984685957706140L;
public RelatorioOSExecutadasPrestadoraServicoSintetico(Usuario usuario) {
super(usuario, ConstantesRelatorios.RELATORIO_OS_EXECUTADAS_PRESTADORA_SERVICO_SINTETICO);
}
@Deprecated
public RelatorioOSExecutadasPrestadoraServicoSintetico() {
super(null, "");
}
private Collection<RelatorioOSExecutadasPrestadoraServicoSinteticoBean> inicializarBeanRelatorio(
Collection colecaoOSExecutadasRelatorioHelper,Date dataEncerramentoInicial,Date dataEncerramentoFinal,
Integer idGerencia, Integer idUnidade, Integer idLocalidade,
String[] idsRegiao,String[] idsMicroregiao,String[] idsMunicipio) {
Collection<RelatorioOSExecutadasPrestadoraServicoSinteticoBean> retorno = null;
if(colecaoOSExecutadasRelatorioHelper != null && !colecaoOSExecutadasRelatorioHelper.isEmpty()){
retorno = new ArrayList<RelatorioOSExecutadasPrestadoraServicoSinteticoBean>();
Iterator iterHelper = colecaoOSExecutadasRelatorioHelper.iterator();
Integer idLocalidadeAnterior = null;
Integer qtdeOsLocalidade = 0;
while (iterHelper.hasNext()) {
OSExecutadasRelatorioHelper helper = (OSExecutadasRelatorioHelper) iterHelper.next();
idLocalidade = helper.getIdLocalidade();
if(!idLocalidade.equals(idLocalidadeAnterior)){
qtdeOsLocalidade = Fachada.getInstancia().recuperaTotalOSExecutadasPorLocalidade(
dataEncerramentoInicial, dataEncerramentoFinal, idGerencia,
idUnidade, idLocalidade, idsRegiao, idsMicroregiao, idsMunicipio);
}
RelatorioOSExecutadasPrestadoraServicoSinteticoBean bean =
new RelatorioOSExecutadasPrestadoraServicoSinteticoBean(
helper.getDescServicosOSExecutadas(),
helper.getCodigoServicosOSExecutadas(),
helper.getQtdeServicosOSExecutadas(),
helper.getIdLocalidade().toString(),
helper.getNomeLocalidade(),
qtdeOsLocalidade.toString());
retorno.add(bean);
idLocalidadeAnterior = helper.getIdLocalidade();
}
}
return retorno;
}
/**
* M�todo que executa a tarefa
*
* @return Object
*
*/
public Object executar() throws TarefaException {
Integer idFuncionalidadeIniciada = this.getIdFuncionalidadeIniciada();
Fachada fachada = Fachada.getInstancia();
Integer idGerencia = (Integer)getParametro("idGerencia");
Integer idUnidade = (Integer)getParametro("idUnidade");
Integer idLocalidade = (Integer)getParametro("idLocalidade");
String[] idsRegiao = (String[])getParametro("idsRegiao");
String[] idsMicroregiao = (String[])getParametro("idsMicroregiao");
String[] idsMunicipio = (String[])getParametro("idsMunicipio");
Date dataEncerramentoInicial = (Date)getParametro("dataEncerramentoInicial");
Date dataEncerramentoFinal = (Date)getParametro("dataEncerramentoFinal");
String filtroGerencia = (String)getParametro("filtroGerencia");
String filtroUnidade = (String)getParametro("filtroUnidade");
String filtroLocalidade = (String)getParametro("filtroLocalidade");
String filtroRegiao = (String)getParametro("filtroRegiao");
String filtroMicroregiao = (String)getParametro("filtroMicroregiao");
String filtroMunicipio = (String)getParametro("filtroMunicipio");
Collection colecaoQtdeImoveisExcluidostarifaSocialHelper =
fachada.recuperaTotalServicoOSExecutadasPorLocalidade(
dataEncerramentoInicial,dataEncerramentoFinal,idGerencia,idUnidade,
idLocalidade,idsRegiao, idsMicroregiao, idsMunicipio) ;
int tipoFormatoRelatorio = (Integer) getParametro("tipoFormatoRelatorio");
// valor de retorno
byte[] retorno = null;
// Par�metros do relat�rio
Map<String, String> parametros = new HashMap();
SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema();
String referencia = Util.formatarData(dataEncerramentoInicial) + " a " + Util.formatarData(dataEncerramentoFinal);
parametros.put("periodoencerramento", referencia);
parametros.put("gerencia", filtroGerencia);
parametros.put("unidade", filtroUnidade);
parametros.put("localidade", filtroLocalidade);
parametros.put("regiao", filtroRegiao);
parametros.put("microregiao", filtroMicroregiao);
parametros.put("municipio", filtroMunicipio);
parametros.put("prestadoraServico", "PONTO FORTE");
parametros.put("dataEmissao", Util.formatarData(new Date()));
parametros.put("imagem", sistemaParametro.getImagemRelatorio());
parametros.put("imagemConta", sistemaParametro.getImagemConta());
// parametros.put("nomeEmpresa",sistemaParametro.getNomeAbreviadoEmpresa());
// parametros.put("cnpjEmpresa",sistemaParametro.getCnpjEmpresa().toString());
Collection dadosRelatorio = colecaoQtdeImoveisExcluidostarifaSocialHelper;
Collection<RelatorioOSExecutadasPrestadoraServicoSinteticoBean> colecaoBean = this
.inicializarBeanRelatorio(dadosRelatorio,dataEncerramentoInicial,dataEncerramentoFinal,
idGerencia,idUnidade,idLocalidade,idsRegiao, idsMicroregiao, idsMunicipio);
if (colecaoBean == null || colecaoBean.isEmpty()) {
// N�o existem dados para a exibi��o do relat�rio.
throw new RelatorioVazioException("atencao.relatorio.vazio");
}
RelatorioDataSource ds = new RelatorioDataSource((java.util.List) colecaoBean);
retorno = this.gerarRelatorio(ConstantesRelatorios.RELATORIO_OS_EXECUTADAS_PRESTADORA_SERVICO_SINTETICO, parametros, ds,tipoFormatoRelatorio);
// ------------------------------------
// Grava o relat�rio no sistema
try {
persistirRelatorioConcluido(retorno, Relatorio.GERAR_RELATORIO_OS_EXECUTADAS_PRESTADORA_SERVICO_SINTETICO,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() {
return 0;
}
public void agendarTarefaBatch() {
AgendadorTarefas.agendarTarefa("RelatorioOSExecutadasPrestadoraServicoSintetico", this);
}
}