using Aitex.Core.Common;
using Aitex.Core.UI.MVVM;
using MECF.Framework.Common.CommonData.Metal;
using MECF.Framework.Common.CommonData.PowerSupplier;
using MECF.Framework.Common.DataCenter;
using MECF.Framework.Common.OperationCenter;
using MECF.Framework.Common.Persistent.Reservoirs;
using MECF.Framework.Common.RecipeCenter;
using MECF.Framework.Common.ToolLayout;
using MECF.Framework.Common.Utilities;
using MECF.Framework.Common.WaferHolder;
using Prism.Mvvm;
using System;
using System.Collections.Generic;
using System.Windows.Input;
using System.Windows.Threading;
namespace CyberX8_MainPages.ViewModels
{
    internal class MetalSHHomePageViewModel : BindableBase
    {
        #region 常量
        private const string PERSISTENT_VALUE = "PersistentValue";
        private const string METALDATA = "MetalData";
        #endregion
        #region 内部变量
        #region Common
        /// 
        /// 模块名称
        /// 
        private string _module;
        /// 
        /// 当前选择Recipe节点
        /// 
        private RecipeNode _selectedRecipeNode;
        /// 
        /// MetalData
        /// 
        private StandardHotMetalDeviceData _metalData;
        /// 
        /// Metal Persistent
        /// 
        private MetalPersistentValue _metalPersistent;
        /// 
        /// RinseItem
        /// 
        private MetalItem _metalItem;
        /// 
        /// WaferSize
        /// 
        private WaferSize _selectedWaferSize = 0;
        /// 
        /// Wafer Size List
        /// 
        private List _waferSizeList = new List();
        /// 
        /// 页面功能启用
        /// 
        private bool _isEnabled;
        /// 
        /// AutoMode页面功能启用
        /// 
        private bool _isAutoEnabled;
        #endregion
        #region Wafer Holder
        /// 
        /// Wafer Holder属性
        /// 
        private WaferHolderInfo _waferHolderInfo;
        /// 
        /// SeqRecipe
        /// 
        private string _seqRecipe;
        #endregion
        #region 系统数据
        /// 
        /// 定时器
        /// 
        DispatcherTimer _timer;
        /// 
        /// 查询后台数据集合
        /// 
        private List _rtDataKeys = new List();
        /// 
        /// rt查询key数值字典
        /// 
        private Dictionary _rtDataValueDic = new Dictionary();
        #endregion
        #region MetalSH
        /// 
        /// RecipeContent
        /// 
        private string _recipeContent;
        /// 
        /// TimeRemaining 
        /// 
        private double _timeRemaining;
        /// 
        /// OfTotalTime 
        /// 
        private double _totalTime;
        /// 
        /// OperatingMode 
        /// 
        private string _operatingMode;
        /// 
        /// State
        /// 
        private string _state;
        /// 
        /// RecipeMode 
        /// 
        private string _recipeMode;
        #endregion
        #region Metal recipe
        /// 
        /// RecipeModuleName
        /// 
        private string _recipeModuleName;
        /// 
        /// RecipeType
        /// 
        private string _recipeType;
        /// 
        /// AchievedRunRecipeCycle
        /// 
        private int _achievedRunRecipeCycle;
        /// 
        /// 当前Recipe
        /// 
        private string _currentRecipe;
        #endregion
        #region UI Related
        /// 
        /// ClampStatus
        /// 
        private string _clampStatus;
        /// 
        /// IsErrorState
        /// 
        private bool _isErrorState;
        /// 
        /// 是否存在WaferHolder
        /// 
        private bool _isWaferHolder;
        #endregion
        #region PowerSupplier
        /// 
        /// SidA PowerSuplier数据
        /// 
        private PowerSupplierData _sideAPowerSupplierData;
        /// 
        /// SidB PowerSuplier数据
        /// 
        private PowerSupplierData _sideBPowerSupplierData;
        #endregion
        #endregion
        #region 属性
        #region Common
        /// 
        /// MetalDeviceData
        /// 
        public StandardHotMetalDeviceData MetalData
        {
            get { return _metalData; }
            set { SetProperty(ref _metalData, value); }
        }
        /// 
        /// Metal Persistent
        /// 
        public MetalPersistentValue MetalPersistent
        {
            get { return _metalPersistent; }
            set { SetProperty(ref _metalPersistent, value); }
        }
        /// 
        /// 模块名称
        ///        
        public string Module
        {
            get { return _module; }
            set { SetProperty(ref _module, value); }
        }
        /// 
        /// 当前选择Recipe节点
        /// 
        public RecipeNode SelectedRecipeNode
        {
            get { return _selectedRecipeNode; }
            set { SetProperty(ref _selectedRecipeNode, value); }
        }
        /// 
        /// WaferSize
        /// 
        public WaferSize SelectedWaferSize
        {
            get { return _selectedWaferSize; }
            set { SetProperty(ref _selectedWaferSize, value); }
        }
        /// 
        /// WaferSizeList
        /// 
        public List WaferSizeList
        {
            get { return _waferSizeList; }
            set { SetProperty(ref _waferSizeList, value); }
        }
        /// 
        /// 页面功能启用
        /// 
        public bool IsEnabled
        {
            get { return _isEnabled; }
            set { SetProperty(ref _isEnabled, value); }
        }
        /// 
        /// AutoMode页面功能启用
        /// 
        public bool IsAutoEnabled
        {
            get { return _isAutoEnabled; }
            set { SetProperty(ref _isAutoEnabled, value); }
        }
        #endregion
        #region Wafer Holder
        /// 
        /// Wafer Holder属性
        /// 
        public WaferHolderInfo WaferHolderInfo { get { return _waferHolderInfo; } set { SetProperty(ref _waferHolderInfo, value); } }
        /// 
        /// SeqRecipe
        /// 
        public string SeqRecipe
        {
            get { return _seqRecipe; }
            set { SetProperty(ref _seqRecipe, value); }
        }       
        #endregion
        #region MetalCM
        /// 
        /// RecipeContent
        /// 
        public string RecipeContent
        {
            get { return _recipeContent; }
            set { SetProperty(ref _recipeContent, value); }
        }
        /// 
        /// TimeRemaining 
        /// 
        public double TimeRemaining
        {
            get { return _timeRemaining; }
            set { SetProperty(ref _timeRemaining, value); }
        }
        /// 
        /// TotalTime  
        /// 
        public double TotalTime
        {
            get { return _totalTime; }
            set { SetProperty(ref _totalTime, value); }
        }
        /// 
        /// OperatingMode
        /// 
        public string OperatingMode
        {
            get { return _operatingMode; }
            set { SetProperty(ref _operatingMode, value); }
        }
        /// 
        /// State
        /// 
        public string State
        {
            get { return _state; }
            set { SetProperty(ref _state, value); }
        }
        /// 
        /// RecipeMode
        /// 
        public string RecipeMode
        {
            get { return _recipeMode; }
            set { SetProperty(ref _recipeMode, value); }
        }
        #endregion
        #region Metal recipe
        /// 
        /// RecipeModuleName
        /// 
        public string RecipeModuleName
        {
            get { return _recipeModuleName; }
            set { SetProperty(ref _recipeModuleName, value); }
        }
        /// 
        /// RecipeType
        /// 
        public string RecipeType
        {
            get { return _recipeType; }
            set { SetProperty(ref _recipeType, value); }
        }
        /// 
        /// Run Recipe已经完成的次数
        /// 
        public int AchievedRunRecipeCycle
        {
            get { return _achievedRunRecipeCycle; }
            set { SetProperty(ref _achievedRunRecipeCycle, value); }
        }
        /// 
        /// 当前运行的Recipe
        /// 
        public string CurrentRecipe
        {
            get { return _currentRecipe; }
            set { SetProperty(ref _currentRecipe, value); }
        }
        #endregion
        #region UI Related
        /// 
        /// IsErrorState
        /// 
        public bool IsErrorState
        {
            get { return _isErrorState; }
            set { SetProperty(ref _isErrorState, value); }
        }
        /// 
        /// ClampStatus
        /// 
        public string ClampStatus
        {
            get { return _clampStatus; }
            set { SetProperty(ref _clampStatus, value); }
        }
        /// 
        /// 是否存在WaferHolder
        /// 
        public bool IsWaferHolder
        {
            get { return _isWaferHolder; }
            set { SetProperty(ref _isWaferHolder, value); }
        }
        #endregion
        #region PowerSupplier
        /// 
        /// SidA PowerSuplier数据
        /// 
        public PowerSupplierData SideAPowerSupplierData
        {
            get { return _sideAPowerSupplierData; }
            set { SetProperty(ref _sideAPowerSupplierData, value); }
        }
        /// 
        /// SidB PowerSuplier数据
        /// 
        public PowerSupplierData SideBPowerSupplierData
        {
            get { return _sideBPowerSupplierData; }
            set { SetProperty(ref _sideBPowerSupplierData, value); }
        }
        #endregion
        #endregion
        #region Command指令
        public ICommand InitializeCommand { get; set; }
        #endregion
        /// 
        /// 构造函数
        /// 
        public MetalSHHomePageViewModel()
        {
            InitializeCommand = new DelegateCommand