package gcom.gui.atendimentopublico.ordemservico; import gcom.atendimentopublico.ordemservico.Equipe; import gcom.atendimentopublico.ordemservico.OrdemServico; import gcom.atendimentopublico.ordemservico.OrdemServicoProgramacao; import gcom.atendimentopublico.ordemservico.ProgramacaoRoteiro; import gcom.atendimentopublico.ordemservico.ServicoPerfilTipo; import gcom.atendimentopublico.ordemservico.bean.OSProgramacaoHelper; import gcom.atendimentopublico.ordemservico.bean.ObterCargaTrabalhoEquipeHelper; import gcom.atendimentopublico.ordemservico.bean.ObterDescricaoSituacaoOSHelper; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.ConstantesSistema; import gcom.util.Util; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class ExibirAcompanharRoteiroProgramacaoOrdemServicoAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping,ActionForm actionForm, HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse) { // Seta o mapeamento de retorno ActionForward retorno = actionMapping.findForward("acompanharOrdemServico"); HttpSession sessao = httpServletRequest.getSession(false); // Form AcompanharRoteiroProgramacaoOrdemServicoActionForm acompanharActionForm = (AcompanharRoteiroProgramacaoOrdemServicoActionForm) actionForm; // Data do Roteiro Date dataRoteiro = Util.converteStringParaDate(acompanharActionForm.getDataRoteiro()); //Date dataRoteiro = Util.converteStringParaDate("12/09/2006"); // Precisa pegar a unidade do usuario do login que esta na sessao Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado"); Integer idUnidadeLotacao = usuario.getUnidadeOrganizacional().getId(); acompanharActionForm.setDataRoteiro(Util.formatarData(dataRoteiro)); acompanharActionForm.setUnidadeLotacao(""+idUnidadeLotacao); String tipoAcao = httpServletRequest.getParameter("tipoAcao"); // [SB0005] - Incluir Ordem de Servi�o na Programa��o if(tipoAcao != null && tipoAcao.equals("I")){ this.incluirOrdemServicoProgramacao(acompanharActionForm,usuario); // [SB0006] - Aloca Equipes para a Ordem de Servi�o }else if (tipoAcao != null && tipoAcao.equals("A")){ this.alocaEquipesParaOrdemServico(acompanharActionForm,usuario); // [SB0007] - Remaneja Ordem de Servi�o }else if (tipoAcao != null && tipoAcao.equals("R")){ this.remanejaOrdemServico(acompanharActionForm,usuario); // [SB0008] - Informa Situa��o da Ordem de Servi�o } else if (tipoAcao != null && tipoAcao.equals("S") ){ this.informaSituacaoOrdemServico(acompanharActionForm,usuario,sessao); // [SB0013] - Reordena Sequencial na Programacao - Nova Ordem } else if (tipoAcao != null && tipoAcao.equals("P") ){ this.reordenaSequencialNaProgramacaoNovaOrdem(acompanharActionForm,sessao); } String msg = httpServletRequest.getParameter("mensagemRetorno"); if(msg != null && !msg.equals("")){ acompanharActionForm.setMensagemRetorno(msg); } // Monta o mapOsProgramacaoHelper com as ordens de servi�o de programa��o this.montaOrdemServicoProgramacao(sessao,dataRoteiro,idUnidadeLotacao); // [SB0010]-Prepara Barra de Carga de Trabalho this.preparaBarraCargaTrabalho(sessao,dataRoteiro); return retorno; } /** * [SB0005] - Incluir Ordem de Servi�o na Programa��o * * @author Rafael Pinto * @date 28/08/2006 * * @param AcompanharRoteiroProgramacaoOrdemServicoActionForm,usuario */ private void incluirOrdemServicoProgramacao(AcompanharRoteiroProgramacaoOrdemServicoActionForm acompanharActionForm, Usuario usuario){ Fachada fachada = Fachada.getInstancia(); Date dataRoteiro = Util.converteStringParaDate(acompanharActionForm.getDataRoteiro()); // Colocado por Raphael Rossiter em 12/03/2007 Integer idUnidadeLotacao = new Integer(acompanharActionForm.getUnidadeLotacao()); OrdemServico os = Fachada.getInstancia().recuperaOSPorId(new Integer(acompanharActionForm.getIdOrdemServico())); //[FS0008] - Verificar possibilidade da inclus�o da ordem de servi�o fachada.validarInclusaoOsNaProgramacao(os, idUnidadeLotacao); // [SB0012] - Reordena Sequencial de Programa��o - Inclus�o de Ordem de Servi�o short maiorSequencial = new Short(acompanharActionForm.getSequencialProgramacao()); short sequencial = new Short(acompanharActionForm.getSequencialProgramacaoPrevisto()); if(maiorSequencial != sequencial){ fachada.reordenaSequencialProgramacaoNovaOrdem(dataRoteiro,sequencial,maiorSequencial, Util.converterStringParaInteger(acompanharActionForm.getIdEquipe()), false); } // [SB0011] - Incluir Programa��o OrdemServicoProgramacao ordemServicoProgramacao = new OrdemServicoProgramacao(); ProgramacaoRoteiro programacaoRoteiro = fachada.pesquisarProgramacaoRoteiro(usuario.getUnidadeOrganizacional().getId(),dataRoteiro); OrdemServico ordemServico = new OrdemServico(); ordemServico.setId(new Integer(acompanharActionForm.getIdOrdemServico())); ordemServicoProgramacao.setProgramacaoRoteiro(programacaoRoteiro); ordemServicoProgramacao.setOrdemServico(ordemServico); Equipe equipe = new Equipe(); equipe.setId(new Integer(acompanharActionForm.getIdEquipe())); ordemServicoProgramacao.setEquipe(equipe); ordemServicoProgramacao.setUsuarioProgramacao(usuario); ordemServicoProgramacao.setUsuarioFechamento(null); ordemServicoProgramacao.setOsProgramNaoEncerMotivo(null); ordemServicoProgramacao.setNnSequencialProgramacao(sequencial); ordemServicoProgramacao.setIndicadorAtivo(ConstantesSistema.SIM); ordemServicoProgramacao.setIndicadorEquipePrincipal(ConstantesSistema.SIM); ordemServicoProgramacao.setUltimaAlteracao(new Date()); ordemServicoProgramacao.setSituacaoFechamento(OrdemServicoProgramacao.SITUACAO_VAZIO); fachada.incluirOrdemServicoProgramacao(ordemServicoProgramacao, usuario); } /** * [SB0006] - Aloca Equipes para a Ordem de Servi�o * * @author Rafael Pinto * @date 28/08/2006 * * @param AcompanharRoteiroProgramacaoOrdemServicoActionForm,usuario */ private void alocaEquipesParaOrdemServico(AcompanharRoteiroProgramacaoOrdemServicoActionForm acompanharActionForm, Usuario usuario){ Fachada fachada = Fachada.getInstancia(); Date dataRoteiro = Util.converteStringParaDate(acompanharActionForm.getDataRoteiro()); Integer equipePrincipal = new Integer(acompanharActionForm.getIdEquipePrincipal()); String[] equipeSelecionada = acompanharActionForm.getEquipeSelecionada(); String[] equipeSelecionadaBanco = acompanharActionForm.getEquipeSelecionadaAtual(); Collection equipeSelecionadaParaAlocar = Util.separarCamposString(",",equipeSelecionada[0]) ; for (int i = 0; i < equipeSelecionadaBanco.length; i++) { String idEquipeBanco = equipeSelecionadaBanco[i]; //Se nao tem mais a osProgramacao na lista de equipes para alocar,entao deve-se remover //essa programa��o if(!equipeSelecionadaParaAlocar.contains(idEquipeBanco)){ fachada.alocaEquipeParaOs(new Integer(acompanharActionForm.getIdOrdemServico()), dataRoteiro,new Integer(idEquipeBanco), false, null); }else{ equipeSelecionadaParaAlocar.remove(idEquipeBanco); } } // Se sobrou alguma equipe, ent�o de inserir a osProgramacao if(equipeSelecionadaParaAlocar != null && !equipeSelecionadaParaAlocar.isEmpty()){ Iterator itera = equipeSelecionadaParaAlocar.iterator(); while (itera.hasNext()) { String idEquipe = (String) itera.next(); int id = new Integer(idEquipe).intValue(); // [SB0011] - Incluir Programa��o OrdemServicoProgramacao ordemServicoProgramacao = new OrdemServicoProgramacao(); ProgramacaoRoteiro programacaoRoteiro = fachada.pesquisarProgramacaoRoteiro(usuario.getUnidadeOrganizacional().getId(),dataRoteiro); OrdemServico ordemServico = new OrdemServico(); ordemServico.setId(new Integer(acompanharActionForm.getIdOrdemServico())); ordemServicoProgramacao.setProgramacaoRoteiro(programacaoRoteiro); ordemServicoProgramacao.setOrdemServico(ordemServico); Equipe equipe = new Equipe(); equipe.setId(new Integer(idEquipe)); ordemServicoProgramacao.setEquipe(equipe); ordemServicoProgramacao.setUsuarioProgramacao(usuario); ordemServicoProgramacao.setUsuarioFechamento(null); ordemServicoProgramacao.setOsProgramNaoEncerMotivo(null); ordemServicoProgramacao.setNnSequencialProgramacao((short)ConstantesSistema.NUMERO_NAO_INFORMADO); ordemServicoProgramacao.setIndicadorAtivo(ConstantesSistema.SIM); if(equipePrincipal.intValue() == id){ ordemServicoProgramacao.setIndicadorEquipePrincipal(ConstantesSistema.SIM); }else{ ordemServicoProgramacao.setIndicadorEquipePrincipal(ConstantesSistema.NAO); } ordemServicoProgramacao.setUltimaAlteracao(new Date()); ordemServicoProgramacao.setSituacaoFechamento(OrdemServicoProgramacao.SITUACAO_VAZIO); fachada.incluirOrdemServicoProgramacao(ordemServicoProgramacao, usuario); } } } /** * [SB0007] - Remaneja Ordem de Servi�o * * @author Rafael Pinto * @date 28/08/2006 * * @param AcompanharRoteiroProgramacaoOrdemServicoActionForm,usuario */ private void remanejaOrdemServico(AcompanharRoteiroProgramacaoOrdemServicoActionForm acompanharActionForm, Usuario usuario){ Fachada fachada = Fachada.getInstancia(); Date dataRoteiro = Util.converteStringParaDate(acompanharActionForm.getDataRoteiro()); Integer equipeRemanejada = new Integer(acompanharActionForm.getIdEquipePrincipal()); Integer equipeAtual = new Integer(acompanharActionForm.getIdEquipeAtual()); Integer idOrdemServico = new Integer(acompanharActionForm.getIdOrdemServico()); // Usa o mesmo metodo de alocar equipe fachada.alocaEquipeParaOs(idOrdemServico,dataRoteiro,equipeAtual, false, null); // [SB0011] - Incluir Programa��o OrdemServicoProgramacao ordemServicoProgramacao = new OrdemServicoProgramacao(); ProgramacaoRoteiro programacaoRoteiro = fachada.pesquisarProgramacaoRoteiro(usuario.getUnidadeOrganizacional().getId(),dataRoteiro); OrdemServico ordemServico = new OrdemServico(); ordemServico.setId(new Integer(acompanharActionForm.getIdOrdemServico())); ordemServicoProgramacao.setProgramacaoRoteiro(programacaoRoteiro); ordemServicoProgramacao.setOrdemServico(ordemServico); Equipe equipe = new Equipe(); equipe.setId(new Integer(equipeRemanejada)); ordemServicoProgramacao.setEquipe(equipe); ordemServicoProgramacao.setUsuarioProgramacao(usuario); ordemServicoProgramacao.setUsuarioFechamento(null); ordemServicoProgramacao.setOsProgramNaoEncerMotivo(null); ordemServicoProgramacao.setNnSequencialProgramacao((short)ConstantesSistema.NUMERO_NAO_INFORMADO); ordemServicoProgramacao.setIndicadorAtivo(ConstantesSistema.SIM); ordemServicoProgramacao.setIndicadorEquipePrincipal(ConstantesSistema.SIM); ordemServicoProgramacao.setUltimaAlteracao(new Date()); ordemServicoProgramacao.setSituacaoFechamento(OrdemServicoProgramacao.SITUACAO_VAZIO); fachada.incluirOrdemServicoProgramacao(ordemServicoProgramacao, usuario); } /** * [SB0008] - Informa Situa��o da Ordem de Servi�o * * @author Rafael Pinto * @date 28/08/2006 * * @param AcompanharRoteiroProgramacaoOrdemServicoActionForm,usuario */ private void informaSituacaoOrdemServico( AcompanharRoteiroProgramacaoOrdemServicoActionForm acompanharActionForm,Usuario usuario,HttpSession sessao){ Fachada fachada = Fachada.getInstancia(); Date dataRoteiro = Util.converteStringParaDate(acompanharActionForm.getDataRoteiro()); Short novaSituacaoOs = new Short(acompanharActionForm.getSituacaoOrdemServico()); Integer motivoNaoEncerramentoOs = null; if(acompanharActionForm.getMotivoNaoEncerramento() != null && !acompanharActionForm.getMotivoNaoEncerramento().equals(""+ConstantesSistema.NUMERO_NAO_INFORMADO)){ motivoNaoEncerramentoOs = new Integer(acompanharActionForm.getMotivoNaoEncerramento()); } Integer idOrdemServico = new Integer(acompanharActionForm.getIdOrdemServico()); OrdemServico ordemServico = fachada.recuperaOSPorId(idOrdemServico); if(novaSituacaoOs.shortValue() == OrdemServico.SITUACAO_PENDENTE.shortValue() || novaSituacaoOs.shortValue() == OrdemServico.SITUACAO_EXECUCAO_EM_ANDAMENTO.shortValue() ){ ordemServico.setSituacao(novaSituacaoOs); if(novaSituacaoOs.shortValue() == OrdemServico.SITUACAO_PENDENTE.shortValue()){ ordemServico.setIndicadorProgramada(OrdemServico.NAO_PROGRAMADA); } fachada.atualizarOrdemServico(ordemServico,usuario); boolean naoInformaIndicadorAtivo = true; fachada.atualizarOrdemServicoProgramacaoSituacaoOs(idOrdemServico, dataRoteiro,novaSituacaoOs,motivoNaoEncerramentoOs, naoInformaIndicadorAtivo); } String chaveEquipe = acompanharActionForm.getChaveEquipe(); HashMap mapEquipe = (HashMap) sessao.getAttribute("mapEquipe"); Equipe equipe = (Equipe) mapEquipe.get(chaveEquipe); // Integer equipePrincipal = new Integer(acompanharActionForm.getIdEquipePrincipal()); fachada.reordenarSequencialProgramacao(dataRoteiro, equipe.getId()); } /** * [SB0013] - Reordena Sequencial na Programacao - Nova Ordem * * @author Rafael Pinto * @date 28/08/2006 * * @param AcompanharRoteiroProgramacaoOrdemServicoActionForm,sessao */ private void reordenaSequencialNaProgramacaoNovaOrdem( AcompanharRoteiroProgramacaoOrdemServicoActionForm acompanharActionForm,HttpSession sessao){ Date dataRoteiro = Util.converteStringParaDate(acompanharActionForm.getDataRoteiro()); short sequencialAtual = new Short(acompanharActionForm.getSequencialProgramacao()); int sequencialInformado = new Integer(acompanharActionForm.getSequencialProgramacaoPrevisto()); String chaveEquipe = acompanharActionForm.getChaveEquipe(); HashMap mapOsProgramacaoHelper = (HashMap) sessao.getAttribute("mapOsProgramacaoHelper"); Collection colecaoHelper = (ArrayList) mapOsProgramacaoHelper.get(chaveEquipe); int valor = this.retornaUltimoSequencial(colecaoHelper); if(sequencialInformado > valor){ throw new ActionServletException("atencao.sequencial_programacao_maior_limite",null,""+valor); } HashMap mapEquipe = (HashMap) sessao.getAttribute("mapEquipe"); Equipe equipe = (Equipe) mapEquipe.get(chaveEquipe); Fachada.getInstancia().reordenaSequencialProgramacaoNovaOrdem(dataRoteiro,sequencialAtual, (short)sequencialInformado,equipe.getId(), false); } /** * Monta um HashMap(nomeEquipe,Colecao de OSProgramacaoHelper) a partir * da colecao de Ordem de Servico Programcao associado a data de roteiro * * @author Rafael Pinto * @date 17/08/2006 * * @param sessao,data do roteiro */ private void montaOrdemServicoProgramacao(HttpSession sessao, Date dataRoteiro,Integer idUnidadeLotacao){ Collection<OrdemServicoProgramacao> colecaoOrdemServicoProgramacao = Fachada.getInstancia().recuperaOSProgramacaoPorDataRoteiroUnidade(dataRoteiro,idUnidadeLotacao); HashMap mapOsProgramacaoHelper = new HashMap(); HashMap mapEquipe = new HashMap(); if(colecaoOrdemServicoProgramacao != null && !colecaoOrdemServicoProgramacao.isEmpty()){ Iterator itera = colecaoOrdemServicoProgramacao.iterator(); while (itera.hasNext()) { OrdemServicoProgramacao ordemServicoProgramacao = (OrdemServicoProgramacao) itera.next(); OrdemServico ordemServico = ordemServicoProgramacao.getOrdemServico(); Equipe equipe = ordemServicoProgramacao.getEquipe(); String chave = equipe.getNome(); OSProgramacaoHelper helper = new OSProgramacaoHelper(); int qtdDiasCliente = ConstantesSistema.NUMERO_NAO_INFORMADO; int qtdDiasAgencia = ConstantesSistema.NUMERO_NAO_INFORMADO; if(ordemServico.getRegistroAtendimento() != null && !ordemServico.getRegistroAtendimento().equals("")) { Date dataPrevistaAtual = ordemServico.getRegistroAtendimento().getDataPrevistaAtual(); if(dataPrevistaAtual != null){ qtdDiasCliente = Util.obterQuantidadeDiasEntreDuasDatas(dataPrevistaAtual,new Date()); } Date dataAgenciaReguladoraPrevisaoAtual = Fachada.getInstancia().obterDataAgenciaReguladoraPrevisaoAtual( ordemServico.getRegistroAtendimento().getId()); if(dataAgenciaReguladoraPrevisaoAtual != null){ qtdDiasAgencia = Util.obterQuantidadeDiasEntreDuasDatas(dataAgenciaReguladoraPrevisaoAtual,new Date()); } int logradouro = ConstantesSistema.NUMERO_NAO_INFORMADO; if(ordemServico.getRegistroAtendimento().getLogradouroBairro() != null){ logradouro = ordemServico.getRegistroAtendimento().getLogradouroBairro().getId().intValue(); } Collection colecaoAlertaLogradouro = pesquisaEquipePeloLogradouro(sessao,logradouro,chave); if(colecaoAlertaLogradouro != null && !colecaoAlertaLogradouro.isEmpty()){ helper.setTemAlerta(true); helper.setColecaoAlertaEquipeDeLogradouro(colecaoAlertaLogradouro); } } helper.setPodeRemover(false); ServicoPerfilTipo servicoPerfilTipo = ordemServico.getServicoTipo().getServicoPerfilTipo(); ServicoPerfilTipo servicoPerfilTipoEquipe = equipe.getServicoPerfilTipo(); if(servicoPerfilTipo != null && servicoPerfilTipoEquipe != null && servicoPerfilTipo.getId().intValue() != servicoPerfilTipoEquipe.getId().intValue()){ helper.setTemAlerta(true); helper.setAlertaEquipeDeServicoPerfilTipo(chave); }else if((servicoPerfilTipo == null && equipe.getServicoPerfilTipo() != null) || (servicoPerfilTipo != null && equipe.getServicoPerfilTipo() == null) ){ helper.setTemAlerta(true); helper.setAlertaEquipeDeServicoPerfilTipo(chave); } if(qtdDiasCliente > 0){ helper.setDiasAtrasoCliente(qtdDiasCliente); } if(qtdDiasAgencia > 0){ helper.setDiasAtrasoAgencia(qtdDiasAgencia); } ObterDescricaoSituacaoOSHelper obter = Fachada.getInstancia().obterDescricaoSituacaoOS(ordemServico.getId()); helper.setSituacao(obter.getDescricaoAbreviadaSituacao()); String endereco = Fachada.getInstancia().obterEnderecoAbreviadoOS(ordemServico.getId()); helper.setEndereco(endereco); helper.setOrdemServicoProgramacao(ordemServicoProgramacao); if(!mapOsProgramacaoHelper.containsKey(chave)){ Collection colecaoHelper = new ArrayList(); colecaoHelper.add(helper); mapOsProgramacaoHelper.put(chave,colecaoHelper); }else{ Collection colecaoHelper = (ArrayList) mapOsProgramacaoHelper.get(chave); colecaoHelper.add(helper); mapOsProgramacaoHelper.put(chave,colecaoHelper); } mapEquipe.put(chave,equipe); } } else { throw new ActionServletException("atencao.ordem_servico_programacao_inexistente", null,Util.formatarData(dataRoteiro)); } sessao.setAttribute("mapOsProgramacaoHelper",mapOsProgramacaoHelper); sessao.setAttribute("mapEquipe",mapEquipe); } /** * [SB00010] - Prepara Barra da Carga de Trabalho * * @author Rafael Pinto * @date 17/08/2006 * * @param sessao,data do roteiro */ private void preparaBarraCargaTrabalho(HttpSession sessao,Date dataRoteiro){ HashMap mapEquipeIdsOsProgramadas = new HashMap(); HashMap mapOsProgramacaoHelper = (HashMap) sessao.getAttribute("mapOsProgramacaoHelper"); Collection colecaoHelper = mapOsProgramacaoHelper.values(); Iterator itera = colecaoHelper.iterator(); while (itera.hasNext()) { Collection colecaoOSProgramacaoHelper = (Collection) itera.next(); Iterator iteraOsProgramacao = colecaoOSProgramacaoHelper.iterator(); while (iteraOsProgramacao.hasNext()) { OSProgramacaoHelper osProgramacaoHelper = (OSProgramacaoHelper) iteraOsProgramacao.next(); OrdemServicoProgramacao osProgramacao = osProgramacaoHelper.getOrdemServicoProgramacao(); String chaveNome = osProgramacao.getEquipe().getNome(); if(!mapEquipeIdsOsProgramadas.containsKey(chaveNome)){ Set colecaoIds = new HashSet(); colecaoIds.add(osProgramacao.getOrdemServico().getId()); mapEquipeIdsOsProgramadas.put(chaveNome,colecaoIds); }else{ Set colecaoIds = (HashSet) mapEquipeIdsOsProgramadas.get(chaveNome); colecaoIds.add(osProgramacao.getOrdemServico().getId()); mapEquipeIdsOsProgramadas.put(chaveNome,colecaoIds); } } } itera = mapEquipeIdsOsProgramadas.keySet().iterator(); HashMap mapEquipe = (HashMap) sessao.getAttribute("mapEquipe"); while (itera.hasNext()) { String key = (String) itera.next(); Collection colecaoIdsOSProgramadas = (HashSet) mapEquipeIdsOsProgramadas.get(key); Equipe equipe = (Equipe) mapEquipe.get(key); ObterCargaTrabalhoEquipeHelper obterCargaTrabalhoEquipeHelper = Fachada.getInstancia().obterCargaTrabalhoEquipe( equipe.getId(),colecaoIdsOSProgramadas,null,dataRoteiro); BigDecimal percentualPrevista = obterCargaTrabalhoEquipeHelper.getPercentualCargaTrabalhoPrevista(); BigDecimal percentualRealizada = obterCargaTrabalhoEquipeHelper.getPercentualCargaRealizada(); String chaveSessao = key.replace("-",""); chaveSessao = chaveSessao.replace(" ",""); String keyPercentualPrevista = "percentualTrabalhoPrevista"+chaveSessao; sessao.setAttribute(keyPercentualPrevista,percentualPrevista); String keyPercentualRealizada = "percentualTrabalhoRealizada"+chaveSessao; sessao.setAttribute(keyPercentualRealizada,percentualRealizada); } } // /** // * Pesquisar a Programacao Roteiro (como a tabela eh pequena usa o filtro) // * // * @author Rafael Pinto // * @date 21/08/2006 // * // * @param data do roteiro,idUnidade // */ // private ProgramacaoRoteiro consultarProgramacaoRoteiro(Date dataRoterio,Integer unidade){ // // FiltroProgramacaoRoteiro filtroProgramacaoRoteiro = new FiltroProgramacaoRoteiro(); // filtroProgramacaoRoteiro.adicionarParametro( // new ParametroSimples(FiltroProgramacaoRoteiro.DATA_ROTEIRO, dataRoterio)); // // filtroProgramacaoRoteiro.adicionarParametro( // new ParametroSimples(FiltroProgramacaoRoteiro.UNIDADE_ORGANIZACIONAL_ID, unidade)); // // Collection colecaoProgramacaoRoteiro = // Fachada.getInstancia().pesquisar(filtroProgramacaoRoteiro, ProgramacaoRoteiro.class.getName()); // // ProgramacaoRoteiro programacaoRoteiro = // (ProgramacaoRoteiro) Util.retonarObjetoDeColecao(colecaoProgramacaoRoteiro); // // // return programacaoRoteiro; // // } /** * Retorna a colecao de chave da equipe que tenha o mesmo logradouro * * @author Rafael Pinto * @date 17/08/2006 * * @param sessao,id do Logradouro e chave da equipe * @return colecao de chaves da equipe */ private Collection pesquisaEquipePeloLogradouro(HttpSession sessao,int idLogradouro,String chave){ Set retorno = new HashSet(); HashMap mapOsProgramacaoHelper = (HashMap) sessao.getAttribute("mapOsProgramacaoHelper"); if(mapOsProgramacaoHelper != null && !mapOsProgramacaoHelper.isEmpty()){ Collection colecao = (Collection) mapOsProgramacaoHelper.get(chave); if(colecao != null && !colecao.isEmpty()){ Iterator iter = colecao.iterator(); while (iter.hasNext()) { OSProgramacaoHelper helper = (OSProgramacaoHelper) iter.next(); OrdemServicoProgramacao ordemServicoProgramacao = helper.getOrdemServicoProgramacao(); OrdemServico ordemServico = ordemServicoProgramacao.getOrdemServico(); int idLogra = ConstantesSistema.NUMERO_NAO_INFORMADO; if(ordemServico.getRegistroAtendimento() != null){ if(ordemServico.getRegistroAtendimento().getLogradouroBairro() != null){ idLogra = ordemServico.getRegistroAtendimento().getLogradouroBairro().getId().intValue(); } String key = ordemServicoProgramacao.getEquipe().getNome(); if(idLogra == idLogradouro && !key.equals(chave)){ retorno.add(key); } } } } } return retorno; } /** * Retorna o ultimo sequencial das os�s programadas * * @author Rafael Pinto * @date 17/08/2006 * * @param colecao de OsProgramacaoHelper * @return ultimoSequencial */ private int retornaUltimoSequencial(Collection colecaoOsProgramacaoHelper){ short valorSequencial = 0; Iterator iter = colecaoOsProgramacaoHelper.iterator(); while (iter.hasNext()) { OSProgramacaoHelper helper = (OSProgramacaoHelper) iter.next(); if(valorSequencial < helper.getOrdemServicoProgramacao().getNnSequencialProgramacao()){ valorSequencial = helper.getOrdemServicoProgramacao().getNnSequencialProgramacao(); } } return valorSequencial; } }