package gcom.relatorio.atendimentopublico; import gcom.atendimentopublico.ordemservico.Equipe; import gcom.atendimentopublico.ordemservico.EquipeComponentes; import gcom.atendimentopublico.ordemservico.OrdemServicoProgramacao; import gcom.atendimentopublico.ordemservico.bean.ObterDadosEquipe; 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.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.StringTokenizer; /** * <p> * Title: GCOM * </p> * <p> * Description: Sistema de Gest�o Comercial * </p> * <p> * Copyright: Copyright (c) 2004 * </p> * <p> * Company: COMPESA - Companhia Pernambucana de Saneamento * </p> * * @author not attributable * @version 1.0 */ public class RelatorioRoteiroProgramacao extends TarefaRelatorio { private static final long serialVersionUID = 1L; public RelatorioRoteiroProgramacao(Usuario usuario) { super(usuario, ConstantesRelatorios.RELATORIO_ROTEIRO_PROGRAMACAO); } @Deprecated public RelatorioRoteiroProgramacao() { super(null, ""); } /** * < <Descri��o do m�todo>> * * @param bairros * Description of the Parameter * @param bairroParametros * Description of the Parameter * @return Descri��o do retorno * @exception RelatorioVazioException * Descri��o da exce��o */ public Object executar() throws TarefaException { // ------------------------------------ Integer idFuncionalidadeIniciada = this.getIdFuncionalidadeIniciada(); // ------------------------------------ HashMap mapEquipe = (HashMap) getParametro("mapEquipe"); StringTokenizer nomesEquipes = (StringTokenizer) getParametro("nomesEquipes"); Date dataRoteiro = (Date) getParametro("dataRoteiro"); 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(); RelatorioRoteiroProgramacaoBean relatorioBean = null; // se a cole��o de par�metros da analise n�o for vazia if (nomesEquipes != null) { // la�o para criar a cole��o de equipes while (nomesEquipes.hasMoreTokens()) { String chave = nomesEquipes.nextToken(); Equipe equipe = (Equipe) mapEquipe.get(chave); ObterDadosEquipe obterDadosEquipe = fachada .obterDadosEquipe(equipe.getId()); Collection colecaoComponentesEquipe = obterDadosEquipe .getColecaoEquipeComponentes(); String placa = ""; if (equipe.getPlacaVeiculo() != null && !equipe.getPlacaVeiculo().trim().equals("")) { String letras = equipe.getPlacaVeiculo().substring(0, 3); String digitos = equipe.getPlacaVeiculo().substring(3, 7); placa = letras + "-" + digitos; } EquipeComponentes encarregado = null; if (colecaoComponentesEquipe != null && !colecaoComponentesEquipe.isEmpty()) { Iterator colecaoComponenteEncarregadoIterator = colecaoComponentesEquipe .iterator(); while (colecaoComponenteEncarregadoIterator.hasNext()) { encarregado = (EquipeComponentes) colecaoComponenteEncarregadoIterator .next(); if (("" + encarregado.getIndicadorResponsavel()) .equals("" + EquipeComponentes.INDICADOR_RESPONSAVEL_SIM)) { break; } } Iterator colecaoComponentesEquipeIterator = colecaoComponentesEquipe .iterator(); int posicaoComponente = 0; while (colecaoComponentesEquipeIterator.hasNext()) { EquipeComponentes equipeComponentes = (EquipeComponentes) colecaoComponentesEquipeIterator .next(); posicaoComponente = posicaoComponente + 1; if (colecaoComponentesEquipeIterator.hasNext()) { EquipeComponentes equipeComponentes2 = (EquipeComponentes) colecaoComponentesEquipeIterator .next(); relatorioBean = new RelatorioRoteiroProgramacaoBean( // Unidade Organizacional equipe.getUnidadeOrganizacional() .getDescricao() == null ? "" : equipe .getUnidadeOrganizacional() .getDescricao(), // Data do Roteiro Util.formatarData(dataRoteiro), // C�digo da Equipe equipe.getId().toString(), // Nome da Equipe equipe.getNome(), // Placa placa, // Encarregado encarregado.getComponentes(), // Posi��o do Componente "" + posicaoComponente, // Nome do Componente equipeComponentes.getComponentes(), // Posi��o do Componente 2 "" + (posicaoComponente + 1), // Nome do Componente 2 equipeComponentes2.getComponentes(), // Sequencial "", // N�mero do RA "", // N�mero da OS "", // Tipo de Servi�o "", // Endere�o da Ocorr�ncia "", // Observa��o ""); // adiciona o bean a cole��o relatorioBeans.add(relatorioBean); posicaoComponente = posicaoComponente + 1; } else { relatorioBean = new RelatorioRoteiroProgramacaoBean( // Unidade Organizacional equipe.getUnidadeOrganizacional() .getDescricao() == null ? "" : equipe .getUnidadeOrganizacional() .getDescricao(), // Data do Roteiro Util.formatarData(dataRoteiro), // C�digo da Equipe equipe.getId().toString(), // Nome da Equipe equipe.getNome(), // Placa placa, // Encarregado encarregado.getComponentes(), // Posi��o do Componente "" + posicaoComponente, // Nome do Componente equipeComponentes.getComponentes(), // Posi��o do Componente 2 "", // Nome do Componente 2 "", // Sequencial "", // N�mero do RA "", // N�mero da OS "", // Tipo de Servi�o "", // Endere�o da Ocorr�ncia "", // Observa��o ""); // adiciona o bean a cole��o relatorioBeans.add(relatorioBean); } } } Collection colecaoOrdensServicoProgramacao = fachada .pesquisarOrdemServicoProgramacaoRelatorio(equipe .getId(), dataRoteiro); if (colecaoOrdensServicoProgramacao != null && !colecaoOrdensServicoProgramacao.isEmpty()) { Iterator colecaoOrdensServicoProgramacaoIterator = colecaoOrdensServicoProgramacao .iterator(); while (colecaoOrdensServicoProgramacaoIterator.hasNext()) { OrdemServicoProgramacao ordemServicoProgramacao = (OrdemServicoProgramacao) colecaoOrdensServicoProgramacaoIterator .next(); String endereco = ""; String idRegistroAtendimento = ""; if (ordemServicoProgramacao.getOrdemServico() .getRegistroAtendimento().getId() != null) { idRegistroAtendimento = ordemServicoProgramacao .getOrdemServico().getRegistroAtendimento() .getId().toString(); endereco = fachada .obterEnderecoOcorrenciaRA(ordemServicoProgramacao .getOrdemServico() .getRegistroAtendimento().getId()); } relatorioBean = new RelatorioRoteiroProgramacaoBean( // Unidade Organizacional equipe.getUnidadeOrganizacional().getSigla() == null ? "" : equipe.getUnidadeOrganizacional() .getSigla(), // Data do Roteiro Util.formatarData(dataRoteiro), // C�digo da Equipe equipe.getId().toString(), // Nome da Equipe equipe.getNome(), // Placa placa, // Encarregado encarregado == null ? "" : encarregado .getComponentes(), // Posi��o do Componente "", // Nome do Componente "", // Posi��o do Componente 2 "", // Nome do Componente 2 "", // Sequencial "" + ordemServicoProgramacao .getNnSequencialProgramacao(), // N�mero do RA idRegistroAtendimento, // N�mero da OS ordemServicoProgramacao.getOrdemServico() .getId().toString(), // Tipo de Servi�o ordemServicoProgramacao.getOrdemServico() .getServicoTipo().getId().toString(), // Endere�o da Ocorr�ncia endereco, // Observa��o ordemServicoProgramacao.getOrdemServico() .getObservacao()); // 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 = this.gerarRelatorio( ConstantesRelatorios.RELATORIO_ROTEIRO_PROGRAMACAO, parametros, ds, tipoFormatoRelatorio); // ------------------------------------ // Grava o relat�rio no sistema try { persistirRelatorioConcluido(retorno, Relatorio.ROTEIRO_PROGRAMACAO, 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() { int retorno = 0; retorno = ((StringTokenizer) getParametro("nomesEquipes")) .countTokens(); return retorno; } public void agendarTarefaBatch() { AgendadorTarefas.agendarTarefa("RelatorioRoteiroProgramacao", this); } }