Ejemplo n.º 1
0
        private async Task <bool> NewGetDeviceRunInfo(DeviceRunInfo device, DateTime start, int day)
        {
            HashSet <Guid> guidlist = new HashSet <Guid>();

            foreach (var child in device.DeviceTreeItemViewModel.Children)
            {
                if (child is ItemTreeItemViewModel)
                {
                    ItemTreeItemViewModel itemTree = child as ItemTreeItemViewModel;
                    if (itemTree.T_Item != null && itemTree.BaseAlarmSignal is BaseWaveSignal)
                    {
                        guidlist.Add(itemTree.T_Item.Guid);
                    }
                }
            }

            var result = await _databaseComponent.GetDailyStatisticsData(device.DeviceTreeItemViewModel.ServerIP, guidlist, start.AddDays(1), start.AddDays(1 + day));

            if (result == null || result.Count == 0)
            {
                return(false);
            }
            foreach (var subresult in result)
            {
                if (subresult.Value.Count < day)//数据不完整
                {
                    return(false);
                }
            }
            var infoList = result.Select(p => NewGetSubDeviceRunInfo(p.Value, start, day)).OrderBy(p => p.RunHours).ToList();

            if (infoList.Count > 0)
            {
                int count   = infoList.Count;
                var midinfo = infoList[count / 2];
                device.StartTime     = start;
                device.EndTime       = start.AddDays(day);
                device.RunHours      = midinfo.RunHours;
                device.TotalHours    = day * 24;
                device.StopHours     = device.TotalHours - device.RunHours;
                device.PreAlarmCount = infoList.Select(p => p.PreAlarmCount).Sum();
                device.AlarmCount    = infoList.Select(p => p.AlarmCount).Sum();
                device.DangerCount   = infoList.Select(p => p.DangerCount).Sum();
                device.RunInfo       = midinfo.RunInfo;

                device.ACQDatetime = midinfo.ACQDatetime;
                device.RecordLab   = midinfo.RecordLab;
                device.T_Item_Guid = midinfo.T_Item_Guid;
                device.RPM         = (float)midinfo.RPM;
                device.MaxResult   = midinfo.MaxResult;
                device.Unit        = midinfo.Unit;
                device.AlarmGrade  = midinfo.AlarmGrade;

                device.ItemType = device.DeviceTreeItemViewModel.Children.OfType <ItemTreeItemViewModel>().Where(p => p.T_Item != null && p.T_Item.Guid == midinfo.T_Item_Guid).Select(p => p.T_Item.ItemType).FirstOrDefault();
            }
            return(true);
        }
Ejemplo n.º 2
0
        private async Task GetDeviceRunInfo(DeviceRunInfo device, DateTime start, int day)
        {
            List <Guid> guids = new List <Guid>();

            foreach (var child in device.DeviceTreeItemViewModel.Children)
            {
                if (child is ItemTreeItemViewModel)
                {
                    ItemTreeItemViewModel itemTree = child as ItemTreeItemViewModel;
                    if (itemTree.T_Item != null && itemTree.BaseAlarmSignal is BaseWaveSignal)
                    {
                        guids.Add(itemTree.T_Item.Guid);
                    }
                }
            }

            //htzk123,这个地方需要修改,如果新接口没有问题,那么可以不修改
            var result = await _databaseComponent.GetHistoryData <D_WirelessVibrationSlot>(device.DeviceTreeItemViewModel.ServerIP, guids.ToArray(), new string[] { "T_Item_Guid", "ACQDatetime", "Result", "Unit", "AlarmGrade", "RPM", "RecordLab", "IsValidWave", "ExtraInfoJSON" }, start, start.AddDays(day), null, null);

            if (result == null || result.Count == 0)
            {
                return;
            }
            var infoList = result.GroupBy(p => p.T_Item_Guid, (key, group) => new { Key = key, Value = group }).Select(p => GetSubDeviceRunInfo(p.Value.ToList(), start, day)).OrderBy(p => p.RunHours).ToList();

            if (infoList.Count > 0)
            {
                int count   = infoList.Count;
                var midinfo = infoList[count / 2];
                device.StartTime     = start;
                device.EndTime       = start.AddDays(day);
                device.RunHours      = midinfo.RunHours;
                device.TotalHours    = day * 24;
                device.StopHours     = device.TotalHours - device.RunHours;
                device.PreAlarmCount = infoList.Select(p => p.PreAlarmCount).Sum();
                device.AlarmCount    = infoList.Select(p => p.AlarmCount).Sum();
                device.DangerCount   = infoList.Select(p => p.DangerCount).Sum();
                device.RunInfo       = midinfo.RunInfo;

                device.ACQDatetime = midinfo.ACQDatetime;
                device.RecordLab   = midinfo.RecordLab;
                device.T_Item_Guid = midinfo.T_Item_Guid;
                device.RPM         = (float)midinfo.RPM;
                device.MaxResult   = midinfo.MaxResult;
                device.Unit        = midinfo.Unit;
                device.AlarmGrade  = midinfo.AlarmGrade;

                device.ItemType = device.DeviceTreeItemViewModel.Children.OfType <ItemTreeItemViewModel>().Where(p => p.T_Item != null && p.T_Item.Guid == midinfo.T_Item_Guid).Select(p => p.T_Item.ItemType).FirstOrDefault();
            }
        }
