| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 | using Aitex.Core.Util;using MECF.Framework.Common.DataCenter;using MECF.Framework.Common.OperationCenter;using MECF.Framework.UI.Client.ClientBase;using System.Collections.Generic;using System.Collections.ObjectModel;using System.Linq;using System.Windows;using FurnaceUI.Models;using FurnaceUI.Views.Recipes;namespace FurnaceUI.Views.Operations{    public class BoatWaferNoActionViewModel : FurnaceUIViewModelBase    {        private ObservableCollection<BoatWaferItem> _boatWafers;        public ObservableCollection<BoatWaferItem> BoatWafers        {            get { return _boatWafers; }            set            {                _boatWafers = value;                NotifyOfPropertyChange("BoatWafers");            }        }        private string _waferNumberP;        public string WaferNumberP        {            get => _waferNumberP;            set            {                _waferNumberP = value;                NotifyOfPropertyChange(nameof(WaferNumberP));            }        }        private string _waferNumberM;        public string WaferNumberM        {            get => _waferNumberM;            set            {                _waferNumberM = value;                NotifyOfPropertyChange(nameof(WaferNumberM));            }        }        private string _waferNumberSD;        public string WaferNumberSD        {            get => _waferNumberSD;            set            {                _waferNumberSD = value;                NotifyOfPropertyChange(nameof(WaferNumberSD));            }        }        private string _waferNumberED;        public string WaferNumberED        {            get => _waferNumberED;            set            {                _waferNumberED = value;                NotifyOfPropertyChange(nameof(WaferNumberED));            }        }        private string _waferNumberT;        public string WaferNumberT        {            get => _waferNumberT;            set            {                _waferNumberT = value;                NotifyOfPropertyChange(nameof(WaferNumberT));            }        }        private string _waferNumberXD;        public string WaferNumberXD        {            get => _waferNumberXD;            set            {                _waferNumberXD = value;                NotifyOfPropertyChange(nameof(WaferNumberXD));            }        }        public ObservableCollection<ObservableCollection<BoatWaferItem>> ListBoatWafers { get; set; }        //private PeriodicJob RefreshBoatWafers;        [Subscription("PM1.Status")]        public string Status { get; set; }        public BoatWaferNoActionViewModel()        {            BoatWafers = new ObservableCollection<BoatWaferItem>();            for (int i = 0; i < (int)QueryDataClient.Instance.Service.GetConfig("Boat.SlotCount"); i++)            {                BoatWaferItem item = new BoatWaferItem() { Slot = i + 1, Description = "" };                BoatWafers.Add(item);            }            //RefreshBoatWafers = new PeriodicJob(300, RefreshBoatWafersTask, "RefreshAlarmTask", true);        }        protected override void OnInitialize()        {            base.OnInitialize();        }        protected override void OnActivate()        {            base.OnActivate();            RefreshBoatWafersTask();        }        protected override void InvokeAfterUpdateProperty(Dictionary<string, object> data)        {            base.InvokeAfterUpdateProperty(data);            RefreshBoatWafersTask();        }        private bool RefreshBoatWafersTask()        {            var wafers = ModuleManager.ModuleInfos["PM1"].WaferManager.Wafers.Reverse().ToList();            int NumberP = 0, NumberM = 0, NumberSD = 0, NumberED = 0, NumberT = 0, NumberXD = 0;            for (int i = 0; i < BoatWafers.Count; i++)            {                if (ModuleManager.ModuleInfos["PM1"].WaferManager.Wafers.Count > i)                {                    var wafer = wafers[i];                    if (wafer.WaferStatus == 0)//empty                    {                        BoatWafers[i].Description = $"";                        BoatWafers[i].HasWafer = false;                        BoatWafers[i].NoWafer = true;                    }                    else                    {                        BoatWafers[i].Description = $"{wafer.SourceName}--{wafer.WaferType }";                        BoatWafers[i].HasWafer = true;                        BoatWafers[i].NoWafer = false;                        switch (wafer.WaferType.ToString())                        {                            case "P":                                NumberP++;                                break;                            case "M":                                NumberM++;                                break;                            case "SD":                                NumberSD++;                                break;                            case "ED":                                NumberED++;                                break;                            case "T":                                NumberT++;                                break;                            case "XD":                                NumberXD++;                                break;                        }                    }                }            }            WaferNumberP = NumberP.ToString();            WaferNumberM = NumberM.ToString();            WaferNumberSD = NumberSD.ToString();            WaferNumberED = NumberED.ToString();            WaferNumberT = NumberT.ToString();            WaferNumberXD = NumberXD.ToString();            ListBoatWafers=SplitBoatWafersByLength(25);            return true;        }        private ObservableCollection<ObservableCollection<BoatWaferItem>> SplitBoatWafersByLength(int iLength)        {            ObservableCollection<ObservableCollection<BoatWaferItem>> obsRet = new ObservableCollection<ObservableCollection<BoatWaferItem>>();            int iCount = BoatWafers.Count / iLength;            int iRemain = BoatWafers.Count % iLength;            for (int i=0; i < iCount; i++)            {                obsRet.Add(new ObservableCollection<BoatWaferItem>(BoatWafers.ToList().GetRange(i * iLength, iLength)));            }            if(iRemain>0) obsRet.Add(new ObservableCollection<BoatWaferItem>(BoatWafers.ToList().GetRange(iCount * iLength, iRemain)));            return obsRet;        }        public void BoatWaferNoActionClose()        {            ((Window)GetView()).DialogResult = false;        }    }}
 |