package gcom.gui.atendimentopublico.ordemservico; import gcom.atendimentopublico.ordemservico.FiltroOrdemServicoPavimento; import gcom.atendimentopublico.ordemservico.OrdemServicoPavimento; import gcom.atendimentopublico.ordemservico.bean.OSPavimentoHelper; import gcom.atendimentopublico.ordemservico.bean.OSPavimentoRetornoHelper; import gcom.cadastro.endereco.FiltroLogradouro; import gcom.cadastro.endereco.Logradouro; import gcom.cadastro.geografico.Bairro; import gcom.cadastro.geografico.FiltroBairro; import gcom.cadastro.geografico.FiltroMunicipio; import gcom.cadastro.geografico.Municipio; import gcom.cadastro.imovel.FiltroPavimentoRua; import gcom.cadastro.imovel.PavimentoRua; import gcom.cadastro.unidade.FiltroUnidadeOrganizacional; import gcom.cadastro.unidade.UnidadeOrganizacional; import gcom.cadastro.unidade.UnidadeTipo; 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.ParametroSimples; import java.util.Collection; import java.util.Date; 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; /** * Action de exibir manter o Ordem Processo de Repavimenta��o * @author Yara Taciane de Souza * @created 03/06/2008 * * * @alterado por Arthur Carvalho * * @data:28-04-2010 */ public class ExibirManterOrdemProcessoRepavimentacaoAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { //Inicializando Variaveis ActionForward retorno = actionMapping.findForward("manterOrdemProcessoRepavimentacao"); HttpSession sessao = httpServletRequest.getSession(false); Fachada fachada = Fachada.getInstancia(); Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado"); boolean temPermissao = verificaUnidadeUsuario(usuario, fachada); FiltrarOrdemProcessoRepavimentacaoActionForm form = (FiltrarOrdemProcessoRepavimentacaoActionForm) actionForm; //Recebe os Parametros do filtro atraves do Helper e seta os valores no FORM OSPavimentoHelper osPavimentoHelper = null; if (sessao.getAttribute("osPavimentoHelper") != null) { osPavimentoHelper = (OSPavimentoHelper) sessao.getAttribute("osPavimentoHelper"); adicionaOsParametrosNoForm( osPavimentoHelper , form , fachada ); } if(osPavimentoHelper.getSituacaoRetorno() == 4){ form.setEscolhaRelatorio("1"); }else if ( form.getEscolhaRelatorio() == null || form.getEscolhaRelatorio().equals("") ) { form.setEscolhaRelatorio("2"); } if(form.getManterPaginaAux() == null ){ form.setManterPaginaAux("0"); httpServletRequest.setAttribute("manterPaginaAux", form.getManterPaginaAux() ); } Collection collOrdemServicoPavimento = null; if (httpServletRequest.getParameter("retornaDoPopup") != null) { collOrdemServicoPavimento = fachada.pesquisarOrdemProcessoRepavimentacao(osPavimentoHelper, (Integer) httpServletRequest.getAttribute("numeroPaginasPesquisa")); }else{ if (sessao.getAttribute("collOrdemServicoPavimentoHelper") != null) { collOrdemServicoPavimento = (Collection) sessao.getAttribute("collOrdemServicoPavimentoHelper"); } } //Conta a quantidade de registros selecionados. Integer ordemServicoPavimentoCount = fachada.pesquisarOrdemProcessoRepavimentacaoCount(osPavimentoHelper); if ( ordemServicoPavimentoCount == null || ordemServicoPavimentoCount.equals("") || ordemServicoPavimentoCount.equals(" ") || ordemServicoPavimentoCount.intValue() <= 0 ) { throw new ActionServletException("atencao.informarOutroFiltro", "exibirFiltrarOrdemProcessoRepavimentacaoAction.do?limpar=S", null, new String[]{} ); } form.setOrdensServicoSelecionadas(ordemServicoPavimentoCount.toString()); retorno = this.controlarPaginacao(httpServletRequest, retorno, ordemServicoPavimentoCount ); //pesquisa na colecao para atualizacao na tela Integer pagina = null; Integer paginaAtualizada = null ; if ( httpServletRequest.getAttribute("numeroPaginasPesquisa") != null && (!httpServletRequest.getAttribute("numeroPaginasPesquisa").toString().equals("0") || form.getManterPaginaAux() != null ) ) { //Primeira vez que entra na pagina if ( sessao.getAttribute("numeroPagina") != null ) { //Controla pagina para que nao retorne para pagina incial. String paginaAtual = (String) sessao.getAttribute("numeroPagina"); form.setManterPaginaAux( paginaAtual ); pagina = (Integer) Util.converterStringParaInteger( form.getManterPaginaAux() ); collOrdemServicoPavimento = fachada.pesquisarOrdemProcessoRepavimentacao( osPavimentoHelper, pagina ); Integer numeroDaPagina = pagina.intValue() +1; httpServletRequest.setAttribute("page.offset", numeroDaPagina.toString() ); httpServletRequest.setAttribute("numeroPaginasPesquisa", pagina.toString() ); retorno = this.controlarPaginacao(httpServletRequest, retorno, ordemServicoPavimentoCount ); } else { //Esse fluxo serve para ter o controle da pagina��o quando a pagina for atualizada atraves do popup. paginaAtualizada = (Integer) httpServletRequest.getAttribute("numeroPaginasPesquisa") + 1; form.setManterPaginaAux( paginaAtualizada.toString() ); collOrdemServicoPavimento = fachada.pesquisarOrdemProcessoRepavimentacao(osPavimentoHelper, (Integer) httpServletRequest.getAttribute("numeroPaginasPesquisa")); //Fluxo responsavel caso as OS sejam pesquisada com a situa��o PENDENTE if ( osPavimentoHelper.getSituacaoRetorno().toString().equals("1") && httpServletRequest.getParameter("retornaDoPopup") != null ) { collOrdemServicoPavimento = fachada.pesquisarOrdemProcessoRepavimentacao(osPavimentoHelper, (Integer) httpServletRequest.getAttribute("numeroPaginasPesquisa")); sessao.setAttribute("totalRegistros", ordemServicoPavimentoCount); } else { collOrdemServicoPavimento = fachada.pesquisarOrdemProcessoRepavimentacao(osPavimentoHelper, (Integer) httpServletRequest.getAttribute("numeroPaginasPesquisa")); } } } else { //Pega o numero da pagina atraves do aux criado para guardar o numero da pagina. //segunda vez em diante que abre a pagina if (form.getManterPaginaAux() != null ) { pagina = (Integer) Util.converterStringParaInteger(form.getManterPaginaAux()); collOrdemServicoPavimento = fachada.pesquisarOrdemProcessoRepavimentacao(osPavimentoHelper, pagina); Integer pag = pagina.intValue() +1; httpServletRequest.setAttribute("page.offset", pag.toString() ); retorno = this.controlarPaginacao(httpServletRequest, retorno, ordemServicoPavimentoCount ); } else { collOrdemServicoPavimento = fachada.pesquisarOrdemProcessoRepavimentacao(osPavimentoHelper, (Integer) httpServletRequest.getAttribute("numeroPaginasPesquisa")); } } String[] idsRegistrosChecados = form.getIdRegistro(); //Verifica se o usuario clicou no botao de Concordancia das demandas. if ( httpServletRequest.getParameter("acao") != null && httpServletRequest.getParameter("acao").equals("concordanciaDemandas")){ //verifica a permissao do usuario. if (temPermissao) { Iterator iteratorCollOrdemServicoPavimento = collOrdemServicoPavimento.iterator(); OSPavimentoRetornoHelper osPavimentoRetornoHelper = new OSPavimentoRetornoHelper(); while( iteratorCollOrdemServicoPavimento.hasNext() ) { osPavimentoRetornoHelper = (OSPavimentoRetornoHelper) iteratorCollOrdemServicoPavimento.next(); for ( int i=0 ; i < idsRegistrosChecados.length ; i++ ) { //verifica se o dado exibido � igual if(osPavimentoRetornoHelper.getOrdemServico().getId().toString().equals(idsRegistrosChecados[i]) && osPavimentoRetornoHelper.getOrdemServicoPavimento().getMotivoRejeicao() == null){ osPavimentoHelper.setPavimentoRuaRetorno( osPavimentoHelper.getPavimentoRua() ); osPavimentoHelper.setPavimentoCalcadaRetorno( osPavimentoHelper.getPavimentoCalcada() ); //Pesquisar a Ordem Servico para atualizacao na base FiltroOrdemServicoPavimento filtroOrdemServicoPavimento = new FiltroOrdemServicoPavimento(); filtroOrdemServicoPavimento.adicionarParametro( new ParametroSimples( FiltroOrdemServicoPavimento.ORDEM_SERVICO_ID, idsRegistrosChecados[i])); Collection colecaoOrdemServicoPavimento = fachada.pesquisar(filtroOrdemServicoPavimento, OrdemServicoPavimento.class.getName()); OrdemServicoPavimento ordemServicoPavimento = (OrdemServicoPavimento) Util.retonarObjetoDeColecao(colecaoOrdemServicoPavimento); //ordemServicoPavimento.setAreaPavimentoCalcadaRetorno(osPavimentoHelper.getAreaPavimentoCalcada()); FiltroPavimentoRua filtroPavimentoRua = new FiltroPavimentoRua(); filtroPavimentoRua.adicionarParametro( new ParametroSimples( FiltroPavimentoRua.ID, osPavimentoRetornoHelper.getOrdemServicoPavimento().getPavimentoRua().getId() ) ); Collection colecaoPavimentoRuaRetorno = fachada.pesquisar(filtroPavimentoRua, PavimentoRua.class.getName()); PavimentoRua pavimentoRuaRetorno = (PavimentoRua) Util.retonarObjetoDeColecao(colecaoPavimentoRuaRetorno); //Caso tenha sido registrado o retorno para um servi�o ele n�o mais poder� ser alterado; if (ordemServicoPavimento.getPavimentoRuaRetorno() == null || ordemServicoPavimento.getPavimentoRua().equals("")) { ordemServicoPavimento.setPavimentoRuaRetorno(pavimentoRuaRetorno); ordemServicoPavimento.setAreaPavimentoRuaRetorno( osPavimentoRetornoHelper.getOrdemServicoPavimento() .getAreaPavimentoRua()); ordemServicoPavimento.setDataExecucao(new Date()); ordemServicoPavimento.setIndicadorAceite(ConstantesSistema.SIM); ordemServicoPavimento.setDataAceite(ordemServicoPavimento.getDataExecucao()); if ( ordemServicoPavimento.getDescricaoMotivoAceite() != null && !ordemServicoPavimento.getDescricaoMotivoAceite().equals("") ) { String descricaoJaCadastrada = ordemServicoPavimento.getDescricaoMotivoAceite(); ordemServicoPavimento.setDescricaoMotivoAceite( descricaoJaCadastrada + " ACEITE AUTOMATICO"); } else { ordemServicoPavimento.setDescricaoMotivoAceite("ACEITE AUTOMATICO"); } //Usuario admin. ordemServicoPavimento.setUsuarioAceite(Usuario.USUARIO_BATCH); //ordemServicoPavimento.set fachada.atualizar(ordemServicoPavimento); //pesquisa na colecao para atualizacao na tela if ( pagina != null ) { collOrdemServicoPavimento = fachada.pesquisarOrdemProcessoRepavimentacao(osPavimentoHelper, pagina); if ( osPavimentoHelper.getSituacaoRetorno().toString() != "1" && osPavimentoHelper.getSituacaoRetorno().toString() != "2" ) { Integer atualizaPaginacao = fachada.pesquisarOrdemProcessoRepavimentacaoCount(osPavimentoHelper); if ( atualizaPaginacao == null || atualizaPaginacao.equals("") || atualizaPaginacao.equals(" ") || atualizaPaginacao.intValue() <= 0 ) { throw new ActionServletException("atencao.informarOutroFiltro", "exibirFiltrarOrdemProcessoRepavimentacaoAction.do?limpar=S", null, new String[]{} ); } else { sessao.setAttribute("totalRegistros", atualizaPaginacao); retorno = this.controlarPaginacao(httpServletRequest, retorno, atualizaPaginacao ); } } } else { collOrdemServicoPavimento = fachada.pesquisarOrdemProcessoRepavimentacao(osPavimentoHelper, (Integer) httpServletRequest.getAttribute("numeroPaginasPesquisa")); if ( !osPavimentoHelper.getSituacaoRetorno().toString().equals("1") && !osPavimentoHelper.getSituacaoRetorno().toString().equals("2") ) { Integer atualizaPaginacao = fachada.pesquisarOrdemProcessoRepavimentacaoCount(osPavimentoHelper); if ( atualizaPaginacao == null || atualizaPaginacao.equals("") || atualizaPaginacao.equals(" ") || atualizaPaginacao.intValue() <= 0 ) { throw new ActionServletException("atencao.informarOutroFiltro", "exibirFiltrarOrdemProcessoRepavimentacaoAction.do?limpar=S", null, new String[]{} ); } } //situacao pendente if ( osPavimentoHelper.getSituacaoRetorno().toString().equals("1") ) { Integer atualizaPaginacao = fachada.pesquisarOrdemProcessoRepavimentacaoCount(osPavimentoHelper); if ( atualizaPaginacao == null || atualizaPaginacao.equals("") || atualizaPaginacao.equals(" ") || atualizaPaginacao.intValue() <= 0 ) { throw new ActionServletException("atencao.informarOutroFiltro", "exibirFiltrarOrdemProcessoRepavimentacaoAction.do?limpar=S", null, new String[]{} ); } if ( idsRegistrosChecados.length == 10 ) { collOrdemServicoPavimento = fachada.pesquisarOrdemProcessoRepavimentacao(osPavimentoHelper, (Integer) 0 ); sessao.setAttribute("totalRegistros", atualizaPaginacao); sessao.setAttribute("page.offset", (Integer) httpServletRequest.getAttribute("numeroPaginasPesquisa") + 1 ); retorno = this.controlarPaginacao(httpServletRequest, retorno, atualizaPaginacao ); } else if (collOrdemServicoPavimento.size() == 0) { collOrdemServicoPavimento = fachada.pesquisarOrdemProcessoRepavimentacao(osPavimentoHelper, (Integer) 0 ); sessao.setAttribute("totalRegistros", atualizaPaginacao); sessao.setAttribute("page.offset", 1); retorno = this.controlarPaginacao(httpServletRequest, retorno, atualizaPaginacao ); }else { sessao.setAttribute("totalRegistros", atualizaPaginacao); } } } } else { throw new ActionServletException("atencao.registro_nao_pode_ser_atualizado", "exibirManterOrdemProcessoRepavimentacaoAction.do", null , new String[] {}); } } } } } else { throw new ActionServletException("atencao.nao_possui_permissao_para_atualizar"); } } // httpServletRequest.setAttribute("collOrdemServicoPavimento", collOrdemServicoPavimento); sessao.setAttribute("collOrdemServicoPavimento", collOrdemServicoPavimento); sessao.removeAttribute("numeroPagina"); sessao.removeAttribute("desabilitaBotaoAlterar"); sessao.removeAttribute("colecaoMotivoRejeicao"); return retorno; } /** * Verifica se usuario em Permissao para atualizar o * retorno das ordens de Servi�o atraves do bot�o confirmar demandas. * * @author Arthur Carvalho * * @date 26/04/2010 * @param usuario * @param fachada * @return boolean */ private boolean verificaUnidadeUsuario( Usuario usuario, Fachada fachada) { boolean temPermissao = false; Collection colecaoUnidadesResponsaveis = null; FiltroUnidadeOrganizacional filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional(); if ( usuario != null && usuario.getUnidadeOrganizacional() != null && usuario.getUnidadeOrganizacional().getUnidadeTipo() != null && usuario.getUnidadeOrganizacional().getUnidadeTipo().getId() != null && (usuario.getUnidadeOrganizacional().getUnidadeTipo().getId().intValue() == UnidadeTipo.UNIDADE_TIPO_REPAVIMENTADORA_ID.intValue()) ) { filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.ID, usuario.getUnidadeOrganizacional().getId())); filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.ID_UNIDADE_TIPO,UnidadeTipo.UNIDADE_TIPO_REPAVIMENTADORA_ID)); colecaoUnidadesResponsaveis = fachada.pesquisar(filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName()); if ( colecaoUnidadesResponsaveis != null && !colecaoUnidadesResponsaveis.isEmpty() ) { temPermissao = true; } } return temPermissao; } /** * @author Arthur Carvalho * * @date 04/05/2010 * * @param osPavimentoHelper * @param form * @param fachada */ private void adicionaOsParametrosNoForm( OSPavimentoHelper osPavimentoHelper, FiltrarOrdemProcessoRepavimentacaoActionForm form , Fachada fachada) { if(osPavimentoHelper.getIdUnidadeResponsavel() != null){ FiltroUnidadeOrganizacional filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional(); filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.ID,osPavimentoHelper.getIdUnidadeResponsavel())); Collection colecaoUnidadesResponsaveis = fachada.pesquisar( filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName()); UnidadeOrganizacional unidadeOrganizacional = (UnidadeOrganizacional) Util.retonarObjetoDeColecao(colecaoUnidadesResponsaveis); if(unidadeOrganizacional != null){ form.setDescricaoUnidadeResponsavel(unidadeOrganizacional.getDescricao()); } } if(osPavimentoHelper.getSituacaoRetorno() != null){ String situacao = ""; if(osPavimentoHelper.getSituacaoRetorno().toString().equals("1")){ situacao = "PENDENTES"; }else if(osPavimentoHelper.getSituacaoRetorno().toString().equals("2")){ situacao = "CONCLU�DAS"; }else if(osPavimentoHelper.getSituacaoRetorno().toString().equals("4")){ situacao = "REJEITADAS"; // 3 }else{ situacao = "TODAS"; } form.setSituacaoRetornoDescricao(situacao); } if(osPavimentoHelper.getPeriodoEncerramentoOsInicial() != null && osPavimentoHelper.getPeriodoEncerramentoOsInicial()!= null){ form.setPeriodoEncerramentoOsInicial(osPavimentoHelper.getPeriodoEncerramentoOsInicial()); form.setPeriodoEncerramentoOsFinal(osPavimentoHelper.getPeriodoEncerramentoOsFinal()); }else{ form.setPeriodoEncerramentoOsInicial(null); form.setPeriodoEncerramentoOsFinal(null); } if(osPavimentoHelper.getIdMunicipio() != null){ FiltroMunicipio filtro = new FiltroMunicipio(); filtro.adicionarParametro( new ParametroSimples( FiltroMunicipio.ID, osPavimentoHelper.getIdMunicipio())); Collection colecaoMunicipio = this.getFachada().pesquisar( filtro, Municipio.class.getName()); Municipio municipio = (Municipio) Util.retonarObjetoDeColecao(colecaoMunicipio); if(municipio != null){ form.setIdMunicipio(municipio.getId().toString()); form.setMunicipioDescricao(municipio.getNome()); } } if(osPavimentoHelper.getIdBairro() != null){ FiltroBairro filtro = new FiltroBairro(); filtro.adicionarParametro( new ParametroSimples( FiltroBairro.ID, osPavimentoHelper.getIdBairro())); Collection colecao = this.getFachada().pesquisar( filtro, Bairro.class.getName()); Bairro bairro = (Bairro) Util.retonarObjetoDeColecao(colecao); if(bairro != null){ form.setIdBairro(bairro.getId().toString()); form.setBairroDescricao(bairro.getNome()); } } if(osPavimentoHelper.getIdLogradouro() != null){ FiltroLogradouro filtro = new FiltroLogradouro(); filtro.adicionarParametro( new ParametroSimples( FiltroLogradouro.ID, osPavimentoHelper.getIdLogradouro())); filtro.adicionarCaminhoParaCarregamentoEntidade(FiltroLogradouro.LOGRADOUROTIPO); filtro.adicionarCaminhoParaCarregamentoEntidade(FiltroLogradouro.LOGRADOUROTITULO); Collection colecao = this.getFachada().pesquisar( filtro, Logradouro.class.getName()); Logradouro logradouro = (Logradouro) Util.retonarObjetoDeColecao(colecao); if(logradouro != null){ form.setIdLogradouro(logradouro.getId().toString()); form.setLogradouroDescricao(logradouro.getDescricaoFormatada()); } } } }