Ejemplo n.º 3
0
        private async void Search()
        {
            var sw = Stopwatch.StartNew();

            try
            {
                int number = 0;
                Status = ViewModelStatus.Querying;

                DevicesView = new ObservableCollection <DeviceRunInfo>();
                var deviceTrees = _cardProcess.GetDevices(selectedOrganization);
                if (deviceTrees == null)
                {
                    return;
                }

                bool newmethod = true;
                foreach (var deviceTree in deviceTrees)
                {
                    DeviceRunInfo device = new DeviceRunInfo();
                    device.DeviceTreeItemViewModel = deviceTree;
                    WaitInfo = "数据统计: " + number.ToString();
                    if (newmethod == true)
                    {
                        newmethod = await NewGetDeviceRunInfo(device, StartTime, SelectedDay);//优先使用新方法
                    }
                    if (newmethod == false)
                    {
                        await GetDeviceRunInfo(device, StartTime, SelectedDay);//兼容没有统计方法的服务器
                    }
                    number++;

                    DevicesView.Add(device);
                }
                if (number > 0)
                {
                    UpdateChart();
                }
            }
            catch (Exception ex)
            {
                _eventAggregator.GetEvent <ThrowExceptionEvent>().Publish(Tuple.Create <string, Exception>("设备数据-运行状态查询", ex));
            }
            finally
            {
                Console.WriteLine("消耗时间" + sw.Elapsed.ToString());
                Status = ViewModelStatus.None;
            }
        }
Ejemplo n.º 4
0
        private async Task GetDeviceRunInfo(DeviceRunInfo device, DateTime start, int day)
        {
            List <Guid> guids = new List <Guid>();

            foreach (var child in device.DeviceTreeItemViewModel.Children)
            {
                if (child is ItemTreeItemViewModel)
                {
                    ItemTreeItemViewModel itemTree = child as ItemTreeItemViewModel;
                    if (itemTree.T_Item != null && itemTree.T_Item.ItemType == (int)ChannelType.WirelessVibrationChannelInfo)
                    {
                        guids.Add(itemTree.T_Item.Guid);
                    }
                }
            }

            var result = await _databaseComponent.GetHistoryData <D_WirelessVibrationSlot>(device.DeviceTreeItemViewModel.ServerIP, guids.ToArray(), new string[] { "T_Item_Guid", "ACQDatetime", "Result", "Unit", "AlarmGrade", "ExtraInfoJSON" }, start, start.AddDays(day), null, null);

            if (result == null || result.Count == 0)
            {
                return;
            }

            var infoList = result.GroupBy(p => p.T_Item_Guid, (key, group) => new { Key = key, Value = group }).Select(p => GetSubDeviceRunInfo(p.Value.ToList(), start, day)).OrderBy(p => p.RunHours).ToList();

            if (infoList.Count > 0)
            {
                int count   = infoList.Count;
                var midinfo = infoList[count / 2];
                device.StartTime = start;
                device.EndTime   = start.AddDays(day);
                device.RunHours  = midinfo.RunHours;
                if (device.RunHours > day * 24)
                {
                    device.RunHours = day * 24;
                }
                device.TotalHours    = day * 24;
                device.StopHours     = device.TotalHours - device.RunHours;
                device.PreAlarmCount = infoList.Select(p => p.PreAlarmCount).Sum();
                device.AlarmCount    = infoList.Select(p => p.AlarmCount).Sum();
                device.DangerCount   = infoList.Select(p => p.DangerCount).Sum();
                device.RunInfo       = midinfo.RunInfo;
            }
        }
