コード例 #1
0
 //
 // GET: /Acompanhamento/
 public ActionResult Index()
 {
     var repositorio = new RepositorioDeProcessamentos();
     IEnumerable<Processamento> processamentos = repositorio.ObterUltimosProcessamentos(20);
     ViewBag.Processamentos = processamentos;
     return View();
 }
コード例 #2
0
        //
        // GET: /Acompanhamento/

        public ActionResult Index()
        {
            var repositorio = new RepositorioDeProcessamentos();
            IEnumerable <Processamento> processamentos = repositorio.ObterUltimosProcessamentos(20);

            ViewBag.Processamentos = processamentos;
            return(View());
        }
コード例 #3
0
        public ActionResult Visualizacao(Guid processamentoId)
        {
            // mensagem informativa
            var processamento = new RepositorioDeProcessamentos().ObterPorProcessamentoId(processamentoId);

            ViewBag.Message = String.Format("{0} {1}", processamento.Comando, processamento.Parametros);

            // obter query de eventos
            var repositorio = new RepositorioDeEventosDeProcessamento();
            List <EventoDeProcessamento> eventos = repositorio.ObterEventos(processamentoId);

            // consolidar por período
            int segundosPorFaixa   = 5;
            var quantidadePorFaixa =
                (from e in eventos
                 let periodo = e.ObterHorarioArredondado(segundosPorFaixa)
                               orderby periodo
                               group e by periodo
                               into g
                               select new Medicao {
                Periodo = g.Key, Quantidade = g.Sum(o => o.Quantidade)
            })
                .ToList();

            if (quantidadePorFaixa.Count == 0)
            {
                ViewBag.Erro = "Não há nenhum evento registrado para este processamento.";
                return(View());
            }

            var idadeDaUltimaMedicao = DateTime.UtcNow - quantidadePorFaixa[quantidadePorFaixa.Count - 1].Periodo;

            if (idadeDaUltimaMedicao.TotalSeconds <= segundosPorFaixa)
            {
                quantidadePorFaixa.RemoveAt(quantidadePorFaixa.Count - 1); // descartar medição incompleta
            }

            // série de dados por período
            var seriePorPeriodo = new StringBuilder();

            seriePorPeriodo.AppendLine("\"Horário,Quantidade\\n\" +");
            foreach (var item in quantidadePorFaixa)
            {
                seriePorPeriodo.AppendLine(String.Format("\"{0},{1}\\n\" +", item.Periodo.ToString("yyyy/MM/dd HH:mm:ss"),
                                                         item.Quantidade));
            }
            seriePorPeriodo.AppendLine("\"\"");
            ViewBag.SeriePorPeriodo = seriePorPeriodo.ToString();

            // série de dados de velocidade média
            DateTime horarioInicial       = DateTime.MaxValue;
            long     quantidadeTotal      = 0;
            var      itensUltimoMinuto    = new List <Medicao>();
            var      serieVelocidadeMedia = new StringBuilder();

            serieVelocidadeMedia.AppendLine("\"Horário,Geral,Um minuto\\n\" +");
            foreach (var item in quantidadePorFaixa)
            {
                quantidadeTotal += item.Quantidade;
                if (horarioInicial > item.Periodo)
                {
                    horarioInicial = item.Periodo;
                }
                var    lapso      = item.Periodo - horarioInicial;
                double segundos   = lapso.TotalSeconds + 1;
                double mediaGeral = quantidadeTotal / segundos;

                itensUltimoMinuto.Add(item);
                itensUltimoMinuto.RemoveAll(m => (item.Periodo - m.Periodo).TotalSeconds > 60);
                double totalUltimoMinuto = (from i in itensUltimoMinuto select i.Quantidade).Sum();
                double mediaUltimoMinuto = totalUltimoMinuto / 60;

                serieVelocidadeMedia.AppendLine(String.Format("\"{0},{1},{2}\\n\" +", item.Periodo.ToString("yyyy/MM/dd HH:mm:ss"),
                                                              Math.Round(mediaGeral, 0), Math.Round(mediaUltimoMinuto, 0)));
            }
            serieVelocidadeMedia.AppendLine("\"\"");
            ViewBag.SerieVelocidadeMedia = serieVelocidadeMedia.ToString();

            // série de dados acumulados
            long quantidadeAcumulada = 0;
            var  serieAcumulada      = new StringBuilder();

            serieAcumulada.AppendLine("\"Horário,Quantidade\\n\" +");
            foreach (var item in quantidadePorFaixa)
            {
                quantidadeAcumulada += item.Quantidade;
                serieAcumulada.AppendLine(String.Format("\"{0},{1}\\n\" +", item.Periodo.ToString("yyyy/MM/dd HH:mm:ss"),
                                                        quantidadeAcumulada));
            }
            serieAcumulada.AppendLine("\"\"");
            ViewBag.SerieAcumulada = serieAcumulada.ToString();

            return(View());
        }
