示例#1
0
        // ***********************************************
        // Método que retorna os dados do gráfico concatenados em uma string
        // só mandar o id da maquina, a data inicial de pesquisa e o context.
        private static string GeraDadosGrafico(int id, DateTime dateTime )
        {
            GrobContext db = new GrobContext();

            List<IGrouping<string, ParadasMaquina>> paradasMaquinas =
                db.ParadasMaquinas.Where(m => m.IdMaquina == id &&
                    (m.DataFim > dateTime || m.DataInicio > dateTime || m.DataFim == null)).GroupBy(m => m.Motivo1.Descricao).ToList();

            List<DadosGrafico> dadosGraficos = new List<DadosGrafico>();

            foreach (var paradasMaquina in paradasMaquinas)
            {
                TimeSpan? intervaloTempo = TimeSpan.Zero;
                foreach (var maquina in paradasMaquina)
                {
                    AcetaListaDeDatas(dateTime, maquina);
                    intervaloTempo = intervaloTempo + (maquina.DataFim - maquina.DataInicio);
                }
                dadosGraficos.Add(new DadosGrafico(paradasMaquina.Key, intervaloTempo));
            }
            dadosGraficos = dadosGraficos.OrderByDescending(d => d.IntervaloTempo).ToList();

            String valoresGrafico = String.Empty;
            foreach (var dadosGrafico in dadosGraficos)
            {
                String desc = dadosGrafico.Descricao;
                if (desc == null)
                {
                    desc = "Sem Motivo";
                }

                if(dadosGrafico.IntervaloTempo == null)
                {
                    dadosGrafico.IntervaloTempo = TimeSpan.Zero;
                }

                valoresGrafico = valoresGrafico + desc + ":" + dadosGrafico.IntervaloTempo.Value.TotalMinutes + ';';
            }
            db.Dispose();

            return valoresGrafico;
        }
示例#2
0
        /* Método que implementa o cálculo
        Fórmula Disponibilidade:
        (24 - Todas as paradas - paradas gerais)*100 /24. */
        private static int GeraDadosDisponiblidade(int id, int horasTotais, DateTime dateTime)
        {
            GrobContext db = new GrobContext();

            List<ParadasMaquina> paradasMaquinas =
                db.ParadasMaquinas.Where(m => m.IdMaquina == id &&
                                              (m.DataFim > dateTime || m.DataInicio > dateTime || m.DataFim == null)).ToList();

            TimeSpan? intervaloTempo = TimeSpan.Zero;
            foreach (var paradasMaquina in paradasMaquinas)
            {
                AcetaListaDeDatas(dateTime, paradasMaquina);
                intervaloTempo = intervaloTempo + (paradasMaquina.DataFim - paradasMaquina.DataInicio);
            }

            //Faz o Calcúlo para saber quais das paradas são gerais.
            List<ParadasMaquina> maquinas = paradasMaquinas.Where(p => p.IdMotivo1 == 39).ToList();
            TimeSpan? intervaloTempoGeral = TimeSpan.Zero;
            foreach (var paradasMaquina in maquinas)
            {
               AcetaListaDeDatas(dateTime, paradasMaquina);
                intervaloTempoGeral = intervaloTempoGeral + (paradasMaquina.DataFim - paradasMaquina.DataInicio);
            }

            if (intervaloTempo == null)
            {
                intervaloTempo = TimeSpan.Zero;
            }
            if (intervaloTempoGeral == null)
            {
                intervaloTempoGeral = TimeSpan.Zero;
            }

            double totalHoras = intervaloTempo.Value.TotalHours;
            double totalHorasGerais = intervaloTempoGeral.Value.TotalHours;

            db.Dispose();
            //Cálculo para saber a disponibilidade.
            return (int) (((horasTotais - (totalHoras - totalHorasGerais))*100)/horasTotais);
        }