using System; using Prism.Mvvm; using System.Linq; using Prism.Events; using Prism.Commands; using Panuon.UI.Silver; using SHJX.Service.Common.Event; using System.Collections.Generic; using SHJX.Service.Model.EventArgs; using SHJX.Service.Common.Constants; using SHJX.Service.Model.CRUDModules; using SHJX.Service.Control.Interface; namespace SHJX.Service.Shell.ViewModels.Manual { public class TemperatureManualWindowViewModel : BindableBase { #region Field private readonly IManualService _service; #endregion #region Property private PID _dissolvePid; public PID DissolvePid { get => _dissolvePid; set => SetProperty(ref _dissolvePid, value); } private PID _titrationPid; public PID TitrationPid { get => _titrationPid; set => SetProperty(ref _titrationPid, value); } private double _dissolveCurrentTemperatureValue; public double DissolveCurrentTemperatureValue { get => _dissolveCurrentTemperatureValue; set => SetProperty(ref _dissolveCurrentTemperatureValue, value); } private double _titrationCurrentTemperatureValue; public double TitrationCurrentTemperatureValue { get => _titrationCurrentTemperatureValue; set => SetProperty(ref _titrationCurrentTemperatureValue, value); } private double _manualSettingTemperatureValue; public double ManualSettingDissolveTemperatureValue { get => _manualSettingTemperatureValue; set => SetProperty(ref _manualSettingTemperatureValue, value); } private double _manualSettingTitrationTemperatureValue; public double ManualSettingTitrationTemperatureValue { get => _manualSettingTitrationTemperatureValue; set => SetProperty(ref _manualSettingTitrationTemperatureValue, value); } #endregion public TemperatureManualWindowViewModel(IEventAggregator ea, IManualService service) { _service = service; List pids = _service.GetData(); DissolvePid = pids.FirstOrDefault(it => it.TypeName.Equals(EquipmentNames.DissolveHeating)); TitrationPid = pids.FirstOrDefault(it => it.TypeName.Equals(EquipmentNames.TitrationHeating)); ManualSettingDissolveTemperatureValue = _service.DissolveTemperatureDefaultValue; ManualSettingTitrationTemperatureValue = _service.TitrationTemperatureDefaultValue; ea.GetEvent().Subscribe(DissolveCurrentHeatingValueDisplay); ea.GetEvent().Subscribe(TitrationCurrentHeatingValueDisplay); } #region Command private DelegateCommand _manualSettingRatioCommand; public DelegateCommand ManualSettingRatioCommand => _manualSettingRatioCommand ??= new DelegateCommand(ExecuteManualSettingRatioCommand); private DelegateCommand _manualSettingIntegralCommand; public DelegateCommand ManualSettingIntegralCommand => _manualSettingIntegralCommand ??= new DelegateCommand(ExecuteManualSettingIntegralCommand); private DelegateCommand _manualSettingDifferentialCommand; public DelegateCommand ManualSettingDifferentialCommand => _manualSettingDifferentialCommand ??= new DelegateCommand(ExecuteManualSettingDifferentialCommand); private DelegateCommand _manualSettingIntegralDeafultCommand; public DelegateCommand ManualSettingIntegralDeafultCommand => _manualSettingIntegralDeafultCommand ??= new DelegateCommand(ExecuteManualSettingIntegralDeafultCommand); private DelegateCommand _manualSettingTemperatureCommand; public DelegateCommand ManualSettingTemperatureCommand => _manualSettingTemperatureCommand ??= new DelegateCommand(ExecuteManualSettingTemperatureCommand); #endregion #region Execute private void ExecuteManualSettingRatioCommand() { SettingPid("Ratio", DissolvePid.Ratio); } private void ExecuteManualSettingIntegralCommand() { SettingPid("Integral", DissolvePid.Integral); } private void ExecuteManualSettingDifferentialCommand() { SettingPid("Differential", DissolvePid.Differential); } private void ExecuteManualSettingIntegralDeafultCommand() { SettingPid("IntegralDeafult", DissolvePid.IntegralDeafult); } private void ExecuteManualSettingTemperatureCommand(object obj) { bool res = _service.ManualSettingTemp(Convert.ToDouble(obj)); Notice.Show($"温度设置{(res ? "成功" : "失败")}", "Info", 3, MessageBoxIcon.Info); } #endregion #region Method private void SettingPid(string type, object value) { bool res = _service.ManualSettingPID(type, value); Notice.Show($"设置{(res ? "成功" : "失败")}", "Info", 3, MessageBoxIcon.Info); } private void DissolveCurrentHeatingValueDisplay(ReadTemperatureArgs args) { if (args is null) { return; } DissolveCurrentTemperatureValue = args.CurrentTemperature; } private void TitrationCurrentHeatingValueDisplay(ReadTemperatureArgs args) { if (args is null) { return; } TitrationCurrentTemperatureValue = args.CurrentTemperature; } #endregion } }