コード例 #4
0
        public ActionResult Visualizacao(Guid processamentoId)
        {
            // mensagem informativa
            var processamento = new RepositorioDeProcessamentos().ObterPorProcessamentoId(processamentoId);
            ViewBag.Message = String.Format("{0} {1}", processamento.Comando, processamento.Parametros);

            // obter query de eventos
            var repositorio = new RepositorioDeEventosDeProcessamento();
            List<EventoDeProcessamento> eventos = repositorio.ObterEventos(processamentoId);

            // consolidar por período
            int segundosPorFaixa = 5;
            var quantidadePorFaixa =
                (from e in eventos
                 let periodo = e.ObterHorarioArredondado(segundosPorFaixa)
                 orderby periodo
                 group e by periodo
                     into g
                     select new Medicao { Periodo = g.Key, Quantidade = g.Sum(o => o.Quantidade) })
                    .ToList();
            if (quantidadePorFaixa.Count == 0)
            {
                ViewBag.Erro = "Não há nenhum evento registrado para este processamento.";
                return View();
            }

            var idadeDaUltimaMedicao = DateTime.UtcNow - quantidadePorFaixa[quantidadePorFaixa.Count - 1].Periodo;
            if (idadeDaUltimaMedicao.TotalSeconds <= segundosPorFaixa)
            {
                quantidadePorFaixa.RemoveAt(quantidadePorFaixa.Count - 1); // descartar medição incompleta
            }

            // série de dados por período
            var seriePorPeriodo = new StringBuilder();
            seriePorPeriodo.AppendLine("\"Horário,Quantidade\\n\" +");
            foreach (var item in quantidadePorFaixa)
            {
                seriePorPeriodo.AppendLine(String.Format("\"{0},{1}\\n\" +", item.Periodo.ToString("yyyy/MM/dd HH:mm:ss"),
                                             item.Quantidade));
            }
            seriePorPeriodo.AppendLine("\"\"");
            ViewBag.SeriePorPeriodo = seriePorPeriodo.ToString();

            // série de dados de velocidade média
            DateTime horarioInicial = DateTime.MaxValue;
            long quantidadeTotal = 0;
            var itensUltimoMinuto = new List<Medicao>();
            var serieVelocidadeMedia = new StringBuilder();
            serieVelocidadeMedia.AppendLine("\"Horário,Geral,Um minuto\\n\" +");
            foreach (var item in quantidadePorFaixa)
            {
                quantidadeTotal += item.Quantidade;
                if (horarioInicial > item.Periodo)
                {
                    horarioInicial = item.Periodo;
                }
                var lapso = item.Periodo - horarioInicial;
                double segundos = lapso.TotalSeconds + 1;
                double mediaGeral = quantidadeTotal / segundos;

                itensUltimoMinuto.Add(item);
                itensUltimoMinuto.RemoveAll(m => (item.Periodo - m.Periodo).TotalSeconds > 60);
                double totalUltimoMinuto = (from i in itensUltimoMinuto select i.Quantidade).Sum();
                double mediaUltimoMinuto = totalUltimoMinuto / 60;

                serieVelocidadeMedia.AppendLine(String.Format("\"{0},{1},{2}\\n\" +", item.Periodo.ToString("yyyy/MM/dd HH:mm:ss"),
                                             Math.Round(mediaGeral, 0), Math.Round(mediaUltimoMinuto, 0)));
            }
            serieVelocidadeMedia.AppendLine("\"\"");
            ViewBag.SerieVelocidadeMedia = serieVelocidadeMedia.ToString();

            // série de dados acumulados
            long quantidadeAcumulada = 0;
            var serieAcumulada = new StringBuilder();
            serieAcumulada.AppendLine("\"Horário,Quantidade\\n\" +");
            foreach (var item in quantidadePorFaixa)
            {
                quantidadeAcumulada += item.Quantidade;
                serieAcumulada.AppendLine(String.Format("\"{0},{1}\\n\" +", item.Periodo.ToString("yyyy/MM/dd HH:mm:ss"),
                                             quantidadeAcumulada));
            }
            serieAcumulada.AppendLine("\"\"");
            ViewBag.SerieAcumulada = serieAcumulada.ToString();

            return View();
        }