Open vitorma opened 4 years ago
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?
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;
}
}
}
});
}
});
}
});
}
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.