[UI.Client]

1整理ProcessHistory相关集合属性,定义在DeviceData中
2修改ProcessHistory配置的XML初始化方式
3UI层通过特性标记来获取初始化的展示对象
This commit is contained in:
hanqiangqiang 2023-12-15 14:41:33 +08:00
parent 6c21820b13
commit 305b17a72c
9 changed files with 153 additions and 111 deletions

View File

@ -1,18 +1,96 @@
using DocumentFormat.OpenXml.EMMA;
using MECF.Framework.UI.Client.CenterViews.Core.Charting;
using Aitex.Common.Util;
using Aitex.Core.RT.DataCenter;
using Aitex.Core.RT.Device;
using Aitex.Core.Util;
using DocumentFormat.OpenXml.Wordprocessing;
using SciChart.Charting.Visuals.RenderableSeries;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media;
using SciChart.Data.Numerics;
using DrawingColor = System.Drawing.Color;
using System.Runtime.Serialization;
using System.Xml.Serialization;
namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory
namespace MECF.Framework.Common.Aitex.Core.Common.DeviceData
{
public class ProcessHistoryItemsDefault : Singleton<ProcessHistoryItemsDefault>
{
/// <summary>
/// 查询数据源,
/// </summary>
private List<ProcessDeviceItem> PM1ItemList { get; set; }
private List<ProcessDeviceItem> PM2ItemList { get; set; }
public ProcessHistoryItemsDefault()
{
}
public void Initialize()
{
var phi1 = CustomXmlSerializer.Deserialize<ProcessDeviceItems>(new FileInfo($"Config\\PM\\PM1\\ProcessDeviceItemsPM1.xml"));
PM1ItemList = phi1.ItemList;
DATA.Subscribe($"PM1.ProcessHistoryItemsDefault", () => PM1ItemList, SubscriptionAttribute.FLAG.SaveDB);
var phi2 = CustomXmlSerializer.Deserialize<ProcessDeviceItems>(new FileInfo($"Config\\PM\\PM2\\ProcessDeviceItemsPM2.xml"));
PM2ItemList = phi2.ItemList;
DATA.Subscribe($"PM2.ProcessHistoryItemsDefault", () => PM2ItemList, SubscriptionAttribute.FLAG.SaveDB);
}
}
/// <summary>
/// 根据XML配置生成ProcessHistory多个单元的集合对象
/// </summary>
[XmlType(typeName: "ProcessDeviceItems")]
public class ProcessDeviceItems
{
/// <summary>
/// ProcessDeviceItems默认对象集合
/// </summary>
[XmlElement("ProcessDeviceItem")]
public List<ProcessDeviceItem> ItemList { get; set; }
}
/// <summary>
/// ProcessHistory默认对象集合数据
/// </summary>
[Serializable]
[DataContract]
[XmlType(typeName: "ProcessDeviceItem")]
public class ProcessDeviceItem
{
/// <summary>
/// 客户期望界面显示项
/// </summary>
[XmlAttribute()]
[DataMember]
public string Display { get; set; }
/// <summary>
/// 界面显示项SIC数据库属性名称
/// </summary>
[XmlAttribute()]
[DataMember]
public string Property { get; set; }
/// <summary>
/// 单位,显示用
/// </summary>
[XmlAttribute()]
[DataMember]
public string Unit { get; set; }
/// <summary>
/// 数据表中是否包含当前属性,不包含的时候,此属性不能作为查询项
/// </summary>
[DataMember]
public bool IsPropertyExists { get; set; }
}
/// <summary>
/// Recipe生产历史记录
/// </summary>
@ -128,30 +206,5 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory
Average = DeviceValue.Count > 0 ? DeviceValue.Average(t => t) : 0;
Max = DeviceValue.Count > 0 ? DeviceValue.Max(t => t) : 0;
}
/// <summary>
/// 返回Chatring曲线对象
/// </summary>
/// <returns></returns>
public IRenderableSeries GetLineSeries()
{
Clear();
SicFastLineSeries sicFastLineSeries = new SicFastLineSeries(DeviceName)
{
Stroke = Colors.Red,
AntiAliasing = true,
ResamplingMode = ResamplingMode.MinMax,
};
Add(sicFastLineSeries);
this.ToList().ForEach(x =>
{
x.DataSeries.Clear();
((SicFastLineSeries)x)?.BackendParameterNode?.ClearStatistic();
});
return sicFastLineSeries;
}
}
}

