package gcom.gui.atendimentopublico.registroatendimento; import gcom.atendimentopublico.registroatendimento.AtendimentoMotivoEncerramento; import gcom.atendimentopublico.registroatendimento.RegistroAtendimento; import gcom.atendimentopublico.registroatendimento.RegistroAtendimentoSolicitante; import gcom.atendimentopublico.registroatendimento.SolicitacaoTipoEspecificacao; import gcom.atendimentopublico.registroatendimento.bean.ObterDadosRegistroAtendimentoHelper; import gcom.cadastro.cliente.Cliente; import gcom.cadastro.geografico.BairroArea; import gcom.cadastro.imovel.Imovel; import gcom.cadastro.localidade.Localidade; import gcom.cadastro.localidade.Quadra; import gcom.cadastro.localidade.SetorComercial; import gcom.cadastro.unidade.FiltroUnidadeOrganizacional; import gcom.cadastro.unidade.UnidadeOrganizacional; import gcom.fachada.Fachada; import gcom.gui.GcomAction; import gcom.operacional.DivisaoEsgoto; import gcom.seguranca.acesso.usuario.FiltroUsuario; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; 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; /** * ExibirTramitarRegistroAtendimentoAction * * @author Leonardo Regis * @date 16/08/2006 * */ public class ExibirTramitarRegistroAtendimentoAction extends GcomAction { /** * Exibe a Tela para Tramitar o RA * * @author Leonardo Regis * @date 16/06/2006 */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // Seta o mapeamento de retorno ActionForward retorno = actionMapping.findForward("tramitarRegistroAtendimento"); TramitarRegistroAtendimentoActionForm tramitarRegistroAtendimentoActionForm = (TramitarRegistroAtendimentoActionForm) actionForm; HttpSession sessao = httpServletRequest.getSession(false); // Usuario logado no sistema Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado"); //Verifica se o usu�rio deseja desfezar as altera��es efetuadas if (httpServletRequest.getParameter("desfazer") != null) { tramitarRegistroAtendimentoActionForm.resetarTramitacao(); } // Reseta Tramita��o if (tramitarRegistroAtendimentoActionForm.getResetarTramitacao().equalsIgnoreCase("true")) { tramitarRegistroAtendimentoActionForm.resetarTramitacao(); } if (tramitarRegistroAtendimentoActionForm.getValidaUnidadeDestino().equalsIgnoreCase("false") && tramitarRegistroAtendimentoActionForm.getValidaUsuarioResponsavel().equalsIgnoreCase("false")) { Fachada fachada = Fachada.getInstancia(); ObterDadosRegistroAtendimentoHelper registroAtendimentoHelper = null; if (tramitarRegistroAtendimentoActionForm.getNumeroRA() != null) { registroAtendimentoHelper = fachada.obterDadosRegistroAtendimento(new Integer(tramitarRegistroAtendimentoActionForm.getNumeroRA())); } else { registroAtendimentoHelper = fachada.obterDadosRegistroAtendimento(new Integer(httpServletRequest.getAttribute("numeroRA").toString())); } setUsuarioRegistro(tramitarRegistroAtendimentoActionForm, usuario); if (tramitarRegistroAtendimentoActionForm.getUsuarioResponsavelId() == null || tramitarRegistroAtendimentoActionForm.getUsuarioResponsavelId().equals("")) { tramitarRegistroAtendimentoActionForm.setUsuarioResponsavelId(usuario.getId().toString()); getUsuarioResponsavel(tramitarRegistroAtendimentoActionForm, sessao); } setDadosRA(tramitarRegistroAtendimentoActionForm, registroAtendimentoHelper); setDadosSolicitante(tramitarRegistroAtendimentoActionForm, registroAtendimentoHelper); setDadosEnderecoOcorrencia(tramitarRegistroAtendimentoActionForm, registroAtendimentoHelper); setUnidades(tramitarRegistroAtendimentoActionForm, registroAtendimentoHelper); tramitarRegistroAtendimentoActionForm.setDataTramite(Util.formatarData(new Date())); tramitarRegistroAtendimentoActionForm.setHoraTramite(Util.formatarHoraSemSegundos(new Date())); } else { // Unidade de Destino if (tramitarRegistroAtendimentoActionForm.getUnidadeDestinoId() != null && !tramitarRegistroAtendimentoActionForm.getUnidadeDestinoId().equals("")) { getUnidadeDestino(tramitarRegistroAtendimentoActionForm, sessao); } // Usu�rio Respons�vel if (tramitarRegistroAtendimentoActionForm.getUsuarioResponsavelId() != null && !tramitarRegistroAtendimentoActionForm.getUsuarioResponsavelId().equals("")) { getUsuarioResponsavel(tramitarRegistroAtendimentoActionForm, sessao); }else{ tramitarRegistroAtendimentoActionForm.setUsuarioResponsavelId(usuario.getId().toString()); getUsuarioResponsavel(tramitarRegistroAtendimentoActionForm, sessao); } } return retorno; } /** * Carrega Usu�rio de Registro * * @author Leonardo Regis * @date 18/08/2006 * * @param form */ private void setUsuarioRegistro(TramitarRegistroAtendimentoActionForm tramitarRegistroAtendimentoActionForm, Usuario usuario) { tramitarRegistroAtendimentoActionForm.setUsuarioRegistroId(usuario.getId()+""); tramitarRegistroAtendimentoActionForm.setUsuarioRegistroNome(usuario.getNomeUsuario()); tramitarRegistroAtendimentoActionForm.setUsuarioRegistroUnidade(usuario.getUnidadeOrganizacional().getId()+""); tramitarRegistroAtendimentoActionForm.setUsuarioRegistroUnidadeIndicadorTarifaSocial(usuario.getUnidadeOrganizacional().getIndicadorTarifaSocial()+""); } /** * Carrega Unidades (Atendimento e Atual) * * @author Leonardo Regis * @date 18/08/2006 * * @param form * @param registroAtendimentoHelper */ private void setUnidades(TramitarRegistroAtendimentoActionForm tramitarRegistroAtendimentoActionForm, ObterDadosRegistroAtendimentoHelper registroAtendimentoHelper) { UnidadeOrganizacional unidadeAtendimento = registroAtendimentoHelper.getUnidadeAtendimento(); if(unidadeAtendimento != null){ tramitarRegistroAtendimentoActionForm.setUnidadeAtendimentoId(""+unidadeAtendimento.getId()); tramitarRegistroAtendimentoActionForm.setUnidadeAtendimentoDescricao(unidadeAtendimento.getDescricao()); } UnidadeOrganizacional unidadeAtual = registroAtendimentoHelper.getUnidadeAtual(); if(unidadeAtual != null){ tramitarRegistroAtendimentoActionForm.setUnidadeAtualId(""+unidadeAtual.getId()); tramitarRegistroAtendimentoActionForm.setUnidadeAtualDescricao(unidadeAtual.getDescricao()); if (unidadeAtual.getUnidadeTipo() != null) { tramitarRegistroAtendimentoActionForm.setUnidadeAtualCodigoTipo(unidadeAtual.getUnidadeTipo().getCodigoTipo()); } if (unidadeAtual.getUnidadeCentralizadora() != null) { tramitarRegistroAtendimentoActionForm.setUnidadeAtualIdCentralizadora(unidadeAtual.getUnidadeCentralizadora().getId()+""); } } } /** * Carrega Dados do RA * * @author Leonardo Regis * @date 18/08/2006 * * @param form * @param registroAtendimentoHelper */ private void setDadosRA(TramitarRegistroAtendimentoActionForm tramitarRegistroAtendimentoActionForm, ObterDadosRegistroAtendimentoHelper registroAtendimentoHelper) { RegistroAtendimento registroAtendimento = registroAtendimentoHelper.getRegistroAtendimento(); //Dados Gerais do Registro de Atendimento tramitarRegistroAtendimentoActionForm.setDataConcorrenciaRA(registroAtendimento.getUltimaAlteracao()); tramitarRegistroAtendimentoActionForm.setNumeroRA(""+registroAtendimento.getId()); tramitarRegistroAtendimentoActionForm.setSituacaoRA(registroAtendimentoHelper.getDescricaoSituacaoRA()); tramitarRegistroAtendimentoActionForm.setCodigoSituacaoRA(registroAtendimento.getCodigoSituacao()+""); if(registroAtendimentoHelper.getRAAssociado() != null) { tramitarRegistroAtendimentoActionForm.setNumeroRaAssociado(""+registroAtendimentoHelper.getRAAssociado().getId()); tramitarRegistroAtendimentoActionForm.setSituacaoRaAssociado(registroAtendimentoHelper.getDescricaoSituacaoRAAssociado()); } SolicitacaoTipoEspecificacao solicitacaoTipoEspecificacao = registroAtendimento.getSolicitacaoTipoEspecificacao(); if(solicitacaoTipoEspecificacao != null){ if(solicitacaoTipoEspecificacao.getSolicitacaoTipo() != null){ tramitarRegistroAtendimentoActionForm.setTipoSolicitacaoId(solicitacaoTipoEspecificacao.getSolicitacaoTipo().getId()+""); tramitarRegistroAtendimentoActionForm.setTipoSolicitacaoDescricao(solicitacaoTipoEspecificacao.getSolicitacaoTipo().getDescricao()); tramitarRegistroAtendimentoActionForm.setTipoSolicitacaoIndicadorTarifaSocial(solicitacaoTipoEspecificacao.getSolicitacaoTipo().getIndicadorTarifaSocial()+""); } tramitarRegistroAtendimentoActionForm.setEspecificacaoId(solicitacaoTipoEspecificacao.getId()+""); tramitarRegistroAtendimentoActionForm.setEspecificacaoDescricao(solicitacaoTipoEspecificacao.getDescricao()); } if(registroAtendimento.getMeioSolicitacao() != null){ tramitarRegistroAtendimentoActionForm.setMeioSolicitacaoId(registroAtendimento.getMeioSolicitacao().getId()+""); tramitarRegistroAtendimentoActionForm.setMeioSolicitacaoDescricao(registroAtendimento.getMeioSolicitacao().getDescricao()); } //Imovel Imovel imovel = registroAtendimento.getImovel(); if(imovel != null){ tramitarRegistroAtendimentoActionForm.setMatriculaImovel(""+imovel.getId()); tramitarRegistroAtendimentoActionForm.setInscricaoImovel(imovel.getInscricaoFormatada()); } Date dataAtendimento = registroAtendimento.getRegistroAtendimento(); tramitarRegistroAtendimentoActionForm.setDataAtendimento(Util.formatarData(dataAtendimento)); tramitarRegistroAtendimentoActionForm.setHoraAtendimento(Util.formatarHoraSemData(dataAtendimento)); tramitarRegistroAtendimentoActionForm.setDataPrevista(Util.formatarData(registroAtendimento.getDataPrevistaAtual())); // Encerramento setDadosEncerramento(tramitarRegistroAtendimentoActionForm, registroAtendimento); } /** * Carrega Dados do RA * * @author Leonardo Regis * @date 18/08/2006 * * @param form * @param registroAtendimento */ private void setDadosEncerramento(TramitarRegistroAtendimentoActionForm tramitarRegistroAtendimentoActionForm, RegistroAtendimento registroAtendimento) { AtendimentoMotivoEncerramento atendimentoMotivoEncerramento = registroAtendimento.getAtendimentoMotivoEncerramento(); if(atendimentoMotivoEncerramento != null){ tramitarRegistroAtendimentoActionForm.setIdMotivoEncerramento(""+atendimentoMotivoEncerramento.getId()); tramitarRegistroAtendimentoActionForm.setMotivoEncerramento(atendimentoMotivoEncerramento.getDescricao()); Date dataEncerramento = registroAtendimento.getDataEncerramento(); tramitarRegistroAtendimentoActionForm.setDataEncerramento(Util.formatarData(dataEncerramento)); } } /** * Carrega Dados do Solicitante * * @author Leonardo Regis * @date 18/08/2006 * * @param form * @param registroAtendimentoHelper */ private void setDadosSolicitante(TramitarRegistroAtendimentoActionForm tramitarRegistroAtendimentoActionForm, ObterDadosRegistroAtendimentoHelper registroAtendimentoHelper) { //Dados do Solicitante RegistroAtendimentoSolicitante registroAtendimentoSolicitante = registroAtendimentoHelper.getSolicitante(); if(registroAtendimentoSolicitante != null){ Cliente cliente = registroAtendimentoSolicitante.getCliente(); UnidadeOrganizacional unidadeSolicitante = registroAtendimentoSolicitante.getUnidadeOrganizacional(); //Caso o principal solicitante do registro de atendimento seja um cliente //obter os dados do cliente if(cliente != null){ tramitarRegistroAtendimentoActionForm.setIdClienteSolicitante(""+cliente.getId()); tramitarRegistroAtendimentoActionForm.setClienteSolicitante(cliente.getNome()); //Caso o principal solicitante do registro de atendimento seja uma unidade //obter os dados da unidade }else if(unidadeSolicitante != null){ tramitarRegistroAtendimentoActionForm.setIdUnidadeSolicitante(""+unidadeSolicitante.getId()); tramitarRegistroAtendimentoActionForm.setUnidadeSolicitante(unidadeSolicitante.getDescricao()); //Caso o principal solicitante do registro de atendimento n�o seja um cliente, nem uma unidade //obter os dados do solicitante }else{ tramitarRegistroAtendimentoActionForm.setNomeSolicitante(registroAtendimentoSolicitante.getSolicitante()); } } } /** * Carrega Dados do Endere�o de Ocorr�ncia * * @author Leonardo Regis * @date 18/08/2006 * * @param form * @param registroAtendimentoHelper */ private void setDadosEnderecoOcorrencia(TramitarRegistroAtendimentoActionForm tramitarRegistroAtendimentoActionForm, ObterDadosRegistroAtendimentoHelper registroAtendimentoHelper) { String enderecoOcorrencia = registroAtendimentoHelper.getEnderecoOcorrencia(); tramitarRegistroAtendimentoActionForm.setEnderecoOcorrencia(enderecoOcorrencia); tramitarRegistroAtendimentoActionForm.setPontoReferencia(registroAtendimentoHelper.getRegistroAtendimento().getPontoReferencia()); //Caso o registro atendimento esteja associado a uma �rea de bairro, //obter os dados da �rea do bairro BairroArea bairroArea = registroAtendimentoHelper.getRegistroAtendimento().getBairroArea(); if(bairroArea != null){ tramitarRegistroAtendimentoActionForm.setBairroId(""+bairroArea.getBairro().getId()); tramitarRegistroAtendimentoActionForm.setBairroDescricao(bairroArea.getBairro().getNome()); tramitarRegistroAtendimentoActionForm.setAreaBairroId(""+bairroArea.getId()); tramitarRegistroAtendimentoActionForm.setAreaBairroDescricao(bairroArea.getNome()); } Localidade localidade = registroAtendimentoHelper.getRegistroAtendimento().getLocalidade(); if(localidade != null){ tramitarRegistroAtendimentoActionForm.setLocalidadeId(""+localidade.getId()); tramitarRegistroAtendimentoActionForm.setLocalidadeDescricao(localidade.getDescricao()); } SetorComercial setorComercial = registroAtendimentoHelper.getRegistroAtendimento().getSetorComercial(); if(setorComercial != null){ tramitarRegistroAtendimentoActionForm.setSetorComercialId(""+setorComercial.getId()); tramitarRegistroAtendimentoActionForm.setSetorComercialDescricao(setorComercial.getDescricao()); } Quadra quadra = registroAtendimentoHelper.getRegistroAtendimento().getQuadra(); if(quadra != null){ tramitarRegistroAtendimentoActionForm.setQuadraId(""+quadra.getId()); tramitarRegistroAtendimentoActionForm.setQuadraDescricao(""+quadra.getNumeroQuadra()); } DivisaoEsgoto divisaoEsgoto = registroAtendimentoHelper.getRegistroAtendimento().getDivisaoEsgoto(); if(divisaoEsgoto != null){ tramitarRegistroAtendimentoActionForm.setDivisaoEsgotoId(""+divisaoEsgoto.getId()); tramitarRegistroAtendimentoActionForm.setDivisaoEsgotoDescricao(divisaoEsgoto.getDescricao()); } } /** * Recupera Unidade de Destino * * @author Leonardo Regis * @date 17/08/2006 * * @param form */ private void getUnidadeDestino(TramitarRegistroAtendimentoActionForm form, HttpSession sessao) { // [F0004] Valida Unidade de Destino Fachada fachada = Fachada.getInstancia(); // Filtra Unidade de Destino FiltroUnidadeOrganizacional filtroUnidadeDestino = new FiltroUnidadeOrganizacional(); filtroUnidadeDestino.adicionarParametro(new ParametroSimples(FiltroUnidadeOrganizacional.ID, form.getUnidadeDestinoId())); filtroUnidadeDestino.adicionarCaminhoParaCarregamentoEntidade("unidadeTipo"); //filtroUnidadeDestino.adicionarCaminhoParaCarregamentoEntidade("unidadeTipo.codigoTipo"); // Recupera Unidade de Destino Collection colecaoUnidadeDestino = fachada.pesquisar(filtroUnidadeDestino, UnidadeOrganizacional.class.getName()); if (colecaoUnidadeDestino != null && !colecaoUnidadeDestino.isEmpty()) { UnidadeOrganizacional unidadeDestino = (UnidadeOrganizacional) Util.retonarObjetoDeColecao(colecaoUnidadeDestino); form.setUnidadeDestinoDescricao(unidadeDestino.getDescricao()); form.setUnidadeDestinoIndicadorTramite(unidadeDestino.getIndicadorTramite()+""); form.setUnidadeDestinoCodigoTipo(unidadeDestino.getUnidadeTipo().getCodigoTipo()); sessao.setAttribute("unidadeDestinoEncontrada","true"); } else { sessao.removeAttribute("unidadeDestinoEncontrada"); form.setUnidadeDestinoDescricao("Unidade Organizacional inexistente"); form.setUnidadeDestinoId(""); } form.setValidaUnidadeDestino("false"); } /** * Recupera Usu�rio Respons�vel * * @author Leonardo Regis * @date 17/08/2006 * * @param form */ private void getUsuarioResponsavel(TramitarRegistroAtendimentoActionForm form, HttpSession sessao) { // [F0005] Valida Usu�rio Respons�vel Fachada fachada = Fachada.getInstancia(); // Filtra usu�rio FiltroUsuario filtroUsuarioResponsavel = new FiltroUsuario(); filtroUsuarioResponsavel.adicionarParametro(new ParametroSimples(FiltroUsuario.ID, form.getUsuarioResponsavelId())); // Recupera usu�rio Collection colecaoUsuarioResponsavel = fachada.pesquisar(filtroUsuarioResponsavel, Usuario.class.getName()); if (colecaoUsuarioResponsavel != null && !colecaoUsuarioResponsavel.isEmpty()) { Usuario usuario = (Usuario) Util.retonarObjetoDeColecao(colecaoUsuarioResponsavel); form.setUsuarioResponsavelNome(usuario.getNomeUsuario()); sessao.setAttribute("usuarioResponsavelEncontrada", "true"); } else { sessao.removeAttribute("usuarioResponsavelEncontrada"); form.setUsuarioResponsavelNome("Usu�rio inexistente"); form.setUsuarioResponsavelId(""); } form.setValidaUsuarioResponsavel("false"); } }