public async Task <(Report, string)> GetReportPerProductionOrderId(int productionOrderId, int thingId) { long startDate = 0; long endDate = 0; //Verifica a data inicio e data fim da ordem de produção var histState = await _otherAPIService.GetHistState(productionOrderId); if (histState == null) { return(null, "Historian State not found"); } var histStateStartDate = histState.Where(x => x.state == "active").FirstOrDefault(); var histStateEndDate = histState.Where(x => x.state == "ended").FirstOrDefault(); if (histStateStartDate == null) { return(null, "Start date null"); } if (histStateEndDate == null) { endDate = 999999999999999999; } else { endDate = histStateEndDate.date; } startDate = histStateStartDate.date; var report = await _otherAPIService.GetReportAPI(thingId, startDate, endDate); if (report == null) { return(null, "Not found report"); } return(report, string.Empty); }
public async Task <(RelatorioAlarm, HttpStatusCode)> getAlarms() { try{ client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); string query = "?thingId=" + this.thingId + "&startDate=" + this.startDate + "&endDate=" + this.endDate + "&startat=0&quantity=500"; UriBuilder builder = new UriBuilder(this.configuration["historianAlarm"]); Console.WriteLine("Conectando api historianAlarm" + this.configuration["historianAlarm"]); var json = JObject.Parse(await client.GetStringAsync(builder.ToString() + query))["values"].ToString(); this.listaAlarm = JsonConvert.DeserializeObject <List <Alarm> >(json); Console.WriteLine("Conectou o retorno foi = " + JsonConvert.SerializeObject(listaAlarm)); Console.WriteLine("Ordenando lista"); Console.WriteLine("Ordenou retorno = " + JsonConvert.SerializeObject(this.listaAlarm)); int i = 0; var reportBigTable = await _otherAPIService.GetReportAPI(this.thingId, this.startDate, this.endDate); foreach (Alarm a in this.listaAlarm) { nomes.Add(a.alarmName); } foreach (string item in nomes) { var g = (from t in listaAlarm where t.alarmName == item select t).ToList(); g = g.OrderBy(c => c.alarmDescription).ToList(); tabela = new TabelaFront(thingId, item); tabela.data = new List <Dictionary <string, string> >(); foreach (var s in g) { var rolos = reportBigTable.tags.Where(x => x.name.ToLower() == "rolo"); string rolo = ""; if (rolos != null && rolos.Count() > 0) { var roloIndex = rolos.FirstOrDefault().timestamp.IndexOf(rolos.FirstOrDefault().timestamp.FirstOrDefault(a => a >= s.startDate)); if (roloIndex < 0) { roloIndex = rolos.FirstOrDefault().timestamp.IndexOf(rolos.FirstOrDefault().timestamp.OrderByDescending(a => a).FirstOrDefault(a => a <= s.startDate)); } if (roloIndex >= 0) { rolo = rolos.FirstOrDefault().value.ElementAt(roloIndex); } } var ordens = reportBigTable.tags.Where(x => x.name.ToLower() == "ordem"); string ordem = ""; if (rolos != null && rolos.Count() > 0) { var ordemIndex = ordens.FirstOrDefault().timestamp.IndexOf(ordens.FirstOrDefault().timestamp.FirstOrDefault(a => a >= s.startDate)); if (ordemIndex < 0) { ordemIndex = ordens.FirstOrDefault().timestamp.IndexOf(ordens.FirstOrDefault().timestamp.OrderByDescending(a => a).FirstOrDefault(a => a <= s.startDate)); } if (ordemIndex >= 0) { ordem = ordens.FirstOrDefault().value.ElementAt(ordemIndex); } } tabela.data.Add(new Dictionary <string, string> { ["dateIni"] = s.startDate.ToString(), ["dateEnd"] = s.endDate.ToString(), ["type"] = s.alarmDescription, ["Ordem"] = ordem, ["rolo"] = rolo }); } tabelas.Add(tabela); var group = g.GroupBy(x => new DateTime(x.startDate).Date); alarm = new AlarmFront(thingId.ToString(), item); alarm.data = new List <Dictionary <string, string> >(); Console.WriteLine("Inicio do Loop de grupos por data"); foreach (var s in group) { Console.WriteLine("Contando alarmes"); alarm.data.Add(new Dictionary <string, string> { ["category"] = s.First().startDate.ToString(), ["muito alto"] = s.Where(x => x.alarmDescription.ToLower() == "muito alto").Count().ToString(), ["alto"] = s.Where(x => x.alarmDescription.ToLower() == "alto").Count().ToString(), ["baixo"] = s.Where(x => x.alarmDescription.ToLower() == "baixa").Count().ToString(), ["muito baixo"] = s.Where(x => x.alarmDescription.ToLower() == "muito alto").Count().ToString(), ["offline"] = s.Where(x => x.alarmDescription.ToLower() == "offline").Count().ToString() }); } i++; Console.WriteLine("Adicionou " + i + "elemento na lista de dictionary"); alarms.Add(alarm); } relatorio = new RelatorioAlarm(alarms, tabelas); return(relatorio, HttpStatusCode.OK); }catch (Exception e) { Console.WriteLine(); Console.WriteLine(); Console.Write("Erro : "); Console.Write(e); Console.WriteLine(); Console.WriteLine(); return(null, HttpStatusCode.BadRequest); } }