using Aitex.Core.Common; using Aitex.Core.RT.DataCenter; using Aitex.Core.RT.Routine; using Aitex.Core.UI.MVVM; using Aitex.Core.Utilities; using MECF.Framework.Common.CommonData; using MECF.Framework.Common.DataCenter; using MECF.Framework.Common.DBCore; using MECF.Framework.Common.Equipment; using MECF.Framework.Common.OperationCenter; using MECF.Framework.Common.SubstrateTrackings; using MECF.Framework.Common.WaferHolder; using OpenSEMI.ClientBase; using CyberX8_MainPages.Model; using Prism.Common; using Prism.Mvvm; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Input; using Unity; using WPF.Themes.UserControls; using MECF.Framework.Common.Layout; using MECF.Framework.Common.Utilities; using Aitex.Core.UI.ControlDataContext; using System.Reflection; using System.Windows.Threading; using Aitex.Core.Util; using Aitex.Core.RT.Log; namespace CyberX8_MainPages.ViewModels { public class WaferHolderViewModel : BindableBase { #region 局部变量 /// /// buffer数据 /// private ObservableCollection _bufferDatas = null; /// /// 未使用的载具 /// private ObservableCollection _unusedWaferHoders = null; /// /// 选择数据 /// private WaferHolderBufferData _selectedBufferData = null; /// /// 选择未使用数据 /// private WaferHolderInfo _selectedUnusedWaferHolderInfo = null; /// /// csr 类型集合 /// private List _crsTypeLst = null; /// /// Wafer尺寸集合 /// private List _waferSizeLst = null; /// /// 临时数据 /// private WaferHolderBufferData _tmpWaferHolderBufferData = null; /// /// 化学液集合 /// private List _chemistryLst = null; /// /// Location位置集合 /// private List _locationLst = new List(); /// /// Reservoir集合 /// private List _reservoirLst = new List(); /// /// 是否编辑 /// private bool _isEdit = false; /// /// 是否编辑Current Location /// private bool _isLocationEdit = false; /// /// 是否启用SaveandCancel按钮 /// private bool _isSaveandCancelEdit = false; /// /// 操作 /// /// /// 操作 /// private string operation = ""; /// /// 是否编辑载具Id /// private bool _isEditWaferHolderId = false; /// /// 定时器 /// DispatcherTimer _timer; /// /// 查询后台数据集合 /// private List _rtDataKeys = new List(); /// /// rt查询key数值字典 /// private Dictionary _rtDataValueDic = new Dictionary(); /// /// ProcessTransporter是否Busy /// private bool _isProcessTransBusy; /// /// LoaderTransporter是否Busy /// private bool _isLoaderTransBusy; /// /// 是否在Auto模式下 /// private bool _isAutoMode; #endregion #region 属性 public List CrsTypeLst { get { return _crsTypeLst; } set { SetProperty(ref _crsTypeLst, value); } } public List WaferSizeLst { get { return _waferSizeLst; } set { SetProperty(ref _waferSizeLst, value); } } public List ChemistryLst { get { return _chemistryLst; } set { SetProperty(ref _chemistryLst, value); } } /// /// Location位置集合 /// public List LocationLst { get { return _locationLst; } set { SetProperty(ref _locationLst, value); } } public ObservableCollection BufferDatas { get { return _bufferDatas; } set { SetProperty(ref _bufferDatas, value); } } /// /// 未使用载具 /// public ObservableCollection UnusedWaferHolders { get { return _unusedWaferHoders; } set { SetProperty(ref _unusedWaferHoders, value); } } /// /// 选择 /// public WaferHolderBufferData SelectedBufferData { get { return _selectedBufferData; } set { if(_selectedBufferData==null||(value!=null&&value.Id!=_selectedBufferData.Id)) { BufferDataSelectedChanged(value); } SetProperty(ref _selectedBufferData, value); } } /// /// 选择未使用的载具 /// public WaferHolderInfo SelectedUnusedWaferHolderInfo { get { return _selectedUnusedWaferHolderInfo; } set { SetProperty(ref _selectedUnusedWaferHolderInfo, value); } } /// /// 临时数据 /// public WaferHolderBufferData TmpBufferData { get { return _tmpWaferHolderBufferData; } set { SetProperty(ref _tmpWaferHolderBufferData, value); } } /// /// 是否编辑 /// public bool IsEdit { get { return _isEdit; } set { if(!value) { IsEditWaferHolderId = false; } SetProperty(ref _isEdit, value); } } /// /// 是否编辑Current Location /// public bool IsLocationEdit { get { return _isLocationEdit; } set { SetProperty(ref _isLocationEdit, value); } } /// /// 是否启用Save和Cancel /// public bool IsSaveandCancelEdit { get { return _isSaveandCancelEdit; } set { SetProperty(ref _isSaveandCancelEdit, value); } } /// /// 是否编辑载具Id /// public bool IsEditWaferHolderId { get { return _isEditWaferHolderId; } set { SetProperty(ref _isEditWaferHolderId, value); } } #endregion #region 按钮事件 [IgnorePropertyChange] public ICommand EnableCommand { get; private set; } [IgnorePropertyChange] public ICommand DisableCommand { get; private set; } /// /// 增加 /// public ICommand AddCommand { get; private set; } /// /// 编辑 /// public ICommand EditCommand { get; private set; } /// /// 保存 /// public ICommand SaveCommand { get; private set; } /// /// 取消 /// public ICommand CancelCommand { get; private set; } /// /// 移至Loader /// public ICommand MoveToLoaderCommand { get; private set; } /// /// 移出Loader /// public ICommand MoveFromLoaderCommand { get; private set; } /// /// 移除 /// public ICommand RemoveCommand { get; private set; } /// /// MoveLocation /// public ICommand MoveLocationCommand { get; private set; } #endregion /// /// 构造函数 /// public WaferHolderViewModel() { EnableCommand = new DelegateCommand(EnableAction); DisableCommand=new DelegateCommand(DisableAction); AddCommand=new DelegateCommand(AddAction); EditCommand = new DelegateCommand(EditAction); SaveCommand=new DelegateCommand(SaveAction); CancelCommand=new DelegateCommand(CancelAction); MoveToLoaderCommand = new DelegateCommand(MoveToLoaderAction); MoveFromLoaderCommand = new DelegateCommand(MoveFromLoaderAction); RemoveCommand = new DelegateCommand(RemoveAction); MoveLocationCommand = new DelegateCommand(MoveLocationAction); //Wafer尺寸集合 WaferSizeLst = new List(); WaferSizeLst.Add("200"); WaferSizeLst.Add("300"); //化学液集合 string chemistryContent = QueryDataClient.Instance.Service.GetConfig($"System.ChemistryList").ToString(); if (!string.IsNullOrEmpty(chemistryContent)) { ChemistryLst = chemistryContent.Split(',').ToList(); } //CrsType集合 string crstypeContent = QueryDataClient.Instance.Service.GetConfig($"System.LSType").ToString(); if(!string.IsNullOrEmpty(crstypeContent)) { _crsTypeLst = crstypeContent.Split(',').ToList(); } //Location集合 List _rtDataKeys = new List(); _rtDataKeys.Add("System.LayoutCellItems"); var _rtDataValueDic = QueryDataClient.Instance.Service.PollData(_rtDataKeys); if (_rtDataValueDic != null) { //获取ProcessCell列表 LocationLst= CommonFunction.GetValue>(_rtDataValueDic, "System.LayoutCellItems"); } } /// /// 加载数据 /// public void LoadData(string systemName) { if (_timer == null) { _timer = new DispatcherTimer(); _timer.Interval = TimeSpan.FromMilliseconds(200); _timer.Tick += Timer_Tick; } _timer.Start(); _rtDataKeys.Clear(); _rtDataKeys.Add($"Transporter1.IsBusy"); _rtDataKeys.Add($"Transporter2.IsBusy"); _rtDataKeys.Add("System.IsAutoMode"); } /// /// 定时器执行 /// /// /// private void Timer_Tick(object sender, EventArgs e) { if (_rtDataKeys.Count != 0) { _rtDataValueDic = QueryDataClient.Instance.Service.PollData(_rtDataKeys); if (_rtDataValueDic != null) { _isProcessTransBusy = CommonFunction.GetValue(_rtDataValueDic, $"Transporter1.IsBusy"); _isLoaderTransBusy = CommonFunction.GetValue(_rtDataValueDic, $"Transporter2.IsBusy"); _isAutoMode = CommonFunction.GetValue(_rtDataValueDic, $"System.IsAutoMode"); } } } /// /// 加载载具数据 /// public void LoadWaferHolderDatas() { BufferDatas = new ObservableCollection(); for (int i = 1; i <= 16; i++) { BufferDatas.Add(new WaferHolderBufferData() { Id = i }); } List waferHolderInfos = WaferHolderDataClient.Instance.Service.GetAllWaferHolderDatas(); UpdateWaferHolderBufferDatas(waferHolderInfos); GetUnusedWaferHolderData(waferHolderInfos); IsEdit = false; IsSaveandCancelEdit = false; IsLocationEdit = false; } /// /// 更新buffer数据 /// /// private void UpdateWaferHolderBufferDatas(List waferHolderInfos) { for (int i=0;i< BufferDatas.Count;i++) { WaferHolderInfo holderInfo= waferHolderInfos.Find(O => O.BufferId == BufferDatas[i].Id && !string.IsNullOrEmpty(O.CurrentLocation)); if(holderInfo != null) { SwitchWaferInfoToWaferHolderBufferData(holderInfo, BufferDatas[i]); } } } /// /// 获取未使用载具数据 /// /// private void GetUnusedWaferHolderData(List waferHolderInfos) { UnusedWaferHolders = new ObservableCollection(); UnusedWaferHolders.AddRange(waferHolderInfos.FindAll(O => string.IsNullOrEmpty(O.CurrentLocation))); } /// /// 检验选择 /// /// private bool CheckSelection() { if (_selectedBufferData == null) { MessageBox.Show("please select one data", "Check", MessageBoxButton.OK, MessageBoxImage.Error); return false; } if (string.IsNullOrEmpty(SelectedBufferData.WaferHolderId)) { MessageBox.Show("empty data", "Check", MessageBoxButton.OK, MessageBoxImage.Error); return false; } return true; } /// /// 启用事件 /// /// private void EnableAction(object param) { if(!CheckSelection()) { return; } int result= WaferHolderDataClient.Instance.Service.UpdateWaferHolderEnable(SelectedBufferData.WaferHolderId, true); if(result!=0) { SelectedBufferData.Enabled = "True"; } } /// /// 启用事件 /// /// private void DisableAction(object param) { if (!CheckSelection()) { return; } int result= WaferHolderDataClient.Instance.Service.UpdateWaferHolderEnable(SelectedBufferData.WaferHolderId, false); if(result!=0) { SelectedBufferData.Enabled = "False"; } } /// /// 新增 /// /// private void AddAction(object param) { if (_selectedBufferData == null) { MessageBox.Show("please select one data", "Add", MessageBoxButton.OK, MessageBoxImage.Error); return; } if (!string.IsNullOrEmpty(SelectedBufferData.WaferHolderId)) { MessageBox.Show("data exist,can not add operation", "Add", MessageBoxButton.OK, MessageBoxImage.Error); return; } IsEditWaferHolderId = true; operation = "Add"; InitialWaferHolderBuffer(); IsEdit = true; IsSaveandCancelEdit = true; } /// /// 初始数据 /// private void InitialWaferHolderBuffer() { if(SelectedBufferData==null) { return; } TmpBufferData = new WaferHolderBufferData(); TmpBufferData.Enabled = "True"; TmpBufferData.Id = SelectedBufferData.Id; TmpBufferData.CrsATotalUses = "0"; TmpBufferData.CrsAUsesSincePadClean = "0"; TmpBufferData.CrsAUsesSinceSealClean = "0"; TmpBufferData.CrsBTotalUses = "0"; TmpBufferData.CrsBUsesSincePadClean = "0"; TmpBufferData.CrsBUsesSinceSealClean = "0"; TmpBufferData.TotalDummyWafers = "0"; TmpBufferData.TotalProductWafers = "0"; TmpBufferData.TotalUses = "0"; } /// /// 编辑 /// /// private void EditAction(object param) { if (!CheckSelection()) { return; } if(string.IsNullOrEmpty(SelectedBufferData.WaferHolderId)) { MessageBox.Show("empty data","Edit",MessageBoxButton.OK,MessageBoxImage.Error); return; } operation= "edit"; IsEdit = true; IsSaveandCancelEdit = true; } /// /// 检验 /// /// private bool Validation(out string reason) { reason = ""; if (string.IsNullOrEmpty(TmpBufferData.WaferHolderId)) { reason = "WS Id is Empty"; return false; } if(string.IsNullOrEmpty(TmpBufferData.CrsType)) { reason = "LS Type is Empty"; return false; } if (string.IsNullOrEmpty(TmpBufferData.WaferSize)) { reason = "Wafer Size is empty"; return false; } if (string.IsNullOrEmpty(TmpBufferData.CrsAId)) { reason = "LS-A Id is empty"; return false; } if (string.IsNullOrEmpty(TmpBufferData.CrsBId)) { reason = "LS-B Id is empty"; return false; } if (TmpBufferData.CrsAId == TmpBufferData.CrsBId) { reason = "The LS Id of A and B can not be the same"; return false; } if (string.IsNullOrEmpty(TmpBufferData.Chemistry)) { reason = "Chemistry is empty"; return false; } for (int i = 0; i < BufferDatas.Count; i++) { if ( BufferDatas[i].Id != TmpBufferData.Id && (TmpBufferData.CrsAId == BufferDatas[i].CrsAId || TmpBufferData.CrsAId == BufferDatas[i].CrsBId)) { reason = "LS-A Id is already exist"; return false; } if ( BufferDatas[i].Id != TmpBufferData.Id && (TmpBufferData.CrsBId == BufferDatas[i].CrsBId || TmpBufferData.CrsBId == BufferDatas[i].CrsAId) ) { reason = "LS-B Id is already exist"; return false; } } TmpBufferData.TotalDummyWafers = string.IsNullOrEmpty(TmpBufferData.TotalDummyWafers) ? "0" : TmpBufferData.TotalDummyWafers; TmpBufferData.TotalUses = string.IsNullOrEmpty(TmpBufferData.TotalUses) ? "0" : TmpBufferData.TotalUses; TmpBufferData.TotalProductWafers = string.IsNullOrEmpty(TmpBufferData.TotalProductWafers) ? "0" : TmpBufferData.TotalProductWafers; TmpBufferData.CrsATotalUses = string.IsNullOrEmpty(TmpBufferData.CrsATotalUses) ? "0" : TmpBufferData.CrsATotalUses; TmpBufferData.CrsAUsesSincePadClean = string.IsNullOrEmpty(TmpBufferData.CrsAUsesSincePadClean) ? "0" : TmpBufferData.CrsAUsesSincePadClean; TmpBufferData.CrsAUsesSinceSealClean = string.IsNullOrEmpty(TmpBufferData.CrsAUsesSinceSealClean) ? "0" : TmpBufferData.CrsAUsesSinceSealClean; TmpBufferData.CrsBTotalUses = string.IsNullOrEmpty(TmpBufferData.CrsBTotalUses) ? "0" : TmpBufferData.CrsBTotalUses; TmpBufferData.CrsBUsesSincePadClean = string.IsNullOrEmpty(TmpBufferData.CrsBUsesSincePadClean) ? "0" : TmpBufferData.CrsBUsesSincePadClean; TmpBufferData.CrsBUsesSinceSealClean = string.IsNullOrEmpty(TmpBufferData.CrsBUsesSinceSealClean) ? "0" : TmpBufferData.CrsBUsesSinceSealClean; if(!CheckWaferHolderId()) { reason = "WS Id exist"; return false; } return true; } /// /// 检验载具唯 一性 /// /// private bool CheckWaferHolderId() { string waferHolderId = TmpBufferData.WaferHolderId; for(int i=0;i /// 保存 /// /// public void SaveAction(object param) { bool validation = Validation(out var reason); if(!validation) { WPFMessageBox.ShowError(reason); return; } WaferHolderInfo info = WaferHolderBuferDataConvertToWaferHolderInfo(); int result = 0; if(operation=="Add") { info.BufferId = SelectedBufferData.Id; if(info.CurrentLocation == null) { info.CurrentLocation = $"Buffer{info.BufferId}"; } info.WaferAId = $"{info.Id}.01"; info.WaferBId = $"{info.Id}.02"; info.WaferAType = (int)WaferType.Assit; info.WaferBType = (int)WaferType.Assit; TmpBufferData.CurrentLocation = info.CurrentLocation; result= WaferHolderDataClient.Instance.Service.AddWaferHolderData(SelectedBufferData.Id, info); }else if(operation == "MoveLocation") { //判断能否更新位置 if (!string.IsNullOrEmpty(SelectedBufferData.CurrentLocation) && !string.IsNullOrEmpty(info.CurrentLocation)) { if (!_isLoaderTransBusy && !_isProcessTransBusy && !_isAutoMode) { info.WaferAId = $"{info.Id}.01"; info.WaferBId = $"{info.Id}.02"; info.WaferAType = (int)WaferType.Assit; info.WaferBType = (int)WaferType.Assit; result = WaferHolderDataClient.Instance.Service.UpdateWaferHolderData(SelectedBufferData.WaferHolderId, info,true); InvokeClient.Instance.Service.DoOperation($"WaferHolder.TransferWaferHolder", $"{SelectedBufferData.CurrentLocation}", $"{info.CurrentLocation}"); } else if (_isAutoMode) { SelectedBufferData.SwitchData(TmpBufferData); MessageBox.Show("Auto mode can't do this operation", "Save", MessageBoxButton.OK, MessageBoxImage.Error); } else { SelectedBufferData.SwitchData(TmpBufferData); MessageBox.Show("Loader or Process Transporter is in Busy state", "Save", MessageBoxButton.OK, MessageBoxImage.Error); } } } else { //todo edit info.BufferId = SelectedBufferData.Id; info.WaferAId = $"{info.Id}.01"; info.WaferBId = $"{info.Id}.02"; info.WaferAType = (int)WaferType.Assit; info.WaferBType = (int)WaferType.Assit; result = WaferHolderDataClient.Instance.Service.UpdateWaferHolderData(SelectedBufferData.WaferHolderId, info, true); } if (result > 0) { SetSelectedWaferHolderData(); } IsEdit = false; IsLocationEdit = false; IsSaveandCancelEdit = false; operation = ""; } /// /// 取消 /// /// public void CancelAction(object param) { if(operation=="Add") { TmpBufferData = new WaferHolderBufferData(); } else { TmpBufferData = SelectedBufferData.Clone(); } IsEdit = false; IsSaveandCancelEdit = false; IsLocationEdit= false; } /// /// 移入 /// /// public void MoveToLoaderAction(object param) { if(SelectedUnusedWaferHolderInfo==null) { MessageBox.Show("please select one unused data", "Move To Buffer", MessageBoxButton.OK, MessageBoxImage.Error); return; } if(SelectedBufferData==null) { MessageBox.Show("please select one data", "Edit", MessageBoxButton.OK, MessageBoxImage.Error); return; } if (!string.IsNullOrEmpty(SelectedBufferData.WaferHolderId)) { MessageBox.Show("data exist,can not move operation", "Edit", MessageBoxButton.OK, MessageBoxImage.Error); return; } if (MessageBox.Show("do you want to move selected wafer shuttle to buffer", "Move To Buffer", MessageBoxButton.YesNoCancel, MessageBoxImage.Question) == MessageBoxResult.Yes) { SelectedUnusedWaferHolderInfo.CurrentLocation = $"Buffer{SelectedBufferData.Id}"; SelectedUnusedWaferHolderInfo.BufferId = SelectedBufferData.Id; int result = WaferHolderDataClient.Instance.Service.UpdateWaferHolderData(SelectedUnusedWaferHolderInfo.Id, SelectedUnusedWaferHolderInfo,true); if (result != 0) { SwitchWaferInfoToWaferHolderBufferData(SelectedUnusedWaferHolderInfo, SelectedBufferData); BufferDataSelectedChanged(SelectedBufferData); UnusedWaferHolders.Remove(SelectedUnusedWaferHolderInfo); SelectedUnusedWaferHolderInfo = null; } } } /// /// 移出 /// /// public void MoveFromLoaderAction(object param) { if(!CheckSelection()) { return; } if (MessageBox.Show("do you want to move out selected wafer shuttle from buffer", "Move From Buffer", MessageBoxButton.YesNoCancel, MessageBoxImage.Question) == MessageBoxResult.Yes) { WaferHolderInfo info = WaferHolderBuferDataConvertToWaferHolderInfo(); string preLocation = info.CurrentLocation; info.CurrentLocation = ""; int result = WaferHolderDataClient.Instance.Service.UpdateWaferHolderData(SelectedBufferData.WaferHolderId, info, true); if (result != 0) { TmpBufferData = new WaferHolderBufferData(); TmpBufferData.Id = SelectedBufferData.Id; TmpBufferData.SwitchData(SelectedBufferData); UnusedWaferHolders.Add(info); } } } /// /// 移除 /// /// public void RemoveAction(object param) { if (SelectedUnusedWaferHolderInfo == null) { MessageBox.Show("please select one unused data", "Edit", MessageBoxButton.OK, MessageBoxImage.Error); return; } if (MessageBox.Show("do you want to remove selected unused wafer shuttle","remove",MessageBoxButton.YesNoCancel,MessageBoxImage.Question)==MessageBoxResult.Yes) { int result = WaferHolderDataClient.Instance.Service.DeleteWaferHolderData(SelectedUnusedWaferHolderInfo.Id); if (result != 0) { UnusedWaferHolders.Remove(SelectedUnusedWaferHolderInfo); SelectedUnusedWaferHolderInfo = null; } } } /// /// 编辑CurrentLocation /// /// private void MoveLocationAction(object param) { if (!CheckSelection()) { return; } if (string.IsNullOrEmpty(SelectedBufferData.WaferHolderId)) { MessageBox.Show("empty data", "Move Location", MessageBoxButton.OK, MessageBoxImage.Error); return; } operation = "MoveLocation"; IsLocationEdit = true; IsSaveandCancelEdit = true; } /// /// 数据切换 /// /// public void BufferDataSelectedChanged(WaferHolderBufferData waferHolderBufferData) { TmpBufferData=waferHolderBufferData.Clone(); IsEdit = false; IsLocationEdit = false; IsSaveandCancelEdit = false; } /// /// 数据转换 /// /// private WaferHolderInfo WaferHolderBuferDataConvertToWaferHolderInfo() { WaferHolderInfo info = new WaferHolderInfo(); info.Id = TmpBufferData.WaferHolderId; info.CrsType = TmpBufferData.CrsType; info.WaferSize = int.Parse(TmpBufferData.WaferSize); info.Chemistry = TmpBufferData.Chemistry; info.TotalUses = int.Parse(TmpBufferData.TotalUses); info.TotalDummyWafers = int.Parse(TmpBufferData.TotalDummyWafers); info.TotalProductWafers = int.Parse(TmpBufferData.TotalProductWafers); info.CrsAId = TmpBufferData.CrsAId; info.CrsATotalUses =int.Parse(TmpBufferData.CrsATotalUses); info.CrsAUsesSincePadClean = int.Parse(TmpBufferData.CrsAUsesSincePadClean); info.CrsAUsesSinceSealClean = int.Parse(TmpBufferData.CrsAUsesSinceSealClean); info.CrsBId = TmpBufferData.CrsBId; info.CrsBTotalUses = int.Parse(TmpBufferData.CrsBTotalUses); info.CrsBUsesSincePadClean = int.Parse(TmpBufferData.CrsBUsesSincePadClean); info.CrsBUsesSinceSealClean = int.Parse(TmpBufferData.CrsBUsesSinceSealClean); info.Enabled =bool.Parse(TmpBufferData.Enabled); info.CurrentLocation = TmpBufferData.CurrentLocation; info.Status = info.Enabled ? WaferHolderStatus.Normal : WaferHolderStatus.Disabled; return info; } /// /// 交换载具数据至载具Buffer数据 /// /// /// private void SwitchWaferInfoToWaferHolderBufferData(WaferHolderInfo info,WaferHolderBufferData data) { data.CrsType = info.CrsType; data.WaferHolderId = info.Id; data.CrsType = info.CrsType; data.Chemistry = info.Chemistry; data.WaferSize = info.WaferSize.ToString(); data.Enabled = info.Enabled.ToString(); data.TotalUses = info.TotalUses.ToString(); data.CrsAId = info.CrsAId; data.CrsATotalUses = info.CrsATotalUses.ToString(); data.CrsAUsesSincePadClean = info.CrsAUsesSincePadClean.ToString(); data.CrsAUsesSinceSealClean = info.CrsAUsesSinceSealClean.ToString(); data.CrsBId = info.CrsBId; data.CrsBTotalUses = info.CrsBTotalUses.ToString(); data.CrsBUsesSincePadClean = info.CrsBUsesSincePadClean.ToString(); data.CrsBUsesSinceSealClean = info.CrsBUsesSinceSealClean.ToString(); data.TotalDummyWafers = info.TotalDummyWafers.ToString(); data.TotalProductWafers = info.TotalProductWafers.ToString(); data.CurrentLocation = info.CurrentLocation; } /// /// 将临时变量赋值 /// private void SetSelectedWaferHolderData() { SelectedBufferData.Id = TmpBufferData.Id; SelectedBufferData.WaferHolderId = TmpBufferData.WaferHolderId; SelectedBufferData.Chemistry = TmpBufferData.Chemistry; SelectedBufferData.CrsType = TmpBufferData.CrsType; SelectedBufferData.WaferSize = TmpBufferData.WaferSize; SelectedBufferData.TotalUses = TmpBufferData.TotalUses; SelectedBufferData.TotalProductWafers = TmpBufferData.TotalProductWafers; SelectedBufferData.TotalDummyWafers = TmpBufferData.TotalDummyWafers; SelectedBufferData.CrsAId = TmpBufferData.CrsAId; SelectedBufferData.CrsATotalUses = TmpBufferData.CrsATotalUses; SelectedBufferData.CrsAUsesSincePadClean = TmpBufferData.CrsBUsesSincePadClean; SelectedBufferData.CrsAUsesSinceSealClean = TmpBufferData.CrsAUsesSinceSealClean; SelectedBufferData.CrsBId = TmpBufferData.CrsBId; SelectedBufferData.CrsBTotalUses = TmpBufferData.CrsBTotalUses; SelectedBufferData.CrsBUsesSincePadClean = TmpBufferData.CrsBUsesSincePadClean; SelectedBufferData.CrsBUsesSinceSealClean = TmpBufferData.CrsBUsesSinceSealClean; SelectedBufferData.Enabled = TmpBufferData.Enabled; SelectedBufferData.CurrentLocation = TmpBufferData.CurrentLocation; } } }