using Aitex.Core.RT.ConfigCenter;
using Aitex.Core.Util;
using MECF.Framework.Common.CommonData.PowerSupplier;
using MECF.Framework.Common.DataCenter;
using MECF.Framework.Common.Device.LinMot;
using MECF.Framework.Common.Device.PowerSupplier;
using MECF.Framework.Common.Equipment;
using MECF.Framework.Common.Utilities;
using Prism.Mvvm;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Threading;
namespace CyberX8_MainPages.ViewModels
{
public class PowerSupplierViewModel : BindableBase
{
#region 常量
private const string POWERSUPPLIER_DATA = "PowerSupplierData";
private const string CONNECTED = "Connected";
#endregion
#region 内部变量
///
/// 模块名称
///
private string _module;
///
/// 查询后台数据集合
///
private List _rtDataKeys = new List();
///
/// 查询后台的数据
///
private Dictionary _rtDataValues;
///
/// 定时器
///
private DispatcherTimer _timer;
#region SideA
///
/// SideA PowerSupplier
///
private string _sideAPowerSupplier;
///
/// SideA PowerSupplier数据
///
private PowerSupplierData _sideAPowerSupplierData;
///
/// SideA PowerSupplier连接状态
///
private bool _sideAPowerSupplierConnected;
///
/// SideA 步阶1数据
///
private PowerSupplierStepPeriodData _sideAStep1Data = new PowerSupplierStepPeriodData();
///
/// SideA 步阶2数据
///
private PowerSupplierStepPeriodData _sideAStep2Data = new PowerSupplierStepPeriodData();
///
/// SideA 步阶3数据
///
private PowerSupplierStepPeriodData _sideAStep3Data = new PowerSupplierStepPeriodData();
#endregion
#region SideB
///
/// SideA PowerSupplier
///
private string _sideBPowerSupplier;
///
/// SideB PowerSupplier数据
///
private PowerSupplierData _sideBPowerSupplierData;
///
/// SideB PowerSupplier连接状态
///
private bool _sideBPowerSupplierConnected;
///
/// SideB 步阶1数据
///
private PowerSupplierStepPeriodData _sideBStep1Data = new PowerSupplierStepPeriodData();
///
/// SideB 步阶2数据
///
private PowerSupplierStepPeriodData _sideBStep2Data = new PowerSupplierStepPeriodData();
///
/// SideB 步阶3数据
///
private PowerSupplierStepPeriodData _sideBStep3Data = new PowerSupplierStepPeriodData();
#endregion
#endregion
#region 属性
///
/// 模块名称
///
public string Module { get { return _module; } set { SetProperty(ref _module, value); } }
#region SideA
///
/// SideA PowerSupplier
///
public string SideAPowerSupplier
{
get { return _sideAPowerSupplier; }
set { SetProperty(ref _sideAPowerSupplier, value); }
}
///
/// SideA PowerSupplier 数据
///
public PowerSupplierData SideAPowerSupplierData
{
get { return _sideAPowerSupplierData; }
set { SetProperty(ref _sideAPowerSupplierData, value);}
}
///
/// SideA PowerSupplier连接状态
///
public bool SideAPowerSupplierConnected
{
get { return _sideAPowerSupplierConnected; }
set { SetProperty(ref _sideAPowerSupplierConnected, value); }
}
///
/// SideA 步阶1数据
///
public PowerSupplierStepPeriodData SideAStep1Data
{
get { return _sideAStep1Data; }
set { SetProperty(ref _sideAStep1Data, value); }
}
///
/// SideA 步阶2数据
///
public PowerSupplierStepPeriodData SideAStep2Data
{
get { return _sideAStep2Data; }
set { SetProperty(ref _sideAStep2Data, value); }
}
///
/// SideA 步阶3数据
///
public PowerSupplierStepPeriodData SideAStep3Data
{
get { return _sideAStep3Data; }
set { SetProperty(ref _sideAStep3Data, value); }
}
#endregion
#region SideB
///
/// SideB PowerSupplier
///
public string SideBPowerSupplier
{
get { return _sideBPowerSupplier; }
set { SetProperty(ref _sideBPowerSupplier, value); }
}
///
/// SideB PowerSupplier 数据
///
public PowerSupplierData SideBPowerSupplierData
{
get { return _sideBPowerSupplierData; }
set { SetProperty(ref _sideBPowerSupplierData, value); }
}
///
/// SideB PowerSupplier连接状态
///
public bool SideBPowerSupplierConnected
{
get { return _sideBPowerSupplierConnected; }
set { SetProperty(ref _sideBPowerSupplierConnected, value); }
}
///
/// SideB 步阶1数据
///
public PowerSupplierStepPeriodData SideBStep1Data
{
get { return _sideBStep1Data; }
set { SetProperty(ref _sideBStep1Data, value); }
}
///
/// SideA 步阶2数据
///
public PowerSupplierStepPeriodData SideBStep2Data
{
get { return _sideBStep2Data; }
set { SetProperty(ref _sideBStep2Data, value); }
}
///
/// SideA 步阶3数据
///
public PowerSupplierStepPeriodData SideBStep3Data
{
get { return _sideBStep3Data; }
set { SetProperty(ref _sideBStep3Data, value); }
}
#endregion
#endregion
///
/// 构造函数
///
public PowerSupplierViewModel()
{
}
///
/// 加载数据
///
public void LoadData(string systemName)
{
Module = systemName;
List lst = new List();
lst.Add($"{Module}.SideA.PowerSupplier");
lst.Add($"{Module}.SideB.PowerSupplier");
_rtDataValues = QueryDataClient.Instance.Service.PollData(lst);
if (_rtDataValues != null)
{
SideAPowerSupplier = CommonFunction.GetValue(_rtDataValues, $"{Module}.SideA.PowerSupplier");
SideBPowerSupplier = CommonFunction.GetValue(_rtDataValues, $"{Module}.SideB.PowerSupplier");
}
InitiRtDataKeys();
if(_timer==null)
{
_timer = new DispatcherTimer();
_timer.Interval = TimeSpan.FromMilliseconds(500);
_timer.Tick += Timer_Tick;
}
_timer.Start();
}
///
/// 定时器执行
///
///
///
private void Timer_Tick(object sender, EventArgs e)
{
if (_rtDataKeys.Count != 0)
{
_rtDataValues = QueryDataClient.Instance.Service.PollData(_rtDataKeys);
if (_rtDataValues != null)
{
SideAPowerSupplierData = CommonFunction.GetValue(_rtDataValues, $"{_sideAPowerSupplier}.{POWERSUPPLIER_DATA}");
SideBPowerSupplierData = CommonFunction.GetValue(_rtDataValues, $"{_sideBPowerSupplier}.{POWERSUPPLIER_DATA}");
SideAPowerSupplierConnected = CommonFunction.GetValue(_rtDataValues, $"{_sideAPowerSupplier}.{CONNECTED}");
SideBPowerSupplierConnected = CommonFunction.GetValue(_rtDataValues, $"{_sideBPowerSupplier}.{CONNECTED}");
}
}
}
///
/// 隐藏
///
public void Hide()
{
if (_timer != null)
{
_timer.Stop();
}
}
///
/// 初始化查询Key
///
private void InitiRtDataKeys()
{
_rtDataKeys.Clear();
if(SideAPowerSupplier!=null)
{
_rtDataKeys.Add($"{_sideAPowerSupplier}.{POWERSUPPLIER_DATA}");
_rtDataKeys.Add($"{_sideAPowerSupplier}.{CONNECTED}");
}
if (SideBPowerSupplier != null)
{
_rtDataKeys.Add($"{_sideBPowerSupplier}.{POWERSUPPLIER_DATA}");
_rtDataKeys.Add($"{_sideBPowerSupplier}.{CONNECTED}");
}
}
}
}