using Aitex.Core.Common;
using Aitex.Core.UI.MVVM;
using MECF.Framework.Common.DataCenter;
using MECF.Framework.Common.Equipment;
using MECF.Framework.Common.OperationCenter;
using MECF.Framework.Common.SubstrateTrackings;
using MECF.Framework.Common.Utilities;
using MECF.Framework.Common.WaferHolder;
using Prism.Mvvm;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Net.NetworkInformation;
using System.Windows;
using System.Windows.Input;
using System.Windows.Threading;
namespace CyberX8_MainPages.ViewModels
{
public class MaterialMovementViewModel : BindableBase
{
#region 常量
private const int DATAGRIP_ROW_NUM = 24;
#endregion
#region 内部变量
#region system
///
/// rt查询key
///
private List _rtDataKeys = new List();
///
/// 时钟
///
DispatcherTimer _timer;
///
/// rt查询数据
///
private Dictionary _rtDataValueDic = new Dictionary();
///
/// LayoutCell列表
///
private ObservableCollection _locationLst;
#endregion
#region Common
///
/// Module
///
private string _module;
///
/// MaterialData Collection
///
private List _materialDatas;
///
/// MaterialData Sub Collection1
///
private ObservableCollection _materialSubdatas1;
///
/// MaterialData Sub Collection2
///
private ObservableCollection _materialSubdatas2;
///
/// MaterialData Sub Collection Buffer1
///
private List _materialSubdatasBuffer1;
///
/// MaterialData Sub Collection Buffer2
///
private List _materialSubdatasBuffer2;
///
/// Pre MaterialDatas1
///
private List _preMaterialDatas1 = new List();
///
/// Pre MaterialDatas2
///
private List _preMaterialDatas2 = new List();
/// ;
///
/// From Loaction选择
///
private string _fromLocation;
///
/// To Location选择
///
private string _toLocation;
///
/// ProcessTransporter是否Busy
///
private bool _isProcessTransBusy;
///
/// LoaderTransporter是否Busy
///
private bool _isLoaderTransBusy;
///
/// 是否在Auto模式下
///
private bool _isAutoMode;
///
/// UpdateLocation按钮是否启用
///
private bool _isMoveEnable;
///
/// Remove按钮是否启用
///
private bool _isRemoveEnable;
///
/// Selected MaterialData
///
private ModuleMaterial _selectedMaterialData;
///
/// Pre Selected MaterialData
///
private ModuleMaterial _preSelectedMaterialData;
///
/// Selected MaterialData1
///
private ModuleMaterial _selectedMaterialData1;
///
/// Selected MaterialData2
///
private ModuleMaterial _selectedMaterialData2;
///
/// Selected ModuleName
///
private string _selectedModuleName;
///
/// WaferMove FromSlot列表
///
private ObservableCollection _fromSlotLst = new ObservableCollection();
///
/// WaferMove ToSlot列表
///
private ObservableCollection _toSlotLst = new ObservableCollection();
///
/// WaferMove Modules列表
///
private ObservableCollection _moduleLst = new ObservableCollection();
///
/// WaferMove From Module
///
private ModuleName _fromModule;
///
/// WaferMove To Module
///
private ModuleName _toModule;
///
/// WaferMove To Slot
///
private int _toSlot;
///
/// WaferMove From Slot
///
private int _fromSlot;
///
/// WaferMove Update按钮是否启用
///
private bool _isWaferMoveEnable;
///
/// MaterialDataBuffer
///
private ModuleMaterial _materialDataBuffer;
///
/// Grid Selection
///
private bool _gridSelection;
#endregion
#endregion
#region 属性
#region Common
///
/// MaterialData Collection
///
public List MaterialDatas
{
get { return _materialDatas; }
set
{
SetProperty(ref _materialDatas, value);
}
}
///
/// MaterialData Sub Collection1
///
public ObservableCollection MaterialSubdatas1
{
get { return _materialSubdatas1; }
set
{
SetProperty(ref _materialSubdatas1, value);
}
}
///
/// MaterialData Sub Collection2
///
public ObservableCollection MaterialSubdatas2
{
get { return _materialSubdatas2; }
set
{
SetProperty(ref _materialSubdatas2, value);
}
}
///
/// Selected MaterialData
///
public ModuleMaterial SelectedMaterialData
{
get { return _selectedMaterialData; }
set
{
SetProperty(ref _selectedMaterialData, value);
}
}
///
/// Selected MaterialData1
///
public ModuleMaterial SelectedMaterialData1
{
get { return _selectedMaterialData1; }
set
{
SetProperty(ref _selectedMaterialData1, value);
}
}
///
/// Selected MaterialData2
///
public ModuleMaterial SelectedMaterialData2
{
get { return _selectedMaterialData2; }
set
{
SetProperty(ref _selectedMaterialData2, value);
}
}
///
/// Selected ModuleName
///
public string SelectedModuleName
{
get { return _selectedModuleName; ; }
set
{
SetProperty(ref _selectedModuleName, value);
}
}
///
/// LayoutCell列表
///
public ObservableCollection LocationLst
{
get { return _locationLst; }
set { SetProperty(ref _locationLst, value); }
}
///
/// From Location
///
public string FromLocation
{
get { return _fromLocation; }
set { SetProperty(ref _fromLocation, value); }
}
///
/// To Location
///
public string ToLocation
{
get { return _toLocation; }
set { SetProperty(ref _toLocation, value); }
}
///
/// UpdateLocation按钮是否启用
///
public bool IsMoveEnable
{
get { return _isMoveEnable; }
set { SetProperty(ref _isMoveEnable, value); }
}
///
/// Remove按钮是否启用
///
public bool IsRemoveEnable
{
get { return _isRemoveEnable; }
set { SetProperty(ref _isRemoveEnable, value); }
}
///
/// WaferMove FromSlot列表
///
public ObservableCollection FromSlotLst
{
get { return _fromSlotLst; }
set { SetProperty(ref _fromSlotLst, value); }
}
///
/// WaferMove ToSlot列表
///
public ObservableCollection ToSlotLst
{
get { return _toSlotLst; }
set { SetProperty(ref _toSlotLst, value); }
}
///
/// WaferMove Modules列表
///
public ObservableCollection ModuleLst
{
get { return _moduleLst; }
set { SetProperty(ref _moduleLst, value); }
}
///
/// WaferMove From Module
///
public ModuleName FromModule
{
get { return _fromModule; }
set { SetProperty(ref _fromModule, value); }
}
///
/// WaferMove To Module
///
public ModuleName ToModule
{
get { return _toModule; }
set { SetProperty(ref _toModule, value); }
}
///
/// WaferMove To Slot
///
public int ToSlot
{
get { return _toSlot; }
set { SetProperty(ref _toSlot, value); }
}
///
/// WaferMove To Slot
///
public int FromSlot
{
get { return _fromSlot; }
set { SetProperty(ref _fromSlot, value); }
}
///
/// WaferMove按钮是否启用
///
public bool IsWaferMoveEnable
{
get { return _isWaferMoveEnable; }
set { SetProperty(ref _isWaferMoveEnable, value); }
}
#endregion
#endregion
#region 命令
public ICommand UpdateLocationCommand { get; private set; }
public ICommand UpdateWaferCommand { get; private set; }
public ICommand RemoveCommand { get; private set; }
public ICommand ModuleChangeCommand { get; private set; }
public ICommand SelectionChangeCommand { get; private set; }
public ICommand ResetWafersCommand { get; private set; }
#endregion
///
/// 构造函数
///
public MaterialMovementViewModel()
{
_materialDatas = new List();
_materialSubdatas1 = new ObservableCollection();
_materialSubdatas2 = new ObservableCollection();
_materialSubdatasBuffer1 = new List();
_materialSubdatasBuffer2 = new List();
UpdateLocationCommand = new DelegateCommand