using NEIntelligentControl2.Service.Station; using NEIntelligentControl2.Service.Windturbine; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; namespace NEIntelligentControl2.Windows { /// /// 控制跟踪窗口 /// public partial class ControlTrackWindow : Window { private ControlManager _ControlManager; private StationManager _StationManager; private bool _IsActived; public ControlTrackWindow(ControlManager cm,StationManager sm) { InitializeComponent(); _ControlManager = cm; _StationManager = sm; Init(); } private void Init() { _TBStart.Text = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd HH:mm:ss"); _TBEnd.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); var vs = _StationManager.GetStationInfos().Where(s => s.Type == Models.Station.StationType.Wind).ToList(); vs.Insert(0, new Models.Station.StationInfo() { Name = "未选择", Id = "" }); _CBStation.ItemsSource = vs; _CBStation.SelectedIndex = 0; } public static void ShowWindow() { ControlTrackWindow ctw = App.ServiceProvider.GetService(typeof(ControlTrackWindow)) as ControlTrackWindow; ctw.Owner = Application.Current.MainWindow; ctw.ShowDialog(); } private void Window_Loaded(object sender, RoutedEventArgs e) { _IsActived = true; Task.Run(RefreshControlLog); } private async void RefreshControlLog() { while (_IsActived) { try { var v = _ControlManager.GetControlLog(); Dispatcher.Invoke(() => _TBLog.Text = v); } catch { } await Task.Delay(5000); } } private void Button_Click(object sender, RoutedEventArgs e) { switch (((Control)sender).Tag) { case "search": SearchControlLog(); break; case "close": this.Close(); break; default:return; } } /// /// 查询操作日志 /// private void SearchControlLog() { var start = _TBStart.Text; var end = _TBEnd.Text; var station = (_CBStation.SelectedItem as Models.Station.StationInfo)?.Id; Task.Run(() => { try { DateTime.TryParse(start, out DateTime startTime); DateTime.TryParse(end, out DateTime endTime); string stimestring = $"{startTime.Year}/{startTime.Month}/{startTime.Day} {startTime.Hour}:{startTime.Minute}:{startTime.Second}"; string etimestring = $"{endTime.Year}/{endTime.Month}/{endTime.Day} {endTime.Hour}:{endTime.Minute}:{endTime.Second}"; var v = _ControlManager.GetControlRecord(station, stimestring, etimestring); if (v == null) return; foreach(var vv in v.DataList) { vv.StationName = _StationManager.GetStatonInfo(vv.StationId)?.FullName; } Dispatcher.Invoke(() => _DGControlLog.ItemsSource = v.DataList); } catch { } }); } private void TextBox_LostFocus(object sender, RoutedEventArgs e) { SearchControlLog(); } private void _CBStation_SelectionChanged(object sender, SelectionChangedEventArgs e) { SearchControlLog(); } private void TabItem_Loaded(object sender, RoutedEventArgs e) { SearchControlLog(); } private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { _IsActived = false; } } }