Ejemplo n.º 5
0
        private async void SearchAll()
        {
            HashSet <Guid> guidlist = new HashSet <Guid>();
            string         ip       = null;

            DevicesView = new ObservableCollection <DeviceRunInfo>();
            var deviceTrees = _cardProcess.GetDevices(selectedOrganization);

            if (deviceTrees == null)
            {
                return;
            }

            foreach (var deviceTree in deviceTrees)
            {
                foreach (var child in deviceTree.Children)
                {
                    if (child is ItemTreeItemViewModel)
                    {
                        ItemTreeItemViewModel itemTree = child as ItemTreeItemViewModel;
                        if (itemTree.T_Item != null && itemTree.T_Item.ItemType == (int)ChannelType.WirelessVibrationChannelInfo)
                        {
                            guidlist.Add(itemTree.T_Item.Guid);
                        }
                    }
                }
                if (ip == null)
                {
                    ip = deviceTree.ServerIP;
                }
            }

            var runlist = await _databaseComponent.GetStatisticsData(ip, guidlist);

            if (runlist == null)
            {
                return;
            }
            var allcounts = runlist.Where(o => o.Value.ContainsKey("NormalTimeLength") && o.Value.ContainsKey("PreAlarmTimeLength") && o.Value.ContainsKey("AlarmTimeLength") && o.Value.ContainsKey("DangerTimeLength")).OrderBy(o => o.Value["NormalTimeLength"] + o.Value["PreAlarmTimeLength"] + o.Value["AlarmTimeLength"] + o.Value["DangerTimeLength"]).ToList();

            foreach (var deviceTree in deviceTrees)
            {
                DeviceRunInfo device = new DeviceRunInfo();
                device.DeviceTreeItemViewModel = deviceTree;

                var counts = allcounts.Where(o => device.DeviceTreeItemViewModel.Children.OfType <ItemTreeItemViewModel>().Select(p => p.T_Item.Guid).Contains(o.Key)).ToList();
                if (counts.Count > 0)
                {
                    int count = counts.Count;
                    var alarm = counts[count / 2];
                    device.StartTime     = new DateTime((long)alarm.Value["FirstUploadTime"]);
                    device.EndTime       = new DateTime((long)alarm.Value["LastUploadTime"]);
                    device.RunHours      = (alarm.Value["NormalTimeLength"] + alarm.Value["PreAlarmTimeLength"] + alarm.Value["AlarmTimeLength"] + alarm.Value["DangerTimeLength"]) / 3600;
                    device.TotalHours    = (device.EndTime - device.StartTime).TotalHours;
                    device.StopHours     = device.TotalHours - device.RunHours;
                    device.PreAlarmCount = counts.Select(p => p.Value["PreAlarmCount"]).Sum();
                    device.AlarmCount    = counts.Select(p => p.Value["AlarmCount"]).Sum();
                    device.DangerCount   = counts.Select(p => p.Value["DangerCount"]).Sum();
                }
                DevicesView.Add(device);
            }
            UpdateChart();
        }
