1215 lines
43 KiB
C#
1215 lines
43 KiB
C#
using AutoMapper;
|
||
using CapMachine.Core;
|
||
using CapMachine.Model;
|
||
using CapMachine.Wpf.Dtos;
|
||
using CapMachine.Wpf.Models;
|
||
using CapMachine.Wpf.PrismEvent;
|
||
using CapMachine.Wpf.Services;
|
||
using CapMachine.Wpf.Views;
|
||
using CsvHelper;
|
||
using CsvHelper.Configuration;
|
||
using Masuit.Tools;
|
||
using Masuit.Tools.Win32;
|
||
using Prism.Commands;
|
||
using Prism.Events;
|
||
using Prism.Regions;
|
||
using Prism.Services.Dialogs;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Collections.ObjectModel;
|
||
using System.Diagnostics;
|
||
using System.Globalization;
|
||
using System.IO;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using System.Windows;
|
||
using System.Windows.Controls;
|
||
using System.Windows.Forms;
|
||
using System.Windows.Threading;
|
||
using Application = System.Windows.Application;
|
||
|
||
namespace CapMachine.Wpf.ViewModels
|
||
{
|
||
/// <summary>
|
||
/// 历史数据模型
|
||
/// </summary>
|
||
public class HistoryDataViewModel : NavigationViewModel
|
||
{
|
||
public IDialogService DialogService { get; }
|
||
public IFreeSql FreeSql { get; }
|
||
public IEventAggregator EventAggregator { get; }
|
||
public IMapper Mapper { get; }
|
||
public ConfigService ConfigService { get; }
|
||
public ILogService Logger { get; }
|
||
|
||
/// <summary>
|
||
/// 实例化函数
|
||
/// </summary>
|
||
/// <param name="dialogService"></param>
|
||
/// <param name="freeSql"></param>
|
||
/// <param name="eventAggregator"></param>
|
||
/// <param name="mapper"></param>
|
||
/// <param name="logger"></param>
|
||
public HistoryDataViewModel(IDialogService dialogService, IFreeSql freeSql, IEventAggregator eventAggregator, IMapper mapper,ConfigService configService)
|
||
{
|
||
DialogService = dialogService;
|
||
FreeSql = freeSql;
|
||
EventAggregator = eventAggregator;
|
||
Mapper = mapper;
|
||
ConfigService = configService;
|
||
ListChartTabGroupDto = Mapper.Map<List<ChartTabGroupDto>>(FreeSql.Select<HistoryChartTabGroup>().Where(a => a.IsEnable == true).ToList());
|
||
|
||
|
||
|
||
ListHistoryWorkCondDto = new List<HistoryWorkCondDto>()
|
||
{
|
||
new HistoryWorkCondDto(){ Name="测试名称1",CreateTime=DateTime.Now},
|
||
new HistoryWorkCondDto(){ Name="测试名称2",CreateTime=DateTime.Now},
|
||
new HistoryWorkCondDto(){ Name="测试名称3",CreateTime=DateTime.Now},
|
||
new HistoryWorkCondDto(){ Name="测试名称4",CreateTime=DateTime.Now},
|
||
new HistoryWorkCondDto(){ Name="测试名称5",CreateTime=DateTime.Now},
|
||
new HistoryWorkCondDto(){ Name="测试名称6",CreateTime=DateTime.Now},
|
||
new HistoryWorkCondDto(){ Name="测试名称7",CreateTime=DateTime.Now},
|
||
new HistoryWorkCondDto(){ Name="测试名称8",CreateTime=DateTime.Now},
|
||
};
|
||
|
||
//加载试验数据
|
||
ListHistoryExp = FreeSql.Select<HistoryExp>().IncludeMany(a => a.HistoryWorkCondFiles).ToList();
|
||
|
||
//
|
||
Task.Run(new Action(() =>
|
||
{
|
||
Thread.Sleep(1000);
|
||
|
||
Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal,
|
||
new Action(() =>
|
||
{
|
||
//Thread.Sleep(TimeSpan.FromSeconds(1));
|
||
//都要加载数据
|
||
EventAggregator.GetEvent<HistoryChartRtSeriesActionEvent>().Publish(new ChartRtSeriesActionMsg() { Machine = "History", GroupTabIndex = 0, ActionMsg = "Start" });
|
||
EventAggregator.GetEvent<HistoryChartRtSeriesActionEvent>().Publish(new ChartRtSeriesActionMsg() { Machine = "History", GroupTabIndex = 1, ActionMsg = "Start" });
|
||
EventAggregator.GetEvent<HistoryChartRtSeriesActionEvent>().Publish(new ChartRtSeriesActionMsg() { Machine = "History", GroupTabIndex = 2, ActionMsg = "Start" });
|
||
EventAggregator.GetEvent<HistoryChartRtSeriesActionEvent>().Publish(new ChartRtSeriesActionMsg() { Machine = "History", GroupTabIndex = 3, ActionMsg = "Start" });
|
||
EventAggregator.GetEvent<HistoryChartRtSeriesActionEvent>().Publish(new ChartRtSeriesActionMsg() { Machine = "History", GroupTabIndex = 4, ActionMsg = "Start" });
|
||
EventAggregator.GetEvent<HistoryChartRtSeriesActionEvent>().Publish(new ChartRtSeriesActionMsg() { Machine = "History", GroupTabIndex = 5, ActionMsg = "Start" });
|
||
|
||
|
||
}));
|
||
}));
|
||
|
||
|
||
|
||
}
|
||
|
||
private DelegateCommand _TestCmd;
|
||
/// <summary>
|
||
/// 刷新数据命令
|
||
/// </summary>
|
||
public DelegateCommand TestCmd
|
||
{
|
||
set
|
||
{
|
||
_TestCmd = value;
|
||
}
|
||
get
|
||
{
|
||
if (_TestCmd == null)
|
||
{
|
||
_TestCmd = new DelegateCommand(() => TestCmdMethod());
|
||
}
|
||
return _TestCmd;
|
||
}
|
||
}
|
||
|
||
private bool _IsLeftDrawerOpen;
|
||
/// <summary>
|
||
/// 左侧的打开
|
||
/// </summary>
|
||
public bool IsLeftDrawerOpen
|
||
{
|
||
get { return _IsLeftDrawerOpen; }
|
||
set { _IsLeftDrawerOpen = value; RaisePropertyChanged(); }
|
||
}
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// tEST
|
||
/// </summary>
|
||
private void TestCmdMethod()
|
||
{
|
||
IsLeftDrawerOpen = true;
|
||
|
||
var openDrawerCommand = MaterialDesignThemes.Wpf.DrawerHost.OpenDrawerCommand;
|
||
|
||
// 获取 DrawerHost 的实例
|
||
var drawerHost = Application.Current.MainWindow.FindName("HistoryDrawerHost") as MaterialDesignThemes.Wpf.DrawerHost;
|
||
|
||
if (drawerHost != null)
|
||
{
|
||
drawerHost.IsLeftDrawerOpen = true; // 打开左侧 Drawer
|
||
}
|
||
|
||
//RegionManager.RequestNavigate("ProStepDrawerContentRegion", nameof(ProStepConfigPsView));
|
||
|
||
//EventAggregator.GetEvent<ProStepDrawerEvent>().Publish("Right");
|
||
|
||
|
||
}
|
||
|
||
|
||
|
||
private List<ChartTabGroupDto> _ListChartTabGroupDto;
|
||
/// <summary>
|
||
/// Tab集合信息数据
|
||
/// </summary>
|
||
public List<ChartTabGroupDto> ListChartTabGroupDto
|
||
{
|
||
get { return _ListChartTabGroupDto; }
|
||
set { _ListChartTabGroupDto = value; RaisePropertyChanged(); }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 当前的Machine
|
||
/// </summary>
|
||
private string CurSelectedMachine { get; set; } = "History";
|
||
|
||
|
||
#region 试验工况信息
|
||
|
||
/// <summary>
|
||
/// 当前的文档数据
|
||
/// </summary>
|
||
public List<CsvRecordModel> CsvRecordModels { get; set; } = new List<CsvRecordModel>();
|
||
|
||
|
||
private List<HistoryExp> _ListHistoryExp;
|
||
/// <summary>
|
||
/// 试验集合信息数据
|
||
/// </summary>
|
||
public List<HistoryExp> ListHistoryExp
|
||
{
|
||
get { return _ListHistoryExp; }
|
||
set { _ListHistoryExp = value; RaisePropertyChanged(); }
|
||
}
|
||
|
||
private List<HistoryWorkCondFile> _ListHistoryWorkCondFile;
|
||
/// <summary>
|
||
/// 试验集合保存的文件信息数据
|
||
/// </summary>
|
||
public List<HistoryWorkCondFile> ListHistoryWorkCondFile
|
||
{
|
||
get { return _ListHistoryWorkCondFile; }
|
||
set { _ListHistoryWorkCondFile = value; RaisePropertyChanged(); }
|
||
}
|
||
|
||
private List<HistoryWorkCondDto> _ListHistoryWorkCondDto;
|
||
/// <summary>
|
||
/// 历史工况集合信息数据
|
||
/// </summary>
|
||
public List<HistoryWorkCondDto> ListHistoryWorkCondDto
|
||
{
|
||
get { return _ListHistoryWorkCondDto; }
|
||
set { _ListHistoryWorkCondDto = value; RaisePropertyChanged(); }
|
||
}
|
||
|
||
private HistoryExp _SelectedHistoryExp;
|
||
/// <summary>
|
||
/// 当前选中的行数据
|
||
/// </summary>
|
||
public HistoryExp SelectedHistoryExp
|
||
{
|
||
get { return _SelectedHistoryExp; }
|
||
set { _SelectedHistoryExp = value; RaisePropertyChanged(); }
|
||
}
|
||
|
||
private HistoryWorkCondFile _SelectedHistoryWorkCondFile;
|
||
/// <summary>
|
||
/// 选中的历史数据文件
|
||
/// </summary>
|
||
public HistoryWorkCondFile SelectedHistoryWorkCondFile
|
||
{
|
||
get { return _SelectedHistoryWorkCondFile; }
|
||
set { _SelectedHistoryWorkCondFile = value; RaisePropertyChanged(); }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 当前搜索的工况条件
|
||
/// </summary>
|
||
public ExpSearchDto CurExpSearchDto { get; set; } = new ExpSearchDto() { StartTime = DateTime.Now.AddDays(-1), EndTime = DateTime.Now };
|
||
|
||
|
||
private DelegateCommand<object> _GridSelectionChangedCmd;
|
||
/// <summary>
|
||
/// 试验信息选中行数据命令
|
||
/// </summary>
|
||
public DelegateCommand<object> GridSelectionChangedCmd
|
||
{
|
||
set
|
||
{
|
||
_GridSelectionChangedCmd = value;
|
||
}
|
||
get
|
||
{
|
||
if (_GridSelectionChangedCmd == null)
|
||
{
|
||
_GridSelectionChangedCmd = new DelegateCommand<object>((par) => GridSelectionChangedCmdMethod(par));
|
||
}
|
||
return _GridSelectionChangedCmd;
|
||
}
|
||
}
|
||
private void GridSelectionChangedCmdMethod(object par)
|
||
{
|
||
if (par == null)
|
||
{
|
||
return;
|
||
}
|
||
if (par is HistoryExp)
|
||
{
|
||
SelectedHistoryExp = par as HistoryExp;
|
||
ListHistoryWorkCondFile = SelectedHistoryExp!.HistoryWorkCondFiles!;
|
||
return;
|
||
}
|
||
if ((par as SelectionChangedEventArgs)!.AddedItems.Count == 0)
|
||
{
|
||
return;
|
||
}
|
||
|
||
//先判断是否是正确的集合数据,防止DataGrid的数据源刷新导致的触发事件
|
||
var Selecteddata = (par as SelectionChangedEventArgs)!.AddedItems[0] as HistoryExp;
|
||
|
||
////选中的行数据
|
||
//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)
|
||
{
|
||
SelectedHistoryExp = Selecteddata;
|
||
ListHistoryWorkCondFile = SelectedHistoryExp.HistoryWorkCondFiles!;
|
||
}
|
||
}
|
||
|
||
|
||
private DelegateCommand<object> _FileGridSelectionChangedCmd;
|
||
/// <summary>
|
||
/// 试验信息选中行数据命令
|
||
/// </summary>
|
||
public DelegateCommand<object> FileGridSelectionChangedCmd
|
||
{
|
||
set
|
||
{
|
||
_FileGridSelectionChangedCmd = value;
|
||
}
|
||
get
|
||
{
|
||
if (_FileGridSelectionChangedCmd == null)
|
||
{
|
||
_FileGridSelectionChangedCmd = new DelegateCommand<object>((par) => FileGridSelectionChangedCmdMethod(par));
|
||
}
|
||
return _FileGridSelectionChangedCmd;
|
||
}
|
||
}
|
||
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>
|
||
/// 搜索数据
|
||
/// </summary>
|
||
public DelegateCommand FilterHistoryDataFileCmd
|
||
{
|
||
set
|
||
{
|
||
_FilterHistoryDataFileCmd = value;
|
||
}
|
||
get
|
||
{
|
||
if (_FilterHistoryDataFileCmd == null)
|
||
{
|
||
_FilterHistoryDataFileCmd = new DelegateCommand(() => FilterHistoryDataFileCmdMethod());
|
||
}
|
||
return _FilterHistoryDataFileCmd;
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 搜索的执行方法
|
||
/// </summary>
|
||
private void FilterHistoryDataFileCmdMethod()
|
||
{
|
||
var Query = FreeSql.Select<HistoryExp>();
|
||
if (!string.IsNullOrEmpty(CurExpSearchDto.ExpName))
|
||
{
|
||
Query = Query.Where(a => a.Name.Contains(CurExpSearchDto.ExpName.Trim()));
|
||
}
|
||
if (CurExpSearchDto.StartTime != null && CurExpSearchDto.EndTime != null)
|
||
{
|
||
Query = Query.Where(a => a.CreateTime >= CurExpSearchDto.StartTime);
|
||
Query = Query.Where(a => a.CreateTime <= CurExpSearchDto.EndTime);
|
||
}
|
||
|
||
//加载试验数据
|
||
ListHistoryExp = Query.IncludeMany(a => a.HistoryWorkCondFiles).ToList();
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// Append to the file.
|
||
/// </summary>
|
||
CsvConfiguration CSVconfig = new CsvConfiguration(CultureInfo.CurrentCulture)
|
||
{
|
||
// Don't write the header again.
|
||
HasHeaderRecord = false,
|
||
};
|
||
|
||
Stopwatch stopwatch = new Stopwatch();
|
||
|
||
private DelegateCommand _HistoryDataFileCmd;
|
||
/// <summary>
|
||
/// 获取试验数据的命令
|
||
/// </summary>
|
||
public DelegateCommand HistoryDataFileCmd
|
||
{
|
||
set
|
||
{
|
||
_HistoryDataFileCmd = value;
|
||
}
|
||
get
|
||
{
|
||
if (_HistoryDataFileCmd == null)
|
||
{
|
||
_HistoryDataFileCmd = new DelegateCommand(() => HistoryDataFileCmdMethod());
|
||
}
|
||
return _HistoryDataFileCmd;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取试验数据的命令的执行方法
|
||
/// </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
|
||
{
|
||
System.Windows.MessageBox.Show("请选中后再操作", "提示", MessageBoxButton.OK, MessageBoxImage.Hand);
|
||
}
|
||
|
||
|
||
#region 整个工况
|
||
//整个试验工况一起加载数据
|
||
//if (SelectedHistoryExp != null && SelectedHistoryExp.HistoryWorkCondFiles != null)
|
||
//{
|
||
// CsvRecordModels = new List<CsvRecordModel>();
|
||
|
||
// ////第一次计时
|
||
// stopwatch.Start(); //启动Stopwatch
|
||
|
||
// 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.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
|
||
//{
|
||
// System.Windows.MessageBox.Show("请选中后再操作", "提示", MessageBoxButton.OK, MessageBoxImage.Hand);
|
||
//}
|
||
|
||
#endregion
|
||
|
||
}
|
||
|
||
|
||
//ReportDataCmd
|
||
private DelegateCommand<object> _ReportDataCmd;
|
||
/// <summary>
|
||
/// 导出数据命令
|
||
/// </summary>
|
||
public DelegateCommand<object> ReportDataCmd
|
||
{
|
||
set
|
||
{
|
||
_ReportDataCmd = value;
|
||
}
|
||
get
|
||
{
|
||
if (_ReportDataCmd == null)
|
||
{
|
||
_ReportDataCmd = new DelegateCommand<object>((p) => ReportDataCmdMethod(p));
|
||
}
|
||
return _ReportDataCmd;
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 导出数据的方法
|
||
/// </summary>
|
||
/// <param name="p"></param>
|
||
/// <exception cref="NotImplementedException"></exception>
|
||
private void ReportDataCmdMethod(object par)
|
||
{
|
||
if (SelectedHistoryExp != null && SelectedHistoryExp.HistoryWorkCondFiles != null)
|
||
{
|
||
switch ((string)par)
|
||
{
|
||
case "CSV":
|
||
var TargetFilePath = GetFilePath();
|
||
if (TargetFilePath != null)
|
||
{
|
||
lock (ConfigService.CsvFileLock)
|
||
{
|
||
foreach (var item in SelectedHistoryExp.HistoryWorkCondFiles)
|
||
{
|
||
if (!string.IsNullOrEmpty(item.FilePath))
|
||
{
|
||
if (File.Exists(item.FilePath))//是否存在文件
|
||
{
|
||
//Copy文件
|
||
CopyToFile(item.FilePath, TargetFilePath);
|
||
}
|
||
else
|
||
{
|
||
System.Windows.MessageBox.Show("没有发现地址对应的文件");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
System.Windows.MessageBox.Show("发现空的文件地址");
|
||
}
|
||
}
|
||
}
|
||
}
|
||
break;
|
||
case "EXCEL":
|
||
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
|
||
|
||
IsLeftDrawerOpen = false;
|
||
}
|
||
else
|
||
{
|
||
System.Windows.MessageBox.Show("请选中后再操作", "提示", MessageBoxButton.OK, MessageBoxImage.Hand);
|
||
}
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 获取保存文件的路径
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public string GetFilePath()
|
||
{
|
||
using (var folderBrowserDialog = new FolderBrowserDialog())
|
||
{
|
||
folderBrowserDialog.Description = "请选择一个文件夹";
|
||
folderBrowserDialog.ShowNewFolderButton = true;
|
||
|
||
if (folderBrowserDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
||
{
|
||
string selectedPath = folderBrowserDialog.SelectedPath;
|
||
// 处理选中的文件夹路径
|
||
return selectedPath;
|
||
}
|
||
else
|
||
{
|
||
return null;
|
||
}
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 复制文件到指定的文件夹中
|
||
/// </summary>
|
||
/// <param name="SourceFilePath"></param>
|
||
/// <param name="TargetFilePath"></param>
|
||
public void CopyToFile(string SourceFilePath, string TargetFilePath)
|
||
{
|
||
// 生成目标文件的完整路径
|
||
string destinationFilePath = Path.Combine(TargetFilePath, Path.GetFileName(SourceFilePath));
|
||
// 复制文件
|
||
File.Copy(SourceFilePath, destinationFilePath, true); // true 表示如果目标文件已存在,则覆盖
|
||
}
|
||
|
||
/// <summary>
|
||
/// 复制文件夹及文件
|
||
/// </summary>
|
||
/// <param name="sourceFolder">原文件路径</param>
|
||
/// <param name="destFolder">目标文件路径</param>
|
||
/// <returns></returns>
|
||
public int CopyFolder2(string sourceFolder, string destFolder)
|
||
{
|
||
try
|
||
{
|
||
string folderName = System.IO.Path.GetFileName(sourceFolder);
|
||
string destfolderdir = System.IO.Path.Combine(destFolder, folderName);
|
||
string[] filenames = System.IO.Directory.GetFileSystemEntries(sourceFolder);
|
||
foreach (string file in filenames)// 遍历所有的文件和目录
|
||
{
|
||
if (System.IO.Directory.Exists(file))
|
||
{
|
||
string currentdir = System.IO.Path.Combine(destfolderdir, System.IO.Path.GetFileName(file));
|
||
if (!System.IO.Directory.Exists(currentdir))
|
||
{
|
||
System.IO.Directory.CreateDirectory(currentdir);
|
||
}
|
||
CopyFolder2(file, destfolderdir);
|
||
}
|
||
else
|
||
{
|
||
string srcfileName = System.IO.Path.Combine(destfolderdir, System.IO.Path.GetFileName(file));
|
||
if (!System.IO.Directory.Exists(destfolderdir))
|
||
{
|
||
System.IO.Directory.CreateDirectory(destfolderdir);
|
||
}
|
||
System.IO.File.Copy(file, srcfileName);
|
||
}
|
||
}
|
||
|
||
return 1;
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
|
||
System.Windows.MessageBox.Show(e.Message);
|
||
return 0;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
#endregion
|
||
|
||
|
||
|
||
#region TabIndex信息
|
||
|
||
private int _SeletedGroupTabIndex;
|
||
/// <summary>
|
||
/// 选中的Group TabIndex
|
||
/// </summary>
|
||
public int SeletedGroupTabIndex
|
||
{
|
||
get { return _SeletedGroupTabIndex; }
|
||
set { _SeletedGroupTabIndex = value; RaisePropertyChanged(); }
|
||
}
|
||
|
||
private int _SeletedGroup1ListViewTabIndex;
|
||
/// <summary>
|
||
/// 选中的Group1的 ListView TabIndex
|
||
/// 单游标和双游标的显示数据
|
||
/// </summary>
|
||
public int SeletedGroup1ListViewTabIndex
|
||
{
|
||
get { return _SeletedGroup1ListViewTabIndex; }
|
||
set { _SeletedGroup1ListViewTabIndex = value; RaisePropertyChanged(); }
|
||
}
|
||
|
||
private int _SeletedGroup2ListViewTabIndex;
|
||
/// <summary>
|
||
/// 选中的Group2的 ListView TabIndex
|
||
/// 单游标和双游标的显示数据
|
||
/// </summary>
|
||
public int SeletedGroup2ListViewTabIndex
|
||
{
|
||
get { return _SeletedGroup2ListViewTabIndex; }
|
||
set { _SeletedGroup2ListViewTabIndex = value; RaisePropertyChanged(); }
|
||
}
|
||
|
||
private int _SeletedGroup3ListViewTabIndex;
|
||
/// <summary>
|
||
/// 选中的Group3的 ListView TabIndex
|
||
/// 单游标和双游标的显示数据
|
||
/// </summary>
|
||
public int SeletedGroup3ListViewTabIndex
|
||
{
|
||
get { return _SeletedGroup3ListViewTabIndex; }
|
||
set { _SeletedGroup3ListViewTabIndex = value; RaisePropertyChanged(); }
|
||
}
|
||
|
||
private int _SeletedGroup4ListViewTabIndex;
|
||
/// <summary>
|
||
/// 选中的Group4的 ListView TabIndex
|
||
/// 单游标和双游标的显示数据
|
||
/// </summary>
|
||
public int SeletedGroup4ListViewTabIndex
|
||
{
|
||
get { return _SeletedGroup4ListViewTabIndex; }
|
||
set { _SeletedGroup4ListViewTabIndex = value; RaisePropertyChanged(); }
|
||
}
|
||
|
||
private int _SeletedGroup5ListViewTabIndex;
|
||
/// <summary>
|
||
/// 选中的Group5的 ListView TabIndex
|
||
/// 单游标和双游标的显示数据
|
||
/// </summary>
|
||
public int SeletedGroup5ListViewTabIndex
|
||
{
|
||
get { return _SeletedGroup5ListViewTabIndex; }
|
||
set { _SeletedGroup5ListViewTabIndex = value; RaisePropertyChanged(); }
|
||
}
|
||
|
||
private int _SeletedGroup6ListViewTabIndex;
|
||
/// <summary>
|
||
/// 选中的Group6的 ListView TabIndex
|
||
/// 单游标和双游标的显示数据
|
||
/// </summary>
|
||
public int SeletedGroup6ListViewTabIndex
|
||
{
|
||
get { return _SeletedGroup6ListViewTabIndex; }
|
||
set { _SeletedGroup6ListViewTabIndex = value; RaisePropertyChanged(); }
|
||
}
|
||
|
||
private int _SeletedGroup7ListViewTabIndex;
|
||
/// <summary>
|
||
/// 选中的Group7的 ListView TabIndex
|
||
/// 单游标和双游标的显示数据
|
||
/// </summary>
|
||
public int SeletedGroup7ListViewTabIndex
|
||
{
|
||
get { return _SeletedGroup7ListViewTabIndex; }
|
||
set { _SeletedGroup7ListViewTabIndex = value; RaisePropertyChanged(); }
|
||
}
|
||
|
||
private int _SeletedGroup8ListViewTabIndex;
|
||
/// <summary>
|
||
/// 选中的Group8的 ListView TabIndex
|
||
/// 单游标和双游标的显示数据
|
||
/// </summary>
|
||
public int SeletedGroup8ListViewTabIndex
|
||
{
|
||
get { return _SeletedGroup8ListViewTabIndex; }
|
||
set { _SeletedGroup8ListViewTabIndex = value; RaisePropertyChanged(); }
|
||
}
|
||
|
||
#endregion
|
||
|
||
|
||
private DelegateCommand _ChartConfigCmd;
|
||
/// <summary>
|
||
/// 编辑曲线数据
|
||
/// </summary>
|
||
public DelegateCommand ChartConfigCmd
|
||
{
|
||
set
|
||
{
|
||
_ChartConfigCmd = value;
|
||
}
|
||
get
|
||
{
|
||
if (_ChartConfigCmd == null)
|
||
{
|
||
_ChartConfigCmd = new DelegateCommand(() => ChartConfigCmdMethod());
|
||
}
|
||
return _ChartConfigCmd;
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 编辑曲线数据执行方法
|
||
/// </summary>
|
||
private void ChartConfigCmdMethod()
|
||
{
|
||
//弹窗
|
||
DialogService.ShowDialog("DialogHistoryChartRtConfigView", new DialogParameters() { { "TabIndex", SeletedGroupTabIndex } }, (par) =>
|
||
{
|
||
if (par.Result == ButtonResult.OK)
|
||
{
|
||
//程序名称
|
||
var ReturnValue = par.Parameters.GetValue<string>("Name");
|
||
//返回数据,刷新Chart
|
||
EventAggregator.GetEvent<HistoryChartRtSeriesActionEvent>().Publish(new ChartRtSeriesActionMsg()
|
||
{
|
||
Machine = CurSelectedMachine,
|
||
GroupTabIndex = SeletedGroupTabIndex,
|
||
ActionMsg = "Start"
|
||
});
|
||
}
|
||
else if (par.Result == ButtonResult.Cancel)
|
||
{
|
||
//取消
|
||
|
||
}
|
||
|
||
});
|
||
}
|
||
|
||
|
||
|
||
private DelegateCommand<object> _BtnSwitchGroupCmd;
|
||
/// <summary>
|
||
/// 切换组的指令
|
||
/// </summary>
|
||
public DelegateCommand<object> BtnSwitchGroupCmd
|
||
{
|
||
set
|
||
{
|
||
_BtnSwitchGroupCmd = value;
|
||
}
|
||
get
|
||
{
|
||
if (_BtnSwitchGroupCmd == null)
|
||
{
|
||
_BtnSwitchGroupCmd = new DelegateCommand<object>((p) => BtnSwitchGroupCmdMethod(p));
|
||
}
|
||
return _BtnSwitchGroupCmd;
|
||
}
|
||
}
|
||
private void BtnSwitchGroupCmdMethod(object par)
|
||
{
|
||
var Data = (ChartTabGroupDto)par;
|
||
SeletedGroupTabIndex = Data.Index;
|
||
EventAggregator.GetEvent<HistoryChartTabGroupSwitchEvent>().Publish(new ChartTabGroupSwitchMsg()
|
||
{
|
||
Machine = CurSelectedMachine,
|
||
GroupTabIndex = SeletedGroupTabIndex
|
||
});
|
||
|
||
//switch (Data.Index)
|
||
//{
|
||
// case 0:
|
||
// SeletedGroupTabIndex = Data.Index;
|
||
// EventAggregator.GetEvent<ChartGroupSwitchEvent>().Publish(Data.Name);
|
||
// break;
|
||
// case 1:
|
||
// SeletedGroupTabIndex = Data.Index;
|
||
// EventAggregator.GetEvent<ChartGroupSwitchEvent>().Publish(Data.Name);
|
||
// break;
|
||
// case 2:
|
||
// SeletedGroupTabIndex = Data.Index;
|
||
// EventAggregator.GetEvent<ChartGroupSwitchEvent>().Publish(Data.Name);
|
||
// break;
|
||
// default:
|
||
// break;
|
||
//}
|
||
}
|
||
|
||
|
||
private DelegateCommand<object> _BtnChartSetCmd;
|
||
/// <summary>
|
||
/// Chart 设置命令 多次设置
|
||
/// </summary>
|
||
public DelegateCommand<object> BtnChartSetCmd
|
||
{
|
||
set
|
||
{
|
||
_BtnChartSetCmd = value;
|
||
}
|
||
get
|
||
{
|
||
if (_BtnChartSetCmd == null)
|
||
{
|
||
_BtnChartSetCmd = new DelegateCommand<object>((p) => BtnChartSetCmdMethod(p));
|
||
}
|
||
return _BtnChartSetCmd;
|
||
}
|
||
}
|
||
private void BtnChartSetCmdMethod(object par)
|
||
{
|
||
//两个动作,曲线显示游标和不同的游标对应不同的ListView信息
|
||
var Info = (string)par;
|
||
switch (Info)
|
||
{
|
||
case "单游标":
|
||
//单双游标需要界面配合切换ListView信息
|
||
SwitchListViewTab(SeletedGroupTabIndex, "单游标");
|
||
//Chart操作
|
||
EventAggregator.GetEvent<HistoryChartSetEvent>().Publish(new ChartSetMsg() { Machine = CurSelectedMachine, GroupTabIndex = SeletedGroupTabIndex, ChartSetInfo = "单游标" });
|
||
break;
|
||
case "双游标":
|
||
//单双游标需要界面配合切换ListView信息
|
||
SwitchListViewTab(SeletedGroupTabIndex, "双游标");
|
||
//Chart操作
|
||
EventAggregator.GetEvent<HistoryChartSetEvent>().Publish(new ChartSetMsg() { Machine = CurSelectedMachine, GroupTabIndex = SeletedGroupTabIndex, ChartSetInfo = "双游标" });
|
||
break;
|
||
case "游标置中":
|
||
//Chart操作
|
||
EventAggregator.GetEvent<HistoryChartSetEvent>().Publish(new ChartSetMsg() { Machine = CurSelectedMachine, GroupTabIndex = SeletedGroupTabIndex, ChartSetInfo = "游标置中" });
|
||
break;
|
||
case "游标放大":
|
||
//Chart操作
|
||
EventAggregator.GetEvent<HistoryChartSetEvent>().Publish(new ChartSetMsg() { Machine = CurSelectedMachine, GroupTabIndex = SeletedGroupTabIndex, ChartSetInfo = "游标放大" });
|
||
break;
|
||
case "保存照片":
|
||
//临时的屏蔽状态
|
||
ConfigService.ChartSavePageTempState = true;
|
||
//Chart操作
|
||
EventAggregator.GetEvent<HistoryChartSetEvent>().Publish(new ChartSetMsg() { Machine = CurSelectedMachine, GroupTabIndex = SeletedGroupTabIndex, ChartSetInfo = "保存照片" });
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
|
||
private DelegateCommand<object> _BtnChartScrollEnableSetCmd;
|
||
/// <summary>
|
||
/// Chart 启用和非启用的设置命令 带有状态的
|
||
/// 实时滚动
|
||
/// </summary>
|
||
public DelegateCommand<object> BtnChartScrollEnableSetCmd
|
||
{
|
||
set
|
||
{
|
||
_BtnChartScrollEnableSetCmd = value;
|
||
}
|
||
get
|
||
{
|
||
if (_BtnChartScrollEnableSetCmd == null)
|
||
{
|
||
_BtnChartScrollEnableSetCmd = new DelegateCommand<object>((p) => BtnChartScrollEnableSetCmdMethod(p));
|
||
}
|
||
return _BtnChartScrollEnableSetCmd;
|
||
}
|
||
}
|
||
private void BtnChartScrollEnableSetCmdMethod(object par)
|
||
{
|
||
//是否滚动设置
|
||
var Result = (bool)par;
|
||
|
||
EventAggregator.GetEvent<HistoryChartSetEnableEvent>().Publish(new ChartSetEnableMsg() { Machine = CurSelectedMachine, GroupTabIndex = SeletedGroupTabIndex, ChartSetInfo = "实时滚动", Enable = Result });
|
||
|
||
}
|
||
|
||
|
||
private DelegateCommand<object> _BtnChartLegendHideEnableSetCmd;
|
||
/// <summary>
|
||
/// Chart 启用和非启用的设置命令 带有状态的
|
||
/// 图例隐藏
|
||
/// </summary>
|
||
public DelegateCommand<object> BtnChartLegendHideEnableSetCmd
|
||
{
|
||
set
|
||
{
|
||
_BtnChartLegendHideEnableSetCmd = value;
|
||
}
|
||
get
|
||
{
|
||
if (_BtnChartLegendHideEnableSetCmd == null)
|
||
{
|
||
_BtnChartLegendHideEnableSetCmd = new DelegateCommand<object>((p) => BtnChartLegendHideEnableSetCmdMethod(p));
|
||
}
|
||
return _BtnChartLegendHideEnableSetCmd;
|
||
}
|
||
}
|
||
private void BtnChartLegendHideEnableSetCmdMethod(object par)
|
||
{
|
||
//是否滚动设置
|
||
var Result = (bool)par;
|
||
|
||
EventAggregator.GetEvent<HistoryChartSetEnableEvent>().Publish(new ChartSetEnableMsg() { Machine = CurSelectedMachine, GroupTabIndex = SeletedGroupTabIndex, ChartSetInfo = "隐藏图例", Enable = Result });
|
||
|
||
}
|
||
|
||
private DelegateCommand<object> _TabItemCmd;
|
||
/// <summary>
|
||
/// Tab内容编辑命令
|
||
/// </summary>
|
||
public DelegateCommand<object> TabItemCmd
|
||
{
|
||
set
|
||
{
|
||
_TabItemCmd = value;
|
||
}
|
||
get
|
||
{
|
||
if (_TabItemCmd == null)
|
||
{
|
||
_TabItemCmd = new DelegateCommand<object>((p) => TabItemCmdMethod());
|
||
}
|
||
return _TabItemCmd;
|
||
}
|
||
}
|
||
private void TabItemCmdMethod()
|
||
{
|
||
//弹窗
|
||
DialogService.ShowDialog("DialogChartGroupTabView", new DialogParameters() { { "Name", "" } }, (par) =>
|
||
{
|
||
if (par.Result == ButtonResult.OK)
|
||
{
|
||
//程序名称
|
||
ListChartTabGroupDto = par.Parameters.GetValue<List<ChartTabGroupDto>>("NewData");
|
||
//返回数据,刷新Chart
|
||
|
||
}
|
||
else if (par.Result == ButtonResult.Cancel)
|
||
{
|
||
//取消
|
||
|
||
}
|
||
|
||
});
|
||
}
|
||
|
||
/// <summary>
|
||
/// 切换ListViewTab的信息
|
||
/// </summary>
|
||
private void SwitchListViewTab(int GroupIndex, string Msg)
|
||
{
|
||
//全部组同时设置
|
||
if (Msg == "单游标")
|
||
{
|
||
SeletedGroup1ListViewTabIndex = 0;
|
||
SeletedGroup2ListViewTabIndex = 0;
|
||
SeletedGroup3ListViewTabIndex = 0;
|
||
SeletedGroup4ListViewTabIndex = 0;
|
||
SeletedGroup5ListViewTabIndex = 0;
|
||
SeletedGroup6ListViewTabIndex = 0;
|
||
SeletedGroup7ListViewTabIndex = 0;
|
||
SeletedGroup8ListViewTabIndex = 0;
|
||
|
||
}
|
||
else
|
||
{
|
||
SeletedGroup1ListViewTabIndex = 1;
|
||
SeletedGroup2ListViewTabIndex = 1;
|
||
SeletedGroup3ListViewTabIndex = 1;
|
||
SeletedGroup4ListViewTabIndex = 1;
|
||
SeletedGroup5ListViewTabIndex = 1;
|
||
SeletedGroup6ListViewTabIndex = 1;
|
||
SeletedGroup7ListViewTabIndex = 1;
|
||
SeletedGroup8ListViewTabIndex = 1;
|
||
}
|
||
|
||
|
||
//只设置当前组信息
|
||
//switch (GroupIndex)
|
||
// {
|
||
// case 0:
|
||
// if (Msg == "单游标")
|
||
// {
|
||
// SeletedGroup1ListViewTabIndex = 0;
|
||
// return;
|
||
// }
|
||
// SeletedGroup1ListViewTabIndex = 1;
|
||
// break;
|
||
// case 1:
|
||
// if (Msg == "单游标")
|
||
// {
|
||
// SeletedGroup2ListViewTabIndex = 0;
|
||
// return;
|
||
// }
|
||
// SeletedGroup2ListViewTabIndex = 1;
|
||
// break;
|
||
// case 2:
|
||
// if (Msg == "单游标")
|
||
// {
|
||
// SeletedGroup3ListViewTabIndex = 0;
|
||
// return;
|
||
// }
|
||
// SeletedGroup3ListViewTabIndex = 1;
|
||
// break;
|
||
// case 3:
|
||
// if (Msg == "单游标")
|
||
// {
|
||
// SeletedGroup4ListViewTabIndex = 0;
|
||
// return;
|
||
// }
|
||
// SeletedGroup4ListViewTabIndex = 1;
|
||
// break;
|
||
// case 4:
|
||
// if (Msg == "单游标")
|
||
// {
|
||
// SeletedGroup5ListViewTabIndex = 0;
|
||
// return;
|
||
// }
|
||
// SeletedGroup5ListViewTabIndex = 1;
|
||
// break;
|
||
// case 5:
|
||
// if (Msg == "单游标")
|
||
// {
|
||
// SeletedGroup6ListViewTabIndex = 0;
|
||
// return;
|
||
// }
|
||
// SeletedGroup6ListViewTabIndex = 1;
|
||
// break;
|
||
// case 6:
|
||
// if (Msg == "单游标")
|
||
// {
|
||
// SeletedGroup7ListViewTabIndex = 0;
|
||
// return;
|
||
// }
|
||
// SeletedGroup7ListViewTabIndex = 1;
|
||
// break;
|
||
// case 7:
|
||
// if (Msg == "单游标")
|
||
// {
|
||
// SeletedGroup8ListViewTabIndex = 0;
|
||
// return;
|
||
// }
|
||
// SeletedGroup8ListViewTabIndex = 1;
|
||
// break;
|
||
// default:
|
||
// break;
|
||
// }
|
||
|
||
}
|
||
|
||
|
||
|
||
private DelegateCommand _ChartYAxisConfigCmd;
|
||
/// <summary>
|
||
/// 编辑曲线Y轴配置的数据
|
||
/// </summary>
|
||
public DelegateCommand ChartYAxisConfigCmd
|
||
{
|
||
set
|
||
{
|
||
_ChartYAxisConfigCmd = value;
|
||
}
|
||
get
|
||
{
|
||
if (_ChartYAxisConfigCmd == null)
|
||
{
|
||
_ChartYAxisConfigCmd = new DelegateCommand(() => ChartYAxisConfigCmdMethod());
|
||
}
|
||
return _ChartYAxisConfigCmd;
|
||
}
|
||
}
|
||
|
||
private void ChartYAxisConfigCmdMethod()
|
||
{
|
||
//弹窗
|
||
DialogService.ShowDialog("DialogYAxisConfigView", new DialogParameters() { { "Name", "" } }, (par) =>
|
||
{
|
||
if (par.Result == ButtonResult.OK)
|
||
{
|
||
//程序名称
|
||
//ListChartTabGroupDto = par.Parameters.GetValue<List<ChartTabGroupDto>>("NewData");
|
||
//返回数据,刷新Chart
|
||
|
||
var Data = FreeSql.Select<ConfigChartYAxis>().ToList();
|
||
EventAggregator.GetEvent<ChartYAxisConfigEvent>().Publish(new ChartYAxisConfigMsg() { Machine = CurSelectedMachine, GroupTabIndex = SeletedGroupTabIndex, ConfigChartYAxes = Data });
|
||
|
||
|
||
}
|
||
else if (par.Result == ButtonResult.Cancel)
|
||
{
|
||
//取消
|
||
|
||
}
|
||
|
||
});
|
||
}
|
||
|
||
}
|
||
}
|