package gcom.gui.atendimentopublico.registroatendimento; import gcom.atendimentopublico.registroatendimento.RegistroAtendimento; import gcom.atendimentopublico.registroatendimento.SolicitacaoTipoEspecificacao; import gcom.cadastro.imovel.Imovel; import gcom.cadastro.unidade.UnidadeOrganizacional; import gcom.fachada.Fachada; import gcom.gui.GcomAction; import gcom.gui.StatusWizard; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.Util; import java.math.BigDecimal; 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; /** * Esta classe tem por finalidade gerar as abas que ser�o respons�veis pelo * processo de atualiza��o de um registro de atendimento * * @author S�vio Luiz * @date 10/08/2006 */ public class ExibirAtualizarRegistroAtendimentoAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping .findForward("atualizarRegistroAtendimento"); HttpSession sessao = httpServletRequest.getSession(false); Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado"); // Removendo todos os objetos da sess�o sessao.removeAttribute("AtualizarRegistroAtendimentoActionForm"); sessao.removeAttribute("colecaoMeioSolicitacao"); sessao.removeAttribute("colecaoSolicitacaoTipo"); sessao.removeAttribute("colecaoSolicitacaoTipoEspecificacao"); sessao.removeAttribute("colecaoEnderecos"); sessao.removeAttribute("idEspecificacaoBase"); sessao.removeAttribute("ultimaAlteracao"); sessao.removeAttribute("ordemServico"); sessao.removeAttribute("colecaoDivisaoEsgoto"); sessao.removeAttribute("colecaoLocalOcorrencia"); sessao.removeAttribute("colecaoPavimentoRua"); sessao.removeAttribute("colecaoPavimentoCalcada"); sessao.removeAttribute("solicitacaoTipoRelativoFaltaAgua"); sessao.removeAttribute("solicitacaoTipoRelativoAreaEsgoto"); sessao.removeAttribute("colecaoBairroArea"); sessao.removeAttribute("habilitarAlteracaoEndereco"); sessao.removeAttribute("desabilitarMunicipioBairro"); sessao.removeAttribute("desabilitarDescricaoLocalOcorrencia"); sessao.removeAttribute("colecaoRASolicitanteRemovidas"); sessao.removeAttribute("colecaoRASolicitante"); sessao.removeAttribute("osAutomatica"); sessao.removeAttribute("enderecoPertenceImovel"); sessao.removeAttribute("servicoTipo"); sessao.removeAttribute("colecaoRegistroAtendimentoAnexo"); StatusWizard statusWizard = null; String idRegistroAtendimento = null; if (httpServletRequest.getParameter("desfazer") == null) { if (httpServletRequest.getParameter("idRegistroAtualizacao") != null) { idRegistroAtendimento = (String) httpServletRequest .getParameter("idRegistroAtualizacao"); } else { idRegistroAtendimento = (String) httpServletRequest .getAttribute("idRegistroAtualizacao"); } // verifica se chegou no atualizar imovel atraves da tela de filtrar // devido a um unico registro // ou atraves da lista de imoveis no manter imovel if (httpServletRequest.getAttribute("atualizar") != null) { statusWizard = new StatusWizard( "atualizarRegistroAtendimentoWizardAction", "concluirAtualizarRegistroAtendimentoAction", "cancelarAtualizarRegistroAtendimentoAction", "exibirFiltrarRegistroAtendimentoAction", "exibirAtualizarRegistroAtendimentoAction.do", idRegistroAtendimento); } else if (httpServletRequest.getParameter("sucesso") != null) { statusWizard = new StatusWizard( "atualizarRegistroAtendimentoWizardAction", "concluirAtualizarRegistroAtendimentoAction", "cancelarAtualizarRegistroAtendimentoAction", "exibirFiltrarRegistroAtendimentoAction", "exibirAtualizarRegistroAtendimentoAction.do", idRegistroAtendimento); } else { statusWizard = new StatusWizard( "atualizarRegistroAtendimentoWizardAction", "concluirAtualizarRegistroAtendimentoAction", "cancelarAtualizarRegistroAtendimentoAction", "", "exibirAtualizarRegistroAtendimentoAction.do", idRegistroAtendimento); statusWizard .setCaminhoActionVoltarFiltro("exibirConsultarRegistroAtendimentoAction.do?numeroRA=" + idRegistroAtendimento); } statusWizard .inserirNumeroPaginaCaminho(statusWizard.new StatusWizardItem( 1, "DadosGeraisPrimeiraAbaA.gif", "DadosGeraisPrimeiraAbaD.gif", "exibirAtualizarRegistroAtendimentoDadosGeraisAction", "atualizarRegistroAtendimentoDadosGeraisAction")); statusWizard .inserirNumeroPaginaCaminho(statusWizard.new StatusWizardItem( 2, "LocalOcorrenciaIntervaloAbaA.gif", "LocalOcorrenciaIntervaloAbaD.gif", "exibirAtualizarRegistroAtendimentoDadosLocalOcorrenciaAction", "atualizarRegistroAtendimentoDadosLocalOcorrenciaAction")); statusWizard .inserirNumeroPaginaCaminho(statusWizard.new StatusWizardItem( 3, "SolicitanteUltimaAbaA.gif", "SolicitanteUltimaAbaD.gif", "exibirAtualizarRegistroAtendimentoDadosSolicitanteAction", "atualizarRegistroAtendimentoDadosSolicitanteAction")); statusWizard .inserirNumeroPaginaCaminho(statusWizard.new StatusWizardItem( 4, "Anexos02.gif", "Anexos.gif", "exibirAtualizarRegistroAtendimentoAnexosAction", "atualizarRegistroAtendimentoAnexosAction")); } else { statusWizard = (StatusWizard) sessao.getAttribute("statusWizard"); idRegistroAtendimento = statusWizard.getId(); } /** *************************************************************************************** */ /** * C�digo para criar um actionForm totalmente novo - Esta foi a solu��o * encontrada para * */ /** * a passagem do inserir direto para o atualizar, fazendo as * substitui��o dos dados do * */ /** * form de mesmo nome corretamente, � preciso pegar o form pelo * httpServletRequest no * */ /** * exibir da primeira aba (neste caso * ExibirAtualizarClienteNomeTipoAction) * */ /** *************************************************************************************** */ AtualizarRegistroAtendimentoActionForm atualizarRegistroAtendimentoActionForm = new AtualizarRegistroAtendimentoActionForm(); Fachada fachada = Fachada.getInstancia(); // [SF0012] - verificar possibilidade de atualiza��o do registro de // atendimento UnidadeOrganizacional unidadeAtualRA = fachada .verificarPossibilidadeAtualizacaoRA(new Integer( idRegistroAtendimento), usuarioLogado.getId()); // recupera a unidade do [UC0418] - Obter Unidade Atual do RA if (unidadeAtualRA != null && !unidadeAtualRA.equals("")) { // param�tros da 2 aba atualizarRegistroAtendimentoActionForm .setIdUnidadeAtual(unidadeAtualRA.getId().toString()); atualizarRegistroAtendimentoActionForm .setDescricaoUnidadeAtual(unidadeAtualRA.getDescricao()); } // pesquisa os par�metros do registro atendimento escolhido para // atualiza��o Object[] parmsRA = fachada .pesquisarParmsRegistroAtendimento(new Integer( idRegistroAtendimento)); Integer idOrdemServico = fachada .verificarOrdemServicoParaRA(new Integer(idRegistroAtendimento)); if (idOrdemServico != null) { atualizarRegistroAtendimentoActionForm .setIdOrdemServico(idOrdemServico.toString()); } if (parmsRA != null) { // param�tros da 1 aba // id do RA if (parmsRA[0] != null) { atualizarRegistroAtendimentoActionForm .setNumeroRA(((Integer) parmsRA[0]).toString()); } // indicador atendimento on-line if (parmsRA[1] != null) { atualizarRegistroAtendimentoActionForm .setTipo(((Short) parmsRA[1]).toString()); } // data registro atendimento if (parmsRA[2] != null) { Date dataAtendimento = (Date) parmsRA[2]; // formata a data atualizarRegistroAtendimentoActionForm.setDataAtendimento(Util .formatarData(dataAtendimento)); // formata a hora atualizarRegistroAtendimentoActionForm.setHora(Util .formatarHoraSemSegundos(dataAtendimento)); } // tempo de espera inicial para atendimento if (parmsRA[3] != null) { Date tempoInicioEspera = (Date) parmsRA[3]; // formata a hora atualizarRegistroAtendimentoActionForm .setTempoEsperaInicial(Util .formatarHoraSemSegundos(tempoInicioEspera)); } // tempo de espera final para atendimento if (parmsRA[4] != null) { Date tempoFimEspera = (Date) parmsRA[4]; // formata a hora atualizarRegistroAtendimentoActionForm.setTempoEsperaFinal(Util .formatarHoraSemSegundos(tempoFimEspera)); } // [UC0421 - Obter Unidade Atendimento do RA] UnidadeOrganizacional unidadeOrganizacional = fachada .obterUnidadeAtendimentoRA(new Integer( idRegistroAtendimento)); if (unidadeOrganizacional != null && !unidadeOrganizacional.equals("")) { // seta o id da unidade organizacional atualizarRegistroAtendimentoActionForm .setUnidade(unidadeOrganizacional.getId().toString()); // seta a descri��o da unidade organizacional atualizarRegistroAtendimentoActionForm .setDescricaoUnidade(unidadeOrganizacional .getDescricao()); } // id do meio de solicita��o if (parmsRA[5] != null) { atualizarRegistroAtendimentoActionForm .setMeioSolicitacao(((Integer) parmsRA[5]).toString()); } // id do tipo de solicita��o if (parmsRA[6] != null) { atualizarRegistroAtendimentoActionForm .setTipoSolicitacao(((Integer) parmsRA[6]).toString()); } // id do tipo de solicita��o especificacao if (parmsRA[7] != null) { atualizarRegistroAtendimentoActionForm .setEspecificacao(((Integer) parmsRA[7]).toString()); // manda para a sess�o o id da especifica��o para verificar se // ser� gerado a ordem de servi�o ou n�o dependendo da mudan�a // da especifica��o sessao .setAttribute("idEspecificacaoBase", (Integer) parmsRA[7]); if(parmsRA[36] != null){ sessao .setAttribute("servicoTipo", (Integer) parmsRA[36]); } } // data prevista if (parmsRA[8] != null) { Date dataPrevista = (Date) parmsRA[8]; atualizarRegistroAtendimentoActionForm.setDataPrevista(Util .formatarData(dataPrevista)); } // observa��o da RA if (parmsRA[9] != null) { atualizarRegistroAtendimentoActionForm .setObservacao((String) parmsRA[9]); } // id do im�vel if (parmsRA[10] != null) { Integer idImovel = (Integer) parmsRA[10]; atualizarRegistroAtendimentoActionForm.setIdImovel(idImovel .toString()); // inscri��o do im�vel String inscricaoImovel = fachada .pesquisarInscricaoImovel(idImovel); if (inscricaoImovel != null) { atualizarRegistroAtendimentoActionForm .setInscricaoImovel(inscricaoImovel); } Imovel imovel = fachada.pesquisarImovelParaEndereco(idImovel); if (imovel != null && !imovel.equals("")) { Collection colecaoEnderecos = new ArrayList(); colecaoEnderecos.add(imovel); sessao.setAttribute("colecaoEnderecos", colecaoEnderecos); sessao.setAttribute("enderecoPertenceImovel", "OK"); } } else { // Recupera o objeto registro atendimento com os parametros // necess�rio // para mostrar o endere�o RegistroAtendimento registroAtendimento = fachada .pesquisarRegistroAtendimentoEndereco(new Integer( idRegistroAtendimento)); if (registroAtendimento != null && !registroAtendimento.equals("")) { Collection colecaoEnderecos = new ArrayList(); // seta os campos de registro atendimento no im�vel if (registroAtendimento.getLogradouroBairro() != null && !registroAtendimento.getLogradouroBairro() .equals("") && registroAtendimento.getLogradouroCep() != null && !registroAtendimento.getLogradouroCep().equals( "")) { Imovel imovel = new Imovel(); imovel.setLogradouroBairro(registroAtendimento .getLogradouroBairro()); imovel.setLogradouroCep(registroAtendimento .getLogradouroCep()); imovel.setComplementoEndereco(registroAtendimento .getComplementoEndereco()); imovel.setNumeroImovel(registroAtendimento.getNumeroImovel()); imovel.setPerimetroInicial(registroAtendimento.getPerimetroInicial()); imovel.setPerimetroFinal(registroAtendimento.getPerimetroFinal()); colecaoEnderecos.add(imovel); sessao.setAttribute("colecaoEnderecos", colecaoEnderecos); } } } // ponto de refer�ncia do RA if (parmsRA[11] != null) { atualizarRegistroAtendimentoActionForm .setPontoReferencia((String) parmsRA[11]); } // id bairro area if (parmsRA[12] != null) { atualizarRegistroAtendimentoActionForm .setIdBairroArea(((Integer) parmsRA[12]).toString()); } // id do municipio if (parmsRA[13] != null) { atualizarRegistroAtendimentoActionForm .setIdMunicipio(((Integer) parmsRA[13]).toString()); } // nome do munic�pio if (parmsRA[14] != null) { atualizarRegistroAtendimentoActionForm .setDescricaoMunicipio((String) parmsRA[14]); } // id do bairro if (parmsRA[15] != null) { atualizarRegistroAtendimentoActionForm .setIdBairro(((Integer) parmsRA[15]).toString()); } // codigo bairro if (parmsRA[16] != null) { atualizarRegistroAtendimentoActionForm .setCdBairro(((Integer) parmsRA[16]).toString()); } // descri��o bairro if (parmsRA[17] != null) { atualizarRegistroAtendimentoActionForm .setDescricaoBairro((String) parmsRA[17]); } // id localidade if (parmsRA[18] != null) { atualizarRegistroAtendimentoActionForm .setIdLocalidade(((Integer) parmsRA[18]).toString()); } // descri��o localidade if (parmsRA[19] != null) { atualizarRegistroAtendimentoActionForm .setDescricaoLocalidade((String) parmsRA[19]); } // id do setor comercial if (parmsRA[20] != null) { atualizarRegistroAtendimentoActionForm .setIdSetorComercial(((Integer) parmsRA[20]).toString()); } // c�digo setor comercial if (parmsRA[21] != null) { atualizarRegistroAtendimentoActionForm .setCdSetorComercial(((Integer) parmsRA[21]).toString()); } // descri��o setor comercial if (parmsRA[22] != null) { atualizarRegistroAtendimentoActionForm .setDescricaoSetorComercial((String) parmsRA[22]); } // id quadra if (parmsRA[23] != null) { atualizarRegistroAtendimentoActionForm .setIdQuadra(((Integer) parmsRA[23]).toString()); } // numero quadra if (parmsRA[24] != null) { atualizarRegistroAtendimentoActionForm .setNnQuadra(((Integer) parmsRA[24]).toString()); } // id divis�o esgoto if (parmsRA[25] != null) { atualizarRegistroAtendimentoActionForm .setIdDivisaoEsgoto(((Integer) parmsRA[25]).toString()); } // id local ocorrencia if (parmsRA[26] != null) { atualizarRegistroAtendimentoActionForm .setIdLocalOcorrencia(((Integer) parmsRA[26]) .toString()); } // id pavimento rua if (parmsRA[27] != null) { atualizarRegistroAtendimentoActionForm .setIdPavimentoRua(((Integer) parmsRA[27]).toString()); } // id pavimento cal�ada if (parmsRA[28] != null) { atualizarRegistroAtendimentoActionForm .setIdPavimentoCalcada(((Integer) parmsRA[28]) .toString()); } // descri��o local ocorr�ncia if (parmsRA[29] != null) { atualizarRegistroAtendimentoActionForm .setDescricaoLocalOcorrencia((String) parmsRA[29]); } // indicador matricula da tabela Solicita��o Tipo Especifica��o if (parmsRA[30] != null) { Integer indMatricula = (Integer) parmsRA[30]; if (indMatricula .equals(SolicitacaoTipoEspecificacao.INDICADOR_MATRICULA_OBRIGATORIO)) { atualizarRegistroAtendimentoActionForm .setImovelObrigatorio("SIM"); } else { if (indMatricula .equals(SolicitacaoTipoEspecificacao.INDICADOR_MATRICULA_NAO_OBRIGATORIO)) { atualizarRegistroAtendimentoActionForm .setImovelObrigatorio("NAO"); sessao.setAttribute("habilitarAlteracaoEndereco","SIM"); } } atualizarRegistroAtendimentoActionForm .setIndMatricula(indMatricula.toString()); } // indicador pavimento rua da tabela Solicita��o Tipo Especifica��o if (parmsRA[31] != null) { Short indPavimentoRua = (Short) parmsRA[31]; if (indPavimentoRua.equals(new Short("1"))) { atualizarRegistroAtendimentoActionForm .setPavimentoRuaObrigatorio("SIM"); } else { if (indPavimentoRua.equals(new Short("2"))) { atualizarRegistroAtendimentoActionForm .setPavimentoRuaObrigatorio("NAO"); } } } // indicador pavimento cal�ada da tabela Solicita��o Tipo // Especifica��o if (parmsRA[32] != null) { Short indPavimentoCalcada = (Short) parmsRA[32]; if (indPavimentoCalcada.equals(new Short("1"))) { atualizarRegistroAtendimentoActionForm .setPavimentoCalcadaObrigatorio("SIM"); } else { if (indPavimentoCalcada.equals(new Short("2"))) { atualizarRegistroAtendimentoActionForm .setPavimentoCalcadaObrigatorio("NAO"); } } } // descri��o local ocorr�ncia if (parmsRA[33] != null) { atualizarRegistroAtendimentoActionForm .setIndFaltaAgua(((Short) parmsRA[33]).toString()); } // descri��o local ocorr�ncia if (parmsRA[34] != null) { sessao.setAttribute("ultimaAlteracao", (Date) parmsRA[34]); } //Numera��o Manual if (parmsRA[35] != null) { atualizarRegistroAtendimentoActionForm.setNumeroAtendimentoManual( Util.formatarNumeracaoRAManual((Integer) parmsRA[35])); } // Valor Sugerido if(parmsRA[37] != null) { atualizarRegistroAtendimentoActionForm.setValorSugerido( Util.formatarMoedaReal((BigDecimal) parmsRA[37])); } // GIS Coordenada Norte if (parmsRA[38] != null) { atualizarRegistroAtendimentoActionForm .setNnCoordenadaNorte(((BigDecimal) parmsRA[38]).toString()); } //GIS Coordenada Leste if (parmsRA[39] != null) { atualizarRegistroAtendimentoActionForm .setNnCoordenadaLeste(((BigDecimal) parmsRA[39]).toString()); } //GIS Diametro if (parmsRA[40] != null) { atualizarRegistroAtendimentoActionForm .setNnDiametro(((BigDecimal) parmsRA[40]).toString()); } } /* * if (usuarioParaAtualizar.getId() != null && * !usuarioParaAtualizar.getId().equals("")) { * statusWizard.adicionarItemHint("C�digo:", usuarioParaAtualizar * .getId().toString()); } if (usuarioParaAtualizar.getNomeUsuario() != * null && !usuarioParaAtualizar.getNomeUsuario().equals("")) { * statusWizard.adicionarItemHint("Nome:", usuarioParaAtualizar * .getNomeUsuario()); } if (usuarioParaAtualizar.getUsuarioTipo() != * null && !usuarioParaAtualizar.getUsuarioTipo().equals("")) { if * (usuarioParaAtualizar.getUsuarioTipo().getId() != null && * !usuarioParaAtualizar.getUsuarioTipo().equals("")) { * statusWizard.adicionarItemHint("Tipo:", usuarioParaAtualizar * .getUsuarioTipo().getDescricao()); } } if * (usuarioParaAtualizar.getUsuarioAbrangencia() != null && * !usuarioParaAtualizar.getUsuarioAbrangencia().equals("")) { if * (usuarioParaAtualizar.getUsuarioAbrangencia().getId() != null && * !usuarioParaAtualizar.getUsuarioAbrangencia().equals("")) { * statusWizard.adicionarItemHint("Abrang�ncia:", * usuarioParaAtualizar.getUsuarioAbrangencia() .getDescricao()); } } */ sessao.setAttribute("statusWizard", statusWizard); httpServletRequest.setAttribute( "AtualizarRegistroAtendimentoActionForm", atualizarRegistroAtendimentoActionForm); return retorno; } }