历史曲线的多日期合并
This commit is contained in:
@@ -15,8 +15,8 @@ using Prism.Events;
|
||||
using Prism.Regions;
|
||||
using Prism.Services.Dialogs;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Diagnostics;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
@@ -224,15 +224,7 @@ namespace CapMachine.Wpf.ViewModels
|
||||
set { _SelectedHistoryExp = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
private HistoryWorkCondFile _SelectedHistoryWorkCondFile;
|
||||
/// <summary>
|
||||
/// 选中的历史数据文件
|
||||
/// </summary>
|
||||
public HistoryWorkCondFile SelectedHistoryWorkCondFile
|
||||
{
|
||||
get { return _SelectedHistoryWorkCondFile; }
|
||||
set { _SelectedHistoryWorkCondFile = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 当前搜索的工况条件
|
||||
@@ -268,7 +260,13 @@ namespace CapMachine.Wpf.ViewModels
|
||||
if (par is HistoryExp)
|
||||
{
|
||||
SelectedHistoryExp = par as HistoryExp;
|
||||
ListHistoryWorkCondFile = SelectedHistoryExp!.HistoryWorkCondFiles!;
|
||||
var files = SelectedHistoryExp!.HistoryWorkCondFiles!;
|
||||
foreach (var f in files)
|
||||
{
|
||||
if (f != null) f.IsSelected = false;
|
||||
}
|
||||
ListHistoryWorkCondFile = files.ToList();
|
||||
//ListHistoryWorkCondFile = ListHistoryWorkCondFile.ToList();
|
||||
return;
|
||||
}
|
||||
if ((par as SelectionChangedEventArgs)!.AddedItems.Count == 0)
|
||||
@@ -290,63 +288,18 @@ namespace CapMachine.Wpf.ViewModels
|
||||
if (Selecteddata != null)
|
||||
{
|
||||
SelectedHistoryExp = Selecteddata;
|
||||
ListHistoryWorkCondFile = SelectedHistoryExp.HistoryWorkCondFiles!;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private DelegateCommand<object> _FileGridSelectionChangedCmd;
|
||||
/// <summary>
|
||||
/// 试验信息选中行数据命令
|
||||
/// </summary>
|
||||
public DelegateCommand<object> FileGridSelectionChangedCmd
|
||||
{
|
||||
set
|
||||
{
|
||||
_FileGridSelectionChangedCmd = value;
|
||||
}
|
||||
get
|
||||
{
|
||||
if (_FileGridSelectionChangedCmd == null)
|
||||
var files = SelectedHistoryExp.HistoryWorkCondFiles!;
|
||||
foreach (var f in files)
|
||||
{
|
||||
_FileGridSelectionChangedCmd = new DelegateCommand<object>((par) => FileGridSelectionChangedCmdMethod(par));
|
||||
if (f != null) f.IsSelected = false;
|
||||
}
|
||||
return _FileGridSelectionChangedCmd;
|
||||
ListHistoryWorkCondFile = files;
|
||||
ListHistoryWorkCondFile = ListHistoryWorkCondFile.ToList();
|
||||
}
|
||||
}
|
||||
private void FileGridSelectionChangedCmdMethod(object par)
|
||||
{
|
||||
if (par == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (par is HistoryWorkCondFile)
|
||||
{
|
||||
SelectedHistoryWorkCondFile = par as HistoryWorkCondFile;
|
||||
return;
|
||||
}
|
||||
if ((par as SelectionChangedEventArgs)!.AddedItems.Count == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//先判断是否是正确的集合数据,防止DataGrid的数据源刷新导致的触发事件
|
||||
var Selecteddata = (par as SelectionChangedEventArgs)!.AddedItems[0] as HistoryWorkCondFile;
|
||||
|
||||
////选中的行数据
|
||||
//var Selecteddata = (par as DataGrid)!.SelectedItem as HistoryExp;
|
||||
////选中的列数据
|
||||
//var selectedColumn = (par as DataGrid)!.CurrentColumn;
|
||||
|
||||
//SelectedIndex= ProParsHelper.GetIndexByName(selectedColumn);
|
||||
|
||||
//SelectedProStepDto = par as ProStepDto;
|
||||
if (Selecteddata != null)
|
||||
{
|
||||
SelectedHistoryWorkCondFile = Selecteddata;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private DelegateCommand _FilterHistoryDataFileCmd;
|
||||
/// <summary>
|
||||
@@ -397,6 +350,48 @@ namespace CapMachine.Wpf.ViewModels
|
||||
HasHeaderRecord = false,
|
||||
};
|
||||
|
||||
private DelegateCommand<object> _SelectAllFilesCmd;
|
||||
public DelegateCommand<object> SelectAllFilesCmd
|
||||
{
|
||||
set
|
||||
{
|
||||
_SelectAllFilesCmd = value;
|
||||
}
|
||||
get
|
||||
{
|
||||
if (_SelectAllFilesCmd == null)
|
||||
{
|
||||
_SelectAllFilesCmd = new DelegateCommand<object>((par) => SelectAllFilesCmdMethod(par));
|
||||
}
|
||||
return _SelectAllFilesCmd;
|
||||
}
|
||||
}
|
||||
private void SelectAllFilesCmdMethod(object par)
|
||||
{
|
||||
bool isChecked = false;
|
||||
if (par is bool b) { isChecked = b; }
|
||||
else
|
||||
{
|
||||
var nb = par as bool?;
|
||||
if (nb.HasValue) isChecked = nb.Value;
|
||||
else
|
||||
{
|
||||
var sb = par as string;
|
||||
if (!string.IsNullOrWhiteSpace(sb))
|
||||
{
|
||||
bool.TryParse(sb, out isChecked);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ListHistoryWorkCondFile == null) return;
|
||||
foreach (var f in ListHistoryWorkCondFile)
|
||||
{
|
||||
if (f != null) f.IsSelected = isChecked;
|
||||
}
|
||||
// 触发刷新
|
||||
ListHistoryWorkCondFile = ListHistoryWorkCondFile.ToList();
|
||||
}
|
||||
|
||||
Stopwatch stopwatch = new Stopwatch();
|
||||
|
||||
private DelegateCommand _HistoryDataFileCmd;
|
||||
@@ -424,118 +419,110 @@ namespace CapMachine.Wpf.ViewModels
|
||||
/// </summary>
|
||||
private void HistoryDataFileCmdMethod()
|
||||
{
|
||||
//SelectedHistoryWorkCondFile
|
||||
if (SelectedHistoryExp != null && SelectedHistoryWorkCondFile != null)
|
||||
{
|
||||
CsvRecordModels = new List<CsvRecordModel>();
|
||||
|
||||
////第一次计时
|
||||
stopwatch.Start(); //启动Stopwatch
|
||||
|
||||
if (!string.IsNullOrEmpty(SelectedHistoryWorkCondFile.FilePath))
|
||||
{
|
||||
if (File.Exists(SelectedHistoryWorkCondFile.FilePath))//是否存在文件
|
||||
{
|
||||
lock (ConfigService.CsvFileLock)
|
||||
{
|
||||
using (var reader = new StreamReader(SelectedHistoryWorkCondFile.FilePath))
|
||||
using (var csv = new CsvReader(reader, CultureInfo.CurrentCulture))
|
||||
{
|
||||
csv.Context.RegisterClassMap<CsvRecordModelMap>();
|
||||
//GetRecords<CsvRecordModel>().ToList();
|
||||
|
||||
CsvRecordModels.AddRange(csv.GetRecords<CsvRecordModel>().ToList());
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
System.Windows.MessageBox.Show("没有发现地址对应的文件");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
System.Windows.MessageBox.Show("发现空的文件地址");
|
||||
}
|
||||
|
||||
//数据加载完毕后进入到Chart曲线中
|
||||
if (CsvRecordModels.Count > 0)
|
||||
{
|
||||
EventAggregator.GetEvent<HistoryDataToChartEvent>().Publish(new HistoryDataToChartMsg() { Machine = "History", Data = CsvRecordModels });
|
||||
}
|
||||
|
||||
stopwatch.Stop(); //停止Stopwatch
|
||||
Console.WriteLine("加载CSV数据耗时::{0}", stopwatch.Elapsed.TotalSeconds.ToString());
|
||||
stopwatch.Reset();
|
||||
|
||||
IsLeftDrawerOpen = false;
|
||||
}
|
||||
else
|
||||
if (SelectedHistoryExp == null)
|
||||
{
|
||||
System.Windows.MessageBox.Show("请选中后再操作", "提示", MessageBoxButton.OK, MessageBoxImage.Hand);
|
||||
return;
|
||||
}
|
||||
|
||||
var files = new List<HistoryWorkCondFile>();
|
||||
if (ListHistoryWorkCondFile != null)
|
||||
{
|
||||
foreach (var f in ListHistoryWorkCondFile)
|
||||
{
|
||||
if (f != null && f.IsSelected)
|
||||
{
|
||||
files.Add(f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#region 整个工况
|
||||
//整个试验工况一起加载数据
|
||||
//if (SelectedHistoryExp != null && SelectedHistoryExp.HistoryWorkCondFiles != null)
|
||||
//{
|
||||
// CsvRecordModels = new List<CsvRecordModel>();
|
||||
files = files
|
||||
.Where(f => f != null)
|
||||
.GroupBy(f => string.IsNullOrWhiteSpace(f.FilePath) ? $"ID:{f.Id}" : f.FilePath)
|
||||
.Select(g => g.First())
|
||||
.ToList();
|
||||
|
||||
// ////第一次计时
|
||||
// stopwatch.Start(); //启动Stopwatch
|
||||
if (files.Count == 0)
|
||||
{
|
||||
System.Windows.MessageBox.Show("请先在右侧勾选至少一个CSV文件", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
|
||||
return;
|
||||
}
|
||||
|
||||
// foreach (var item in SelectedHistoryExp.HistoryWorkCondFiles)
|
||||
// {
|
||||
// if (!string.IsNullOrEmpty(item.FilePath))
|
||||
// {
|
||||
// if (File.Exists(item.FilePath))//是否存在文件
|
||||
// {
|
||||
// lock (ConfigService.CsvFileLock)
|
||||
// {
|
||||
// using (var reader = new StreamReader(item.FilePath))
|
||||
// using (var csv = new CsvReader(reader, CultureInfo.CurrentCulture))
|
||||
// {
|
||||
// csv.Context.RegisterClassMap<CsvRecordModelMap>();
|
||||
// //GetRecords<CsvRecordModel>().ToList();
|
||||
CsvRecordModels = new List<CsvRecordModel>();
|
||||
stopwatch.Start();
|
||||
|
||||
// CsvRecordModels.AddRange(csv.GetRecords<CsvRecordModel>().ToList());
|
||||
// }
|
||||
// }
|
||||
var errors = new StringBuilder();
|
||||
foreach (var f in files)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (f == null) continue;
|
||||
if (string.IsNullOrWhiteSpace(f.FilePath))
|
||||
{
|
||||
errors.AppendLine("发现空的文件地址");
|
||||
continue;
|
||||
}
|
||||
if (!File.Exists(f.FilePath))
|
||||
{
|
||||
errors.AppendLine($"没有发现地址对应的文件: {f.FilePath}");
|
||||
continue;
|
||||
}
|
||||
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// System.Windows.MessageBox.Show("没有发现地址对应的文件");
|
||||
// }
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// System.Windows.MessageBox.Show("发现空的文件地址");
|
||||
// }
|
||||
// }
|
||||
var rec = ReadCsvFile(f.FilePath);
|
||||
if (rec != null && rec.Count > 0)
|
||||
{
|
||||
CsvRecordModels.AddRange(rec);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
errors.AppendLine($"读取CSV失败: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
// //数据加载完毕后进入到Chart曲线中
|
||||
// if (CsvRecordModels.Count > 0)
|
||||
// {
|
||||
// EventAggregator.GetEvent<HistoryDataToChartEvent>().Publish(new HistoryDataToChartMsg() { Machine = "History", Data = CsvRecordModels });
|
||||
// }
|
||||
if (errors.Length > 0)
|
||||
{
|
||||
System.Windows.MessageBox.Show(errors.ToString(), "读取提示", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||
}
|
||||
|
||||
// stopwatch.Stop(); //停止Stopwatch
|
||||
// Console.WriteLine("加载CSV数据耗时::{0}", stopwatch.Elapsed.TotalSeconds.ToString());
|
||||
// stopwatch.Reset();
|
||||
if (CsvRecordModels.Count > 0)
|
||||
{
|
||||
CsvRecordModels = CsvRecordModels
|
||||
.Where(r => r != null)
|
||||
.OrderBy(r => r.CreateTime)
|
||||
.ToList();
|
||||
EventAggregator.GetEvent<HistoryDataToChartEvent>().Publish(new HistoryDataToChartMsg() { Machine = "History", Data = CsvRecordModels });
|
||||
}
|
||||
|
||||
// IsLeftDrawerOpen = false;
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// System.Windows.MessageBox.Show("请选中后再操作", "提示", MessageBoxButton.OK, MessageBoxImage.Hand);
|
||||
//}
|
||||
stopwatch.Stop();
|
||||
Console.WriteLine("加载CSV数据耗时::{0}", stopwatch.Elapsed.TotalSeconds.ToString());
|
||||
stopwatch.Reset();
|
||||
|
||||
#endregion
|
||||
IsLeftDrawerOpen = false;
|
||||
|
||||
}
|
||||
|
||||
private List<CsvRecordModel> ReadCsvFile(string filePath)
|
||||
{
|
||||
var result = new List<CsvRecordModel>();
|
||||
lock (ConfigService.CsvFileLock)
|
||||
{
|
||||
using (var reader = new StreamReader(filePath, Encoding.UTF8))
|
||||
using (var csv = new CsvReader(reader, CultureInfo.CurrentCulture))
|
||||
{
|
||||
csv.Context.RegisterClassMap<CsvRecordModelMap>();
|
||||
var list = csv.GetRecords<CsvRecordModel>().ToList();
|
||||
if (list != null && list.Count > 0)
|
||||
{
|
||||
// 过滤无效时间,避免排序异常
|
||||
result = list.Where(r => r != null && r.CreateTime != default && r.CreateTime != DateTime.MinValue).ToList();
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//ReportDataCmd
|
||||
private DelegateCommand<object> _ReportDataCmd;
|
||||
|
||||
Reference in New Issue
Block a user