public static List<MaquinaJSON> CarregaTiposMaquina(String ids) { GrobContext db = new GrobContext(); String[] listIds = ids.Trim().Split(';'); List<Maquina> listaComTodasAsMaquinas = new List<Maquina>(); foreach (var stringId in listIds) { if (stringId != "") { int id = Convert.ToInt32(stringId); List<Maquina> listMaquinas = db.Maquinas.Where(m => m.IdTipoMaquina == id).ToList(); listaComTodasAsMaquinas.AddRange(listMaquinas); } } List<MaquinaJSON> maquinaJsons = new List<MaquinaJSON>(); foreach(Maquina m in listaComTodasAsMaquinas) { MaquinaJSON maquinaJson = new MaquinaJSON(m.Id,m.Desc,m.Nome,m.IdTipoMaquina); maquinaJsons.Add(maquinaJson); } return maquinaJsons; }
public string Status() { const int ID_MOTIVO_MAQUINA_MANUTENCAO_PREV = 6; const int ID_MOTIVO_MAQUINA_MANUTENCAO_CORR = 18; GrobContext db = new GrobContext(); List<ParadasMaquina> paradas = db.ParadasMaquinas.Where(p => p.IdMaquina == this.Id && p.DataFim == null).ToList(); if(paradas.Count == 0) { return "Ativa"; }else{ List<ParadasMaquina> paradasMaquinas = db.ParadasMaquinas.Where(p => p.IdMaquina == this.Id && p.DataFim == null && (p.IdMotivo1 == ID_MOTIVO_MAQUINA_MANUTENCAO_CORR || p.IdMotivo1 == ID_MOTIVO_MAQUINA_MANUTENCAO_PREV)).ToList(); if(paradasMaquinas.Count > 0) { return "Manutenção"; }else { return "Parada"; } } return null; }
// *********************************************** // 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; }
/* 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); }