Pesquisar na Comunidade
Mostrando resultados para as tags ''acumular''.
Encontrado 1 registro
-
Bom dia pessoal AJUDA por favor , há dois dias estou tentando acumular o tempo parado do veículo, através das informações que recebo do rastreador, é o seguinte... a cada 1min recebo as informações, uma delas é se o veiculo está parado 0 = parado , 1 = em movimento, entre as outras colunas tem uma data_hora (dd/mm/yy hh:mm), a cada recebimento e SE parado , preciso ficar acumulando o tempo parado do mesmo!! Certamente já pensei dessas maneiras, ao receber uma nova informação e SE parado, vou procurar na tabela de todas as informações, a último momento parado do mesmo veículo , daí subtraio a hora atual com a hora do momento anterior, exemplo , peguei a informação atual PARADO agora as 08:00, fui buscar na tabela a ultima informação PARADO, registrado anteriormente, que foi as 07:30, então entre eles tem um tempo de 30min, daí teoricamente ele ficou parado 30min. O problema é que essas informações vou solicitar a cada 1min e registrar tudo no banco, esse banco logo logo, vai crescer muito, um exemplo aqui é uma tabala do sistema antigo, tem mais de 16 milhões, imagina a cada 1min eu ter que fazer essa consulta, pegar o ultimo registro do determinado veiculo PARADO nessa tabela. Fora que ao atualiza a janela do sistema (WEB, Java , Spring), preciso fazer além desse filtro os outros.. Outra Maneira seria criar uma tabela separada, (Tempo_Parado), e registrar o momento (data_hora) , veiculo_id, daí a tabela fica um pouco menor que a do rastreio propriamente dito, então a cada 1min se o veiculo tiver parado, vou nessa tabela e procuro o momento da ultima parada dele, e vou acumulando. Mas tem um problema nessas teoria.. imagina só... o cara parou as 8:00 daí fui acumulando ate as 8:30, já tenho aí 30min parado, agora o cara começou a se movimentar... rodou uns 30min e o cara para novamente...... ou seja PAROU as 9:00, quando eu for pegar a última hora que ele parou o sistema vai trazer 08:30, e se eu for usar a técnica acima citado por mim, o sistema vai calcular assim , ultima parada as 8:30, pardou agora as 9:00, tempo parado MAIS 30min... espero que vocês tenham entendido...... Pensando um pouco agora, eu poderia quando filtrar as ultimas paradas, sempre pegar as duas 2 ultimas informações, e se a penúltima informação era EM MOVIMENTO, já sei que essa parada agora é uma parada START e não um continuação de PARADO, tipo... 07:30 Parado 08:00 Parado --------30min 08:10 Movimento 08:30 Parado se for pelo sistema, ele vai calcular 8:30 - 8:00 vai trazer 30min PARADO, que não é (nessa última situação ele não ficou parado 30min), na verdade ele parou agora o que pensei nesse caso foi, pegar esses 2 últimos, e caso o penúltimo seja EM MOVIMENTO, desconsiderar o calculo e somente gravar que parou, daí na próxima consulta PARADO as 8:50, o sistema vai me trazer 8:50 - 8:30 = 20min parado. Assim acredito que funcione, porém vai da trabalho e pesando no banco terá muitas consultas em tabelas grandes de volume!!! Qualquer dica de vocês pode ajudar a melhorar, deve ter algo mais simples!!! Agradeço desde já!!!! Bom dia!!!