private List <DeviceHourlyDataInfo> GetSubDeviceHourlyData(List <D_WirelessVibrationSlot> result, DateTime start, int day) { List <DeviceHourlyDataInfo> devices = new List <DeviceHourlyDataInfo>(); for (int i = 0; i < day; i++) { DeviceHourlyDataInfo device = new DeviceHourlyDataInfo(); device.ACQDate = start.AddDays(i); device.HasData = false; devices.Add(device); } if (result != null && result.Count > 0) { //分组 var groupresult = result.OrderBy(p => p.ACQDatetime).GroupBy(p => new { Year = p.ACQDatetime.Year, Month = p.ACQDatetime.Month, Day = p.ACQDatetime.Day }); foreach (var groupdata in groupresult)//按天数据 { D_WirelessVibrationSlot firstdata = groupdata.FirstOrDefault(); DeviceHourlyDataInfo device = devices.Where(p => p.ACQDate.Date == firstdata.ACQDatetime.Date).FirstOrDefault(); device.Unit = firstdata.Unit; device.HasData = true; var subgroupresult = groupdata.GroupBy(p => p.ACQDatetime.Hour); foreach (var subgroupdata in subgroupresult)//按小时数据 { var data = subgroupdata.FirstOrDefault(); #region if (data.ACQDatetime.Hour == 0) { device.HourlyData0 = data.Result.Value; } else if (data.ACQDatetime.Hour == 1) { device.HourlyData1 = data.Result.Value; } else if (data.ACQDatetime.Hour == 2) { device.HourlyData2 = data.Result.Value; } else if (data.ACQDatetime.Hour == 3) { device.HourlyData3 = data.Result.Value; } else if (data.ACQDatetime.Hour == 4) { device.HourlyData4 = data.Result.Value; } else if (data.ACQDatetime.Hour == 5) { device.HourlyData5 = data.Result.Value; } else if (data.ACQDatetime.Hour == 6) { device.HourlyData6 = data.Result.Value; } else if (data.ACQDatetime.Hour == 7) { device.HourlyData7 = data.Result.Value; } else if (data.ACQDatetime.Hour == 8) { device.HourlyData8 = data.Result.Value; } else if (data.ACQDatetime.Hour == 9) { device.HourlyData9 = data.Result.Value; } else if (data.ACQDatetime.Hour == 10) { device.HourlyData10 = data.Result.Value; } else if (data.ACQDatetime.Hour == 11) { device.HourlyData11 = data.Result.Value; } else if (data.ACQDatetime.Hour == 12) { device.HourlyData12 = data.Result.Value; } else if (data.ACQDatetime.Hour == 13) { device.HourlyData13 = data.Result.Value; } else if (data.ACQDatetime.Hour == 14) { device.HourlyData14 = data.Result.Value; } else if (data.ACQDatetime.Hour == 15) { device.HourlyData15 = data.Result.Value; } else if (data.ACQDatetime.Hour == 16) { device.HourlyData16 = data.Result.Value; } else if (data.ACQDatetime.Hour == 17) { device.HourlyData17 = data.Result.Value; } else if (data.ACQDatetime.Hour == 18) { device.HourlyData18 = data.Result.Value; } else if (data.ACQDatetime.Hour == 19) { device.HourlyData19 = data.Result.Value; } else if (data.ACQDatetime.Hour == 20) { device.HourlyData20 = data.Result.Value; } else if (data.ACQDatetime.Hour == 21) { device.HourlyData21 = data.Result.Value; } else if (data.ACQDatetime.Hour == 22) { device.HourlyData22 = data.Result.Value; } else if (data.ACQDatetime.Hour == 23) { device.HourlyData23 = data.Result.Value; } #endregion } } } return(devices); }
private async void Search() { var sw = Stopwatch.StartNew(); try { int number = 0; Status = ViewModelStatus.Querying; DevicesView.Clear(); resultDevices.Clear(); DeviceHourlySelectedResult.Clear(); for (int i = 0; i < SelectedDay; i++) { DeviceHourlySelectedResult.Add(new DeviceHourlySelectedResult() { DateTime = StartTime.AddDays(i), IsChecked = true }); } var deviceTrees = _cardProcess.GetDevices(selectedOrganization); if (deviceTrees == null) { return; } foreach (var deviceTree in deviceTrees) { WaitInfo = "数据统计: " + number.ToString(); List <DeviceHourlyDataInfo> devices = new List <DeviceHourlyDataInfo>(); DateTime start = StartTime; for (int day = SelectedDay; day > 0;) { int dayRange = day > 30 ? 30 : day; devices.AddRange(await GetDeviceHourlyData(deviceTree, start, dayRange)); day = day - dayRange; start = start.AddDays(dayRange); } if (devices == null) { continue; } devices.ForEach(p => p.DeviceTreeItemViewModel = deviceTree); resultDevices.Add(devices); DeviceHourlyDataInfo device = devices.FirstOrDefault(); number++; DevicesView.Add(device); } } catch (Exception ex) { _eventAggregator.GetEvent <ThrowExceptionEvent>().Publish(Tuple.Create <string, Exception>("设备数据-运行状态查询", ex)); } finally { Console.WriteLine("消耗时间" + sw.Elapsed.ToString()); Status = ViewModelStatus.None; } }