Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Contagem de dias a partir da data de recebimento no setor #126

Open
vitorma opened this issue Sep 24, 2020 · 2 comments
Open

Contagem de dias a partir da data de recebimento no setor #126

vitorma opened this issue Sep 24, 2020 · 2 comments

Comments

@vitorma
Copy link

vitorma commented Sep 24, 2020

olá,

Uma feature legal para extensão seria a possibilidade de contar o número de dias que um processo está no setor. Já temos a possibilidade de contar utilizando um marcador, mas dependendo do número e da frequência de chegada de processos é bem trabalhoso marcar todos. Uma possibilidade para contornar o problema seria pegar a data de recebimento do processo que está na tramitação para fazer a contagem.

@vitorma
Copy link
Author

vitorma commented Sep 29, 2020

Estou estudando como implementar isso, tenho zero experiência com front, mas seguem minhas descobertas:

var setorUsuario = document.querySelector("#selInfraUnidades > option").label;
var table = ifrVisualizacao.document.querySelector("#tblHistorico");

for (var i = 0; i < table.rows.length; i++) {
    var setorAndamento = table.rows[i].cells[1];
    var descricaoAndamento = table.rows[i].cells[3];
    var dataDeRecebimento;
  
    if (setorAndamento.innerText == setorUsuario && descricaoAndamento.innerText.startsWith('Processo recebido na unidade')) {
      
        setorAndamento.innerText = '##' + setorAndamento.innerText + '##'; // marca andamento utilizado
      
        dataDeRecebimento = table.rows[i].cells[0].innerText.split(" ")[0];
      
        break;
    }
}

Estou brincando só no console do Chrome.

O código acima funciona se a página de andamento do processo tiver aberta, a data desejada aparece no console.

Como pegar o histórico de tramitação sem precisar abrir o processo?

@vitorma
Copy link
Author

vitorma commented Sep 30, 2020

Consegui pegar as datas com o código abaixo, usei a seguinte lógica:
Pego a tabela de processos, pego os links de cada processo, faço um request para pegar a página do processo, pego o link do frame da árvore de documentos (a barra lateral esquerda da visão do processo), pego link de consultar andamento, faço um request para pegar o frame do histórico de andamento, pego a tabela, faço um filtro pelo último andamento com o nome "Recebido" e pego a data correspondente.

A lógica funciona, mas tem um grande problema, são 300 requests para fazer isso. Mais ou menos 40 segundos para retornar as datas, fica inviável fazer dessa forma.

Se alguém tiver outra forma de fazer isso, por favor entre em contato.

Segue o código, não me preocupei com beleza nem legibilidade, pois estava só querendo fazer funcionar. Basta abrir a página de controle de processos e colar o código no console, depois de uns 40 segundos, você deve ver as datas no log.

var parser = new DOMParser();
var tabelaRecebidos = document.getElementById('tblProcessosRecebidos');
for (var i = 2; i < tabelaRecebidos.rows.length; i++) {
    var urlProcesso = tabelaRecebidos.rows[i].cells[2].querySelector("td:nth-child(3) > a")?.href;
    var request = $.ajax(urlProcesso, {
        success: function(result) {
            var doc = parser.parseFromString(result, "text/html")
            var urlArvore = doc.getElementById('ifrArvore').src;
            var request = $.ajax(urlArvore, {
                success: function(result) {
                    var a = result.indexOf('controlador.php?acao=procedimento_consultar_historico&');
                    var b = result.indexOf("'", a);
                    var urlAndamento = window.location.origin + "/sei/" + result.substring(a, b);
                    var request = $.ajax(urlAndamento, {
                        success: function(result) {
                            var setorUsuario = document.querySelector("#selInfraUnidades > option").label;
                            var doc = parser.parseFromString(result, "text/html")
                            var tabelaAndamento = doc.getElementById('tblHistorico');
                            for (var i = 1; i < tabelaAndamento.rows.length; i++) {
                                var setorAndamento = tabelaAndamento.rows[i].cells[1];
                                var descricaoAndamento = tabelaAndamento.rows[i].cells[3];
                                var dataDeRecebimento;

                                if (setorAndamento.innerText == setorUsuario 
                                    && descricaoAndamento.innerText.startsWith('Processo recebido na unidade')) {
                                    dataDeRecebimento = tabelaAndamento.rows[i].cells[0].innerText.split(" ")[0];
                                    console.log(dataDeRecebimento);
                                    break;
                                }
                            }

                        }
                    });
                }
            });
        }
    });
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant