using ImTools; using OrpaonEMS.App.Models; using OrpaonEMS.App.PrismEvent; using OrpaonEMS.App.Services; using OrpaonEMS.App.Views; using OrpaonEMS.Core; using OrpaonEMS.Model.Enums; using Prism.Commands; using Prism.Events; using Prism.Regions; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace OrpaonEMS.App.ViewModels { /// /// 手自动控制ViewModel /// public class AutoHandViewModel : NavigationViewModel { /// /// 实例化函数 /// /// /// /// /// /// public AutoHandViewModel(BmsDataService bmsDataService, EnergyStorageService energyStorageService, ACService aCService, ConfigDataService configDataService, IEventAggregator eventAggregator, IRegionManager regionManager, EMSService eMSService, YuePuRunModelService yuePuRunModelService, InPowerPCSDataService inPowerPCSDataService) { this.bmsDataService = bmsDataService; this.energyStorageService = energyStorageService; ACService = aCService; ConfigDataService = configDataService; EventAggregator = eventAggregator; RegionManager = regionManager; EMSService = eMSService; YuePuRunModelService = yuePuRunModelService; InPowerPCSDataService = inPowerPCSDataService; //EventAggregator.GetEvent().Subscribe(OnPeakValleyTimeEventMsgReceived); SetHeatTemp = (double)ConfigDataService.SetHeadTargetTemp; SetCoolTemp = ConfigDataService.SetCoolTargetTemp; //RegionManager.RequestNavigate("UserDefineContentRegion", "YuPuHandView"); } //private void OnPeakValleyTimeEventMsgReceived(ElePVEnum @enum) //{ //} /// /// Bms数据服务 /// public BmsDataService bmsDataService { get; } /// /// 储能的服务 /// public EnergyStorageService energyStorageService { get; } /// /// 液冷服务 /// public ACService ACService { get; } public ConfigDataService ConfigDataService { get; } public IEventAggregator EventAggregator { get; } public IRegionManager RegionManager { get; set; } public EMSService EMSService { get; } public YuePuRunModelService YuePuRunModelService { get; } /// /// 英博PCS服务 /// public InPowerPCSDataService InPowerPCSDataService { get; } #region PCS 操作 private double _PwValue; /// /// Pw值信息数据 /// public double PwValue { get { return _PwValue; } set { _PwValue = value; RaisePropertyChanged(); } } private DelegateCommand _PcsStartBtnCmd; /// /// PCS 手动操作 /// public DelegateCommand PcsStartBtnCmd { set { _PcsStartBtnCmd = value; } get { if (_PcsStartBtnCmd == null) { _PcsStartBtnCmd = new DelegateCommand(() => PcsStartBtnCmdMethod()); } return _PcsStartBtnCmd; } } /// /// PCS 手动操作 执行方法 /// private async Task PcsStartBtnCmdMethod() { //EventAggregator.GetEvent().Publish(ElePVEnum.Peak); await InPowerPCSDataService.PCSStartAsync(); } private DelegateCommand _PcsEndBtnCmd; /// /// PCS 手动关闭结束操作 /// public DelegateCommand PcsEndBtnCmd { set { _PcsEndBtnCmd = value; } get { if (_PcsEndBtnCmd == null) { _PcsEndBtnCmd = new DelegateCommand(() => PcsEndBtnCmdMethod()); } return _PcsEndBtnCmd; } } /// /// PCS 手动关闭结束操作 执行方法 /// private async Task PcsEndBtnCmdMethod() { // await InPowerPCSDataService.PCSStopAsync(); } private DelegateCommand _PcsResetBtnCmd; /// /// PCS 手动复位操作 /// public DelegateCommand PcsResetBtnCmd { set { _PcsResetBtnCmd = value; } get { if (_PcsResetBtnCmd == null) { _PcsResetBtnCmd = new DelegateCommand(() => PcsResetBtnCmdMethod()); } return _PcsResetBtnCmd; } } /// /// PCS 手动复位操作 执行方法 /// private async Task PcsResetBtnCmdMethod() { // await InPowerPCSDataService.PCSFaultResetAsync(); } private DelegateCommand _PcsRemoteBtnCmd; /// /// PCS 手动远程操作 /// public DelegateCommand PcsRemoteBtnCmd { set { _PcsRemoteBtnCmd = value; } get { if (_PcsRemoteBtnCmd == null) { _PcsRemoteBtnCmd = new DelegateCommand(() => PcsRemoteBtnCmdMethod()); } return _PcsRemoteBtnCmd; } } /// /// PCS 手动远程操作 执行方法 /// private async Task PcsRemoteBtnCmdMethod() { // await InPowerPCSDataService.PCSRemoteLocationAsync(true); } private DelegateCommand _PcsLocationBtnCmd; /// /// PCS 手动本地操作 /// public DelegateCommand PcsLocationBtnCmd { set { _PcsLocationBtnCmd = value; } get { if (_PcsLocationBtnCmd == null) { _PcsLocationBtnCmd = new DelegateCommand(() => PcsLocationBtnCmdMethod()); } return _PcsLocationBtnCmd; } } /// /// PCS 手动本地操作 执行方法 /// private async Task PcsLocationBtnCmdMethod() { // await InPowerPCSDataService.PCSRemoteLocation(false); } private DelegateCommand _PcsSendPwBtnCmd; /// /// PCS 手动发送功率操作 /// public DelegateCommand PcsSendPwBtnCmd { set { _PcsSendPwBtnCmd = value; } get { if (_PcsSendPwBtnCmd == null) { _PcsSendPwBtnCmd = new DelegateCommand(() => PcsSendPwBtnCmdMethod()); } return _PcsSendPwBtnCmd; } } /// /// PCS 手动发送功率操作 执行方法 /// private async Task PcsSendPwBtnCmdMethod() { // //正是充电,负是放电 if (PwValue >= 0) { await InPowerPCSDataService.SendPcsChargCmdAsync(PwValue); } else { await InPowerPCSDataService.SendPcsDisChargCmdAsync(PwValue); } } private DelegateCommand _PcsCloseLinkBtnCmd; /// /// PCS 手动关闭连接操作 /// public DelegateCommand PcsCloseLinkBtnCmd { set { _PcsCloseLinkBtnCmd = value; } get { if (_PcsCloseLinkBtnCmd == null) { _PcsCloseLinkBtnCmd = new DelegateCommand(() => PcsCloseLinkBtnCmdMethod()); } return _PcsCloseLinkBtnCmd; } } /// /// PCS 手动关闭连接操作 执行方法 /// private async Task PcsCloseLinkBtnCmdMethod() { // await InPowerPCSDataService.CloseModbusRtuAsync(); } private DelegateCommand _BmsResetBtnCmd; /// /// Bms复位操作 /// public DelegateCommand BmsResetBtnCmd { set { _BmsResetBtnCmd = value; } get { if (_BmsResetBtnCmd == null) { _BmsResetBtnCmd = new DelegateCommand(() => BmsResetBtnCmdMethod()); } return _BmsResetBtnCmd; } } /// /// Bms复位操作 执行方法 /// private async Task BmsResetBtnCmdMethod() { bmsDataService.BmsAlarmReset(); await Task.CompletedTask; } private DelegateCommand _PcsGridConBtnCmd; /// /// PCS 手动并网操作 /// public DelegateCommand PcsGridConBtnCmd { set { _PcsGridConBtnCmd = value; } get { if (_PcsGridConBtnCmd == null) { _PcsGridConBtnCmd = new DelegateCommand(() => PcsGridConBtnCmdMethod()); } return _PcsGridConBtnCmd; } } /// /// PCS 手动并网操作 执行方法 /// private async Task PcsGridConBtnCmdMethod() { // await InPowerPCSDataService.PcsOffLineCmdAsync(Core.Enums.PCSOffLineInfo.OnLine); } private DelegateCommand _PcsGridOffBtnCmd; /// /// PCS 手动离网操作 /// public DelegateCommand PcsGridOffBtnCmd { set { _PcsGridOffBtnCmd = value; } get { if (_PcsGridOffBtnCmd == null) { _PcsGridOffBtnCmd = new DelegateCommand(() => PcsGridOffBtnCmdMethod()); } return _PcsGridOffBtnCmd; } } /// /// PCS 手动离网操作 执行方法 /// private async Task PcsGridOffBtnCmdMethod() { // await InPowerPCSDataService.PcsOffLineCmdAsync(Core.Enums.PCSOffLineInfo.OffLine); } #endregion #region 液冷操作 private double _SetHeatTemp; /// /// 制热设定温度 /// public double SetHeatTemp { get { return _SetHeatTemp; } set { _SetHeatTemp = value; } } private int _SetCoolTemp; /// /// 制冷设定温度 /// public int SetCoolTemp { get { return _SetCoolTemp; } set { _SetCoolTemp = value; } } private DelegateCommand _AcRunModelBtnCmd; /// /// 液冷 运行模式操作 /// public DelegateCommand AcRunModelBtnCmd { set { _AcRunModelBtnCmd = value; } get { if (_AcRunModelBtnCmd == null) { _AcRunModelBtnCmd = new DelegateCommand((par) => AcRunModelBtnCmdMethod(par)); } return _AcRunModelBtnCmd; } } /// /// 液冷 运行模式操作 执行方法 /// private void AcRunModelBtnCmdMethod(string par) { //EventAggregator.GetEvent().Publish(Model.Enums.ElePVEnum.Peak); switch (par) { case "Cool": ACService.SetCoolCtrModel(Core.Enums.CoolState.Cool); break; case "Heat": ACService.SetCoolCtrModel(Core.Enums.CoolState.Heat); break; case "Stop": ACService.SetCoolCtrModel(Core.Enums.CoolState.Stop); break; case "AutoCycle": ACService.SetCoolCtrModel(Core.Enums.CoolState.AutoCycle); break; case "Auto": ACService.SetCoolCtrModel(Core.Enums.CoolState.Auto); break; default: break; } } #endregion #region BMS操作 private DelegateCommand _BMSHandResetCmd; /// /// BMS 手动复位操作 /// public DelegateCommand BMSHandResetCmd { set { _BMSHandResetCmd = value; } get { if (_BMSHandResetCmd == null) { _BMSHandResetCmd = new DelegateCommand(() => BMSHandResetCmdMethod()); } return _BMSHandResetCmd; } } /// /// BMS复位操作 /// private void BMSHandResetCmdMethod() { bmsDataService.BmsAlarmReset(); } #endregion #region 手自动程序 private DelegateCommand _AutoHandCmd; /// /// 手自动命令 /// public DelegateCommand AutoHandCmd { set { _AutoHandCmd = value; } get { if (_AutoHandCmd == null) { _AutoHandCmd = new DelegateCommand((par) => AutoHandCmdMethod(par)); } return _AutoHandCmd; } } /// /// 手自动的操作 /// /// private void AutoHandCmdMethod(object par) { if ((bool)par) { // True 自动模式 energyStorageService.EnergyStorageStateMachine.Fire(Core.Enums.EnergyStorageStateTrig.StandbyTrig); } else { // False 手动模式 energyStorageService.EnergyStorageStateMachine.Fire(Core.Enums.EnergyStorageStateTrig.HandTrig); } } #endregion } }