| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630 | using Aitex.Core.RT.SCCore;using Caliburn.Micro;using Caliburn.Micro.Core;using MECF.Framework.Common.DataCenter;using MECF.Framework.Common.RecipeCenter;using MECF.Framework.UI.Client.CenterViews.Editors.Recipe;using System;using System.Collections.Generic;using System.Collections.ObjectModel;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using FurnaceUI.Models;using FurnaceUI.Views.Parameter;using FurnaceUI.Views.Recipes;using System.Windows.Controls;using FurnaceUI.Views.DataLog;using FurnaceUI.Client.Dialog;namespace FurnaceUI.Views.Editors{    public class RecipeLayoutSetMonitorTransferViewModel : FurnaceUIViewModelBase    {        private Visibility _autoLayoutVisibility = Visibility.Visible;        public Visibility AutoLayoutVisibility        {            get => _autoLayoutVisibility;            set            {                _autoLayoutVisibility = value;                NotifyOfPropertyChange(nameof(AutoLayoutVisibility));            }        }        private Visibility _boatSlotVisibility = Visibility.Hidden;        public Visibility BoatSlotVisibility        {            get => _boatSlotVisibility;            set            {                _boatSlotVisibility = value;                NotifyOfPropertyChange(nameof(BoatSlotVisibility));            }        }        private Visibility _directCarrierVisibility = Visibility.Hidden;        public Visibility DirectCarrierVisibility        {            get => _directCarrierVisibility;            set            {                _directCarrierVisibility = value;                NotifyOfPropertyChange(nameof(DirectCarrierVisibility));            }        }        private Visibility _upperProductVisibility = Visibility.Hidden;        public Visibility UpperProductVisibility        {            get => _upperProductVisibility;            set            {                _upperProductVisibility = value;                NotifyOfPropertyChange(nameof(UpperProductVisibility));            }        }        private Visibility _autoCarrierVisibility = Visibility.Hidden;        public Visibility AutoCarrierVisibility        {            get => _autoCarrierVisibility;            set            {                _autoCarrierVisibility = value;                NotifyOfPropertyChange(nameof(AutoCarrierVisibility));            }        }        private Dictionary<string, string> MonitorTransferDict = new Dictionary<string, string>();        private string _title = "";        public string Title        {            get => _title;            set            {                _title = value;                NotifyOfPropertyChange(nameof(Title));            }        }        private MonitorTransferType _dialogResultMonitorTransferType = MonitorTransferType.AutoLayout;        public MonitorTransferType DialogResultMonitorTransferType        {            get => _dialogResultMonitorTransferType;            set            {                _dialogResultMonitorTransferType = value;                NotifyOfPropertyChange(nameof(DialogResultMonitorTransferType));            }        }        public bool IsSave { get; set; }        private MonitorTransferType _waferChargeMonitor = MonitorTransferType.AutoLayout;        public MonitorTransferType WaferChargeMonitor        {            get => _waferChargeMonitor;            set            {                _waferChargeMonitor = value;                NotifyOfPropertyChange(nameof(WaferChargeMonitor));            }        }        private string _waferChargeMonitorValue = "";        public string WaferChargeMonitorValue        {            get => _waferChargeMonitorValue;            set            {                _waferChargeMonitorValue = value;                NotifyOfPropertyChange(nameof(WaferChargeMonitorValue));            }        }        private string _transferCarrier1 = "None";        public string TransferCarrier1        {            get => _transferCarrier1;            set            {                _transferCarrier1 = value;                NotifyOfPropertyChange(nameof(TransferCarrier1));            }        }        private string _transferCarrier2 = "None";        public string TransferCarrier2        {            get => _transferCarrier2;            set            {                _transferCarrier2 = value;                NotifyOfPropertyChange(nameof(TransferCarrier2));            }        }        private string _transferCarrier3 = "None";        public string TransferCarrier3        {            get => _transferCarrier3;            set            {                _transferCarrier3 = value;                NotifyOfPropertyChange(nameof(TransferCarrier3));            }        }        private string _transferCarrier4 = "None";        public string TransferCarrier4        {            get => _transferCarrier4;            set            {                _transferCarrier4 = value;                NotifyOfPropertyChange(nameof(TransferCarrier4));            }        }        private string _transferCarrier5 = "None";        public string TransferCarrier5        {            get => _transferCarrier5;            set            {                _transferCarrier5 = value;                NotifyOfPropertyChange(nameof(TransferCarrier5));            }        }        private string _transferCarrier6 = "None";        public string TransferCarrier6        {            get => _transferCarrier6;            set            {                _transferCarrier6 = value;                NotifyOfPropertyChange(nameof(TransferCarrier6));            }        }        private string _transferCarrier7 = "None";        public string TransferCarrier7        {            get => _transferCarrier7;            set            {                _transferCarrier7 = value;                NotifyOfPropertyChange(nameof(TransferCarrier7));            }        }        private string _autoCarrier = "None";        public string AutoCarrier        {            get => _autoCarrier;            set            {                _autoCarrier = value;                NotifyOfPropertyChange(nameof(AutoCarrier));            }        }        private string _returnString = "";        public string ReturnString        {            get => _returnString;            set            {                _returnString = value;                NotifyOfPropertyChange(nameof(ReturnString));            }        }        public RecipeLayoutSetMonitorTransferViewModel()        {        }        public bool IsEnable => CGlobal.RecipeProcessEditViewEnable;//是否是View模式        public void MonitorTransferSelectClick(string cmd)        {            if (MonitorTransferDict.ContainsKey(cmd))            {                Title = MonitorTransferDict[cmd];            }            switch (cmd)            {                case "AutoLayout":                    SetSelectAutoLayout();                    break;                case "BoatSlot":                    SetSelectBoatSlot();                    break;                case "DirectCarrier":                    SetSelectDirectCarrier();                    break;                case "AutoCarrier":                    SetSelectAutoCarrier();                    break;                default:                    break;            }        }        private void SetSelectAutoLayout()        {            AutoLayoutVisibility = Visibility.Visible;            BoatSlotVisibility = Visibility.Hidden;            DirectCarrierVisibility = Visibility.Hidden;            UpperProductVisibility = Visibility.Hidden;            AutoCarrierVisibility = Visibility.Hidden;            DialogResultMonitorTransferType = MonitorTransferType.AutoLayout;        }        private void SetSelectBoatSlot()        {            AutoLayoutVisibility = Visibility.Hidden;            BoatSlotVisibility = Visibility.Visible;            DirectCarrierVisibility = Visibility.Hidden;            UpperProductVisibility = Visibility.Hidden;            AutoCarrierVisibility = Visibility.Hidden;            DialogResultMonitorTransferType = MonitorTransferType.BoatSlot;        }        private void SetSelectDirectCarrier()        {            AutoLayoutVisibility = Visibility.Hidden;            BoatSlotVisibility = Visibility.Hidden;            DirectCarrierVisibility = Visibility.Visible;            UpperProductVisibility = Visibility.Hidden;            AutoCarrierVisibility = Visibility.Hidden;            DialogResultMonitorTransferType = MonitorTransferType.DirectCarrier;        }        private void SetSelectAutoCarrier()        {            AutoLayoutVisibility = Visibility.Hidden;            BoatSlotVisibility = Visibility.Hidden;            DirectCarrierVisibility = Visibility.Hidden;            UpperProductVisibility = Visibility.Hidden;            AutoCarrierVisibility = Visibility.Visible;            DialogResultMonitorTransferType = MonitorTransferType.AutoCarrier;        }        public string RecipeType { get; set; }        protected override void OnViewLoaded(object view)        {            base.OnViewLoaded(view);            LoadData();            LoadSetDefaultOption(view);        }        private void LoadData()        {            MonitorTransferDict.Clear();            MonitorTransferDict.Add("AutoLayout", "Set Monitor Wafer number to transfer the boat. The wafersare arranged for the locations divided the Product areaby the numbers .");            MonitorTransferDict.Add("BoatSlot", "Set the boat slot numbers to transfer Monitor Wafers.");            MonitorTransferDict.Add("DirectCarrier", "Set the arrangement of Monitor Wafers between the Product carrier unit on boat.");            MonitorTransferDict.Add("AutoCarrier", "Set the arrangement of Monitor wafer just under UpperSide-Dummy area.In Product area it is arrangedautomatically.");            Title = MonitorTransferDict["AutoLayout"];            ListBoltSlot.Clear();            for (int i = 0; i < 30; i++)            {                ListBoltSlot.Add(new BoltSlot()                { No = i + 1, SlotValue = 0 });            }            SplitCharacter(WaferChargeMonitorValue);        }        private void SplitCharacter(string value)        {            if (string.IsNullOrEmpty(value) || !value.Contains("|")) return;            string[] Strlist = value.Split('|');            if (Strlist.Length != 5) return;            var subListStr = Strlist[0].Split(';');            WaferExist = subListStr[0];            FillReplace = subListStr[1];            int _wfNum = 0;            int.TryParse(Strlist[1], out _wfNum);            WaferNum = _wfNum;            var subBoltSlotStrList = Strlist[2].Split(';');            for (int i = 0; i < subBoltSlotStrList.Length; i++)            {                var getBoltSlot = ListBoltSlot.Where(x => x.No == i + 1).FirstOrDefault();                if (getBoltSlot != null)                {                    int.TryParse(subBoltSlotStrList[i], out int _boltSlotValue);                    getBoltSlot.SlotValue = _boltSlotValue;                }            }            var transferCarrierStrList = Strlist[3].Split(';');            if (transferCarrierStrList.Length == 7)            {                TransferCarrier1 = transferCarrierStrList[0];                TransferCarrier2 = transferCarrierStrList[1];                TransferCarrier3 = transferCarrierStrList[2];                TransferCarrier4 = transferCarrierStrList[3];                TransferCarrier5 = transferCarrierStrList[4];                TransferCarrier6 = transferCarrierStrList[5];                TransferCarrier7 = transferCarrierStrList[6];            }            AutoCarrier = Strlist[4];        }        private void LoadSetDefaultOption(object view)        {            var monitorTransferView = (RecipeLayoutSetMonitorTransferView)view;            switch (_waferChargeMonitor)            {                case MonitorTransferType.AutoLayout:                    monitorTransferView.RdoAutoLayout.IsChecked = true;                    break;                case MonitorTransferType.BoatSlot:                    monitorTransferView.RdoBoatSlot.IsChecked = true;                    break;                case MonitorTransferType.DirectCarrier:                    monitorTransferView.RdoDirectCarrier.IsChecked = true;                    break;                case MonitorTransferType.AutoCarrier:                    monitorTransferView.RdoAutoCarrier.IsChecked = true;                    break;                case MonitorTransferType.None:                    //monitorTransferView.RdoAutoLayout.IsChecked = true;                    break;                default:                    break;            }        }        public void TempSetSave()        {            IsSave = true;            GetWaferChargeMonitorValue();            ((Window)GetView()).DialogResult = true;        }        private void GetWaferChargeMonitorValue()        {            string[] strReturnList = new string[5];            strReturnList[0] = $"{WaferExist};{FillReplace}";            strReturnList[1] = WaferNum.ToString();            strReturnList[2] = string.Join(";", ListBoltSlot.Select(x => x.SlotValue.ToString()).ToArray());            strReturnList[3] = $"{TransferCarrier1};{TransferCarrier2};{TransferCarrier3};{TransferCarrier4};{TransferCarrier5};{TransferCarrier6};{TransferCarrier7}";            strReturnList[4] = AutoCarrier;            ReturnString = string.Join("|", strReturnList);        }        private string _waferExist = "None";        public string WaferExist        {            get => _waferExist;            set            {                _waferExist = value;                NotifyOfPropertyChange(nameof(WaferExist));            }        }        private string _fillReplace = "None";        public string FillReplace        {            get => _fillReplace;            set            {                _fillReplace = value;                NotifyOfPropertyChange(nameof(FillReplace));            }        }        private int _waferNum = 0;        public int WaferNum        {            get => _waferNum;            set            {                _waferNum = value;                NotifyOfPropertyChange(nameof(WaferNum));            }        }        public ObservableCollection<BoltSlot> ListBoltSlot { get; set; } = new ObservableCollection<BoltSlot>();        public void TextSelectCmdMouseDown(string cmd, object sender)        {            var colsender = (TextBox)sender;            WindowManager wm = new WindowManager();            bool? dialogReturn = false;            switch (cmd)            {                case "WaferExist":                    SelectExistViewModel selectExistViewModel1 = new SelectExistViewModel();                    selectExistViewModel1.ProductZeroStr = WaferExist;                    dialogReturn = wm.ShowDialogWithTitle(selectExistViewModel1, null, "Select");                    if ((bool)dialogReturn)                    {                        WaferExist = selectExistViewModel1.DialogResultString;                    }                    break;                case "FillReplace":                    SelectExistViewModel selectExistViewModel2 = new SelectExistViewModel();                    selectExistViewModel2.ProductZeroStr = WaferExist;                    dialogReturn = wm.ShowDialogWithTitle(selectExistViewModel2, null, "Select");                    if ((bool)dialogReturn)                    {                        FillReplace = selectExistViewModel2.DialogResultString;                    }                    break;                default:                    break;            }        }        public void TransferCmdMouseDown(string cmd, object sender)        {            var colsender = (TextBox)sender;            WindowManager wm = new WindowManager();            bool? dialogReturn = false;            SelectExistViewModel selectExistViewModel = new SelectExistViewModel();            switch (cmd)            {                case "1":                    selectExistViewModel.ProductZeroStr = TransferCarrier1;                    dialogReturn = wm.ShowDialogWithTitle(selectExistViewModel, null, "Select");                    if ((bool)dialogReturn)                    {                        TransferCarrier1 = selectExistViewModel.DialogResultString;                    }                    break;                case "2":                    selectExistViewModel.ProductZeroStr = TransferCarrier2;                    dialogReturn = wm.ShowDialogWithTitle(selectExistViewModel, null, "Select");                    if ((bool)dialogReturn)                    {                        TransferCarrier2 = selectExistViewModel.DialogResultString;                    }                    break;                case "3":                    selectExistViewModel.ProductZeroStr = TransferCarrier3;                    dialogReturn = wm.ShowDialogWithTitle(selectExistViewModel, null, "Select");                    if ((bool)dialogReturn)                    {                        TransferCarrier3 = selectExistViewModel.DialogResultString;                    }                    break;                case "4":                    selectExistViewModel.ProductZeroStr = TransferCarrier4;                    dialogReturn = wm.ShowDialogWithTitle(selectExistViewModel, null, "Select");                    if ((bool)dialogReturn)                    {                        TransferCarrier4 = selectExistViewModel.DialogResultString;                    }                    break;                case "5":                    selectExistViewModel.ProductZeroStr = TransferCarrier5;                    dialogReturn = wm.ShowDialogWithTitle(selectExistViewModel, null, "Select");                    if ((bool)dialogReturn)                    {                        TransferCarrier5 = selectExistViewModel.DialogResultString;                    }                    break;                case "6":                    selectExistViewModel.ProductZeroStr = TransferCarrier6;                    dialogReturn = wm.ShowDialogWithTitle(selectExistViewModel, null, "Select");                    if ((bool)dialogReturn)                    {                        TransferCarrier6 = selectExistViewModel.DialogResultString;                    }                    break;                case "7":                    selectExistViewModel.ProductZeroStr = TransferCarrier7;                    dialogReturn = wm.ShowDialogWithTitle(selectExistViewModel, null, "Select");                    if ((bool)dialogReturn)                    {                        TransferCarrier7 = selectExistViewModel.DialogResultString;                    }                    break;                default:                    break;            }        }        public void AutoCarrierCmdMouseDown(string cmd, object sender)        {            var colsender = (TextBox)sender;            WindowManager wm = new WindowManager();            bool? dialogReturn = false;            SelectExistViewModel selectExistViewModel = new SelectExistViewModel();            switch (cmd)            {                case "Transfer":                    selectExistViewModel.ProductZeroStr = AutoCarrier;                    dialogReturn = wm.ShowDialogWithTitle(selectExistViewModel, null, "Select");                    if ((bool)dialogReturn)                    {                        AutoCarrier = selectExistViewModel.DialogResultString;                    }                    break;                default:                    break;            }        }        public void TempSetCancel()        {            IsSave = false;            ((Window)GetView()).DialogResult = false;        }    }    public enum MonitorTransferType    {        AutoLayout,        BoatSlot,        DirectCarrier,        AutoCarrier,        None    }    public class BoltSlot : PropertyChangedBase    {        private int _no;        public int No        {            get => _no;            set            {                _no = value;                NotifyOfPropertyChange("No");            }        }        private int _slotValue;        public int SlotValue        {            get => _slotValue;            set            {                _slotValue = value;                NotifyOfPropertyChange("SlotValue");            }        }    }}
 |