1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- using HandyControl.Interactivity.Commands;
- using MongoDB.Driver;
- using Shaker.Model;
- using Shaker.ViewModel;
- using ShakerManger.Data;
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Input;
- namespace ShakerManger.ViewModel
- {
- internal class WarnMangerViewModel : DisplayViewModel<ModelBase>, IMainPageViewModel
- {
- private const int MAX_LOG_COUNT = 1000;
- public MainPageType MainPageType => MainPageType.WarnManger;
- private DateTime startTime = DateTime.MinValue;
- private DateTime endTime = DateTime.MaxValue;
- private string keyword = string.Empty;
- private string selectedShaker = "All";
- private bool isEnabled = true;
- private WarnType logType = WarnType.All;
- private void Search()
- {
- MainWindowViewModel.Default.LogManger.AddLog($"查询报警信息,时间{StartTime:yyyy-MM-dd HH:mm:ss}~{EndTime:yyyy-MM-dd HH:mm:ss}{(string.IsNullOrEmpty(Keyword) ? "" : $",关键字{Keyword}")}");
- Logs.Clear();
- List<Shaker.Model.WarnModel> collection = new List<Shaker.Model.WarnModel>();
- if (string.IsNullOrEmpty(Keyword))
- {
- var result = Sql.Default.GetCollection<Shaker.Model.WarnModel>().Find(x => x.DateTime >= StartTime.ToUniversalTime() && x.DateTime <= EndTime.ToUniversalTime() && (SelectedShaker != "All" ? x.ShakerID == SelectedShaker : true) && (logType == WarnType.All ? true : x.WarnType == logType)).Limit(MAX_LOG_COUNT).ToList();
- if (result != null) collection.AddRange(result);
- }
- else
- {
- var result = Sql.Default.GetCollection<Shaker.Model.WarnModel>().Find(x => x.DateTime >= StartTime.ToUniversalTime() && x.DateTime <= EndTime.ToUniversalTime() && x.Message.IndexOf(keyword) >= 0 && (SelectedShaker != "All" ? x.ShakerID == SelectedShaker : true) && (logType == WarnType.All ? true : x.WarnType == logType)).Limit(MAX_LOG_COUNT).ToList();
- if (result != null) collection.AddRange(result);
- }
- if (collection == null) return;
- var user = Sql.Default.GetCollection<Shaker.Model.UserModel>().AsQueryable().ToList();
- if (user != null)
- {
- collection.ForEach(x =>
- {
- if(string.IsNullOrEmpty(x.UserID))
- {
- x.UserID = "---";
- }
- else x.UserID = user?.FirstOrDefault(y => y.Id == x.UserID)?.UserName ?? "未知用户";
- x.ShakerID = MainWindowViewModel.Default.Shakers.Shakers.FirstOrDefault(y => y.Model.Id == x.ShakerID)?.Title ?? "未知振动台";
- });
- }
- if (collection.Count == 0)
- {
- return;
- }
- collection.ForEach(x =>
- {
- Logs.Add(new WarnViewModel(x));
- });
- }
- public ICommand SearchCommand => new DelegateCommand(Search);
- public WarnType LogType { get => logType; set => UpdateProperty(ref logType, value); }
- public DateTime StartTime { get => startTime; set => UpdateProperty(ref startTime, value); }
- public DateTime EndTime { get => endTime; set => UpdateProperty(ref endTime, value); }
- public string Keyword { get => keyword; set => UpdateProperty(ref keyword, value); }
- public string SelectedShaker { get => selectedShaker; set => UpdateProperty(ref selectedShaker, value); }
- public ObservableCollection<KeyValuePair<string, string>> Shakers { get; } = new ObservableCollection<KeyValuePair<string, string>>();
- public bool IsEnabled { get => isEnabled; set =>UpdateProperty(ref isEnabled,value); }
- public string IconPath { get; } = (string)App.Current.FindResource("WarnIcon");
- public ObservableCollection<WarnViewModel> Logs { get; } = new ObservableCollection<WarnViewModel>();
- public override Type View { get; } = typeof(View.WarnLogView);
- }
- }
|