package gcom.gui.atendimentopublico.registroatendimento; import gcom.atendimentopublico.ordemservico.ServicoTipo; import gcom.atendimentopublico.registroatendimento.FiltroMeioSolicitacao; import gcom.atendimentopublico.registroatendimento.FiltroSolicitacaoTipo; import gcom.atendimentopublico.registroatendimento.FiltroSolicitacaoTipoEspecificacao; import gcom.atendimentopublico.registroatendimento.MeioSolicitacao; import gcom.atendimentopublico.registroatendimento.SolicitacaoTipo; import gcom.atendimentopublico.registroatendimento.SolicitacaoTipoEspecificacao; import gcom.atendimentopublico.registroatendimento.bean.DefinirDataPrevistaUnidadeDestinoEspecificacaoHelper; import gcom.cadastro.unidade.UnidadeOrganizacional; 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 gcom.util.filtro.ParametroNaoNulo; 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; /** * Esta classe tem por finalidade exibir para o usu�rio a tela que receber� os * par�metros para realiza��o da inser��o de um R.A (Aba n� 01 - Dados gerais) */ public class ExibirInserirRegistroAtendimentoDadosGeraisAction extends GcomAction { @SuppressWarnings("rawtypes") public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping.findForward("inserirRegistroAtendimentoDadosGerais"); InserirRegistroAtendimentoActionForm inserirRegistroAtendimentoActionForm = (InserirRegistroAtendimentoActionForm) actionForm; HttpSession sessao = httpServletRequest.getSession(false); Fachada fachada = Fachada.getInstancia(); sessao.removeAttribute("gis"); if (inserirRegistroAtendimentoActionForm.getTipo() == null || inserirRegistroAtendimentoActionForm.getTipo().equalsIgnoreCase("")) { inserirRegistroAtendimentoActionForm.setTipo("1"); // Usu�rio logado no sistema Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado"); UnidadeOrganizacional unidadeOrganizacionalUsuario = fachada.obterUnidadeOrganizacionalAberturaRAAtivoUsuario(usuario.getLogin()); if (unidadeOrganizacionalUsuario != null) { inserirRegistroAtendimentoActionForm.setUnidade(unidadeOrganizacionalUsuario.getId().toString()); inserirRegistroAtendimentoActionForm.setDescricaoUnidade(unidadeOrganizacionalUsuario.getDescricao()); if (unidadeOrganizacionalUsuario.getMeioSolicitacao() != null) { inserirRegistroAtendimentoActionForm.setMeioSolicitacao(unidadeOrganizacionalUsuario.getMeioSolicitacao().getId().toString()); } } // [SB0001 - Habilita/Desabilita Dados do Momento do Atendimento] habilitacaoDadosMomentoAtendimento(inserirRegistroAtendimentoActionForm, httpServletRequest); } String mudarTipo = httpServletRequest.getParameter("mudarTipo"); if (mudarTipo != null && !mudarTipo.equalsIgnoreCase("")) { // [SB0001 - Habilita/Desabilita Dados do Momento do Atendimento] habilitacaoDadosMomentoAtendimento(inserirRegistroAtendimentoActionForm, httpServletRequest); } /* * Unidade de Atendimento (Permite que o usu�rio informe ou selecione outra) * [FS0004] - Verificar exist�ncia da unidade de atendimento * [FS0033] - Verificar autoriza��o da unidade de atendimento para abertura de registro de atendimento */ String pesquisarUnidade = httpServletRequest.getParameter("pesquisarUnidade"); if (pesquisarUnidade != null && !pesquisarUnidade.equalsIgnoreCase("")) { UnidadeOrganizacional unidadeOrganizacionalSelecionada = fachada.verificarAutorizacaoUnidadeAberturaRA(new Integer( inserirRegistroAtendimentoActionForm.getUnidade()), false); if (unidadeOrganizacionalSelecionada != null) { inserirRegistroAtendimentoActionForm.setUnidade(unidadeOrganizacionalSelecionada.getId().toString()); inserirRegistroAtendimentoActionForm.setDescricaoUnidade(unidadeOrganizacionalSelecionada.getDescricao()); if (unidadeOrganizacionalSelecionada.getMeioSolicitacao() != null) { inserirRegistroAtendimentoActionForm.setMeioSolicitacao(unidadeOrganizacionalSelecionada.getMeioSolicitacao().getId().toString()); } httpServletRequest.setAttribute("nomeCampo", "meioSolicitacao"); } else { inserirRegistroAtendimentoActionForm.setUnidade(""); inserirRegistroAtendimentoActionForm.setDescricaoUnidade("Unidade Inexistente"); httpServletRequest.setAttribute("corUnidade", "exception"); httpServletRequest.setAttribute("nomeCampo", "unidade"); } } /* * Meio de Solicita��o - Carregando a cole��o que ir� ficar dispon�vel para escolha do usu�rio * [FS0003] - Verificar exist�ncia de dados */ Collection colecaoMeioSolicitacao = (Collection) sessao.getAttribute("colecaoMeioSolicitacao"); if (colecaoMeioSolicitacao == null) { FiltroMeioSolicitacao filtroMeioSolicitacao = new FiltroMeioSolicitacao(FiltroMeioSolicitacao.DESCRICAO); filtroMeioSolicitacao.setConsultaSemLimites(true); filtroMeioSolicitacao.adicionarParametro(new ParametroSimples(FiltroMeioSolicitacao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoMeioSolicitacao = fachada.pesquisar(filtroMeioSolicitacao, MeioSolicitacao.class.getName()); if (colecaoMeioSolicitacao == null || colecaoMeioSolicitacao.isEmpty()) { throw new ActionServletException("atencao.entidade_sem_dados_para_selecao", null, "MEIO_SOLICITACAO"); } else { sessao.setAttribute("colecaoMeioSolicitacao", colecaoMeioSolicitacao); } } /* * Tipo de Solicita��o - Carregando a cole��o que ir� ficar dispon�vel para escolha do usu�rio * [FS0003] - Verificar exist�ncia de dados */ Collection colecaoSolicitacaoTipo = (Collection) sessao.getAttribute("colecaoSolicitacaoTipo"); if (colecaoSolicitacaoTipo == null) { FiltroSolicitacaoTipo filtroSolicitacaoTipo = new FiltroSolicitacaoTipo(FiltroSolicitacaoTipo.DESCRICAO); filtroSolicitacaoTipo.setConsultaSemLimites(true); filtroSolicitacaoTipo.adicionarParametro(new ParametroSimples(FiltroSolicitacaoTipo.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); filtroSolicitacaoTipo.adicionarParametro(new ParametroSimples(FiltroSolicitacaoTipo.INDICADOR_USO_SISTEMA, SolicitacaoTipo.INDICADOR_USO_SISTEMA_NAO)); colecaoSolicitacaoTipo = fachada.pesquisar(filtroSolicitacaoTipo, SolicitacaoTipo.class.getName()); if (colecaoSolicitacaoTipo == null || colecaoSolicitacaoTipo.isEmpty()) { throw new ActionServletException("atencao.entidade_sem_dados_para_selecao", null, "SOLICITACAO_TIPO"); } else { sessao.setAttribute("colecaoSolicitacaoTipo", colecaoSolicitacaoTipo); } } /* * Especifica��o - Carregando a cole��o que ir� ficar dispon�vel para escolha do usu�rio * [FS0003] - Verificar exist�ncia de dados [SB0036] Habilita/Desabilita Conta */ String pesquisarEspecificacao = httpServletRequest.getParameter("pesquisarEspecificacao"); if (pesquisarEspecificacao != null && !pesquisarEspecificacao.equalsIgnoreCase("")) { FiltroSolicitacaoTipoEspecificacao filtroSolicitacaoTipoEspecificacao = new FiltroSolicitacaoTipoEspecificacao( FiltroSolicitacaoTipoEspecificacao.DESCRICAO); filtroSolicitacaoTipoEspecificacao.adicionarParametro(new ParametroSimples(FiltroSolicitacaoTipoEspecificacao.SOLICITACAO_TIPO_ID, new Integer( inserirRegistroAtendimentoActionForm.getTipoSolicitacao()))); filtroSolicitacaoTipoEspecificacao.setConsultaSemLimites(true); filtroSolicitacaoTipoEspecificacao.adicionarParametro(new ParametroSimples(FiltroSolicitacaoTipoEspecificacao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); Collection colecaoSolicitacaoTipoEspecificacao = fachada.pesquisar(filtroSolicitacaoTipoEspecificacao, SolicitacaoTipoEspecificacao.class.getName()); if (colecaoSolicitacaoTipoEspecificacao == null || colecaoSolicitacaoTipoEspecificacao.isEmpty()) { sessao.removeAttribute("colecaoSolicitacaoTipoEspecificacao"); inserirRegistroAtendimentoActionForm.setDataPrevista(""); throw new ActionServletException("atencao.entidade_sem_dados_para_selecao", null, "SOLICITACAO_TIPO_ESPECIFICACAO"); } else { sessao.setAttribute("colecaoSolicitacaoTipoEspecificacao", colecaoSolicitacaoTipoEspecificacao); } } /* * Data Prevista - (exibir a data prevista calculada no SB0003 e n�o permitir altera��o). * [SB0003 - Define Data Prevista e Unidade Destino da Especifica��o] * [FS0018] - Verificar exist�ncia da unidade centralizadora */ String definirDataPrevista = httpServletRequest.getParameter("definirDataPrevista"); if (definirDataPrevista != null && !definirDataPrevista.equalsIgnoreCase("") && inserirRegistroAtendimentoActionForm.getDataAtendimento() != null && !inserirRegistroAtendimentoActionForm.getDataAtendimento().equalsIgnoreCase("") && !inserirRegistroAtendimentoActionForm.getEspecificacao().equalsIgnoreCase(String.valueOf(ConstantesSistema.NUMERO_NAO_INFORMADO))) { this.definirDataPrevistaUnidadeDestinoEspecificacao(inserirRegistroAtendimentoActionForm, fachada, sessao); if (fachada.clienteObrigatorioInserirRegistroAtendimento(new Integer(inserirRegistroAtendimentoActionForm.getEspecificacao()))) { inserirRegistroAtendimentoActionForm.setClienteObrigatorio("1"); } else { inserirRegistroAtendimentoActionForm.setClienteObrigatorio("2"); } httpServletRequest.setAttribute("nomeCampo", "observacao"); } /* * Caso o Tempo de Espera Final esteja desabilitado e o Tempo de Espera * Inicial para Atendimento esteja preenchido, atribuir o valor * correspondente � hora corrente e n�o permitir altera��o */ String tempoEsperaFinalDesabilitado = httpServletRequest.getParameter("tempoEsperaFinalDesabilitado"); if (tempoEsperaFinalDesabilitado != null && !tempoEsperaFinalDesabilitado.equalsIgnoreCase("")) { this.atribuirHoraCorrenteTempoEsperaFinal(inserirRegistroAtendimentoActionForm); httpServletRequest.setAttribute("nomeCampo", "unidade"); } /* * Para os casos que forem inserir RA para falta de �gua generalizada, o * tipo e a especifica��o ser�o pr�-determinados e n�o poder�o ser * altarados. */ if (httpServletRequest.getParameter("raFaltaAguaGeneralizada") != null) { sessao.setAttribute("generalizada", "OK"); SolicitacaoTipoEspecificacao especificacao = fachada.pesquisarTipoEspecificacaoFaltaAguaGeneralizada(); FiltroSolicitacaoTipoEspecificacao filtroSolicitacaoTipoEspecificacao = new FiltroSolicitacaoTipoEspecificacao( FiltroSolicitacaoTipoEspecificacao.DESCRICAO); filtroSolicitacaoTipoEspecificacao.adicionarParametro(new ParametroSimples( FiltroSolicitacaoTipoEspecificacao.SOLICITACAO_TIPO_ID, especificacao.getSolicitacaoTipo().getId())); filtroSolicitacaoTipoEspecificacao.setConsultaSemLimites(true); filtroSolicitacaoTipoEspecificacao.adicionarParametro(new ParametroSimples(FiltroSolicitacaoTipoEspecificacao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); Collection colecaoSolicitacaoTipoEspecificacao = fachada.pesquisar(filtroSolicitacaoTipoEspecificacao, SolicitacaoTipoEspecificacao.class.getName()); sessao.setAttribute("colecaoSolicitacaoTipoEspecificacao", colecaoSolicitacaoTipoEspecificacao); inserirRegistroAtendimentoActionForm.setTipoSolicitacao(especificacao.getSolicitacaoTipo().getId().toString()); inserirRegistroAtendimentoActionForm.setEspecificacao(especificacao.getId().toString()); if (inserirRegistroAtendimentoActionForm.getDataAtendimento() != null && !inserirRegistroAtendimentoActionForm.getDataAtendimento().equalsIgnoreCase("")) { this.definirDataPrevistaUnidadeDestinoEspecificacao(inserirRegistroAtendimentoActionForm, fachada, sessao); } } return retorno; } /** * [UC0366] Inserir Registro de Atendimento * Habilitar ou desabilitar os campos Tempo de Espera para Atendimento, Data do Atendimento e Hora do Atendimento * [SF0001] Habilita/Desabilita Dados do Momento do Atendimento */ private void habilitacaoDadosMomentoAtendimento(InserirRegistroAtendimentoActionForm inserirRegistroAtendimentoActionForm, HttpServletRequest httpServletRequest) { // On-line if (inserirRegistroAtendimentoActionForm.getTipo().equalsIgnoreCase("1")) { Date dataCorrente = new Date(); inserirRegistroAtendimentoActionForm.setNumeroAtendimentoManual(""); inserirRegistroAtendimentoActionForm.setDataAtendimento(Util.formatarData(dataCorrente)); inserirRegistroAtendimentoActionForm.setHora(Util.formatarHoraSemSegundos(dataCorrente)); httpServletRequest.setAttribute("nomeCampo", "tempoEsperaInicial"); } // Manual else { inserirRegistroAtendimentoActionForm.setDataAtendimento(""); inserirRegistroAtendimentoActionForm.setHora(""); inserirRegistroAtendimentoActionForm.setTempoEsperaFinal(""); inserirRegistroAtendimentoActionForm.setDataPrevista(""); httpServletRequest.setAttribute("nomeCampo", "numeroAtendimentoManual"); } } /** * [UC0366] Inserir Registro de Atendimento * Atribui o valor correspondente � hora corrente */ private void atribuirHoraCorrenteTempoEsperaFinal(InserirRegistroAtendimentoActionForm inserirRegistroAtendimentoActionForm) { Date dataCorrente = new Date(); inserirRegistroAtendimentoActionForm.setTempoEsperaFinal(Util.formatarHoraSemSegundos(dataCorrente)); } @SuppressWarnings("rawtypes") private void definirDataPrevistaUnidadeDestinoEspecificacao(InserirRegistroAtendimentoActionForm inserirRegistroAtendimentoActionForm, Fachada fachada, HttpSession sessao) { Date dataAtendimento = Util.converteStringParaDate(inserirRegistroAtendimentoActionForm.getDataAtendimento()); DefinirDataPrevistaUnidadeDestinoEspecificacaoHelper dataPrevistaUnidadeDestino = fachada.definirDataPrevistaUnidadeDestinoEspecificacao( dataAtendimento, new Integer(inserirRegistroAtendimentoActionForm.getEspecificacao())); if (dataPrevistaUnidadeDestino.getDataPrevista() != null) { inserirRegistroAtendimentoActionForm.setDataPrevista(Util.formatarData(dataPrevistaUnidadeDestino.getDataPrevista())); } if (dataPrevistaUnidadeDestino.getUnidadeOrganizacional() != null) { inserirRegistroAtendimentoActionForm.setIdUnidadeDestino(dataPrevistaUnidadeDestino.getUnidadeOrganizacional().getId().toString()); inserirRegistroAtendimentoActionForm.setDescricaoUnidadeDestino(dataPrevistaUnidadeDestino.getUnidadeOrganizacional().getDescricao()); } inserirRegistroAtendimentoActionForm.setIndFaltaAgua(dataPrevistaUnidadeDestino.getIndFaltaAgua()); inserirRegistroAtendimentoActionForm.setIndMatricula(dataPrevistaUnidadeDestino.getIndMatricula()); inserirRegistroAtendimentoActionForm.setImovelObrigatorio(dataPrevistaUnidadeDestino.getImovelObrigatorio()); inserirRegistroAtendimentoActionForm.setPavimentoRuaObrigatorio(dataPrevistaUnidadeDestino.getPavimentoRuaObrigatorio()); inserirRegistroAtendimentoActionForm.setPavimentoCalcadaObrigatorio(dataPrevistaUnidadeDestino.getPavimentoCalcadaObrigatorio()); // Identificar tipo de gera��o da ordem de servi�o (AUTOM�TICA, OPCIONAL ou N�O GERAR) Integer idEspecificacao = Util.converterStringParaInteger(inserirRegistroAtendimentoActionForm.getEspecificacao()); if (this.getFachada().gerarOrdemServicoAutomatica(idEspecificacao)) { FiltroSolicitacaoTipoEspecificacao filtroSolicitacaoTipoEspecificacao = new FiltroSolicitacaoTipoEspecificacao(); filtroSolicitacaoTipoEspecificacao.adicionarCaminhoParaCarregamentoEntidade("servicoTipo"); filtroSolicitacaoTipoEspecificacao.adicionarParametro(new ParametroSimples(FiltroSolicitacaoTipoEspecificacao.ID, inserirRegistroAtendimentoActionForm.getEspecificacao())); filtroSolicitacaoTipoEspecificacao.adicionarParametro(new ParametroNaoNulo(FiltroSolicitacaoTipoEspecificacao.SERVICO_TIPO_ID)); filtroSolicitacaoTipoEspecificacao.adicionarParametro(new ParametroSimples(FiltroSolicitacaoTipoEspecificacao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); Collection colecaoSolicitacaoTipoEspecificacao = this.getFachada().pesquisar(filtroSolicitacaoTipoEspecificacao, SolicitacaoTipoEspecificacao.class.getName()); ServicoTipo servicoTipo = ((SolicitacaoTipoEspecificacao) colecaoSolicitacaoTipoEspecificacao.iterator().next()).getServicoTipo(); String valorServico = Util.formatarMoedaReal(servicoTipo.getValor()); inserirRegistroAtendimentoActionForm.setValorSugerido(valorServico); sessao.setAttribute("servicoTipo", servicoTipo.getId()); } else { sessao.removeAttribute("servicoTipo"); } } }