Sic.Framework-Nanjing-Baishi/MECF.Framework.UI.Client/CenterViews/DataLogs/ProcessHistory/ProcessHistoryTestViewModel.cs

248 lines
8.1 KiB
C#
Raw Normal View History

2023-12-06 13:52:01 +08:00
using Aitex.Core.RT.Log;
using Caliburn.Micro;
using DocumentFormat.OpenXml.EMMA;
using MECF.Framework.Common.Aitex.Core.Common.DeviceData;
using MECF.Framework.Common.DataCenter;
using MECF.Framework.UI.Client.CenterViews.Core;
using MECF.Framework.UI.Client.CenterViews.Core.Charting;
using MECF.Framework.UI.Client.ClientBase;
using SciChart.Charting.Model.DataSeries;
using SciChart.Charting.Visuals.Axes;
using SciChart.Charting.Visuals.RenderableSeries;
using SciChart.Core.Extensions;
using SciChart.Core.Framework;
2023-12-06 13:52:01 +08:00
using SciChart.Data.Model;
using Sicentury.Core;
using Sicentury.Core.EventArgs;
using Sicentury.Core.Pipelines;
2023-11-30 13:42:06 +08:00
using System;
using System.Collections.Generic;
2023-12-06 13:52:01 +08:00
using System.Collections.ObjectModel;
using System.Data;
using System.Dynamic;
2023-12-06 13:52:01 +08:00
using System.Linq;
using System.Threading;
using System.Windows;
2023-12-06 13:52:01 +08:00
using System.Windows.Controls;
2023-11-30 13:42:06 +08:00
namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory
{
public class ProcessHistoryTestViewModel : UiViewModelBase
{
/// <summary>
/// 返回ViewModel绑定的视图对象。
/// </summary>
public UserControl View { get; private set; }
public DateTime StartDateTime
{
get => ((ProcessHistoryTestView)View).wfTimeFrom.Value;
set
{
((ProcessHistoryTestView)View).wfTimeFrom.Value = value;
NotifyOfPropertyChange(nameof(StartDateTime));
}
}
public DateTime EndDateTime
{
get => ((ProcessHistoryTestView)View).wfTimeTo.Value;
set
{
((ProcessHistoryTestView)View).wfTimeTo.Value = value;
NotifyOfPropertyChange(nameof(EndDateTime));
}
}
2023-12-06 13:52:01 +08:00
public List<string> PmList { get; set; }
2023-12-06 13:52:01 +08:00
public string CbSelect { get; set; }
public RecipeProcessHistoryData RecipeProcessHistoryData { get; set; }
2023-12-06 13:52:01 +08:00
public List<ProcessHistoryData> ProcessHistoryDataList { get; set; }
2023-12-06 13:52:01 +08:00
public ProcessHistoryData SelectProcessHistoryData { get; set; }
private ObservableCollection<ProcessHistoryDeviceData> _processHistoryDeviceDataList;
public ObservableCollection<ProcessHistoryDeviceData> ProcessHistoryDeviceDataList
{
get => _processHistoryDeviceDataList;
set
{
_processHistoryDeviceDataList = value;
NotifyOfPropertyChange(nameof(ProcessHistoryDeviceDataList));
}
}
public ProcessHistoryDeviceData SelectProcessHistoryDeviceData { get; set; }
private ObservableCollection<IRenderableSeries> appendedSeries;
public ObservableCollection<IRenderableSeries> AppendedSeries
{
get => appendedSeries;
set
{
appendedSeries = value;
NotifyOfPropertyChange(nameof(AppendedSeries));
}
}
2023-12-06 13:52:01 +08:00
private ProcessHistoryItemsDefault ProcessHistoryItemsDefault = new ProcessHistoryItemsDefault();
protected override void OnViewLoaded(object _view)
{
base.OnViewLoaded(_view);
2023-12-06 13:52:01 +08:00
View = (ProcessHistoryTestView)_view;
IniUIData();
}
2023-12-06 13:52:01 +08:00
/// <summary>
/// 查询进度信息更新。
/// </summary>
private IProgress<ProgressUpdatingEventArgs> _progQueryUpdate;
private void IniUIData()
{
PmList = new List<string>();
for (int i = 1; i <= 2; i++)
{
if ((bool)QueryDataClient.Instance.Service.GetConfig($"PM.PM{i}.TMAEnable"))
PmList.Add($"PM{i}");
}
if (PmList.Count > 0)
CbSelect = PmList[0];
StartDateTime = DateTime.Now.Date;
EndDateTime = DateTime.Now.Date.AddDays(1).AddTicks(-1);
2023-12-06 13:52:01 +08:00
VisibleRangeTime = new DateRange(DateTime.Now.AddMinutes(-60), DateTime.Now.AddMinutes(60));
VisibleRangeValue = new DoubleRange(0, 10);
Refresh();
}
public void QueryRecipeProcessHistory()
{
if (StartDateTime > EndDateTime)
{
MessageBox.Show("time range invalid, start time should be early than end time.", "Error",
MessageBoxButton.OK,
MessageBoxImage.Error);
return;
}
var dialog = new ProcessHistoryInfMessageBoxViewModel(StartDateTime.ToString(), EndDateTime.ToString(), CbSelect);
var wm = new WindowManager();
dynamic settings = new ExpandoObject();
settings.WindowStartupLocation = WindowStartupLocation.CenterOwner;
settings.Title = "Recipe历史生产数据选择";
settings.ResizeMode = ResizeMode.NoResize;
settings.ShowInTaskbar = false;
var bret = wm.ShowDialog(dialog, null, settings);
if ((bool)bret)
{
if (dialog.RecipeProcessHistoryData == null)
return;
RecipeProcessHistoryData = dialog.RecipeProcessHistoryData;
ProcessHistoryDataList = ProcessHistorySqlHelp.QueryProcessHistoryData(dialog.RecipeProcessHistoryData.ProcessGuid, dialog.RecipeProcessHistoryData.Name);
ProcessHistoryDeviceDataList?.Clear();
Refresh();
}
}
public void GetProcessHistory()
{
Query(SelectProcessHistoryData);
Refresh();
}
2023-12-06 13:52:01 +08:00
public void QuerDeviceData()
{
}
2023-12-06 13:52:01 +08:00
public void Query(ProcessHistoryData processHistoryData)
{
2023-12-06 13:52:01 +08:00
var daySlices = DateRangeHelper.SplitInToHours(new DateRangeHelper(Convert.ToDateTime(processHistoryData.StepBeginTime), Convert.ToDateTime(processHistoryData.StepEndTime)), 12);
List<List<GasFlowSum>> gasFlowRunVent = new List<List<GasFlowSum>>();
//按天查询数据库单天返回数据类型为List<GasFlowSum>
2023-12-06 13:52:01 +08:00
ProcessHistoryDeviceDataList = ProcessHistorySqlHelp.GetProcessHistoryDeviceData(daySlices, CbSelect, ProcessHistoryItemsDefault.ItemList);
}
2023-12-06 13:52:01 +08:00
public void GetItem()
{
}
private IRange _timeRange;
private IRange _visibleRangeValue;
private AutoRange _autoRange;
public IRange VisibleRangeTime
{
get => _timeRange;
set
{
_timeRange = value;
NotifyOfPropertyChange(nameof(VisibleRangeTime));
}
}
public IRange VisibleRangeValue
{
get => _visibleRangeValue;
set
{
_visibleRangeValue = value;
NotifyOfPropertyChange(nameof(VisibleRangeValue));
}
}
public AutoRange ChartAutoRange
{
get => _autoRange;
set
{
_autoRange = value;
NotifyOfPropertyChange(nameof(ChartAutoRange));
}
}
public void GetDeviceCharting()
{
AppendedSeries = new ObservableCollection<IRenderableSeries> { SelectProcessHistoryDeviceData.GetLineSeries() };
2023-12-06 13:52:01 +08:00
var dataSeries = AppendedSeries[0].DataSeries as XyDataSeries<DateTime, double>;
2023-12-06 13:52:01 +08:00
var dateList = new List<DateTime>();
var valueList = new List<double>();
var metaList = new List<ParameterNodePoint>();
// 数据记录点
for (int i = 0; i < SelectProcessHistoryDeviceData.DeviceValue.Count; i++)
{
var date = new DateTime(long.Parse(SelectProcessHistoryDeviceData.TimeStamp[i]));
var cellValue = SelectProcessHistoryDeviceData.DeviceValue[i];
dateList.Add(date);
valueList.Add(cellValue);
metaList.Add(new ParameterNodePoint(date, cellValue));
2023-12-06 13:52:01 +08:00
}
dataSeries.Append(dateList, valueList, metaList);
2023-12-06 13:52:01 +08:00
Thread.Sleep(10);
2023-12-06 13:52:01 +08:00
ChartAutoRange = AutoRange.Never;
((ProcessHistoryTestView)View).chart.ZoomExtents();
}
2023-11-30 13:42:06 +08:00
}
2023-12-06 13:52:01 +08:00
}