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;
            }
        }