Ejemplo n.º 6
0
        private DeviceRunInfo NewGetSubDeviceRunInfo(List <D_SlotStatistic> result, DateTime start, int day)
        {
            DeviceRunInfo devicerunInfo = new DeviceRunInfo();

            devicerunInfo.RunInfo = new List <RunInfo>();
            for (int i = 0; i < day; i++)
            {
                devicerunInfo.RunInfo.Add(new RunInfo()
                {
                    Time = start.AddDays(i),
                });
            }

            devicerunInfo.RunHours      = 0;
            devicerunInfo.PreAlarmCount = 0;
            devicerunInfo.AlarmCount    = 0;
            devicerunInfo.DangerCount   = 0;

            if (result != null && result.Count > 0)
            {
                //分组
                foreach (var dayresult in result)
                {
                    DateTime time      = dayresult.StatisticsTime.AddDays(-1);
                    double   hours     = 0;
                    var      extraData = JsonConvert.DeserializeObject <SlotExtraData>(dayresult.ExtraData);
                    if (extraData != null)
                    {
                        M9600.Common.DTO.Device.ExtraInfo extraInfo = new M9600.Common.DTO.Device.ExtraInfo();
                        extraInfo = DictionaryToClassHelper.DicToObject <M9600.Common.DTO.Device.ExtraInfo>(extraData.StatisticsInfo.ToDictionary(p => p.Key, p => p.Value as object));

                        var runhours = (extraInfo.NormalTimeLength + extraInfo.PreAlarmTimeLength + extraInfo.AlarmTimeLength + extraInfo.DangerTimeLength) / 3600;
                        var allhours = (extraInfo.InvalidTimeLength + extraInfo.NotOKTimeLength + extraInfo.NormalTimeLength + extraInfo.PreAlarmTimeLength + extraInfo.AlarmTimeLength + extraInfo.DangerTimeLength) / 3600;

                        devicerunInfo.RunHours += runhours / allhours * 24;
                        hours = runhours / allhours * 24;
                        devicerunInfo.PreAlarmCount += extraInfo.PreAlarmCount;
                        devicerunInfo.AlarmCount    += extraInfo.AlarmCount;
                        devicerunInfo.DangerCount   += extraInfo.DangerCount;
                    }


                    RunInfo runinfo = devicerunInfo.RunInfo.Where(p => p.Time.Year == time.Year && p.Time.Month == time.Month && p.Time.Day == time.Day).First();
                    runinfo.RunHours = hours;
                    var secondmax = JsonConvert.DeserializeObject <SlotDiagnosticData>(dayresult.SecondaryMaxDiagnosticData);
                    if (secondmax != null)
                    {
                        runinfo.Result      = secondmax.Result;
                        runinfo.ACQDatetime = secondmax.ACQDateTime;
                        runinfo.RecordLab   = secondmax.RecordLab.Value;
                        runinfo.T_Item_Guid = dayresult.T_Item_Guid;
                        runinfo.RPM         = (float)secondmax.RPM;
                        runinfo.Unit        = secondmax.Unit;
                        runinfo.AlarmGrade  = (AlarmGrade)(secondmax.AlarmGrade & 0x00ffff00);
                    }
                }

                RunInfo maxruninfo = devicerunInfo.RunInfo.OrderBy(p => p.Result).LastOrDefault();
                devicerunInfo.ACQDatetime = maxruninfo.ACQDatetime;
                devicerunInfo.RecordLab   = maxruninfo.RecordLab;
                devicerunInfo.T_Item_Guid = maxruninfo.T_Item_Guid;
                devicerunInfo.RPM         = maxruninfo.RPM;
                devicerunInfo.MaxResult   = maxruninfo.Result;
                devicerunInfo.Unit        = maxruninfo.Unit;
                devicerunInfo.AlarmGrade  = maxruninfo.AlarmGrade;
            }

            return(devicerunInfo);
        }
Ejemplo n.º 7
0
        private DeviceRunInfo GetSubDeviceRunInfo(List <D_WirelessVibrationSlot> result, DateTime start, int day)
        {
            DeviceRunInfo devicerunInfo = new DeviceRunInfo();

            devicerunInfo.RunInfo = new List <RunInfo>();
            for (int i = 0; i < day; i++)
            {
                devicerunInfo.RunInfo.Add(new RunInfo()
                {
                    Time = start.AddDays(i),
                });
            }

            devicerunInfo.RunHours      = 0;
            devicerunInfo.PreAlarmCount = 0;
            devicerunInfo.AlarmCount    = 0;
            devicerunInfo.DangerCount   = 0;

            if (result != null && result.Count > 0)
            {
                result = result.OrderBy(p => p.ACQDatetime).ToList();
                //分组
                var groupresult = result.GroupBy(p => new { Year = p.ACQDatetime.Year, Month = p.ACQDatetime.Month, Day = p.ACQDatetime.Day });
                foreach (var groupdata in groupresult)
                {
                    double hours = 0;
                    foreach (var data in groupdata)
                    {
                        var extraInfoJson = data.ExtraInfoJSON;
                        if (!string.IsNullOrWhiteSpace(extraInfoJson))
                        {
                            M9600.Common.DTO.Device.ExtraInfo extraInfo = JsonConvert.DeserializeObject <M9600.Common.DTO.Device.ExtraInfo>(extraInfoJson.Substring(1, extraInfoJson.Length - 2));
                            if (extraInfo != null)
                            {
                                switch (data.AlarmGrade & 0xff)
                                {
                                case 0: break;

                                case 1: hours += extraInfo.NormalTimeLength / 3600; break;

                                case 2: hours += extraInfo.PreAlarmTimeLength / 3600; break;

                                case 3: hours += extraInfo.AlarmTimeLength / 3600; break;

                                case 4: hours += extraInfo.DangerTimeLength / 3600; break;
                                }

                                devicerunInfo.PreAlarmCount += extraInfo.PreAlarmCount;
                                devicerunInfo.AlarmCount    += extraInfo.AlarmCount;
                                devicerunInfo.DangerCount   += extraInfo.DangerCount;
                            }
                        }
                    }
                    hours = (hours > 24) ? 24 : hours;
                    DateTime time = groupdata.First().ACQDatetime;
                    devicerunInfo.RunHours += hours;
                    RunInfo runinfo = devicerunInfo.RunInfo.Where(p => p.Time.Year == time.Year && p.Time.Month == time.Month && p.Time.Day == time.Day).First();
                    runinfo.RunHours = hours;
                    runinfo.Result   = groupdata.OrderBy(p => p.AlarmGrade & 0xff).ThenBy(n => n.Result).Select(p => p.Result.Value).LastOrDefault();
                }
            }

            return(devicerunInfo);
        }
