| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174 | using Aitex.Core.Common;using Aitex.Core.RT.SCCore;using Aitex.Core.Util;using Caliburn.Micro;using Caliburn.Micro.Core;using FurnaceUI.Common;using FurnaceUI.Models;using MECF.Framework.Common.DataCenter;using MECF.Framework.Common.Equipment;using MECF.Framework.Common.OperationCenter;using MECF.Framework.Common.SubstrateTrackings;using MECF.Framework.UI.Client.ClientBase;using Microsoft.VisualBasic;using OpenSEMI.ClientBase;using System;using System.Collections.Generic;using System.Collections.ObjectModel;using System.Linq;using System.Net.Sockets;using System.Text;using System.Threading;using System.Threading.Tasks;using System.Windows;namespace FurnaceUI.Views.Jobs{    public class LoadJOBTwoViewModel : FurnaceModuleUIViewModelBase    {        public bool IsExecuteRTCommand { get; set; } = true;        public bool IsAutoFillCarrierId { get; set; } = false;        public bool IsPChecked { get; set; } = true;        public bool IsMChecked { get; set; } = false;        public bool IsM1Checked { get; set; } = false;        public bool IsM2Checked { get; set; } = false;        public bool IsSDChecked { get; set; } = false;        public bool IsEDChecked { get; set; } = false;        public Visibility IsWaferTypeExceptPVisible => IsExecuteRTCommand ? Visibility.Visible : Visibility.Collapsed;        public Visibility PTypeRadioButtonVisibility { get; set; }        public Visibility MTypeRadioButtonVisibility { get; set; }        public Visibility M1TypeRadioButtonVisibility { get; set; }        public Visibility M2TypeRadioButtonVisibility { get; set; }        public Visibility SDTypeRadioButtonVisibility { get; set; }        public Visibility EDTypeRadioButtonVisibility { get; set; }        public bool IsSetValue { get; set; } = false;        public LoadJOBTwoViewModel()        {        }        private int MaxValue;        [Subscription("Stocker1.LotID")]        public string Stocker1LotID { get; set; }        [Subscription("Stocker2.LotID")]        public string Stocker2LotID { get; set; }        [Subscription("Stocker3.LotID")]        public string Stocker3LotID { get; set; }        [Subscription("Stocker4.LotID")]        public string Stocker4LotID { get; set; }        [Subscription("Stocker5.LotID")]        public string Stocker5LotID { get; set; }        [Subscription("Stocker6.LotID")]        public string Stocker6LotID { get; set; }        [Subscription("Stocker7.LotID")]        public string Stocker7LotID { get; set; }        [Subscription("Stocker8.LotID")]        public string Stocker8LotID { get; set; }        [Subscription("Stocker9.LotID")]        public string Stocker9LotID { get; set; }        [Subscription("Stocker10.LotID")]        public string Stocker10LotID { get; set; }        [Subscription("Stocker11.LotID")]        public string Stocker11LotID { get; set; }        [Subscription("Stocker12.LotID")]        public string Stocker12LotID { get; set; }        [Subscription("Stocker13.LotID")]        public string Stocker13LotID { get; set; }        [Subscription("Stocker14.LotID")]        public string Stocker14LotID { get; set; }        [Subscription("Stocker15.LotID")]        public string Stocker15LotID { get; set; }        [Subscription("Stocker16.LotID")]        public string Stocker16LotID { get; set; }        [Subscription("Stocker17.LotID")]        public string Stocker17LotID { get; set; }        [Subscription("Stocker18.LotID")]        public string Stocker18LotID { get; set; }        [Subscription("Stocker19.LotID")]        public string Stocker19LotID { get; set; }        [Subscription("Stocker20.LotID")]        public string Stocker20LotID { get; set; }        [Subscription("Stocker21.LotID")]        public string Stocker21LotID { get; set; }        [Subscription("Stocker1.Carrier")]        public CarrierInfo Stocker1CarrierData { get; set; }        [Subscription("Stocker2.Carrier")]        public CarrierInfo Stocker2CarrierData { get; set; }        [Subscription("Stocker3.Carrier")]        public CarrierInfo Stocker3CarrierData { get; set; }        [Subscription("Stocker4.Carrier")]        public CarrierInfo Stocker4CarrierData { get; set; }        [Subscription("Stocker5.Carrier")]        public CarrierInfo Stocker5CarrierData { get; set; }        [Subscription("Stocker6.Carrier")]        public CarrierInfo Stocker6CarrierData { get; set; }        [Subscription("Stocker7.Carrier")]        public CarrierInfo Stocker7CarrierData { get; set; }        [Subscription("Stocker8.Carrier")]        public CarrierInfo Stocker8CarrierData { get; set; }        [Subscription("Stocker9.Carrier")]        public CarrierInfo Stocker9CarrierData { get; set; }        [Subscription("Stocker10.Carrier")]        public CarrierInfo Stocker10CarrierData { get; set; }        [Subscription("Stocker11.Carrier")]        public CarrierInfo Stocker11CarrierData { get; set; }        [Subscription("Stocker12.Carrier")]        public CarrierInfo Stocker12CarrierData { get; set; }        [Subscription("Stocker13.Carrier")]        public CarrierInfo Stocker13CarrierData { get; set; }        [Subscription("Stocker14.Carrier")]        public CarrierInfo Stocker14CarrierData { get; set; }        [Subscription("Stocker15.Carrier")]        public CarrierInfo Stocker15CarrierData { get; set; }        [Subscription("Stocker16.Carrier")]        public CarrierInfo Stocker16CarrierData { get; set; }        [Subscription("Stocker17.Carrier")]        public CarrierInfo Stocker17CarrierData { get; set; }        [Subscription("Stocker18.Carrier")]        public CarrierInfo Stocker18CarrierData { get; set; }        [Subscription("Stocker19.Carrier")]        public CarrierInfo Stocker19CarrierData { get; set; }        [Subscription("Stocker20.Carrier")]        public CarrierInfo Stocker20CarrierData { get; set; }        [Subscription("Stocker21.Carrier")]        public CarrierInfo Stocker21CarrierData { get; set; }        [Subscription("FIMS1.Carrier")]        public CarrierInfo FIMS1CarrierData { get; set; }        [Subscription("FIMS2.Carrier")]        public CarrierInfo FIMS2CarrierData { get; set; }        [Subscription("LP1.Carrier")]        public CarrierInfo LP1CarrierData { get; set; }        [Subscription("LP2.Carrier")]        public CarrierInfo LP2CarrierData { get; set; }        [Subscription("CarrierRobot.Carrier")]        public CarrierInfo CassetteRobotCarrierData { get; set; }        public ObservableCollection<CarrierInfo> CarrierDataNameList { get; set; } = new ObservableCollection<CarrierInfo>();        [Subscription("Scheduler.OccupyStockers")]        public List<string> OccupyStockers { get; set; }        private int _stockValue;        public int StockValue        {            get => _stockValue;            set            {                _stockValue = value;                NotifyOfPropertyChange("StockValue");            }        }        private Visibility _pTypeVisibility = Visibility.Visible;        public Visibility PTypeVisibility        {            get => _pTypeVisibility;            set            {                _pTypeVisibility = value;                NotifyOfPropertyChange("PTypeVisibility");            }        }        private Visibility _sdTypeVisibility = Visibility.Hidden;        public Visibility SDTypeVisibility        {            get => _sdTypeVisibility;            set            {                _sdTypeVisibility = value;                NotifyOfPropertyChange("SDTypeVisibility");            }        }        private Visibility _m1TypeVisibility = Visibility.Hidden;        public Visibility M1TypeVisibility        {            get => _m1TypeVisibility;            set            {                _m1TypeVisibility = value;                NotifyOfPropertyChange("M1TypeVisibility");            }        }        private Visibility _m2TypeVisibility = Visibility.Hidden;        public Visibility M2TypeVisibility        {            get => _m2TypeVisibility;            set            {                _m2TypeVisibility = value;                NotifyOfPropertyChange("M2TypeVisibility");            }        }        private Visibility _edTypeVisibility = Visibility.Hidden;        public Visibility EDTypeVisibility        {            get => _edTypeVisibility;            set            {                _edTypeVisibility = value;                NotifyOfPropertyChange("EDTypeVisibility");            }        }        private Visibility _mTypeVisibility = Visibility.Hidden;        public Visibility MTypeVisibility        {            get => _mTypeVisibility;            set            {                _mTypeVisibility = value;                NotifyOfPropertyChange("MTypeVisibility");            }        }        private Visibility _allTypeVisibility = Visibility.Hidden;        public Visibility AllTypeVisibility        {            get => _allTypeVisibility;            set            {                _allTypeVisibility = value;                NotifyOfPropertyChange("ALLTypeVisibility");            }        }        public string ExecCommand { get; set; }        public string ExecText { get; set; } = "EXEC";        private string _batchType = "P";        public string WaferType { get; set; } = "P";        public string LoadJobPara { get; set; }        public string LoadJobTypePara { get; set; }        public ObservableCollection<CarrierInfo> MCarrierlist = new ObservableCollection<CarrierInfo>();        public ObservableCollection<CarrierInfo> M1Carrierlist = new ObservableCollection<CarrierInfo>();        public ObservableCollection<CarrierInfo> M2Carrierlist = new ObservableCollection<CarrierInfo>();        public ObservableCollection<CarrierInfo> SDCarrierlist = new ObservableCollection<CarrierInfo>();        public ObservableCollection<CarrierInfo> EDCarrierlist = new ObservableCollection<CarrierInfo>();        public ObservableCollection<CarrierInfo> PCarrierlist = new ObservableCollection<CarrierInfo>();        public ObservableCollection<CarrierInfo> NoneCarrierlist = new ObservableCollection<CarrierInfo>();        public ObservableCollection<CarrierInfo> Carrierlist = new ObservableCollection<CarrierInfo>();        public Dictionary<string, string> stockerWaferTypeDict { get; set; } = new Dictionary<string, string>();        public ObservableCollection<CarrierMaterialInformation> CarrierM1ItemList { get; set; } = new ObservableCollection<CarrierMaterialInformation>();        public ObservableCollection<CarrierMaterialInformation> CarrierM1ItemTempList { get; set; } = new ObservableCollection<CarrierMaterialInformation>();        public ObservableCollection<CarrierMaterialInformation> CarrierM2ItemList { get; set; } = new ObservableCollection<CarrierMaterialInformation>();        public ObservableCollection<CarrierMaterialInformation> CarrierM2ItemTempList { get; set; } = new ObservableCollection<CarrierMaterialInformation>();        public ObservableCollection<CarrierMaterialInformation> CarrierMItemList { get; set; } = new ObservableCollection<CarrierMaterialInformation>();        public ObservableCollection<CarrierMaterialInformation> CarrierMItemTempList { get; set; } = new ObservableCollection<CarrierMaterialInformation>();        public ObservableCollection<CarrierMaterialInformation> CarrierSDItemList { get; set; } = new ObservableCollection<CarrierMaterialInformation>();        public ObservableCollection<CarrierMaterialInformation> CarrierSDItemTempList { get; set; } = new ObservableCollection<CarrierMaterialInformation>();        public ObservableCollection<CarrierMaterialInformation> CarrierEDItemList { get; set; } = new ObservableCollection<CarrierMaterialInformation>();        public ObservableCollection<CarrierMaterialInformation> CarrierEDItemTempList { get; set; } = new ObservableCollection<CarrierMaterialInformation>();        public ObservableCollection<CarrierMaterialInformation> CarrierPItemList { get; set; } = new ObservableCollection<CarrierMaterialInformation>();        public ObservableCollection<CarrierMaterialInformation> CarrierPItemTempList { get; set; } = new ObservableCollection<CarrierMaterialInformation>();        public ObservableCollection<CarrierInformation> CarrierInformationList { get; set; } = new ObservableCollection<CarrierInformation>();        protected override void OnInitialize()        {            base.OnInitialize();            IsAutoFillCarrierId = (bool)QueryDataClient.Instance.Service.GetConfig("System.IsAutoFillCarrierId");            InitStockerWaferTypeDict();            if (IsM1Checked)            {                M1TypeVisibility = Visibility.Visible;                WaferType = "M1";            }            else if (IsM2Checked)            {                M2TypeVisibility = Visibility.Visible;                WaferType = "M2";            }            else if (IsPChecked)            {                PTypeVisibility = Visibility.Visible;                WaferType = "P";            }            else if (IsEDChecked)            {                EDTypeVisibility = Visibility.Visible;                WaferType = "ED";            }            else if (IsSDChecked)            {                SDTypeVisibility = Visibility.Visible;                WaferType = "SD";            }            else            {                EDTypeVisibility = Visibility.Visible;                WaferType = "ED";            }            MaxValue = 0;        }        private void InitStockerWaferTypeDict()        {            for (int i = 1; i <= 18; i++)            {                var dataType = (string)QueryDataClient.Instance.Service.GetConfig($"System.Stocker.Stocker{i}WaferType").ToString();                var stockerWaferType = dataType.Replace("1", "").Replace("2", "");                var item = stockerWaferType.ToString() + i;                stockerWaferTypeDict.Add(item, dataType);            }        }        public void StockerCarrier()        {            CarrierDataNameList.Clear();            if (Stocker1CarrierData != null)            {                Stocker1CarrierData.StockerIndex = 1;                CarrierDataNameList.Add(Stocker1CarrierData);            }            if (Stocker2CarrierData != null)            {                Stocker2CarrierData.StockerIndex = 2;                CarrierDataNameList.Add(Stocker2CarrierData);            }            if (Stocker3CarrierData != null)            {                Stocker3CarrierData.StockerIndex = 3;                CarrierDataNameList.Add(Stocker3CarrierData);            }            if (Stocker4CarrierData != null)            {                Stocker4CarrierData.StockerIndex = 4;                CarrierDataNameList.Add(Stocker4CarrierData);            }            if (Stocker5CarrierData != null)            {                Stocker5CarrierData.StockerIndex = 5;                CarrierDataNameList.Add(Stocker5CarrierData);            }            if (Stocker6CarrierData != null)            {                Stocker6CarrierData.StockerIndex = 6;                CarrierDataNameList.Add(Stocker6CarrierData);            }            if (Stocker7CarrierData != null)            {                Stocker7CarrierData.StockerIndex = 7;                CarrierDataNameList.Add(Stocker7CarrierData);            }            if (Stocker8CarrierData != null)            {                Stocker8CarrierData.StockerIndex = 8;                CarrierDataNameList.Add(Stocker8CarrierData);            }            if (Stocker9CarrierData != null)            {                Stocker9CarrierData.StockerIndex = 9;                CarrierDataNameList.Add(Stocker9CarrierData);            }            if (Stocker10CarrierData != null)            {                Stocker10CarrierData.StockerIndex = 10;                CarrierDataNameList.Add(Stocker10CarrierData);            }            if (Stocker11CarrierData != null)            {                Stocker11CarrierData.StockerIndex = 11;                CarrierDataNameList.Add(Stocker11CarrierData);            }            if (Stocker12CarrierData != null)            {                Stocker12CarrierData.StockerIndex = 12;                CarrierDataNameList.Add(Stocker12CarrierData);            }            if (Stocker13CarrierData != null)            {                Stocker13CarrierData.StockerIndex = 13;                CarrierDataNameList.Add(Stocker13CarrierData);            }            if (Stocker14CarrierData != null)            {                Stocker14CarrierData.StockerIndex = 14;                CarrierDataNameList.Add(Stocker14CarrierData);            }            if (Stocker15CarrierData != null)            {                Stocker15CarrierData.StockerIndex = 15;                CarrierDataNameList.Add(Stocker15CarrierData);            }            if (Stocker16CarrierData != null)            {                Stocker16CarrierData.StockerIndex = 16;                CarrierDataNameList.Add(Stocker16CarrierData);            }            if (Stocker17CarrierData != null)            {                Stocker17CarrierData.StockerIndex = 17;                CarrierDataNameList.Add(Stocker17CarrierData);            }            if (Stocker18CarrierData != null)            {                Stocker18CarrierData.StockerIndex = 18;                CarrierDataNameList.Add(Stocker18CarrierData);            }            foreach (var item in CarrierDataNameList)            {                if (string.IsNullOrEmpty(item.Name))                {                    item.Name = $"Stocker{item.StockerIndex}";                }            }            if ((bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsFIMS1Installed"))                CarrierDataNameList.Add(FIMS1CarrierData);            if ((bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsFIMS2Installed"))                CarrierDataNameList.Add(FIMS2CarrierData);            CarrierDataNameList.Add(CassetteRobotCarrierData);        }        string[] moduleNames = new string[] { "Stocker1", "Stocker2", "Stocker3", "Stocker4", "Stocker5", "Stocker6", "Stocker7", "Stocker8", "Stocker9",            "Stocker10","Stocker11","Stocker12","Stocker13","Stocker14","Stocker15","Stocker16","Stocker17","Stocker18"};        protected override void InvokeAfterUpdateProperty(Dictionary<string, object> data)        {            base.InvokeAfterUpdateProperty(data);        }        protected override void OnViewLoaded(object view)        {            base.OnViewLoaded(view);            StockerCarrier();            MCarrierlist.Clear();            M1Carrierlist.Clear();            M2Carrierlist.Clear();            EDCarrierlist.Clear();            SDCarrierlist.Clear();            PCarrierlist.Clear();            for (int i = 0; i < CarrierDataNameList.Count; i++)            {                string stockerType = (string)QueryDataClient.Instance.Service.GetConfig($"System.Stocker.Stocker{CarrierDataNameList[i].StockerIndex}WaferType");                if (stockerType == null)                {                    continue;                }                if (OccupyStockers != null && OccupyStockers.Any(x => x == $"Stocker{CarrierDataNameList[i].StockerIndex}"))                    continue;                //有下列几种情况下 stocker不被统计                //1:位于CarrierRobot上                //2:位于FIMS1/2上                //3:放到了其他stocker上                var boolCarrierRobot = (CassetteRobotCarrierData != null && CassetteRobotCarrierData.InnerId != Guid.Empty && CassetteRobotCarrierData.InternalModuleName.ToString().Equals(CarrierDataNameList[i].Name));                var boolFIMS1 = (FIMS1CarrierData != null && FIMS1CarrierData.InnerId != Guid.Empty && FIMS1CarrierData.InternalModuleName.ToString().Equals(CarrierDataNameList[i].Name));                var boolFIMS2 = (FIMS2CarrierData != null && FIMS2CarrierData.InnerId != Guid.Empty && FIMS2CarrierData.InternalModuleName.ToString().Equals(CarrierDataNameList[i].Name));                var boolOtherStocker = (CarrierDataNameList[i].Name != CarrierDataNameList[i].InternalModuleName.ToString() && CarrierDataNameList[i].InnerId != Guid.Empty);                if (boolCarrierRobot || boolFIMS1 || boolFIMS2 || boolOtherStocker)                {                    continue;                }                if (stockerType.Equals("M1") || stockerType.Equals(CarrierType.None.ToString()))                {                    CarrierDataNameList[i].CarrierType = stockerType.Equals(CarrierType.M1.ToString()) ? CarrierType.M1 : CarrierType.None;                    M1Carrierlist.Add(CarrierDataNameList[i]);                }                if (stockerType.Equals("M2") || stockerType.Equals(CarrierType.None.ToString()))                {                    CarrierDataNameList[i].CarrierType = stockerType.Equals(CarrierType.M2.ToString()) ? CarrierType.M2 : CarrierType.None;                    M2Carrierlist.Add(CarrierDataNameList[i]);                }                if (stockerType.Equals("ED") || stockerType.Equals(CarrierType.None.ToString()))                {                    CarrierDataNameList[i].CarrierType = stockerType.Equals(CarrierType.ED.ToString()) ? CarrierType.ED : CarrierType.None;                    EDCarrierlist.Add(CarrierDataNameList[i]);                }                if (stockerType.Equals("SD") || stockerType.Equals(CarrierType.None.ToString()))                {                    CarrierDataNameList[i].CarrierType = stockerType.Equals(CarrierType.SD.ToString()) ? CarrierType.SD : CarrierType.None;                    SDCarrierlist.Add(CarrierDataNameList[i]);                }                if (stockerType.Contains("P") || stockerType.Equals(CarrierType.None.ToString()))                {                    CarrierDataNameList[i].CarrierType = stockerType.Contains(CarrierType.P.ToString()) ? CarrierType.P : CarrierType.None;                    PCarrierlist.Add(CarrierDataNameList[i]);                }            }        }        protected override void OnViewReady(object view)        {            base.OnViewReady(view);        }        protected override void OnActivate()        {            base.OnActivate();        }        public void ValueCmd(string cmdPar)        {            switch (cmdPar)            {                case "Add":                    //最大值调整为动态获取 而不是根据配置项                    MaxValue = getStockEmptyMaxValue(WaferType);                    if (StockValue < MaxValue)                    {                        StockValue++;                        //InitialPortName(WaferType);                        switch (WaferType)                        {                            case "P":                                CarrierPItemTempList.Clear();                                for (int i = 0; i < PCarrierlist.Count; i++)                                {                                    if (CarrierStatus.Normal.Equals(PCarrierlist[i].Status)) continue;                                    if (!(bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{PCarrierlist[i].StockerIndex}Installed")) continue;                                    CarrierMaterialInformation carrierInfo = new CarrierMaterialInformation();                                    carrierInfo.No = $"{PCarrierlist[i].StockerIndex}";                                    carrierInfo.ModuleName = $"Stocker{PCarrierlist[i].StockerIndex}";                                    carrierInfo.CarrierType = PCarrierlist[i].CarrierType.ToString();                                    carrierInfo.CarrierId = PCarrierlist[i].CarrierId;                                    carrierInfo.WaferCount = PCarrierlist[i].WaferCount.ToString();                                    carrierInfo.StockerCarrierEnable = true;                                    CarrierPItemTempList.Add(carrierInfo);                                }                                CarrierPItemList.Add(CarrierPItemTempList[StockValue - 1]);                                break;                            case "SD":                                CarrierSDItemTempList.Clear();                                for (int i = 0; i < SDCarrierlist.Count; i++)                                {                                    if (CarrierStatus.Normal.Equals(SDCarrierlist[i].Status)) continue;                                    if (!(bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{SDCarrierlist[i].StockerIndex}Installed")) continue;                                    CarrierMaterialInformation carrierInfo = new CarrierMaterialInformation();                                    carrierInfo.No = $"{SDCarrierlist[i].StockerIndex}"; ;                                    carrierInfo.ModuleName = $"Stocker{SDCarrierlist[i].StockerIndex}";                                    carrierInfo.CarrierType = SDCarrierlist[i].CarrierType.ToString();                                    carrierInfo.CarrierId = SDCarrierlist[i].CarrierId;                                    carrierInfo.WaferCount = SDCarrierlist[i].WaferCount.ToString();                                    carrierInfo.StockerCarrierEnable = true;                                    CarrierSDItemTempList.Add(carrierInfo);                                }                                CarrierSDItemList.Add(CarrierSDItemTempList[StockValue - 1]);                                break;                            case "ED":                                CarrierEDItemTempList.Clear();                                for (int i = 0; i < EDCarrierlist.Count; i++)                                {                                    if (CarrierStatus.Normal.Equals(EDCarrierlist[i].Status)) continue;                                    if (!(bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{EDCarrierlist[i].StockerIndex}Installed")) continue;                                    CarrierMaterialInformation carrierInfo = new CarrierMaterialInformation();                                    carrierInfo.No = $"{EDCarrierlist[i].StockerIndex}";                                    carrierInfo.ModuleName = $"Stocker{EDCarrierlist[i].StockerIndex}";                                    carrierInfo.CarrierType = EDCarrierlist[i].CarrierType.ToString();                                    carrierInfo.CarrierId = EDCarrierlist[i].CarrierId;                                    carrierInfo.WaferCount = EDCarrierlist[i].WaferCount.ToString();                                    carrierInfo.StockerCarrierEnable = true;                                    CarrierEDItemTempList.Add(carrierInfo);                                }                                CarrierEDItemList.Add(CarrierEDItemTempList[StockValue - 1]);                                break;                            case "M":                                CarrierMItemTempList.Clear();                                for (int i = 0; i < MCarrierlist.Count; i++)                                {                                    if (CarrierStatus.Normal.Equals(MCarrierlist[i].Status)) continue;                                    if (!(bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{MCarrierlist[i].StockerIndex}Installed")) continue;                                    CarrierMaterialInformation carrierInfo = new CarrierMaterialInformation();                                    carrierInfo.No = $"{MCarrierlist[i].StockerIndex}";                                    //carrierInfo.ModuleName = MCarrierlist[i].InternalModuleName.ToString();                                    carrierInfo.ModuleName = $"Stocker{MCarrierlist[i].StockerIndex}";                                    carrierInfo.CarrierType = MCarrierlist[i].CarrierType.ToString();                                    carrierInfo.CarrierId = MCarrierlist[i].CarrierId;                                    carrierInfo.WaferCount = MCarrierlist[i].WaferCount.ToString();                                    carrierInfo.StockerCarrierEnable = true;                                    CarrierMItemTempList.Add(carrierInfo);                                }                                CarrierMItemList.Add(CarrierMItemTempList[StockValue - 1]);                                break;                            case "M1":                                CarrierM1ItemTempList.Clear();                                for (int i = 0; i < M1Carrierlist.Count; i++)                                {                                    if (CarrierStatus.Normal.Equals(M1Carrierlist[i].Status)) continue;                                    if (!(bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{M1Carrierlist[i].StockerIndex}Installed")) continue;                                    CarrierMaterialInformation carrierInfo = new CarrierMaterialInformation();                                    carrierInfo.No = $"{M1Carrierlist[i].StockerIndex}";                                    carrierInfo.ModuleName = $"Stocker{M1Carrierlist[i].StockerIndex}";                                    carrierInfo.CarrierType = M1Carrierlist[i].CarrierType.ToString();                                    carrierInfo.CarrierId = M1Carrierlist[i].CarrierId;                                    carrierInfo.WaferCount = M1Carrierlist[i].WaferCount.ToString();                                    carrierInfo.StockerCarrierEnable = true;                                    CarrierM1ItemTempList.Add(carrierInfo);                                }                                CarrierM1ItemList.Add(CarrierM1ItemTempList[StockValue - 1]);                                break;                            case "M2":                                CarrierM2ItemTempList.Clear();                                for (int i = 0; i < M2Carrierlist.Count; i++)                                {                                    if (CarrierStatus.Normal.Equals(M2Carrierlist[i].Status)) continue;                                    if (!(bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{M2Carrierlist[i].StockerIndex}Installed")) continue;                                    CarrierMaterialInformation carrierInfo = new CarrierMaterialInformation();                                    carrierInfo.No = $"{M2Carrierlist[i].StockerIndex}";                                    carrierInfo.ModuleName = $"Stocker{M2Carrierlist[i].StockerIndex}";                                    carrierInfo.CarrierType = M2Carrierlist[i].CarrierType.ToString();                                    carrierInfo.CarrierId = M2Carrierlist[i].CarrierId;                                    carrierInfo.WaferCount = M2Carrierlist[i].WaferCount.ToString();                                    carrierInfo.StockerCarrierEnable = true;                                    CarrierM2ItemTempList.Add(carrierInfo);                                }                                CarrierM2ItemList.Add(CarrierM2ItemTempList[StockValue - 1]);                                break;                            default:                                break;                        }                    }                    break;                case "Sub":                    if (StockValue > 0)                    {                        StockValue--;                        if (WaferType == "M" && CarrierMItemList.Count > 0)                        {                            CarrierMItemList.RemoveAt(CarrierMItemList.Count - 1);                        }                        if (WaferType == "M1" && CarrierM1ItemList.Count > 0)                        {                            CarrierM1ItemList.RemoveAt(CarrierM1ItemList.Count - 1);                        }                        if (WaferType == "M2" && CarrierM2ItemList.Count > 0)                        {                            CarrierM2ItemList.RemoveAt(CarrierM2ItemList.Count - 1);                        }                        if (WaferType == "ED" && CarrierEDItemList.Count > 0)                        {                            CarrierEDItemList.RemoveAt(CarrierEDItemList.Count - 1);                        }                        if (WaferType == "SD" && CarrierSDItemList.Count > 0)                        {                            CarrierSDItemList.RemoveAt(CarrierSDItemList.Count - 1);                        }                        if (WaferType == "P" && CarrierPItemList.Count > 0)                        {                            CarrierPItemList.RemoveAt(CarrierPItemList.Count - 1);                        }                        //InitialPortName(WaferType);                    }                    break;                default:                    break;            }        }        /// <summary>        /// 获取指定类型下空Stock数量        /// </summary>        /// <param name="stockType"></param>        /// <returns></returns>        public int getStockEmptyMaxValue(string stockType)        {            if ("P".Equals(stockType))            {                int count = 0;                for (int i = 0; i < PCarrierlist.Count; i++)                {                    if ((bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{PCarrierlist[i].StockerIndex}Installed") && CarrierStatus.Empty.Equals(PCarrierlist[i].Status))                    {                        count++;                    }                }                return count;            }            if ("SD".Equals(stockType))            {                int count = 0;                for (int i = 0; i < SDCarrierlist.Count; i++)                {                    if ((bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{SDCarrierlist[i].StockerIndex}Installed") && CarrierStatus.Empty.Equals(SDCarrierlist[i].Status))                    {                        count++;                    }                }                return count;            }            if ("ED".Equals(stockType))            {                int count = 0;                for (int i = 0; i < EDCarrierlist.Count; i++)                {                    if ((bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{EDCarrierlist[i].StockerIndex}Installed") && CarrierStatus.Empty.Equals(EDCarrierlist[i].Status))                    {                        count++;                    }                }                return count;            }            if ("M1".Equals(stockType))            {                int count = 0;                for (int i = 0; i < M1Carrierlist.Count; i++)                {                    if ((bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{M1Carrierlist[i].StockerIndex}Installed") && CarrierStatus.Empty.Equals(M1Carrierlist[i].Status))                    {                        count++;                    }                }                return count;            }            if ("M2".Equals(stockType))            {                int count = 0;                for (int i = 0; i < M2Carrierlist.Count; i++)                {                    if ((bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{M2Carrierlist[i].StockerIndex}Installed") && CarrierStatus.Empty.Equals(M2Carrierlist[i].Status))                    {                        count++;                    }                }                return count;            }            return 0;        }        public void WaferTypeSelect(string type)        {            var waferTypeList = QueryDataClient.Instance.Service.GetConfigItemList().Where(m => m.Name.StartsWith(ConstantsCommon.Stocker)).ToList();            switch (type)            {                case ConstantsCommon.P:                    StockValue = waferTypeList.Where(n => n.Value.ToString().Contains(ConstantsCommon.P)).Count();                    PTypeVisibility = Visibility.Visible;                    SDTypeVisibility = Visibility.Collapsed;                    EDTypeVisibility = Visibility.Collapsed;                    MTypeVisibility = Visibility.Collapsed;                    M1TypeVisibility = Visibility.Collapsed;                    M2TypeVisibility = Visibility.Collapsed;                    WaferType = ConstantsCommon.P;                    CarrierPItemList.Clear();                    for (int i = 0; i < PCarrierlist.Count; i++)                    {                        if (CarrierStatus.Normal.Equals(PCarrierlist[i].Status))                        {                            StockValue--;                            continue;                        }                    }                    break;                case ConstantsCommon.SD:                    StockValue = waferTypeList.Where(n => n.Value.ToString().Contains(ConstantsCommon.SD)).Count();                    PTypeVisibility = Visibility.Collapsed;                    SDTypeVisibility = Visibility.Visible;                    EDTypeVisibility = Visibility.Collapsed;                    MTypeVisibility = Visibility.Collapsed;                    M1TypeVisibility = Visibility.Collapsed;                    M2TypeVisibility = Visibility.Collapsed;                    WaferType = ConstantsCommon.SD;                    CarrierSDItemList.Clear();                    for (int i = 0; i < SDCarrierlist.Count; i++)                    {                        if (CarrierStatus.Normal.Equals(SDCarrierlist[i].Status))                        {                            StockValue--;                            continue;                        }                    }                    break;                case ConstantsCommon.ED:                    StockValue = waferTypeList.Where(n => n.Value.ToString().Contains(ConstantsCommon.ED)).Count();                    PTypeVisibility = Visibility.Collapsed;                    SDTypeVisibility = Visibility.Collapsed;                    EDTypeVisibility = Visibility.Visible;                    MTypeVisibility = Visibility.Collapsed;                    M1TypeVisibility = Visibility.Collapsed;                    M2TypeVisibility = Visibility.Collapsed;                    WaferType = ConstantsCommon.ED;                    CarrierEDItemList.Clear();                    for (int i = 0; i < EDCarrierlist.Count; i++)                    {                        if (CarrierStatus.Normal.Equals(EDCarrierlist[i].Status))                        {                            StockValue--;                            continue;                        }                    }                    break;                case ConstantsCommon.M:                    StockValue = waferTypeList.Where(n => n.Value.ToString().Contains(ConstantsCommon.M)).Count();                    PTypeVisibility = Visibility.Collapsed;                    SDTypeVisibility = Visibility.Collapsed;                    EDTypeVisibility = Visibility.Collapsed;                    MTypeVisibility = Visibility.Visible;                    AllTypeVisibility = Visibility.Visible;                    M1TypeVisibility = Visibility.Collapsed;                    M2TypeVisibility = Visibility.Collapsed;                    WaferType = ConstantsCommon.M;                    CarrierMItemList.Clear();                    for (int i = 0; i < MCarrierlist.Count; i++)                    {                        if (CarrierStatus.Normal.Equals(MCarrierlist[i].Status))                        {                            StockValue--;                            continue;                        }                    }                    break;                case ConstantsCommon.M1:                    StockValue = waferTypeList.Where(n => n.Value.ToString().Contains(ConstantsCommon.M1)).Count();                    PTypeVisibility = Visibility.Collapsed;                    SDTypeVisibility = Visibility.Collapsed;                    EDTypeVisibility = Visibility.Collapsed;                    MTypeVisibility = Visibility.Collapsed;                    M1TypeVisibility = Visibility.Visible;                    M2TypeVisibility = Visibility.Collapsed;                    WaferType = ConstantsCommon.M1;                    CarrierM1ItemList.Clear();                    for (int i = 0; i < M1Carrierlist.Count; i++)                    {                        if (CarrierStatus.Normal.Equals(M1Carrierlist[i].Status))                        {                            StockValue--;                            continue;                        }                    }                    break;                case ConstantsCommon.M2:                    StockValue = waferTypeList.Where(n => n.Value.ToString().Contains(ConstantsCommon.M2)).Count();                    PTypeVisibility = Visibility.Collapsed;                    SDTypeVisibility = Visibility.Collapsed;                    EDTypeVisibility = Visibility.Collapsed;                    MTypeVisibility = Visibility.Collapsed;                    M1TypeVisibility = Visibility.Collapsed;                    M2TypeVisibility = Visibility.Visible;                    WaferType = ConstantsCommon.M2;                    CarrierM2ItemList.Clear();                    for (int i = 0; i < M2Carrierlist.Count; i++)                    {                        if (CarrierStatus.Normal.Equals(M2Carrierlist[i].Status))                        {                            StockValue--;                            continue;                        }                    }                    break;                default:                    break;            }            MaxValue = StockValue;            StockValue = 0;            InitialPortName(WaferType);        }        public void GetCarrier()        {        }        public void EditCarrierID(string value)        {            var windowManager = IoC.Get<IWindowManager>();            WaferMapSelectedViewModel inputCarrierInfoViewModel = new WaferMapSelectedViewModel();            inputCarrierInfoViewModel.WaferType = WaferType;            inputCarrierInfoViewModel.WaferNo = value;            CarrierMaterialInformation carr=null;            switch (WaferType)            {                case "P":                     carr = CarrierPItemList.FirstOrDefault(x => x.No == value);                    break;                case "SD":                    carr = CarrierSDItemList.FirstOrDefault(x => x.No == value);                    break;                case "ED":                    carr = CarrierEDItemList.FirstOrDefault(x => x.No == value);                    break;                case "M1":                    carr = CarrierM1ItemList.FirstOrDefault(x => x.No == value);                    break;                case "M2":                    carr = CarrierM2ItemList.FirstOrDefault(x => x.No == value);                    break;                default:                    break;            }            if (carr != null) inputCarrierInfoViewModel.StrSlots = carr.StrSlot;            inputCarrierInfoViewModel.Wafers = carr.Wafers;            if ((bool)(windowManager as WindowManager)?.ShowDialogWithTitle(inputCarrierInfoViewModel, null, "Wafer Map"))            {                foreach (var item in CarrierPItemList)                {                    if (item.No.Equals(inputCarrierInfoViewModel.WaferNo))                    {                        item.CarrierId = inputCarrierInfoViewModel.CarrierID;                        item.WaferCount = inputCarrierInfoViewModel.WaferCount;                        item.SlotMap = inputCarrierInfoViewModel.SlotMap;                        item.StrSlot = inputCarrierInfoViewModel.StrSlots;                        item.ExistSlot = inputCarrierInfoViewModel.IsExistChecked ? "Exist" : "None";                    }                }                foreach (var item in CarrierSDItemList)                {                    if (item.No.Equals(inputCarrierInfoViewModel.WaferNo))                    {                        item.CarrierId = inputCarrierInfoViewModel.CarrierID;                        item.WaferCount = inputCarrierInfoViewModel.WaferCount;                        item.SlotMap = inputCarrierInfoViewModel.SlotMap;                        item.StrSlot = inputCarrierInfoViewModel.StrSlots;                        item.ExistSlot = inputCarrierInfoViewModel.IsExistChecked ? "Exist" : "None";                    }                }                foreach (var item in CarrierEDItemList)                {                    if (item.No.Equals(inputCarrierInfoViewModel.WaferNo))                    {                        item.CarrierId = inputCarrierInfoViewModel.CarrierID;                        item.WaferCount = inputCarrierInfoViewModel.WaferCount;                        item.SlotMap = inputCarrierInfoViewModel.SlotMap;                        item.StrSlot = inputCarrierInfoViewModel.StrSlots;                        item.ExistSlot = inputCarrierInfoViewModel.IsExistChecked ? "Exist" : "None";                    }                }                foreach (var item in CarrierMItemList)                {                    if (item.No.Equals(inputCarrierInfoViewModel.WaferNo))                    {                        item.CarrierId = inputCarrierInfoViewModel.CarrierID;                        item.WaferCount = inputCarrierInfoViewModel.WaferCount;                        item.SlotMap = inputCarrierInfoViewModel.SlotMap;                        item.StrSlot = inputCarrierInfoViewModel.StrSlots;                        item.ExistSlot = inputCarrierInfoViewModel.IsExistChecked ? "Exist" : "None";                    }                }                foreach (var item in CarrierM1ItemList)                {                    if (item.No.Equals(inputCarrierInfoViewModel.WaferNo))                    {                        item.CarrierId = inputCarrierInfoViewModel.CarrierID;                        item.WaferCount = inputCarrierInfoViewModel.WaferCount;                        item.SlotMap = inputCarrierInfoViewModel.SlotMap;                        item.StrSlot = inputCarrierInfoViewModel.StrSlots;                        item.ExistSlot = inputCarrierInfoViewModel.IsExistChecked ? "Exist" : "None";                    }                }                foreach (var item in CarrierM2ItemList)                {                    if (item.No.Equals(inputCarrierInfoViewModel.WaferNo))                    {                        item.CarrierId = inputCarrierInfoViewModel.CarrierID;                        item.WaferCount = inputCarrierInfoViewModel.WaferCount;                        item.SlotMap = inputCarrierInfoViewModel.SlotMap;                        item.StrSlot = inputCarrierInfoViewModel.StrSlots;                        item.ExistSlot = inputCarrierInfoViewModel.IsExistChecked ? "Exist" : "None";                    }                }            }            else            {                            }        }        public void TextChangedCmd()        {            if (StockValue < 0) StockValue = 0;            InitialPortName(_batchType);        }        private void InitialPortName(string Type, bool initLotID = false)        {            //RightPort1Visibility = false; RightPort2Visibility = false; RightPort3Visibility = false;            var StockerConfigList = QueryDataClient.Instance.Service.GetConfigItemList().Where(m => m.Name.Contains("WaferType")).ToList();            int j = 0;            int x = 0;            int y = 0;            for (int i = 1; i <= StockerConfigList.Count; i++)            {                string StockerType = (string)QueryDataClient.Instance.Service.GetConfig($"System.Stocker.Stocker{i}WaferType");                if (j == StockValue || j > 12 && Type == "P")                    break;                if (x == StockValue || x > 6 && Type == "ED")                    break;            }        }        public void LoadPortCheck(string No, string LPName)        {            foreach (var item in CarrierPItemList)            {                if (item.No.Equals(No))                {                    item.LoadPortName = LPName;                }            }            foreach (var item in CarrierSDItemList)            {                if (item.No.Equals(No))                {                    item.LoadPortName = LPName;                }            }            foreach (var item in CarrierEDItemList)            {                if (item.No.Equals(No))                {                    item.LoadPortName = LPName;                }            }            foreach (var item in CarrierMItemList)            {                if (item.No.Equals(No))                {                    item.LoadPortName = LPName;                }            }            foreach (var item in CarrierM1ItemList)            {                if (item.No.Equals(No))                {                    item.LoadPortName = LPName;                }            }            foreach (var item in CarrierM2ItemList)            {                if (item.No.Equals(No))                {                    item.LoadPortName = LPName;                }            }        }        public void LoadPortSelect(string StockerName, string LoadJobPara1)        {            string[] StockArray = LoadJobPara.Split(';');            string para = "";            foreach (var item in StockArray)            {                if (item.Contains(StockerName))                {                    para = LoadJobPara.Replace(item + ";", LoadJobPara1);                }            }            LoadJobPara = para;        }        public void EXECCmd(string cmdPar)        {            //if (!DialogBox.Confirm("Are you sure to execute?"))            //    return;            ObservableCollection<CarrierMaterialInformation> itemList = new ObservableCollection<CarrierMaterialInformation>();            switch (WaferType)            {                case "P":                    itemList = CarrierPItemList;                    break;                case "M":                    itemList = CarrierMItemList;                    break;                case "M1":                    itemList = CarrierM1ItemList;                    break;                case "M2":                    itemList = CarrierM2ItemList;                    break;                case "SD":                    itemList = CarrierSDItemList;                    break;                case "ED":                    itemList = CarrierEDItemList;                    break;            }            LoadJobPara = string.Empty;            foreach (var item in itemList)            {                item.CarrierId = IsAutoFillCarrierId ? item.No : item.CarrierId;                if (!item.StockerCarrierEnable)                    continue;                if (string.IsNullOrEmpty(item.LoadPortName))                {                    DialogBox.ShowWarning($"Number {item.No} LoadPort is empty,please select LoadPort!");                    return;                }                var loadJobPara = item.ModuleName + "," + item.CarrierId + "," + item.StrSlot + "," + item.ExistSlot + "," + item.SlotMap + "," + item.LoadPortName + ";";                if (!string.IsNullOrEmpty(LoadJobPara) && LoadJobPara.Contains(item.ModuleName))                {                    this.LoadPortSelect(item.ModuleName, loadJobPara);                }                else                    LoadJobPara += loadJobPara;            }            if (string.IsNullOrEmpty(LoadJobPara))            {                DialogBox.ShowWarning("Load job parameter is empty,please select loadport number!");                return;            }            //string para = "Stocker1,P_00000036,25,Exist,1111111111111111111111111,LP1;Stocker2,P_00000037,25,Exist,1111111111111111111111111,LP2";            if (IsExecuteRTCommand && !DialogBox.Confirm("Are you sure to accept?"))                return;            Dictionary<string, object> param = new Dictionary<string, object>()            {                {"WaferType", WaferType },                {"CarrierPara", LoadJobPara.TrimEnd(';')},                {"TransferType", "Loading"},            };            if (IsExecuteRTCommand)            {                InvokeClient.Instance.Service.DoOperation($"System.{ExecCommand}", param);            }            ((Window)GetView()).DialogResult = true;        }        public void ClosedCmd(string cmdPar)        {            (GetView() as Window).Close();        }    }}
 |