package gcom.gui.atendimentopublico.ordemservico; import gcom.atendimentopublico.ordemservico.ArquivoTextoAcompanhamentoServico; import gcom.atendimentopublico.ordemservico.Equipe; import gcom.atendimentopublico.ordemservico.FiltroArquivoTextoAcompanhamentoServico; import gcom.atendimentopublico.ordemservico.OrdemServico; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.micromedicao.SituacaoTransmissaoLeitura; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.util.ArrayList; import java.util.Collection; import java.util.Date; 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 ExibirAcompanhamentoArquivosRoteiroRemanejarEquipeOSAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping,ActionForm actionForm, HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse) { // Seta o mapeamento de retorno ActionForward retorno = actionMapping.findForward("exibirRemanejarEquipeOSAction"); HttpSession sessao = httpServletRequest.getSession(false); Fachada fachada = Fachada.getInstancia(); Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado"); // Form AcompanharRoteiroProgramacaoOrdemServicoActionForm acompanharActionForm = (AcompanharRoteiroProgramacaoOrdemServicoActionForm) actionForm; String chaveArquivo = httpServletRequest.getParameter("chaveArquivo"); ArquivoTextoAcompanhamentoServico arquivoTextoAcompanhamentoServico = null; if (chaveArquivo != null){ FiltroArquivoTextoAcompanhamentoServico filtroArquivoTextoAcompanhamentoServico = new FiltroArquivoTextoAcompanhamentoServico(); filtroArquivoTextoAcompanhamentoServico.adicionarParametro(new ParametroSimples(FiltroArquivoTextoAcompanhamentoServico.ID, chaveArquivo)); Collection<?> colecaoArquivoTxtAcompanhamentoServico = fachada.pesquisar( filtroArquivoTextoAcompanhamentoServico, ArquivoTextoAcompanhamentoServico.class.getName()); arquivoTextoAcompanhamentoServico = (ArquivoTextoAcompanhamentoServico) colecaoArquivoTxtAcompanhamentoServico .iterator().next(); if (arquivoTextoAcompanhamentoServico.getSituacaoTransmissaoLeitura().getId().equals(SituacaoTransmissaoLeitura.TRANSMITIDO)){ throw new ActionServletException("atencao.nao_possivel.remanejar.situacao_finalizado"); } } String chaveOs = httpServletRequest.getParameter("chave"); OrdemServico ordemServico = fachada.recuperaOSPorId(new Integer(chaveOs)); //[FS0007 - Verificar sele��o de ordem de servi�o encerrada] if(ordemServico.getSituacao() == OrdemServico.SITUACAO_ENCERRADO.shortValue()){ throw new ActionServletException("atencao.situacao.nao_pendente"); } if (ordemServico.getSituacao() != OrdemServico.SITUACAO_PENDENTE){ throw new ActionServletException("atencao.situacao.diferente_pendente", "remanejar a"); } // Precisa pegar a unidade do usuario do login que esta na sessao Integer idUnidadeLotacao = usuario.getUnidadeOrganizacional().getId(); Date dataRoteiro = Util.converteStringParaDate(acompanharActionForm.getDataProgramacao()); Collection<Equipe> colecao = fachada.recuperaEquipeDaOSProgramacaoPorDataRoteiro(new Integer(chaveOs),dataRoteiro); //[FS0006 - Verificar ordem de servi�o programada para mais de uma equipe] if(colecao != null && colecao.size() > 1){ throw new ActionServletException("atencao.ordem_servico_programada_varias_equipes"); } Equipe equipeAtual = (Equipe) Util.retonarObjetoDeColecao(colecao); Collection<Equipe> colecaoEquipe = this.pesquisarEquipes(idUnidadeLotacao,dataRoteiro, equipeAtual.getId()); acompanharActionForm.setIdEquipeAtual(""+equipeAtual.getId()); acompanharActionForm.setNomeEquipeAtual(equipeAtual.getNome()); acompanharActionForm.setIdOrdemServico(chaveOs); acompanharActionForm.setDescricaoOrdemServico(ordemServico.getServicoTipo().getDescricao()); acompanharActionForm.setEquipes(colecaoEquipe); acompanharActionForm.setIdAcompanhamentoArquivosRoteiro(chaveArquivo); return retorno; } private Collection<Equipe> pesquisarEquipes(Integer idUnidadeLotacao, Date dataRoteiro, Integer idEquipe){ Collection<Equipe> retorno = new ArrayList(); retorno = Fachada.getInstancia().pesquisarEquipesOSNaoEnviadasProgramadas(idUnidadeLotacao, dataRoteiro, idEquipe); return retorno; } }