using MECF.Framework.Common.CommonData.PUF;
using MECF.Framework.Common.DataCenter;
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 PunkHPX8_MainPages.ViewModels
{
public class VPWStationSetupViewModel : BindableBase
{
#region 常量
private const string MOTION_DATA = "MotionData";
private const string IS_SWITCH_ON = "IsSwitchOn";
private const string CURRENT_STATION = "CurrentStation";
#endregion
#region 内部变量
#region VPW1Rotation
///
/// VPW1Rotation模块名称
///
private string _vPW1RotationModuleName;
///
/// VPW1Rotation运动数据
///
private CommandMotionData _vPW1RotationMotionData;
///
/// VPW1Rotation当前位置
///
private string _vPW1RotationCurrentStation;
#endregion
#region VPW2Rotation
///
/// VPW2Rotation模块名称
///
private string _vPW2RotationModuleName;
///
/// VPW1Rotation运动数据
///
private CommandMotionData _vPW2RotationMotionData;
///
/// VPW1Rotation当前位置
///
private string _vPW2RotationCurrentStation;
#endregion
#region 系统数据
///
/// 定时器
///
DispatcherTimer _timer;
///
/// 查询后台数据集合
///
private List _rtDataKeys = new List();
///
/// rt查询key数值字典
///
private Dictionary _rtDataValueDic = new Dictionary();
#endregion
#endregion
#region 属性
#region VPW1Rotation
///
/// VPW1Rotation名称
///
public string VPW1RotationModuleName
{
get { return _vPW1RotationModuleName; }
set { SetProperty(ref _vPW1RotationModuleName, value); }
}
///
/// VPW1Rotation运动数据
///
public CommandMotionData VPW1RotationMotionData
{
get { return _vPW1RotationMotionData; }
set { SetProperty(ref _vPW1RotationMotionData, value); }
}
///
/// VPW1Rotation当前位置
///
public string VPW1RotationCurrentStation
{
get { return _vPW1RotationCurrentStation; }
set { SetProperty(ref _vPW1RotationCurrentStation, value); }
}
#endregion
#region VPW2Rotation
///
/// VPW2Rotation名称
///
public string VPW2RotationModuleName
{
get { return _vPW2RotationModuleName; }
set { SetProperty(ref _vPW2RotationModuleName, value); }
}
///
/// VPW2Rotation运动数据
///
public CommandMotionData VPW2RotationMotionData
{
get { return _vPW2RotationMotionData; }
set { SetProperty(ref _vPW2RotationMotionData, value); }
}
///
/// VPW1Rotation当前位置
///
public string VPW2RotationCurrentStation
{
get { return _vPW2RotationCurrentStation; }
set { SetProperty(ref _vPW2RotationCurrentStation, value); }
}
#endregion
#endregion
///
/// 加载数据
///
public void LoadData(string systemName)
{
VPW1RotationModuleName = $"{ModuleName.VpwCell1}.Rotation";
VPW2RotationModuleName = $"{ModuleName.VpwCell2}.Rotation";
AddDataKeys();
if (_timer == null)
{
_timer = new DispatcherTimer();
_timer.Interval = TimeSpan.FromMilliseconds(200);
_timer.Tick += Timer_Tick; ;
}
_timer.Start();
}
///
/// 定时器执行
///
///
///
private void Timer_Tick(object sender, EventArgs e)
{
OnTimer();
}
///
/// 隐藏
///
public void Hide()
{
if (_timer != null)
{
_timer.Stop();
}
}
///
/// 初始化查询数据集合
///
private void AddDataKeys()
{
_rtDataKeys.Clear();
_rtDataKeys.Add($"{VPW1RotationModuleName}.{MOTION_DATA}");
_rtDataKeys.Add($"{VPW1RotationModuleName}.{IS_SWITCH_ON}");
_rtDataKeys.Add($"{VPW1RotationModuleName}.{CURRENT_STATION}");
_rtDataKeys.Add($"{VPW2RotationModuleName}.{MOTION_DATA}");
_rtDataKeys.Add($"{VPW2RotationModuleName}.{IS_SWITCH_ON}");
_rtDataKeys.Add($"{VPW2RotationModuleName}.{CURRENT_STATION}");
_rtDataKeys.Add($"{VPW2RotationModuleName}.{CURRENT_STATION}");
}
///
/// 定时器
///
///
private Boolean OnTimer()
{
if (_rtDataKeys.Count != 0)
{
_rtDataValueDic = QueryDataClient.Instance.Service.PollData(_rtDataKeys);
if (_rtDataValueDic != null)
{
VPW1RotationMotionData = CommonFunction.GetValue(_rtDataValueDic, $"{VPW1RotationModuleName}.{MOTION_DATA}");
VPW1RotationCurrentStation = CommonFunction.GetCurrentStationLastContent(CommonFunction.GetValue(_rtDataValueDic, $"{VPW1RotationModuleName}.{CURRENT_STATION}"), VPW1RotationModuleName);
VPW2RotationMotionData = CommonFunction.GetValue(_rtDataValueDic, $"{VPW2RotationModuleName}.{MOTION_DATA}");
VPW2RotationCurrentStation = CommonFunction.GetCurrentStationLastContent(CommonFunction.GetValue(_rtDataValueDic, $"{VPW2RotationModuleName}.{CURRENT_STATION}"), VPW2RotationModuleName);
}
}
return true;
}
}
}