package gcom.relatorio.atendimentopublico;
import gcom.atendimentopublico.ordemservico.bean.RelacaoOrdensServicoEncerradasPendentesHelper;
import gcom.batch.Relatorio;
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.ControladorException;
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;
/**
* [UC0432] - Gerar Relatorio Acompanhamento Ordem de Servico de Hidrometro
*
* Tipo 2 - Sintetico - Relatorio Resumo das Ordens de Servico Encerradas/Pendentes
*
* @author Ivan S�rgio
* @created 12/12/2007, 31/03/2008
* @alteracao: Adicionado Motivo Encerramento; Setor Comercial;
*/
public class RelatorioResumoOrdensServicoEncerradasPendentes extends TarefaRelatorio {
private static final long serialVersionUID = 1L;
public RelatorioResumoOrdensServicoEncerradasPendentes(Usuario usuario) {
super(usuario,
ConstantesRelatorios.RELATORIO_RESUMO_ORDENS_SERVICO_ENCERRADAS_PENDENTES);
}
@Deprecated
public RelatorioResumoOrdensServicoEncerradasPendentes() {
super(null, "");
}
public Object executar() throws TarefaException {
// ------------------------------------
Integer idFuncionalidadeIniciada = this.getIdFuncionalidadeIniciada();
// ------------------------------------
String tipoOrdem = (String) getParametro("tipoOrdem");
String situacaoOrdemServico = (String) getParametro("situacaoOrdemServico");
String firma = (String) getParametro("firma");
String nomeFirma = (String) getParametro("nomeFirma");
String idLocalidadeInicial = (String) getParametro("idLocalidadeInicial");
String idLocalidadeFinal = (String) getParametro("idLocalidadeFinal");
String dataEncerramentoInicial = (String) getParametro("dataEncerramentoInicial");
String dataEncerramentoFinal = (String) getParametro("dataEncerramentoFinal");
String idMotivoEncerramento = (String) getParametro("idMotivoEncerramento");
String idSetorComercialInicial = (String) getParametro("idSetorComercialInicial");
String idSetorComercialFinal = (String) getParametro("idSetorComercialFinal");
String codigoQuadraInicial = (String) getParametro("codigoQuadraInicial");
String codigoQuadraFinal = (String) getParametro("codigoQuadraFinal");
String codigoRotaInicial = (String) getParametro("codigoRotaInicial");
String codigoRotaFinal = (String) getParametro("codigoRotaFinal");
String sequenciaRotaInicial = (String) getParametro("sequenciaRotaInicial");
String sequenciaRotaFinal = (String) getParametro("sequenciaRotaFinal");
int tipoFormatoRelatorio = (Integer) getParametro("tipoFormatoRelatorio");
// valor de retorno
byte[] retorno = null;
// cole��o de beans do relat�rio
List relatorioBeans = new ArrayList();
Fachada fachada = Fachada.getInstancia();
Collection colecaoDadosHelper = fachada
.pesquisarOrdemServicoGerarRelatorioAcompanhamentoHidrometro(
firma, tipoOrdem, situacaoOrdemServico, idLocalidadeInicial,
idLocalidadeFinal, dataEncerramentoInicial, dataEncerramentoFinal,
idMotivoEncerramento, idSetorComercialInicial, idSetorComercialFinal,
codigoQuadraInicial, codigoQuadraFinal, codigoRotaInicial, codigoRotaFinal,
sequenciaRotaInicial, sequenciaRotaFinal);
if (colecaoDadosHelper != null && !colecaoDadosHelper.isEmpty()) {
// Usado para fazer o controle das quebras
Integer setorComercial = 0;
Integer motivo = 0;
Iterator iColecaoDados = colecaoDadosHelper.iterator();
while (iColecaoDados.hasNext()) {
RelacaoOrdensServicoEncerradasPendentesHelper helper =
(RelacaoOrdensServicoEncerradasPendentesHelper) iColecaoDados.next();
// Setor Comercial
setorComercial = (Integer) helper.getIdSetorComercial();
// Motivo Encerramento
motivo = (Integer) helper.getIdMotivoEncerramento();
// Faz a quebra por Setor Comercial
// if (setorComercial.equals(setorComercialAnt) || setorComercialAnt.equals(0)) {
// Faz a quebra por Motivo de Encerramento
if (situacaoOrdemServico.equals("ENCERRADAS")) {
// if (motivo.equals(motivoAnt) || motivoAnt.equals(0)) {
// quantidadeMotivo++;
// motivoAnt = motivo;
// descricaoMotivoAnt = helper.getMotivoEncerramento();
// }
RelatorioResumoOrdensServicoEncerradasPendentesBean relatorioBean =
new RelatorioResumoOrdensServicoEncerradasPendentesBean();
// Localidade
relatorioBean.setIdLocalidade(String.valueOf(helper.getIdLocalidade()));
// Situacao selecionada
relatorioBean.setSituacao(situacaoOrdemServico);
// Tipo do Servico
relatorioBean.setTipoServico(tipoOrdem);
// Periodo encerramento
if (dataEncerramentoInicial != null && !dataEncerramentoInicial.equals("") &&
dataEncerramentoFinal != null && !dataEncerramentoFinal.equals("")) {
relatorioBean.setPeriodoEncerramento(dataEncerramentoInicial + " � " + dataEncerramentoFinal);
}else {
relatorioBean.setPeriodoEncerramento("");
}
// Nome Localidade
relatorioBean.setNomeLocalidade(helper.getNomeLocalidade());
// Firma
relatorioBean.setFirma(firma);
// Nome Firma
relatorioBean.setNomeFirma(nomeFirma);
// Total de Ordens
relatorioBean.setTotalOrdensServico(""+colecaoDadosHelper.size());
// Setor Comercial
setorComercial = helper.getIdSetorComercial();
relatorioBean.setIdSetorComercial(setorComercial.toString());
// Codigo Setor Comercial
relatorioBean.setCodigoSetorComercial(helper.getCodigoSetorComercial().toString());
// Motivo Encerramento
if (situacaoOrdemServico.equals("ENCERRADAS")) {
motivo = helper.getIdMotivoEncerramento();
relatorioBean.setIdMotivoEncerramento(motivo + "");
relatorioBean.setDescricaoMotivoEncerramento(helper.getMotivoEncerramento());
relatorioBean.setQuantidadeMotivo(1 + "");
}
if ( relatorioBeans.contains(relatorioBean) ) {
int index = relatorioBeans.indexOf(relatorioBean);
relatorioBean = (RelatorioResumoOrdensServicoEncerradasPendentesBean) relatorioBeans.get(index);
relatorioBean.setQuantidadeMotivo( (new Integer(relatorioBean.getQuantidadeMotivo()) + 1) + "");
relatorioBeans.set(index , relatorioBean);
} else {
// adiciona o bean a cole��o
relatorioBeans.add(relatorioBean);
}
// Contador dos Motivos = 1 para o novo Motivo
// quantidadeMotivo = 1;
// // Faz o controle dos Motivos
// motivoAnt = motivo;
// }
}
// else {
// quantidadeMotivo++;
// }
// }else {
// RelatorioResumoOrdensServicoEncerradasPendentesBean relatorioBean =
// new RelatorioResumoOrdensServicoEncerradasPendentesBean();
//
// // Localidade
// relatorioBean.setIdLocalidade(String.valueOf(helperAnt.getIdLocalidade()));
// // Situacao selecionada
// relatorioBean.setSituacao(situacaoOrdemServico);
// // Tipo do Servico
// relatorioBean.setTipoServico(tipoOrdem);
// // Periodo encerramento
// if (dataEncerramentoInicial != null && !dataEncerramentoInicial.equals("") &&
// dataEncerramentoFinal != null && !dataEncerramentoFinal.equals("")) {
// relatorioBean.setPeriodoEncerramento(dataEncerramentoInicial + " � " + dataEncerramentoFinal);
// }else {
// relatorioBean.setPeriodoEncerramento("");
// }
// // Nome Localidade
// relatorioBean.setNomeLocalidade(helperAnt.getNomeLocalidade());
// // Firma
// relatorioBean.setFirma(firma);
// // Nome Firma
// relatorioBean.setNomeFirma(nomeFirma);
// // Total de Ordens
// relatorioBean.setTotalOrdensServico(""+colecaoDadosHelper.size());
//
// // Setor Comercial
// setorComercial = helper.getIdSetorComercial();
// relatorioBean.setIdSetorComercial(setorComercialAnt.toString());
// // Codigo Setor Comercial
// relatorioBean.setCodigoSetorComercial(codigoSetorComercialAnt.toString());
//
// // Motivo Encerramento
// if (situacaoOrdemServico.equals("ENCERRADAS")) {
// motivo = helper.getIdMotivoEncerramento();
// relatorioBean.setIdMotivoEncerramento(motivoAnt.toString());
// relatorioBean.setDescricaoMotivoEncerramento(descricaoMotivoAnt);
// relatorioBean.setQuantidadeMotivo(quantidadeMotivo.toString());
// }else {
// relatorioBean.setIdMotivoEncerramento("--");
// relatorioBean.setDescricaoMotivoEncerramento("--");
// relatorioBean.setQuantidadeMotivo(quantidadeMotivo.toString());
// }
//
// // adiciona o bean a cole��o
// relatorioBeans.add(relatorioBean);
//
// // Contador dos Motivos = 1 para o novo Motivo
// quantidadeMotivo = 1;
// // Faz o controle dos Setores
// setorComercialAnt = setorComercial;
// // Faz o controle dos Motivos
// motivoAnt = motivo;
// }
// Adiciona o Ultimo da colecao
// if (!iColecaoDados.hasNext()) {
// RelatorioResumoOrdensServicoEncerradasPendentesBean relatorioBean =
// new RelatorioResumoOrdensServicoEncerradasPendentesBean();
//
// // Localidade
// relatorioBean.setIdLocalidade(String.valueOf(helper.getIdLocalidade()));
// // Situacao selecionada
// relatorioBean.setSituacao(situacaoOrdemServico);
// // Tipo do Servico
// relatorioBean.setTipoServico(tipoOrdem);
// // Periodo encerramento
// if (dataEncerramentoInicial != null && !dataEncerramentoInicial.equals("") &&
// dataEncerramentoFinal != null && !dataEncerramentoFinal.equals("")) {
// relatorioBean.setPeriodoEncerramento(dataEncerramentoInicial + " � " + dataEncerramentoFinal);
// }else {
// relatorioBean.setPeriodoEncerramento("");
// }
// // Nome Localidade
// relatorioBean.setNomeLocalidade(helper.getNomeLocalidade());
// // Firma
// relatorioBean.setFirma(firma);
// // Nome Firma
// relatorioBean.setNomeFirma(nomeFirma);
// // Total de Ordens
// relatorioBean.setTotalOrdensServico(""+colecaoDadosHelper.size());
//
// // Setor Comercial
// //setorComercial = (Integer) dados[10];
// relatorioBean.setIdSetorComercial(setorComercial.toString());
// // Codigo Setor Comercial
// relatorioBean.setCodigoSetorComercial(codigoSetorComercialAnt.toString());
//
// // Motivo Encerramento
// //motivo = (Integer) dados[11];
// if (situacaoOrdemServico.equals("ENCERRADAS")) {
// relatorioBean.setIdMotivoEncerramento(motivo.toString());
// relatorioBean.setDescricaoMotivoEncerramento(descricaoMotivoAnt);
// relatorioBean.setQuantidadeMotivo(quantidadeMotivo.toString());
// }else {
// relatorioBean.setIdMotivoEncerramento("--");
// relatorioBean.setDescricaoMotivoEncerramento("--");
// relatorioBean.setQuantidadeMotivo(quantidadeMotivo.toString());
// }
//
// // adiciona o bean a cole��o
// relatorioBeans.add(relatorioBean);
// }
}
// Par�metros do relat�rio
Map parametros = new HashMap();
SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema();
parametros.put("imagem", sistemaParametro.getImagemRelatorio());
// cria uma inst�ncia do dataSource do relat�rio
RelatorioDataSource ds = new RelatorioDataSource(relatorioBeans);
retorno = gerarRelatorio(
ConstantesRelatorios.RELATORIO_RESUMO_ORDENS_SERVICO_ENCERRADAS_PENDENTES,
parametros, ds, tipoFormatoRelatorio);
// Grava o relat�rio no sistema
try {
persistirRelatorioConcluido(retorno,
Relatorio.RELATORIO_RESUMO_OS_ENCERRADAS_PENDENTES,
idFuncionalidadeIniciada);
} catch (ControladorException e) {
e.printStackTrace();
throw new TarefaException("Erro ao gravar relat�rio no sistema", e);
}
// ------------------------------------
}else {
throw new ActionServletException("atencao.pesquisa.nenhumresultado");
}
// retorna o relat�rio gerado
return retorno;
}
@Override
public int calcularTotalRegistrosRelatorio() {
return 0;
}
public void agendarTarefaBatch() {
AgendadorTarefas.agendarTarefa("RelatorioResumoOrdensServicoEncerradasPendentes",
this);
}
}