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.OSFiltroHelper; import gcom.atendimentopublico.ordemservico.bean.OSProgramacaoHelper; import gcom.atendimentopublico.ordemservico.bean.ObterCargaTrabalhoEquipeHelper; import gcom.atendimentopublico.ordemservico.bean.ObterOSDistribuidasPorEquipeHelper; 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 ProgramarOrdemServicoRoteiroCriteriosAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // Seta o mapeamento de retorno ActionForward retorno = actionMapping.findForward("programarOrdemServico"); HttpSession sessao = httpServletRequest.getSession(false); // Form ElaborarOrdemServicoRoteiroCriteriosActionForm elaborarActionForm = (ElaborarOrdemServicoRoteiroCriteriosActionForm) actionForm; // Data do Roteiro Date dataRoteiro = Util.converteStringParaDate(elaborarActionForm.getDataRoteiro()); Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado"); String tipoAcao = httpServletRequest.getParameter("tipoAcao"); // N�mero de OsPrograma��o que est�o programadas int osProgramadas = elaborarActionForm.getProgramadas(); // H� a��o que ser� executada ser� de remover ou desfazer if(tipoAcao != null && tipoAcao.equals("R")){ String idOs = httpServletRequest.getParameter("idOs"); // Defaz todas as OS programadas if(idOs == null){ osProgramadas = this.removerTodasOrdemServicoProgramada(sessao,elaborarActionForm.getProgramadas()); // Remove as OS selecionada na tela }else{ osProgramadas = this.removerOrdemServicoProgramada(sessao,new Integer(idOs),elaborarActionForm.getProgramadas()); } elaborarActionForm.setProgramadas(osProgramadas); // [SB0010]-Prepara Barra de Carga de Trabalho this.preparaBarraCargaTrabalho(sessao,dataRoteiro); // H� a��o que ser� executada ser� de programar a OS selecionada }else if (tipoAcao != null && tipoAcao.equals("P")) { // Equipe Selecionada Integer[] idsEquipeSelecionada = (Integer[]) elaborarActionForm.getEquipesSelecionadas(); // Ordem de Servico Selecionada Integer[] idsOsSelecionada = (Integer[]) elaborarActionForm.getOsSelecionada(); if(idsEquipeSelecionada.length == 0 || idsEquipeSelecionada[0].intValue() == ConstantesSistema.NUMERO_NAO_INFORMADO && idsOsSelecionada.length == 0 || idsOsSelecionada[0].intValue() == ConstantesSistema.NUMERO_NAO_INFORMADO){ throw new ActionServletException("atencao.nao.informado.equipe.ordem_servico.programacao"); } if(idsEquipeSelecionada.length == 0 || idsEquipeSelecionada[0].intValue() == ConstantesSistema.NUMERO_NAO_INFORMADO){ throw new ActionServletException("atencao.nao.informado.equipe.programacao"); } if(idsOsSelecionada.length == 0 || idsOsSelecionada[0].intValue() == ConstantesSistema.NUMERO_NAO_INFORMADO){ throw new ActionServletException("atencao.nao.informado.ordem_servico.programacao"); } if(idsOsSelecionada.length > 1 && idsEquipeSelecionada.length > 1){ throw new ActionServletException("atencao.informado.ordem_servico.equipe.programacao"); } //Selecionou mais de uma equipe,tem que informar que eh principal int idEquipePrincipal = new Integer(httpServletRequest.getParameter("principal")).intValue(); int i = 0; for (Integer idOs : idsOsSelecionada) { boolean programouOS = false; Set<Equipe> colecaoEquipesPorOS = new HashSet(); for (Integer idEquipe : idsEquipeSelecionada) { Equipe equipe = pesquisarEquipePorId(sessao,idEquipe); OrdemServico ordemServico = retornaOrdemServicoDaColecaoProgramada(sessao,idOs,equipe.getNome()); colecaoEquipesPorOS.add(equipe); if(ordemServico == null){ programouOS = true; OrdemServico os = this.retornaOrdemServicoSelecionadasPorId(sessao,idOs); OrdemServicoProgramacao ordemServicoProgramacao = new OrdemServicoProgramacao(); ordemServicoProgramacao.setOrdemServico(os); ordemServicoProgramacao.setEquipe(equipe); ordemServicoProgramacao.setUsuarioProgramacao(usuario); if(idEquipePrincipal == equipe.getId().intValue()){ ordemServicoProgramacao.setIndicadorEquipePrincipal(ConstantesSistema.SIM); }else{ ordemServicoProgramacao.setIndicadorEquipePrincipal(ConstantesSistema.NAO); } // Pega a data final que foi colocada na tela String dataProgramacaoSelecionada = httpServletRequest.getParameter("dataFinalProgramacaoSelecionadas"+os.getId()); ProgramacaoRoteiro programacaoRoteiro = new ProgramacaoRoteiro(); programacaoRoteiro.setDataRoteiro(Util.converteStringParaDate(dataProgramacaoSelecionada)); programacaoRoteiro.setUnidadeOrganizacional(usuario.getUnidadeOrganizacional()); ordemServicoProgramacao.setProgramacaoRoteiro(programacaoRoteiro); this.montaOrdemServicoProgramacao(sessao,ordemServicoProgramacao,colecaoEquipesPorOS); osProgramadas = osProgramadas + 1; elaborarActionForm.setProgramadas(osProgramadas); } } if(programouOS){ this.removerOrdemServicoSelecionadas(sessao,idOs); } i++; } // [SB0010]-Prepara Barra de Carga de Trabalho this.preparaBarraCargaTrabalho(sessao,dataRoteiro); // Exibir Alerta }else if (tipoAcao != null && tipoAcao.equals("A")) { String chaveEquipe = httpServletRequest.getParameter("chaveEquipe"); Integer idOs = new Integer(httpServletRequest.getParameter("idOs")); HashMap mapOsProgramacaoHelper = (HashMap) sessao.getAttribute("mapOsProgramacaoHelper"); Collection colecaoHelper = (ArrayList) mapOsProgramacaoHelper.get(chaveEquipe); Iterator iter = colecaoHelper.iterator(); while (iter.hasNext()) { OSProgramacaoHelper helper = (OSProgramacaoHelper) iter.next(); OrdemServicoProgramacao osProgramacao = helper.getOrdemServicoProgramacao(); OrdemServico ordemServico = osProgramacao.getOrdemServico(); if(osProgramacao.getOrdemServico().getId().intValue() == idOs.intValue()){ elaborarActionForm.setIdOrdemServico(idOs.intValue()); elaborarActionForm.setDescricaoOrdemServico(ordemServico.getServicoTipo().getDescricao()); elaborarActionForm.setAlertaEquipeServico(helper.getAlertaEquipeDeServicoPerfilTipo()); httpServletRequest.setAttribute("colecaoAlertaEquipeLogradouro", helper.getColecaoAlertaEquipeDeLogradouro()); break; } } retorno = actionMapping.findForward("alertaOrdemServico"); } Collection colecaoOSFiltroHelper = (Collection) sessao.getAttribute("colecaoOSFiltroHelper"); elaborarActionForm.setSelecionadas(colecaoOSFiltroHelper.size()); return retorno; } /** * Pesquisa a Equipe na cole��o que j� tem na sess�o a partir do id * * @author Rafael Pinto * @date 17/08/2006 * * @param sessao e id da Equipe * @return Equipe */ private Equipe pesquisarEquipePorId(HttpSession sessao,Integer idEquipe){ Equipe equipe = null; Collection colecaoEquipes = (Collection) sessao.getAttribute("colecaoEquipes"); Iterator iter = colecaoEquipes.iterator(); while (iter.hasNext()) { Equipe eq = (Equipe) iter.next(); if(eq.getId().intValue() == idEquipe.intValue()){ equipe = eq; break; } } return equipe; } /** * Para cada OS programada e retirada na lista de os possiveis de programa��o * a partir do id da Ordem de Servi�o programada * * @author Rafael Pinto * @date 17/08/2006 * * @param sessao e id da OS */ private void removerOrdemServicoSelecionadas(HttpSession sessao,Integer idOS){ Collection colecaoOSFiltroHelper = (Collection) sessao.getAttribute("colecaoOSFiltroHelper"); Iterator iter = colecaoOSFiltroHelper.iterator(); while (iter.hasNext()) { OSFiltroHelper helper = (OSFiltroHelper) iter.next(); OrdemServico os = helper.getOrdemServico(); if(os.getId().intValue() == idOS.intValue()){ iter.remove(); } } sessao.setAttribute("colecaoOSFiltroHelper", colecaoOSFiltroHelper); } /** * Remove a Ordem de Servico Programada do HashMap de OSPrograma��o * * @author Rafael Pinto * @date 17/08/2006 * * @param sessao,id da Os e numero de OS programadas * @return numero de os programadas */ private int removerOrdemServicoProgramada(HttpSession sessao,Integer idOs,int programadas){ HashMap mapOsProgramacaoHelper = (HashMap) sessao.getAttribute("mapOsProgramacaoHelper"); Collection colecaoHelper = mapOsProgramacaoHelper.values(); Iterator iteraChave = colecaoHelper.iterator(); while (iteraChave.hasNext()) { Collection colecaoOSProgramacaoHelper = (Collection) iteraChave.next(); Iterator iteraOsProgramacao = colecaoOSProgramacaoHelper.iterator(); boolean removeu = false; while (iteraOsProgramacao.hasNext()) { OSProgramacaoHelper osProgramacaoHelper = (OSProgramacaoHelper) iteraOsProgramacao.next(); OrdemServicoProgramacao ordemServicoProgramacao = osProgramacaoHelper.getOrdemServicoProgramacao(); if(ordemServicoProgramacao.getOrdemServico().getId().intValue() == idOs.intValue()){ iteraOsProgramacao.remove(); programadas--; removeu = true; String dataRoteiro = Util.formatarData(ordemServicoProgramacao.getProgramacaoRoteiro().getDataRoteiro()); this.adcionaOrdemServicoNaColecaoSelecionada(sessao, ordemServicoProgramacao.getOrdemServico(),dataRoteiro); }else if (removeu){ short seq = ordemServicoProgramacao.getNnSequencialProgramacao(); seq--; ordemServicoProgramacao.setNnSequencialProgramacao(seq); } } if(colecaoOSProgramacaoHelper == null || colecaoOSProgramacaoHelper.isEmpty()){ iteraChave.remove(); } } return programadas; } /** * Remove todas as Ordens de Servi�o Programada do HashMap de OSProgramacaoHelper, * esse metodo eh usado no desfazer * * @author Rafael Pinto * @date 17/08/2006 * * @param sessao e numero de OS programadas * @return numero de os programadas */ private int removerTodasOrdemServicoProgramada(HttpSession sessao,int programadas){ HashMap mapOsProgramacaoHelper = (HashMap) sessao.getAttribute("mapOsProgramacaoHelper"); Collection colecaoHelper = mapOsProgramacaoHelper.values(); Iterator iteraChave = colecaoHelper.iterator(); while (iteraChave.hasNext()) { Collection colecaoOSProgramacaoHelper = (Collection) iteraChave.next(); Iterator iteraOsProgramacao = colecaoOSProgramacaoHelper.iterator(); while (iteraOsProgramacao.hasNext()) { OSProgramacaoHelper osProgramacaoHelper = (OSProgramacaoHelper) iteraOsProgramacao.next(); OrdemServicoProgramacao ordemServicoProgramacao = osProgramacaoHelper.getOrdemServicoProgramacao(); if(ordemServicoProgramacao.getId() == null || ordemServicoProgramacao.getId().intValue() == ConstantesSistema.NUMERO_NAO_INFORMADO){ iteraOsProgramacao.remove(); programadas--; String dataRoteiro = Util.formatarData(ordemServicoProgramacao.getProgramacaoRoteiro().getDataRoteiro()); this.adcionaOrdemServicoNaColecaoSelecionada(sessao, ordemServicoProgramacao.getOrdemServico(),dataRoteiro); } } if(colecaoOSProgramacaoHelper == null || colecaoOSProgramacaoHelper.isEmpty()){ iteraChave.remove(); } } return programadas; } /** * Adiciona a Ordem de Servico na lista de ordem de servi�os para possivel programa��o, * esse metodo eh usado no momento que eh feito a remo��o da Os na HashMap de OSProgramacaoHelper * * @author Rafael Pinto * @date 17/08/2006 * * @param sessao,ordem de servico e data de roteiro */ private void adcionaOrdemServicoNaColecaoSelecionada(HttpSession sessao, OrdemServico ordemServico,String dataRoteiro){ OSFiltroHelper osFiltroHelper = this.retornaOSFiltroHelper(ordemServico); OrdemServico os = retornaOrdemServicoSelecionadasPorId(sessao,ordemServico.getId()); //Verifica se j� tem essa ordem de servico if(os == null){ Collection colecaoOSFiltroHelper = (Collection) sessao.getAttribute("colecaoOSFiltroHelper"); osFiltroHelper.setDataPrevisaoAtual(dataRoteiro); colecaoOSFiltroHelper.add(osFiltroHelper); } } /** * Monta o objeto OSFiltroHelper a partir da Ordem de Servico * * @author Rafael Pinto * @date 17/08/2006 * * @param ordem de servi�o * @return OSFiltroHelper */ private OSFiltroHelper retornaOSFiltroHelper(OrdemServico ordemServico) { OSFiltroHelper helper = null; int qtdDiasCliente = ConstantesSistema.NUMERO_NAO_INFORMADO; int qtdDiasAgencia = ConstantesSistema.NUMERO_NAO_INFORMADO; if(ordemServico.getRegistroAtendimento() != null) { Date dataPrevistaAtual = ordemServico.getRegistroAtendimento().getDataPrevistaAtual(); qtdDiasCliente = Util.obterQuantidadeDiasEntreDuasDatas(dataPrevistaAtual,new Date()); } helper = new OSFiltroHelper(); helper.setOrdemServico(ordemServico); if(ordemServico.getSituacao() == OrdemServico.SITUACAO_EXECUCAO_EM_ANDAMENTO.shortValue()){ helper.setSituacao(""+ordemServico.getSituacao()); } if(qtdDiasCliente > 0){ helper.setDiasAtrasoCliente(qtdDiasCliente); } if(qtdDiasAgencia > 0){ helper.setDiasAtrasoAgencia(qtdDiasAgencia); } String endereco = Fachada.getInstancia().obterEnderecoAbreviadoOS(ordemServico.getId()); helper.setEndereco(endereco); return helper; } /** * Pesquisa a Ordem de Serivico na cole��o de OSFiltroHelper que j� tem na sess�o a partir do id * * @author Rafael Pinto * @date 17/08/2006 * * @param sessao e id da OS * @return OrdemServico */ private OrdemServico retornaOrdemServicoSelecionadasPorId(HttpSession sessao,Integer idOS){ OrdemServico ordemServico = null; Collection colecaoOSFiltroHelper = (Collection) sessao.getAttribute("colecaoOSFiltroHelper"); Iterator iter = colecaoOSFiltroHelper.iterator(); while (iter.hasNext()) { OSFiltroHelper helper = (OSFiltroHelper) iter.next(); OrdemServico os = helper.getOrdemServico(); if(os.getId().intValue() == idOS.intValue()){ ordemServico = os; break; } } return ordemServico; } /** * Retorna a ordem de servi�o do HashMap de OSProgramacaoHelper * * @author Rafael Pinto * @date 17/08/2006 * * @param sessao,id da OS e chave da equipe(nome da Equipe) * @return OrdemServico */ private OrdemServico retornaOrdemServicoDaColecaoProgramada(HttpSession sessao,Integer idOS,String chaveEquipe){ OrdemServico ordemServico = null; HashMap mapOsProgramacaoHelper = (HashMap) sessao.getAttribute("mapOsProgramacaoHelper"); if(mapOsProgramacaoHelper.containsKey(chaveEquipe)){ Collection colecaoHelper = (ArrayList) mapOsProgramacaoHelper.get(chaveEquipe); Iterator iter = colecaoHelper.iterator(); while (iter.hasNext()) { OSProgramacaoHelper helper = (OSProgramacaoHelper) iter.next(); OrdemServico os = helper.getOrdemServicoProgramacao().getOrdemServico(); if(os.getId().intValue() == idOS.intValue()){ ordemServico = os; break; } } } return ordemServico; } /** * Monta um HashMap(nomeEquipe,Colecao de OSProgramacaoHelper) a partir * da Ordem de Servico Programacao * * @author Rafael Pinto * @date 17/08/2006 * * @param sessao e ordemServicoProgramacao */ private void montaOrdemServicoProgramacao(HttpSession sessao, OrdemServicoProgramacao ordemServicoProgramacao,Set<Equipe> colecaoEquipesPorOS){ HashMap mapOsProgramacaoHelper = (HashMap) sessao.getAttribute("mapOsProgramacaoHelper"); HashMap mapEquipe = new HashMap(); if(sessao.getAttribute("mapEquipe") != null){ mapEquipe = (HashMap) sessao.getAttribute("mapEquipe"); } 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) { 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(true); 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(ordemServico.getSituacao() == OrdemServico.SITUACAO_EXECUCAO_EM_ANDAMENTO.shortValue()){ helper.setSituacao(""+ordemServico.getSituacao()); } if(qtdDiasCliente > 0){ helper.setDiasAtrasoCliente(qtdDiasCliente); } if(qtdDiasAgencia > 0){ helper.setDiasAtrasoAgencia(qtdDiasAgencia); } String endereco = Fachada.getInstancia().obterEnderecoAbreviadoOS(ordemServico.getId()); helper.setEndereco(endereco); helper.setColecaoEquipeAssociadaOS(colecaoEquipesPorOS); if(!mapOsProgramacaoHelper.containsKey(chave)){ ordemServicoProgramacao.setNnSequencialProgramacao((short)1); helper.setOrdemServicoProgramacao(ordemServicoProgramacao); Collection colecaoHelper = new ArrayList(); colecaoHelper.add(helper); mapOsProgramacaoHelper.put(chave,colecaoHelper); }else{ Collection colecaoHelper = (ArrayList) mapOsProgramacaoHelper.get(chave); int valor = this.retornaUltimoSequencial(colecaoHelper)+1; ordemServicoProgramacao.setNnSequencialProgramacao((short)valor); helper.setOrdemServicoProgramacao(ordemServicoProgramacao); colecaoHelper.add(helper); mapOsProgramacaoHelper.put(chave,colecaoHelper); } mapEquipe.put(chave,equipe); sessao.setAttribute("mapEquipe",mapEquipe); } /** * 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; } /** * 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; } /** * [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 mapEquipeOsDistribuidas = 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(osProgramacao.getId() != null){ if(!mapEquipeIdsOsProgramadas.containsKey(chaveNome)){ Set colecaoIds = new HashSet(); colecaoIds.add(osProgramacao.getOrdemServico().getId()); mapEquipeIdsOsProgramadas.put(chaveNome,colecaoIds); }else{ Set colecaoIds = new HashSet(); if(mapEquipeIdsOsProgramadas.get(chaveNome) != null){ colecaoIds = (HashSet) mapEquipeIdsOsProgramadas.get(chaveNome); colecaoIds.add(osProgramacao.getOrdemServico().getId()); } mapEquipeIdsOsProgramadas.put(chaveNome,colecaoIds); } }else{ if(!mapEquipeIdsOsProgramadas.containsKey(chaveNome)){ mapEquipeIdsOsProgramadas.put(chaveNome,null); } ObterOSDistribuidasPorEquipeHelper obterOSDistribuidasPorEquipeHelper = new ObterOSDistribuidasPorEquipeHelper(); obterOSDistribuidasPorEquipeHelper.setIdOS(osProgramacao.getOrdemServico().getId()); obterOSDistribuidasPorEquipeHelper.setDataFinalProgramacao( osProgramacao.getProgramacaoRoteiro().getDataRoteiro()); obterOSDistribuidasPorEquipeHelper.setColecaoEquipe(osProgramacaoHelper.getColecaoEquipeAssociadaOS()); if(!mapEquipeOsDistribuidas.containsKey(chaveNome)){ Set<ObterOSDistribuidasPorEquipeHelper> colecaoOsDistribuidas = new HashSet(); colecaoOsDistribuidas.add(obterOSDistribuidasPorEquipeHelper); mapEquipeOsDistribuidas.put(chaveNome,colecaoOsDistribuidas); }else{ Set<ObterOSDistribuidasPorEquipeHelper> colecaoOsDistribuidas = (HashSet) mapEquipeOsDistribuidas.get(chaveNome); colecaoOsDistribuidas.add(obterOSDistribuidasPorEquipeHelper); mapEquipeOsDistribuidas.put(chaveNome,colecaoOsDistribuidas); } } } } itera = mapEquipeIdsOsProgramadas.keySet().iterator(); HashMap mapEquipe = (HashMap) sessao.getAttribute("mapEquipe"); while (itera.hasNext()) { String key = (String) itera.next(); Set colecaoIdsOSProgramadas = (HashSet) mapEquipeIdsOsProgramadas.get(key); Equipe equipe = (Equipe) mapEquipe.get(key); Set<ObterOSDistribuidasPorEquipeHelper> colecaoOsDistribuidas = (HashSet) mapEquipeOsDistribuidas.get(key); ObterCargaTrabalhoEquipeHelper obterCargaTrabalhoEquipeHelper = Fachada.getInstancia().obterCargaTrabalhoEquipe( equipe.getId(),colecaoIdsOSProgramadas,colecaoOsDistribuidas,dataRoteiro); BigDecimal percentualPrevista = obterCargaTrabalhoEquipeHelper.getPercentualCargaTrabalhoPrevista(); BigDecimal percentualRealizada = obterCargaTrabalhoEquipeHelper.getPercentualCargaRealizada(); String chaveSessao = key.replace(" ",""); String keyPercentualPrevista = "percentualTrabalhoPrevista"+chaveSessao; sessao.setAttribute(keyPercentualPrevista,percentualPrevista); String keyPercentualRealizada = "percentualTrabalhoRealizada"+chaveSessao; sessao.setAttribute(keyPercentualRealizada,percentualRealizada); } } }