View File

@ -258,6 +258,7 @@
<Compile Include="Aitex\Core\Common\DeviceData\PressureCtrlMode.cs" />
<Compile Include="Aitex\Core\Common\DeviceData\PressureCtrlModeConverter.cs" />
<Compile Include="Aitex\Core\Common\DeviceData\RealtimeGasFlowTrueTableRow.cs" />
<Compile Include="Aitex\Core\Common\DeviceData\RecipeProcessHistoryData.cs" />
<Compile Include="Aitex\Core\Common\DeviceData\RfMode.cs" />
<Compile Include="Aitex\Core\Common\DeviceData\ServoState.cs" />
<Compile Include="Aitex\Core\Common\DeviceData\TritonRfMatchMode.cs" />

View File

@ -143,6 +143,7 @@ namespace MECF.Framework.Common.DataCenter
[ServiceKnownType(typeof(List<GasFlowSum>))]
[ServiceKnownType(typeof(ConfigChangedInfo))]
[ServiceKnownType(typeof(List<ConfigChangedInfo>))]
[ServiceKnownType(typeof(List<ProcessDeviceItem>))]
public interface IQueryDataService
{

View File

@ -1,9 +1,6 @@
using OpenSEMI.ClientBase;
using System;
using MECF.Framework.Common.Aitex.Core.Common.DeviceData;
using OpenSEMI.ClientBase;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory
{

View File

@ -1,65 +0,0 @@
using Aitex.Core.Util;
using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.GasFlow;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;
namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory
{
public class ProcessHistoryItemsDefault
{
/// <summary>
/// 查询数据源,
/// </summary>
public List<ProcessDeviceItem> ItemList { get;set; }
public ProcessHistoryItemsDefault(string pm)
{
var phi = CustomXmlSerializer.Deserialize<ProcessDeviceItems>(new FileInfo($"Config\\PM\\{pm}\\ProcessDeviceItems{pm}.xml"));
ItemList = phi.ItemList;
}
}
[XmlType(typeName: "ProcessDeviceItems")]
public class ProcessDeviceItems
{
[XmlElement("ProcessDeviceItem")]
public List<ProcessDeviceItem> ItemList { get; set; }
}
[XmlType(typeName: "ProcessDeviceItem")]
public class ProcessDeviceItem
{
/// <summary>
/// 客户期望界面显示项
/// </summary>
[XmlAttribute()]
public string Display { get; set; }
/// <summary>
/// 界面显示项SIC数据库属性名称
/// </summary>
[XmlAttribute()]
public string Property { get; set; }
/// <summary>
/// 单位,显示用
/// </summary>
[XmlAttribute()]
public string Unit { get; set; }
/// <summary>
/// 数据表中是否包含当前属性,不包含的时候,此属性不能作为查询项
/// </summary>
public bool IsPropertyExists { get; set; }
}
}

View File

@ -1,5 +1,6 @@
using Aitex.Core.RT.Log;
using DocumentFormat.OpenXml.InkML;
using MECF.Framework.Common.Aitex.Core.Common.DeviceData;
using MECF.Framework.Common.DataCenter;
using MECF.Framework.Common.Equipment;
using Sicentury.Core;

View File

@ -1,4 +1,6 @@
using Aitex.Core.RT.SCCore;
using Aitex.Core.RT.DataCenter;
using Aitex.Core.RT.SCCore;
using Aitex.Core.Util;
using Caliburn.Micro;
using MECF.Framework.Common.Aitex.Core.Common.DeviceData;
using MECF.Framework.Common.DataCenter;
@ -23,11 +25,16 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory
{
#region Variables
private ProcessHistoryItemsDefault ProcessHistoryItemsDefault;
private IRange _timeRange;
private IRange _visibleRangeValue;
private AutoRange _autoRange;
private List<ProcessDeviceItem> PMItemList { get; set; }
[Subscription("PM1.ProcessHistoryItemsDefault")]
public List<ProcessDeviceItem> PM1ItemList { get; set; }
[Subscription("PM2.ProcessHistoryItemsDefault")]
public List<ProcessDeviceItem> PM2ItemList { get; set; }
/// <summary>
/// 返回ViewModel绑定的视图对象。
/// </summary>
@ -63,7 +70,7 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory
set
{
cbSelectPM = value;
ProcessHistoryItemsDefault = new ProcessHistoryItemsDefault(value);//选择的PM变化时重新加载模板
PMItemList = value=="PM1"? PM1ItemList: PM2ItemList; //选择的PM变化时重新加载模板
}
}
@ -167,6 +174,12 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory
Refresh();
}
protected override void OnDeactivate(bool close)
{
ActiveUpdateData = true;
base.OnDeactivate(close);
}
/// <summary>
/// 根据时间段查询Recipe生产的历史记录
/// </summary>
@ -221,7 +234,7 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory
List<List<GasFlowSum>> gasFlowRunVent = new List<List<GasFlowSum>>();
//按天查询数据库单天返回数据类型为List<GasFlowSum>
ProcessHistoryDeviceDataList = ProcessHistorySqlHelp.GetProcessHistoryDeviceData(daySlices, CbSelectPM, ProcessHistoryItemsDefault.ItemList);
ProcessHistoryDeviceDataList = ProcessHistorySqlHelp.GetProcessHistoryDeviceData(daySlices, CbSelectPM, PMItemList);
}
/// <summary>
@ -236,8 +249,8 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory
private void GetDeviceCharting()
{
AppendedSeries = new ObservableCollection<IRenderableSeries> { SelectProcessHistoryDeviceData.GetLineSeries() };
RenderableSeriesProvide renderableSeries = new RenderableSeriesProvide();
AppendedSeries = new ObservableCollection<IRenderableSeries> {renderableSeries.GetLineSeries(SelectProcessHistoryDeviceData.DeviceName)};
var dataSeries = AppendedSeries[0].DataSeries as XyDataSeries<DateTime, double>;
var dateList = new List<DateTime>();

View File

@ -0,0 +1,42 @@
using MECF.Framework.UI.Client.CenterViews.Core.Charting;
using SciChart.Charting.Visuals.RenderableSeries;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Windows.Media;
using SciChart.Data.Numerics;
namespace MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory
{
public class RenderableSeriesProvide : ObservableCollection<IRenderableSeries>
{
public RenderableSeriesProvide() { }
/// <summary>
/// 返回Chatring曲线对象
/// </summary>
/// <returns></returns>
public IRenderableSeries GetLineSeries(string lineName)
{
Clear();
SicFastLineSeries sicFastLineSeries = new SicFastLineSeries(lineName)
{
Stroke = Colors.Red,
AntiAliasing = true,
ResamplingMode = ResamplingMode.MinMax,
};
Add(sicFastLineSeries);
this.ToList().ForEach(x =>
{
x.DataSeries.Clear();
((SicFastLineSeries)x)?.BackendParameterNode?.ClearStatistic();
});
return sicFastLineSeries;
}
}
}

View File

@ -230,13 +230,12 @@
<DependentUpon>ProcessHistoryInfMessageBoxView.xaml</DependentUpon>
</Compile>
<Compile Include="CenterViews\DataLogs\ProcessHistory\ProcessHistoryInfMessageBoxViewModel.cs" />
<Compile Include="CenterViews\DataLogs\ProcessHistory\ProcessHistoryItemsDefault.cs" />
<Compile Include="CenterViews\DataLogs\ProcessHistory\ProcessHistoryTestView.xaml.cs">
<DependentUpon>ProcessHistoryTestView.xaml</DependentUpon>
</Compile>
<Compile Include="CenterViews\DataLogs\ProcessHistory\ProcessHistoryTestViewModel.cs" />
<Compile Include="CenterViews\DataLogs\ProcessHistory\ProcessHistorySqlHelp.cs" />
<Compile Include="CenterViews\DataLogs\ProcessHistory\RecipeProcessHistoryData.cs" />
<Compile Include="CenterViews\DataLogs\ProcessHistory\RenderableSeriesProvide.cs" />
<Compile Include="CenterViews\Diagnosis\EventGeneratorView.xaml.cs">
<DependentUpon>EventGeneratorView.xaml</DependentUpon>
</Compile>