| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454 | 
							- using Aitex.Core.Common;
 
- using FurnaceUI.Views.Maintenances;
 
- using MECF.Framework.Common.Equipment;
 
- using MECF.Framework.Common.OperationCenter;
 
- using MECF.Framework.Common.SubstrateTrackings;
 
- using MECF.Framework.UI.Client.Annotations;
 
- using MECF.Framework.UI.Client.ClientBase;
 
- using SciChart.Core.Extensions;
 
- using System;
 
- using System.Collections.Generic;
 
- using System.ComponentModel;
 
- using System.Linq;
 
- using System.Runtime.CompilerServices;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- using System.Windows;
 
- using System.Windows.Controls;
 
- using System.Windows.Data;
 
- using System.Windows.Documents;
 
- using System.Windows.Input;
 
- using System.Windows.Media;
 
- using System.Windows.Media.Animation;
 
- using System.Windows.Media.Imaging;
 
- using System.Windows.Navigation;
 
- using System.Windows.Shapes;
 
- namespace FurnaceUI.Controls.Parts
 
- {
 
-     /// <summary>
 
-     /// CassetteView.xaml 的交互逻辑
 
-     /// </summary>
 
-     public partial class CassetteView : UserControl, INotifyPropertyChanged
 
-     {
 
-         public string CarrierModule
 
-         {
 
-             get { return (string)GetValue(CarrierModuleProperty); }
 
-             set
 
-             {
 
-                 SetValue(CarrierModuleProperty, value);
 
-             }
 
-         }
 
-         public static readonly DependencyProperty CarrierModuleProperty =
 
-             DependencyProperty.Register("CarrierModule", typeof(string), typeof(CassetteView), new PropertyMetadata("System"));
 
-         public int CarrierSlot
 
-         {
 
-             get { return (int)GetValue(CarrierSlotProperty); }
 
-             set
 
-             {
 
-                 SetValue(CarrierSlotProperty, value);
 
-             }
 
-         }
 
-         public static readonly DependencyProperty CarrierSlotProperty =
 
-             DependencyProperty.Register("CarrierSlot", typeof(int), typeof(CassetteView), new PropertyMetadata(0));
 
-         public CarrierInfo CarrierData
 
-         {
 
-             get { return (CarrierInfo)GetValue(CarrierDataProperty); }
 
-             set
 
-             {
 
-                 SetValue(CarrierDataProperty, value);
 
-                 OnPropertyChanged("CarrierData");
 
-             }
 
-         }
 
-         public static readonly DependencyProperty CarrierDataProperty =
 
-             DependencyProperty.Register("CarrierData", typeof(CarrierInfo), typeof(CassetteView), new PropertyMetadata(new CarrierInfo(1), CarrierDataChangedCallback));
 
-         public Visibility StockerPCassetteVisibility
 
-         {
 
-             get { return (Visibility)GetValue(StockerPCassetteVisibilityProperty); }
 
-             set { SetValue(StockerPCassetteVisibilityProperty, value); }
 
-         }
 
-         // Using a DependencyProperty as the backing store for StockerPCassetteVisibility.  This enables animation, styling, binding, etc...
 
-         public static readonly DependencyProperty StockerPCassetteVisibilityProperty =
 
-             DependencyProperty.Register("StockerPCassetteVisibility", typeof(Visibility), typeof(CassetteView), new PropertyMetadata(Visibility.Hidden));
 
-         public Visibility StockerEDCassetteVisibility
 
-         {
 
-             get { return (Visibility)GetValue(StockerEDCassetteVisibilityProperty); }
 
-             set { SetValue(StockerEDCassetteVisibilityProperty, value); }
 
-         }
 
-         // Using a DependencyProperty as the backing store for StockerPCassetteVisibility.  This enables animation, styling, binding, etc...
 
-         public static readonly DependencyProperty StockerEDCassetteVisibilityProperty =
 
-             DependencyProperty.Register("StockerEDCassetteVisibility", typeof(Visibility), typeof(CassetteView), new PropertyMetadata(Visibility.Hidden));
 
-         public Visibility ProcessCassetteVisibility
 
-         {
 
-             get { return (Visibility)GetValue(ProcessCassetteVisibilityProperty); }
 
-             set { SetValue(ProcessCassetteVisibilityProperty, value); }
 
-         }
 
-         // Using a DependencyProperty as the backing store for StockerPCassetteVisibility.  This enables animation, styling, binding, etc...
 
-         public static readonly DependencyProperty ProcessCassetteVisibilityProperty =
 
-             DependencyProperty.Register("ProcessCassetteVisibility", typeof(Visibility), typeof(CassetteView), new PropertyMetadata(Visibility.Hidden));
 
-         public Visibility StockerMCassetteVisibility
 
-         {
 
-             get { return (Visibility)GetValue(StockerMCassetteVisibilityProperty); }
 
-             set { SetValue(StockerMCassetteVisibilityProperty, value); }
 
-         }
 
-         // Using a DependencyProperty as the backing store for StockerPCassetteVisibility.  This enables animation, styling, binding, etc...
 
-         public static readonly DependencyProperty StockerMCassetteVisibilityProperty =
 
-             DependencyProperty.Register("StockerMCassetteVisibility", typeof(Visibility), typeof(CassetteView), new PropertyMetadata(Visibility.Hidden));
 
-         public Visibility StockerM1CassetteVisibility
 
-         {
 
-             get { return (Visibility)GetValue(StockerM1CassetteVisibilityProperty); }
 
-             set { SetValue(StockerM1CassetteVisibilityProperty, value); }
 
-         }
 
-         // Using a DependencyProperty as the backing store for StockerPCassetteVisibility.  This enables animation, styling, binding, etc...
 
-         public static readonly DependencyProperty StockerM1CassetteVisibilityProperty =
 
-             DependencyProperty.Register("StockerM1CassetteVisibility", typeof(Visibility), typeof(CassetteView), new PropertyMetadata(Visibility.Hidden));
 
-         public Visibility StockerM2CassetteVisibility
 
-         {
 
-             get { return (Visibility)GetValue(StockerM2CassetteVisibilityProperty); }
 
-             set { SetValue(StockerM2CassetteVisibilityProperty, value); }
 
-         }
 
-         // Using a DependencyProperty as the backing store for StockerPCassetteVisibility.  This enables animation, styling, binding, etc...
 
-         public static readonly DependencyProperty StockerM2CassetteVisibilityProperty =
 
-             DependencyProperty.Register("StockerM2CassetteVisibility", typeof(Visibility), typeof(CassetteView), new PropertyMetadata(Visibility.Hidden));
 
-         public Visibility StockerSDCassetteVisibility
 
-         {
 
-             get { return (Visibility)GetValue(StockerSDCassetteVisibilityProperty); }
 
-             set { SetValue(StockerSDCassetteVisibilityProperty, value); }
 
-         }
 
-         // Using a DependencyProperty as the backing store for StockerPCassetteVisibility.  This enables animation, styling, binding, etc...
 
-         public static readonly DependencyProperty StockerSDCassetteVisibilityProperty =
 
-             DependencyProperty.Register("StockerSDCassetteVisibility", typeof(Visibility), typeof(CassetteView), new PropertyMetadata(Visibility.Hidden));
 
-         public string CassetteType
 
-         {
 
-             get { return (string)GetValue(CassetteTypeProperty); }
 
-             set
 
-             {
 
-                 SetValue(CassetteTypeProperty, value);
 
-                 OnPropertyChanged("CassetteType");
 
-             }
 
-         }
 
-         // Using a DependencyProperty as the backing store for CassetteType.  This enables animation, styling, binding, etc...
 
-         public static readonly DependencyProperty CassetteTypeProperty =
 
-             DependencyProperty.Register("CassetteType", typeof(string), typeof(CassetteView), new PropertyMetadata(null, CassetteTypeChangedCallback));
 
-         public int WaferCount
 
-         {
 
-             get { return (int)GetValue(WaferCountProperty); }
 
-             set
 
-             {
 
-                 SetValue(WaferCountProperty, value);
 
-                 OnPropertyChanged("WaferCount");
 
-             }
 
-         }
 
-         // Using a DependencyProperty as the backing store for WaferCount.  This enables animation, styling, binding, etc...
 
-         public static readonly DependencyProperty WaferCountProperty =
 
-             DependencyProperty.Register("WaferCount", typeof(int), typeof(CassetteView), new PropertyMetadata(0));
 
-         public double oldScale = 0;
 
-         public static void CarrierDataChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
 
-         {
 
-             var selfView = (CassetteView)d;
 
-             var data = (CarrierInfo)e.NewValue;
 
-             //if (!ModuleManager.ModuleInfos.ContainsKey(selfView.CarrierModule))
 
-             //{
 
-             //    selfView.ProcessCassetteVisibility = Visibility.Hidden;
 
-             //    return;
 
-             //}
 
-             //var currentWafers = ModuleManager.ModuleInfos[selfView.CarrierModule].WaferManager.Wafers;
 
-             //if (data == null || !data.HasWaferIn || currentWafers == null || currentWafers.Count == 0)
 
-             //{
 
-             //    selfView.ProcessCassetteVisibility = Visibility.Hidden;
 
-             //    SetCassetteColor(selfView.CassetteType, d);
 
-             //    return;
 
-             //}
 
-             //var tempList = currentWafers.Where(p => !string.IsNullOrEmpty(p.WaferID)).ToList();
 
-             //if (tempList.All(o => o.WaferStatus > 1))
 
-             //{
 
-             //    var processedWafer = currentWafers.Where(a => a.WaferStatus > 1).FirstOrDefault();
 
-             //    if (processedWafer != null && (processedWafer.WaferType.Equals(WaferType.P) || processedWafer.WaferType.Equals(WaferType.M) || processedWafer.WaferType.Equals(WaferType.M1) || processedWafer.WaferType.Equals(WaferType.M2)))
 
-             //    {
 
-             //        selfView.StockerPCassetteVisibility = Visibility.Hidden;
 
-             //        selfView.StockerMCassetteVisibility = Visibility.Hidden;
 
-             //        selfView.StockerM1CassetteVisibility = Visibility.Hidden;
 
-             //        selfView.StockerM2CassetteVisibility = Visibility.Hidden;
 
-             //        selfView.StockerSDCassetteVisibility = Visibility.Hidden;
 
-             //        selfView.StockerEDCassetteVisibility = Visibility.Hidden;
 
-             //        selfView.ProcessCassetteVisibility = Visibility.Visible;
 
-             //    }
 
-             //}
 
-         }
 
-         public static void CassetteTypeChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
 
-         {
 
-             var self = (CassetteView)d;
 
-             switch ((string)e.NewValue)
 
-             {
 
-                 case "P":
 
-                     self.StockerPCassetteVisibility = Visibility.Visible;
 
-                     self.StockerMCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM1CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM2CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerSDCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerEDCassetteVisibility = Visibility.Hidden;
 
-                     self.ProcessCassetteVisibility = Visibility.Hidden;
 
-                     break;
 
-                 case "M":
 
-                     self.StockerPCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerMCassetteVisibility = Visibility.Visible;
 
-                     self.StockerM1CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM2CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerSDCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerEDCassetteVisibility = Visibility.Hidden;
 
-                     self.ProcessCassetteVisibility = Visibility.Hidden;
 
-                     break;
 
-                 case "M1":
 
-                     self.StockerPCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerMCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM1CassetteVisibility = Visibility.Visible;
 
-                     self.StockerM2CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerSDCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerEDCassetteVisibility = Visibility.Hidden;
 
-                     self.ProcessCassetteVisibility = Visibility.Hidden;
 
-                     break;
 
-                 case "M2":
 
-                     self.StockerPCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerMCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM1CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM2CassetteVisibility = Visibility.Visible;
 
-                     self.StockerSDCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerEDCassetteVisibility = Visibility.Hidden;
 
-                     self.ProcessCassetteVisibility = Visibility.Hidden;
 
-                     break;
 
-                 case "SD":
 
-                     self.StockerPCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerMCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM1CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM2CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerSDCassetteVisibility = Visibility.Visible;
 
-                     self.StockerEDCassetteVisibility = Visibility.Hidden;
 
-                     self.ProcessCassetteVisibility = Visibility.Hidden;
 
-                     break;
 
-                 case "ED":
 
-                     self.StockerPCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerMCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM1CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM2CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerSDCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerEDCassetteVisibility = Visibility.Visible;
 
-                     self.ProcessCassetteVisibility = Visibility.Hidden;
 
-                     break;
 
-                 case "Process":
 
-                     self.StockerPCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerMCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM1CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM2CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerSDCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerEDCassetteVisibility = Visibility.Hidden;
 
-                     self.ProcessCassetteVisibility = Visibility.Visible;
 
-                     break;
 
-                 default:
 
-                     self.StockerPCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerMCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM1CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM2CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerSDCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerEDCassetteVisibility = Visibility.Hidden;
 
-                     self.ProcessCassetteVisibility = Visibility.Hidden;
 
-                     break;
 
-             }
 
-         }
 
-         static void SetCassetteColor(string typeStr, DependencyObject d)
 
-         {
 
-             var self = (CassetteView)d;
 
-             switch (typeStr)
 
-             {
 
-                 case "P":
 
-                     self.StockerPCassetteVisibility = Visibility.Visible;
 
-                     self.StockerMCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM1CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM2CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerSDCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerEDCassetteVisibility = Visibility.Hidden;
 
-                     self.ProcessCassetteVisibility = Visibility.Hidden;
 
-                     break;
 
-                 case "M":
 
-                     self.StockerPCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerMCassetteVisibility = Visibility.Visible;
 
-                     self.StockerM1CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM2CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerSDCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerEDCassetteVisibility = Visibility.Hidden;
 
-                     self.ProcessCassetteVisibility = Visibility.Hidden;
 
-                     break;
 
-                 case "M1":
 
-                     self.StockerPCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerMCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM1CassetteVisibility = Visibility.Visible;
 
-                     self.StockerM2CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerSDCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerEDCassetteVisibility = Visibility.Hidden;
 
-                     self.ProcessCassetteVisibility = Visibility.Hidden;
 
-                     break;
 
-                 case "M2":
 
-                     self.StockerPCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerMCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM1CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM2CassetteVisibility = Visibility.Visible;
 
-                     self.StockerSDCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerEDCassetteVisibility = Visibility.Hidden;
 
-                     self.ProcessCassetteVisibility = Visibility.Hidden;
 
-                     break;
 
-                 case "SD":
 
-                     self.StockerPCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerMCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM1CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM2CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerSDCassetteVisibility = Visibility.Visible;
 
-                     self.StockerEDCassetteVisibility = Visibility.Hidden;
 
-                     self.ProcessCassetteVisibility = Visibility.Hidden;
 
-                     break;
 
-                 case "ED":
 
-                     self.StockerPCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerMCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM1CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM2CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerSDCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerEDCassetteVisibility = Visibility.Visible;
 
-                     self.ProcessCassetteVisibility = Visibility.Hidden;
 
-                     break;
 
-                 case "Process":
 
-                     self.StockerPCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerMCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM1CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM2CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerSDCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerEDCassetteVisibility = Visibility.Hidden;
 
-                     self.ProcessCassetteVisibility = Visibility.Visible;
 
-                     break;
 
-                 default:
 
-                     self.StockerPCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerMCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM1CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerM2CassetteVisibility = Visibility.Hidden;
 
-                     self.StockerSDCassetteVisibility = Visibility.Hidden;
 
-                     self.StockerEDCassetteVisibility = Visibility.Hidden;
 
-                     self.ProcessCassetteVisibility = Visibility.Hidden;
 
-                     break;
 
-             }
 
-         }
 
-         public CassetteView()
 
-         {
 
-             InitializeComponent();
 
-         }
 
-         public event PropertyChangedEventHandler PropertyChanged;
 
-         [NotifyPropertyChangedInvocator]
 
-         protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
 
-         {
 
-             PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
 
-         }
 
-         static void PropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
 
-         {
 
-         }
 
-         protected override void OnRender(DrawingContext drawingContext)
 
-         {
 
-             base.OnRender(drawingContext);
 
-         }
 
-         public void Filp(int filp, int angle, bool absolute = true, int ms = 0, double accelerationRatio = 0, double decelerationRatio = 0, Action onComplete = null)
 
-         {
 
-             var storyboard = new Storyboard();
 
-             storyboard.Completed += (s, e) => onComplete?.Invoke();
 
-             if (Filp(storyboard, filp, angle, absolute, ms, accelerationRatio, decelerationRatio, onComplete))
 
-             {
 
-                 storyboard.Begin();
 
-             }
 
-             else
 
-             {
 
-                 onComplete?.Invoke();
 
-             }
 
-         }
 
-         public bool Filp(Storyboard storyboard, int filp, int angle, bool absolute = true, int ms = 0, double accelerationRatio = 0, double decelerationRatio = 0, Action onComplete = null)
 
-         {
 
-             var newScale = 0.5;
 
-             if (newScale == oldScale)
 
-             {
 
-                 return false;
 
-             }
 
-             ScaleTransform scaleTransform = new ScaleTransform();
 
-             if (filp == 180)
 
-             {
 
-                 scaleTransform.ScaleX = -1;
 
-             }
 
-             else
 
-             {
 
-                 scaleTransform.ScaleX = 1;
 
-             }
 
-             TransformGroup Group = new TransformGroup();
 
-             Group.Children.Add(scaleTransform);
 
-             tbWaferCount.RenderTransform = Group;
 
-             tbWaferCount.RenderTransformOrigin = new Point(0.5, 0.5);
 
-             var animation = new DoubleAnimation(oldScale, angle, TimeSpan.FromMilliseconds(ms));
 
-             animation.AccelerationRatio = accelerationRatio;
 
-             animation.DecelerationRatio = decelerationRatio;
 
-             storyboard.Children.Add(animation);
 
-             Storyboard.SetTarget(animation, tbWaferCount);
 
-             Storyboard.SetTargetProperty(animation, new PropertyPath("RenderTransform.(TransformGroup.Children)[0].(TranslateTransform.X)"));
 
-             oldScale = angle;
 
-             return true;
 
-         }
 
-         private void CreateCassette(object sender, RoutedEventArgs e)
 
-         {
 
-             InvokeClient.Instance.Service.DoOperation("System.CreateCarrier", CarrierModule, 0);
 
-         }
 
-         private void DeleteCassette(object sender, RoutedEventArgs e)
 
-         {
 
-             InvokeClient.Instance.Service.DoOperation("System.DeleteCarrier", CarrierModule, 0);
 
-         }
 
-     }
 
- }
 
 
  |