上下限监控

This commit is contained in:
hsc
2026-07-07 14:22:25 +08:00
parent 3b41459dcd
commit f5145d10e4
10 changed files with 417 additions and 5 deletions

View File

@@ -0,0 +1,153 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
using UIShare.GlobalVariable;
using UIShare.UIViewModel;
using UIShare.ViewModelBase;
namespace MonitorModule.ViewModels.Dialogs
{
public class ValueLimitViewModel : DialogViewModelBase
{
#region
private string _Title = "报警设置";
public string Title
{
get { return _Title; }
set { SetProperty(ref _Title, value); }
}
private ValueLimitVM _SelectValueLimitVM;
public ValueLimitVM SelectValueLimitVM
{
get => _SelectValueLimitVM;
set => SetProperty(ref _SelectValueLimitVM, value);
}
private ObservableCollection<ValueLimitVM> _ValueLimitList;
public ObservableCollection<ValueLimitVM> ValueLimitList
{
get => _ValueLimitList;
set => SetProperty(ref _ValueLimitList, value);
}
private ObservableCollection<string> _DeviceSingleList = new();
public ObservableCollection<string> DeviceSingleList
{
get => _DeviceSingleList;
set => SetProperty(ref _DeviceSingleList, value);
}
private string _SelectCurve;
public string SelectCurve
{
get => _SelectCurve;
set => SetProperty(ref _SelectCurve, value);
}
#endregion
#region
public ICommand SaveCommand { get; set; }
public ICommand CloseCommand { get; set; }
public ICommand SelectSignalCommand { get; set; }
public ICommand DeleteCommand { get; set; }
#endregion
private GlobalInfo _globalInfo { get; set; }
private SystemConfig _systemConfig { get; set; }
private IScopedProvider _scope { get; set; }
public ValueLimitViewModel(IContainerProvider containerProvider) : base(containerProvider)
{
_globalInfo = containerProvider.Resolve<GlobalInfo>();
_eventAggregator = containerProvider.Resolve<IEventAggregator>();
SaveCommand = new DelegateCommand(OnSave);
CloseCommand = new DelegateCommand(OnClose);
SelectSignalCommand = new DelegateCommand(SelectSignal);
DeleteCommand = new DelegateCommand(Deletel);
InitData();
}
#region
private void Deletel()
{
if (SelectValueLimitVM == null)
{
return;
}
else
{
ValueLimitList.Remove(SelectValueLimitVM);
SelectValueLimitVM = null;
}
}
private void InitData()
{
//ValueLimitList = new(_systemConfig.ValueLimitList);
//foreach (var _PollingRead in _devices.PollingReadDic)
//{
// string deviceName = _PollingRead.Key;
// PollingRead pollingRead = _PollingRead.Value;
// var props = pollingRead.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance)
// .Where(p => p.PropertyType == typeof(double));
// foreach (var prop in props)
// {
// DeviceSingleList.Add(deviceName + "." + prop.Name);
// }
//}
//foreach (var Signal in _systemConfig.ConfigurationList)
//{
// DeviceSingleList.Add($"{Signal.Channel}/{Signal.MessageName}/{Signal.SignalName}");
//}
}
private void SelectSignal()
{
if (ValueLimitList.Where(x => x.SignalName == SelectCurve).Count() > 0)
{
return;
}
ValueLimitList.Add(new ValueLimitVM
{
SignalName = SelectCurve,
Upper = 9999,
Lower = -9999,
UpperExtreme = 9999,
LowerExtreme = -9999,
});
}
private void OnClose()
{
RequestClose.Invoke();
}
private void OnSave()
{
_systemConfig.ValueLimitList = ValueLimitList;
ConfigService.Save(_systemConfig);
}
#endregion
public override void OnDialogOpened(IDialogParameters parameters)
{
// 1. 优先执行基类的打开逻辑(如果基类有需要初始化的通用事务)
base.OnDialogOpened(parameters);
// 2. 解析参数
if (parameters != null && parameters.ContainsKey("Scope")) // 修复Prism 中应使用 ContainsKey
{
_scope = parameters.GetValue<IScopedProvider>("Scope");
_systemConfig= _scope.Resolve<SystemConfig>();
}
}
}
}