package gcom.gui.atendimentopublico.ordemservico; import gcom.atendimentopublico.ordemservico.ArquivoTextoAcompanhamentoServico; import gcom.atendimentopublico.ordemservico.Equipe; import gcom.atendimentopublico.ordemservico.FiltroArquivoTextoAcompanhamentoServico; import gcom.atendimentopublico.ordemservico.FiltroEquipe; import gcom.atendimentopublico.ordemservico.OrdemServico; import gcom.atendimentopublico.ordemservico.bean.AcompanhamentoArquivosRoteiroHelper; import gcom.atendimentopublico.ordemservico.bean.OSProgramacaoAcompanhamentoServicoHelper; import gcom.atendimentopublico.ordemservico.bean.ObterDadosEquipe; import gcom.atendimentopublico.registroatendimento.RegistroAtendimento; import gcom.atendimentopublico.registroatendimento.bean.ObterDadosRegistroAtendimentoHelper; 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.filtro.ParametroSimples; import java.util.Collection; import java.util.Iterator; 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 ExibirAcompanhamentoArquivosRoteiroIncluirOrdemServicoAction extends GcomAction { Fachada fachada = Fachada.getInstancia(); public ActionForward execute(ActionMapping actionMapping,ActionForm actionForm, HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse) { // Seta o mapeamento de retorno ActionForward retorno = actionMapping.findForward("exibirIncluirOrdemServicoAcompanhamentoArqRoteiro"); HttpSession sessao = httpServletRequest.getSession(false); Collection colecaoAcompanhamentoArquivosRoteiro = (Collection) sessao.getAttribute("colecaoAcompanhamentoArquivosRoteiro"); Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado"); // Form AcompanharRoteiroProgramacaoOrdemServicoActionForm acompanharActionForm = (AcompanharRoteiroProgramacaoOrdemServicoActionForm) actionForm; String chave = httpServletRequest.getParameter("chave"); ArquivoTextoAcompanhamentoServico arquivoTextoAcompanhamentoServico = null; if (chave != null){ FiltroArquivoTextoAcompanhamentoServico filtroArquivoTextoAcompanhamentoServico = new FiltroArquivoTextoAcompanhamentoServico(); filtroArquivoTextoAcompanhamentoServico.adicionarParametro(new ParametroSimples(FiltroArquivoTextoAcompanhamentoServico.ID, chave)); 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.incluir_situacao_finalizado"); } } if (httpServletRequest.getParameter("tipoConsulta") != null && !httpServletRequest.getParameter("tipoConsulta").equals("")) { String id = httpServletRequest.getParameter("idCampoEnviarDados"); String descricao = httpServletRequest.getParameter("descricaoCampoEnviarDados"); if (httpServletRequest.getParameter("tipoConsulta").equals("registroAtendimento")) { acompanharActionForm.setNumeroRA(id); acompanharActionForm.setDescricaoRA(descricao); }else if (httpServletRequest.getParameter("tipoConsulta").equals("ordemServico")) { Integer unidadeLotacao = new Integer(acompanharActionForm.getUnidadeLotacao()); acompanharActionForm.setIdOrdemServico(id); acompanharActionForm.setDescricaoOrdemServico(descricao); // [FS0008] - Verificar possibilidade da inclus�o da ordem de servi�o this.pesquisarOrdemServico(acompanharActionForm,unidadeLotacao); } int valor = this.retornaUltimoSequencial(acompanharActionForm.getIdEquipe(),colecaoAcompanhamentoArquivosRoteiro)+1; acompanharActionForm.setSequencialProgramacao(""+valor); } else { // Flag indicando que o usu�rio fez uma consulta a partir da tecla Enter String objetoConsulta = httpServletRequest.getParameter("objetoConsulta"); if(objetoConsulta == null){ objetoConsulta = (String) httpServletRequest.getAttribute("objetoConsulta"); if(objetoConsulta != null){ acompanharActionForm.setIdOrdemServico((String)httpServletRequest.getAttribute("idOrdemServico")); int valor = this.retornaUltimoSequencial(acompanharActionForm.getIdEquipe(),colecaoAcompanhamentoArquivosRoteiro)+1; acompanharActionForm.setSequencialProgramacao(""+valor); } } Integer numeroRA = (Integer) httpServletRequest.getAttribute("numeroRa"); String osDescricao = (String) httpServletRequest.getAttribute("descOrdemServico"); //[UC0443] - Pesquisar Registro Atendimento if ((objetoConsulta != null && !objetoConsulta.trim().equals("") && objetoConsulta.trim().equals("1")) || (numeroRA != null && !numeroRA.equals(""))) { if (numeroRA != null && !numeroRA.equals("")){ acompanharActionForm.setNumeroRA(Integer.toString(numeroRA)); } if (osDescricao != null && !osDescricao.equals("")){ acompanharActionForm.setDescricaoOrdemServico(osDescricao); } this.pesquisarRegistroAtendimento(acompanharActionForm); } if (objetoConsulta != null && !objetoConsulta.trim().equals("") && objetoConsulta.trim().equals("2")) { Integer idUnidadeLotacao = usuario.getUnidadeOrganizacional().getId(); this.pesquisarOrdemServico(acompanharActionForm,idUnidadeLotacao); }else if(chave != null){ FiltroEquipe filtroEquipe = new FiltroEquipe(); filtroEquipe.adicionarParametro(new ParametroSimples(FiltroEquipe.ID, arquivoTextoAcompanhamentoServico.getEquipe().getId())); Collection<?> colecaoEquipe = fachada.pesquisar(filtroEquipe, Equipe.class.getName()); Equipe equipe = (Equipe) colecaoEquipe.iterator().next(); //[UC0471]- Obter Dados da Equipe ObterDadosEquipe obterDadosEquipe = fachada.obterDadosEquipe(equipe.getId()); acompanharActionForm.setIdEquipe(""+obterDadosEquipe.getEquipe().getId()); acompanharActionForm.setNomeEquipe(obterDadosEquipe.getEquipe().getNome()); acompanharActionForm.setPlacaVeiculo(obterDadosEquipe.getEquipe().getPlacaVeiculo()); acompanharActionForm.setCargaTrabalhoDia(""+ (obterDadosEquipe.getEquipe().getCargaTrabalho())); acompanharActionForm.setIdUnidade(""+obterDadosEquipe.getEquipe().getUnidadeOrganizacional().getId()); acompanharActionForm.setDescricaoUnidade(obterDadosEquipe.getEquipe().getUnidadeOrganizacional().getDescricao()); acompanharActionForm.setIdTipoPerfilServico(""+obterDadosEquipe.getEquipe().getServicoPerfilTipo().getId()); acompanharActionForm.setDescricaoTipoPerfilServico(obterDadosEquipe.getEquipe().getServicoPerfilTipo().getDescricao()); acompanharActionForm.setEquipeComponentes(obterDadosEquipe.getColecaoEquipeComponentes()); acompanharActionForm.setIdOrdemServico(null); acompanharActionForm.setIdAcompanhamentoArquivosRoteiro(chave); int valor = this.retornaUltimoSequencial(Integer.toString(obterDadosEquipe.getEquipe().getId()),colecaoAcompanhamentoArquivosRoteiro)+1; acompanharActionForm.setSequencialProgramacao(""+valor); acompanharActionForm.setSequencialProgramacaoPrevisto(""+valor); } } this.setaRequest(httpServletRequest,acompanharActionForm); return retorno; } private void pesquisarRegistroAtendimento(AcompanharRoteiroProgramacaoOrdemServicoActionForm acompanharActionForm) { ObterDadosRegistroAtendimentoHelper obter = fachada.obterDadosRegistroAtendimento(new Integer( acompanharActionForm.getNumeroRA())); if (obter.getRegistroAtendimento() != null) { RegistroAtendimento registroAtendimento = obter.getRegistroAtendimento(); if (registroAtendimento.getCodigoSituacao() == 2){ throw new ActionServletException("atencao.situacao.ra.pendente"); } acompanharActionForm.setNumeroRA(registroAtendimento.getId().toString()); acompanharActionForm.setDescricaoRA(registroAtendimento.getSolicitacaoTipoEspecificacao().getDescricao()); } else { acompanharActionForm.setDescricaoRA("Registro Atendimento inexistente"); acompanharActionForm.setNumeroRA(""); } } private void pesquisarOrdemServico(AcompanharRoteiroProgramacaoOrdemServicoActionForm acompanharActionForm, Integer idUnidadeLotacao) { OrdemServico os = fachada.recuperaOSPorId(new Integer(acompanharActionForm.getIdOrdemServico())); if (os != null) { // [FS0015] - Verificar registro de atendimento e ordem de servi�o String numeroRa = acompanharActionForm.getNumeroRA(); if(numeroRa != null && !numeroRa.equals("")){ if(os.getRegistroAtendimento() == null || (os.getRegistroAtendimento().getId().intValue() != new Integer(numeroRa).intValue())){ String[] parametros = new String[2]; parametros[0] = os.getId().toString(); parametros[1] = numeroRa; throw new ActionServletException("atencao.registro_nao_pertence_ordem_servico",null,parametros); } } if(os.getRegistroAtendimento() == null){ String[] parametros = new String[2]; parametros[0] = os.getId().toString(); parametros[1] = numeroRa; throw new ActionServletException("atencao.registro_nao_pertence_ordem_servico",null,parametros); } // [FS0008] - Verificar possibilidade da inclus�o da ordem de servi�o fachada.validarInclusaoOsNaProgramacao(os,idUnidadeLotacao); acompanharActionForm.setIdOrdemServico(os.getId().toString()); acompanharActionForm.setDescricaoOrdemServico(os.getServicoTipo().getDescricao()); } else { acompanharActionForm.setDescricaoOrdemServico("Ordem de Servi�o inexistente"); acompanharActionForm.setIdOrdemServico(""); } } private void setaRequest(HttpServletRequest httpServletRequest, AcompanharRoteiroProgramacaoOrdemServicoActionForm acompanharActionForm){ // Registro Atendimento if(acompanharActionForm.getNumeroRA() != null && !acompanharActionForm.getNumeroRA().equals("") && acompanharActionForm.getDescricaoRA() != null && !acompanharActionForm.getDescricaoRA().equals("")){ httpServletRequest.setAttribute("numeroRAEncontrada","true"); } // Ordem de Servi�o if(acompanharActionForm.getIdOrdemServico() != null && !acompanharActionForm.getIdOrdemServico().equals("") && acompanharActionForm.getDescricaoOrdemServico() != null && !acompanharActionForm.getDescricaoOrdemServico().equals("")){ httpServletRequest.setAttribute("idOsEncontrada","true"); } } private int retornaUltimoSequencial(String idEquipe, Collection colecaoAcompanhamentoArquivosRoteiro){ short valorSequencial = 0; if (colecaoAcompanhamentoArquivosRoteiro != null && !colecaoAcompanhamentoArquivosRoteiro.isEmpty()){ Iterator itDadosAcompanhamentoArquivosRoteiroHelper = colecaoAcompanhamentoArquivosRoteiro.iterator(); while (itDadosAcompanhamentoArquivosRoteiroHelper.hasNext()){ AcompanhamentoArquivosRoteiroHelper acompanhamentoArquivosRoteiroHelper = (AcompanhamentoArquivosRoteiroHelper) itDadosAcompanhamentoArquivosRoteiroHelper.next(); if (acompanhamentoArquivosRoteiroHelper.getIdEquipe().equals(idEquipe)){ Collection osProgramacaoAcompServicoHelper = acompanhamentoArquivosRoteiroHelper.getOsProgramacaoAcompServicoHelper(); Iterator iter = osProgramacaoAcompServicoHelper.iterator(); while (iter.hasNext()) { OSProgramacaoAcompanhamentoServicoHelper helper = (OSProgramacaoAcompanhamentoServicoHelper) iter.next(); if(valorSequencial < Short.parseShort(helper.getNnSequencialProgramacao())){ valorSequencial = Short.parseShort(helper.getNnSequencialProgramacao()); } } } } } return valorSequencial; } }