Ejemplo n.º 8
0
        private DeviceRunInfo GetSubDeviceRunInfo(List <D_WirelessVibrationSlot> result, DateTime start, int day)
        {
            DeviceRunInfo devicerunInfo = new DeviceRunInfo();

            devicerunInfo.RunInfo = new List <RunInfo>();
            for (int i = 0; i < day; i++)
            {
                devicerunInfo.RunInfo.Add(new RunInfo()
                {
                    Time = start.AddDays(i),
                });
            }

            devicerunInfo.RunHours      = 0;
            devicerunInfo.PreAlarmCount = 0;
            devicerunInfo.AlarmCount    = 0;
            devicerunInfo.DangerCount   = 0;

            if (result != null && result.Count > 0)
            {
                //分组
                var groupresult = result.GroupBy(p => new { Year = p.ACQDatetime.Year, Month = p.ACQDatetime.Month, Day = p.ACQDatetime.Day });
                foreach (var groupdata in groupresult)
                {
                    double hours = 0;
                    foreach (var data in groupdata)
                    {
                        var extraInfoJson = data.ExtraInfoJSON;
                        if (!string.IsNullOrWhiteSpace(extraInfoJson))
                        {
                            M9600.Common.DTO.Device.ExtraInfo extraInfo = JsonConvert.DeserializeObject <M9600.Common.DTO.Device.ExtraInfo>(extraInfoJson.Substring(1, extraInfoJson.Length - 2));
                            if (extraInfo != null)
                            {
                                switch (data.AlarmGrade & 0xff)
                                {
                                case 0: break;    //无效数据可能不存

                                case 1: hours += extraInfo.NormalTimeLength / 3600; break;

                                case 2: hours += extraInfo.PreAlarmTimeLength / 3600; break;

                                case 3: hours += extraInfo.AlarmTimeLength / 3600; break;

                                case 4: hours += extraInfo.DangerTimeLength / 3600; break;
                                }
                                devicerunInfo.PreAlarmCount += extraInfo.PreAlarmCount;
                                devicerunInfo.AlarmCount    += extraInfo.AlarmCount;
                                devicerunInfo.DangerCount   += extraInfo.DangerCount;
                            }
                        }
                    }

                    hours = (hours > 24) ? 24 : hours;
                    DateTime time = groupdata.First().ACQDatetime;
                    devicerunInfo.RunHours += hours;
                    RunInfo runinfo = devicerunInfo.RunInfo.Where(p => p.Time.Date == time.Date).First();
                    runinfo.RunHours = hours;
                    var secondmax = groupdata.Where(p => p.IsValidWave == true).OrderByDescending(p => p.AlarmGrade & 0xff).ThenByDescending(n => n.Result).Skip(1).Take(1).FirstOrDefault();
                    if (secondmax != null)//优先查有波形的
                    {
                        runinfo.Result      = secondmax.Result.Value;
                        runinfo.ACQDatetime = secondmax.ACQDatetime;
                        runinfo.RecordLab   = (secondmax.IsValidWave == true) ? secondmax.RecordLab.Value : new Guid();
                        runinfo.T_Item_Guid = secondmax.T_Item_Guid;
                        runinfo.RPM         = (float)secondmax.RPM;
                        runinfo.Unit        = secondmax.Unit;
                        runinfo.AlarmGrade  = (AlarmGrade)(secondmax.AlarmGrade & 0x00ffff00);
                    }
                    else
                    {
                        secondmax = groupdata.OrderByDescending(p => p.AlarmGrade & 0xff).ThenByDescending(n => n.Result).Skip(1).Take(1).FirstOrDefault();
                        if (secondmax != null)
                        {
                            runinfo.Result      = secondmax.Result.Value;
                            runinfo.ACQDatetime = secondmax.ACQDatetime;
                            runinfo.RecordLab   = (secondmax.IsValidWave == true) ? secondmax.RecordLab.Value : new Guid();
                            runinfo.T_Item_Guid = secondmax.T_Item_Guid;
                            runinfo.RPM         = (float)secondmax.RPM;
                            runinfo.Unit        = secondmax.Unit;
                            runinfo.AlarmGrade  = (AlarmGrade)(secondmax.AlarmGrade & 0x00ffff00);
                        }
                    }
                }

                RunInfo maxruninfo = devicerunInfo.RunInfo.OrderBy(p => p.Result).LastOrDefault();
                devicerunInfo.ACQDatetime = maxruninfo.ACQDatetime;
                devicerunInfo.RecordLab   = maxruninfo.RecordLab;
                devicerunInfo.T_Item_Guid = maxruninfo.T_Item_Guid;
                devicerunInfo.RPM         = maxruninfo.RPM;
                devicerunInfo.MaxResult   = maxruninfo.Result;
                devicerunInfo.Unit        = maxruninfo.Unit;
                devicerunInfo.AlarmGrade  = maxruninfo.AlarmGrade;
            }

            return(devicerunInfo);
        }
