123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- using Microsoft.Win32;
- using NEIntelligentControl2.Models;
- using NEIntelligentControl2.Models.AGC;
- using NEIntelligentControl2.Models.Datas;
- using NEIntelligentControl2.Models.Messages;
- using NEIntelligentControl2.Service.WebSocket;
- using System;
- using System.Collections.Generic;
- using System.IO;
- 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
- {
- /// <summary>
- /// AGC曲线窗口
- /// </summary>
- public partial class AGCLineWindow : Window
- {
- private AGCInfo _AGCInfo;
- private ViewModel _ViewModel;
- private UrlManager _UrlManager;
- private WEBHelper _WEBHelper;
- private string _HistoyUrl;
- public AGCLineWindow(ViewModel vm, AGCInfo info)
- {
- InitializeComponent();
- _ViewModel = vm;
- _ViewModel.AxisX.IsZoomEnabled = true;
- _ViewModel.AxisX.IsPanEnabled = true;
- _AGCInfo = info;
- _UrlManager = App.ServiceProvider.GetService(typeof(UrlManager)) as UrlManager;
- _WEBHelper = App.ServiceProvider.GetService(typeof(WEBHelper)) as WEBHelper;
- _HistoyUrl = _UrlManager.DataServicePath;
- Init();
- }
- private void Init()
- {
- this.Title = _AGCInfo.Title;
- _pv.Model = _ViewModel;
- _ViewModel.AxisX.StringFormat = "MM-dd HH:mm";
- var dt = DateTime.Now;
- _tbStart.Text = dt.AddHours(-8).ToString("yyyy-MM-dd HH:mm:ss");
- _tbEnd.Text = dt.ToString("yyyy-MM-dd HH:mm:ss");
- }
- internal static void ShowWindow(ViewModel vm, AGCInfo info)
- {
- ViewModel nvm = new ViewModel(vm.ActPower, vm.PowerSet);
- AGCLineWindow alw = new AGCLineWindow(nvm, info);
- alw.Owner = Application.Current.MainWindow;
- alw.ShowDialog();
- }
- private void Button_Click(object sender, RoutedEventArgs e)
- {
- switch (((Control)sender).Tag)
- {
- case "search":// 搜索
- Search();
- break;
- case "output":// 导出
- Output();
- break;
- default: return;
- }
- }
- /// <summary>
- /// 导出
- /// </summary>
- private void Output()
- {
- SaveFileDialog sfd = new SaveFileDialog();
- sfd.Title = "导出AGC数据";
- sfd.Filter = "csv文件(.csv)|*.csv";
- var v = sfd.ShowDialog();
- if (v != true) return;
- var path = sfd.FileName;
- try
- {
- ExportToCSV(path);
- MessageWindow.ShowMessage("导出成功!");
- }
- catch
- {
- MessageWindow.ShowMessage("导出失败!");
- }
- }
- private void ExportToCSV(string filePathOne)
- {
- FileStream fs = System.IO.File.Create(filePathOne);
- StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.UTF8);
- StringBuilder row_txt = new StringBuilder();
- sw.WriteLine($"{this.Title}\n实发有功,有功设定限值,时间戳");
- for (int i = 0; i < _ViewModel.ActPower.Count; ++i)
- {
- DateTime dt = _ViewModel.ActPower[i].Ts.GetLongDateTime();
- row_txt.Append(_ViewModel.ActPower[i].Value).Append(",");
- if (i < _ViewModel.PowerSet.Count)
- {
- row_txt.Append(_ViewModel.PowerSet[i].Value).Append(",");
- }
- row_txt.Append(dt.ToString("yyyy-MM-dd HH:mm:ss")).Append("\n");
- }
- sw.WriteLine(row_txt.ToString());//写入更改
- sw.Flush(); //此处必须有此操作
- }
- /// <summary>
- /// 搜索
- /// </summary>
- private void Search()
- {
- bool bs = DateTime.TryParse(_tbStart.Text, out DateTime ds);
- bool be = DateTime.TryParse(_tbEnd.Text, out DateTime de);
- if (!(bs && be))
- {
- MessageWindow.ShowMessage("时间格式错误!");
- return;
- }
- Task.Run(initHistoryData);
- void initHistoryData()
- {
- var psTag = _AGCInfo.AiPoints.Where(v => v.Type == TagType.PowerSet).FirstOrDefault();
- var apTag = _AGCInfo.AiPoints.Where(v => v.Type == TagType.ActualPower).FirstOrDefault();
- try
- {
- var vps = _WEBHelper.HttpGetJSON<List<TsData>>($"{_HistoyUrl}/ts/history/snap?interval=60&tagName={psTag?.Tag}&startTs={ds.GetTimeSpan()}&endTs={de.GetTimeSpan()}");
- var vap = _WEBHelper.HttpGetJSON<List<TsData>>($"{_HistoyUrl}/ts/history/snap?interval=60&tagName={apTag?.Tag}&startTs={ds.GetTimeSpan()}&endTs={de.GetTimeSpan()}");
- if (vps != null)
- {
- _ViewModel.SetValue(psTag, vps);
- }
- if (vap != null)
- {
- _ViewModel.SetValue(apTag, vap);
- }
- Dispatcher.Invoke(() => {
- _pv.Model = null;
- _pv.Model = _ViewModel;
- });
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.ToString());
- MessageWindow.ShowMessage("数据请求出现错误:" + ex.Message);
- }
- }
- }
- }
- }
|