Ejemplo n.º 9
0
        private async void Search()
        {
            var sw = Stopwatch.StartNew();

            try
            {
                int number = 0;
                Status = ViewModelStatus.Querying;

                DevicesView = new ObservableCollection <DeviceRunInfo>();
                var deviceTrees = _cardProcess.GetDevices(selectedOrganization);
                if (deviceTrees == null)
                {
                    return;
                }

                bool newmethod = true;
                foreach (var deviceTree in deviceTrees)
                {
                    DeviceRunInfo device = new DeviceRunInfo();
                    device.DeviceTreeItemViewModel = deviceTree;
                    WaitInfo = "数据统计: " + number.ToString();
                    if (newmethod == true)
                    {
                        newmethod = await NewGetDeviceRunInfo(device, StartTime, SelectedDay);//优先使用新方法
                    }
                    if (newmethod == false)
                    {
                        await GetDeviceRunInfo(device, StartTime, SelectedDay);//兼容没有统计方法的服务器
                    }
                    number++;

                    DevicesView.Add(device);
                }
                Dictionary <Guid, Tuple <Guid, DateTime> > recordLabsWirelessVibration = new Dictionary <Guid, Tuple <Guid, DateTime> >();//需要修改,扩展除了无限振动卡
                foreach (var device in DevicesView)
                {
                    if (device.RecordLab == new Guid())
                    {
                        continue;
                    }
                    if (device.ItemType == (int)ChannelType.WirelessVibrationChannelInfo)
                    {
                        recordLabsWirelessVibration.Add(device.RecordLab, Tuple.Create <Guid, DateTime>(device.T_Item_Guid, device.ACQDatetime));
                    }
                }

                if (DevicesView.Count > 0)
                {
                    var waves = await _databaseComponent.GetHistoryWaveformData <D_WirelessVibrationSlot_Waveform>(DevicesView[0].DeviceTreeItemViewModel.ServerIP, recordLabsWirelessVibration);

                    foreach (var wave in waves.GroupBy(p => p.T_Item_Guid))
                    {
                        DeviceRunInfo device = DevicesView.Where(p => p.T_Item_Guid == wave.FirstOrDefault().T_Item_Guid).First();
                        string        diagnosticInfo;
                        string        diagnosticAdvice;
                        DiagnosticInfoClass.GetDiagnosticInfo(wave.FirstOrDefault().AlarmGrade, device.T_Item_Guid, wave.FirstOrDefault(), device.RPM, out diagnosticInfo, out diagnosticAdvice);
                        device.DiagnosticInfo   = diagnosticInfo;
                        device.DiagnosticAdvice = diagnosticAdvice;
                    }
                }
                if (number > 0)
                {
                    UpdateChart();
                    GetConclusion();
                }
            }
            catch (Exception ex)
            {
                _eventAggregator.GetEvent <ThrowExceptionEvent>().Publish(Tuple.Create <string, Exception>("设备数据-运行状态查询", ex));
            }
            finally
            {
                Console.WriteLine("消耗时间" + sw.Elapsed.ToString());
                Status = ViewModelStatus.None;
            }
        }