123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292 |
- using Caliburn.Micro;
- using Caliburn.Micro.Core;
- using MECF.Framework.Common.CommonData;
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Media;
- using FurnaceUI.Models;
- using FurnaceUI.Views.Recipes;
- namespace FurnaceUI.Views.DataLog
- {
- public class BatchDetailViewModel : FurnaceUIViewModelBase
- {
- public List<BoatWaferItem> BoatWafers { get; set; } = new List<BoatWaferItem>();
- public ObservableCollection<BatchDetailItem> BatchDetailItems { get; set; } = new ObservableCollection<BatchDetailItem>();
- private SolidColorBrush _DefaultdBk = new SolidColorBrush(Colors.White);
- private SolidColorBrush _PBk = new SolidColorBrush(Colors.SkyBlue);
- private SolidColorBrush _SDBk = new SolidColorBrush(Colors.White);
- private SolidColorBrush _FDBk = new SolidColorBrush(Colors.Yellow);
- private SolidColorBrush _M1Bk = new SolidColorBrush(Colors.Pink);
- private SolidColorBrush _M2Bk = new SolidColorBrush(Colors.Pink);
- private SolidColorBrush _XDBk = new SolidColorBrush(Colors.White);
- private SolidColorBrush _TBk = new SolidColorBrush(Colors.DarkGreen);
- private string _batchId;
- public string BatchId
- {
- get => _batchId;
- set
- {
- _batchId = value;
- NotifyOfPropertyChange(nameof(BatchId));
- }
- }
- private int _productionCount;
- public int ProductionCount
- {
- get => _productionCount;
- set
- {
- _productionCount = value;
- NotifyOfPropertyChange(nameof(ProductionCount));
- }
- }
- private int _monitorCount;
- public int MonitorCount
- {
- get => _monitorCount;
- set
- {
- _monitorCount = value;
- NotifyOfPropertyChange(nameof(MonitorCount));
- }
- }
- private int _dummyCount;
- public int DummyCount
- {
- get => _dummyCount;
- set
- {
- _dummyCount = value;
- NotifyOfPropertyChange(nameof(DummyCount));
- }
- }
- private int _extraDummyCount;
- public int ExtraDummyCount
- {
- get => _extraDummyCount;
- set
- {
- _extraDummyCount = value;
- NotifyOfPropertyChange(nameof(ExtraDummyCount));
- }
- }
- private int _etcCount;
- public int EtcCount
- {
- get => _etcCount;
- set
- {
- _etcCount = value;
- NotifyOfPropertyChange(nameof(EtcCount));
- }
- }
- private int _total;
- public int Total
- {
- get => _total;
- set
- {
- _total = value;
- NotifyOfPropertyChange(nameof(Total));
- }
- }
- public DateTime StartTime { get; set; }
- public DateTime EndTime { get; set; }
- private int _cassetteSelectIndex;
- public int CassetteSelectIndex
- {
- get => _cassetteSelectIndex;
- set
- {
- _cassetteSelectIndex = value;
- NotifyOfPropertyChange(nameof(CassetteSelectIndex));
- }
- }
- public BatchDetailViewModel()
- {
- }
- public BatchDetailViewModel(DateTime startTime, DateTime endTime, string batchId, List<string> layoutData, int iSlotCount, List<string> waferData)
- {
- StartTime = startTime;
- EndTime = endTime;
- BatchId = batchId;
- Total = iSlotCount;
- for (int i = 0; i < iSlotCount; i++)
- {
- BoatWaferItem item = new BoatWaferItem() { Slot = i + 1, Description = $"{layoutData[i]}" };
- BoatWafers.Add(item);
- }
- for (int i = 0; i < iSlotCount; i++)
- {
- string waferType = BoatWafers[i].Description.Split('-').ToList()[0];
- switch (waferType)
- {
- case "P":
- BoatWafers[i].BkColor = _PBk;
- break;
- case "M1":
- BoatWafers[i].BkColor = _M1Bk;
- break;
- case "M2":
- BoatWafers[i].BkColor = _M2Bk;
- break;
- case "SD":
- BoatWafers[i].BkColor = _SDBk;
- break;
- case "FD":
- BoatWafers[i].BkColor = _FDBk;
- break;
- default:
- BoatWafers[i].BkColor = _DefaultdBk;
- break;
- }
- var description = BoatWafers[i].Description;
- description = description.Substring(description.IndexOf('-') + 1);
- BoatWafers[i].Description = description;
- }
- BatchDetailParser(waferData);
- }
- private void BatchDetailParser(List<string> waferData)
- {
- ProductionCount = 0;
- MonitorCount = 0;
- DummyCount = 0;
- ExtraDummyCount = 0;
- EtcCount = 0;
- for (int i = 0; i < waferData.Count; i++)
- {
- if (string.IsNullOrEmpty(waferData[i]))
- continue;
- var temp = waferData[i].Split(':').ToList();
- var wafertype = temp[0];
- var stockername = temp[1].Split('.')[0];
- var lotid = temp.Count > 2 ? temp[2] : "";
- switch (wafertype)
- {
- case "P":
- ProductionCount++;
- break;
- case "M":
- MonitorCount++;
- break;
- case "SD":
- DummyCount++;
- break;
- case "ED":
- ExtraDummyCount++;
- break;
- }
- BatchDetailItem detail = BatchDetailItems.Where(x => x.StockerName == stockername).FirstOrDefault();
- if (detail == null)
- {
- BatchDetailItem item = new BatchDetailItem();
- item.WaferType = wafertype;
- item.StockerName = stockername;
- item.LotId = lotid;
- item.WaferCount = 1;
- BatchDetailItems.Add(item);
- }
- else
- {
- BatchDetailItems.Where(x => x.StockerName == stockername).FirstOrDefault().WaferCount++;
- }
- }
- EtcCount = Total - ProductionCount - MonitorCount - DummyCount - ExtraDummyCount;
- }
- public void CassetteDetail()
- {
- if (CassetteSelectIndex != -1 && BatchDetailItems.Count > 0)
- {
- var windowManager = IoC.Get<IWindowManager>();
- CassetteDetailViewModel cassetteDetailViewModel = new CassetteDetailViewModel(StartTime, EndTime, BatchDetailItems[CassetteSelectIndex].LotId);
- (windowManager as WindowManager)?.ShowDialogWithTitle(cassetteDetailViewModel, null, "Cassette Detail");
- }
- }
- public void CloseCmd()
- {
- ((Window)GetView()).Close();
- }
- }
- public class BatchDetailItem : NotifiableItem
- {
- private string _waferType;
- public string WaferType
- {
- get => _waferType;
- set
- {
- _waferType = value;
- InvokePropertyChanged(nameof(WaferType));
- }
- }
- private string _stockerName;
- public string StockerName
- {
- get => _stockerName;
- set
- {
- _stockerName = value;
- InvokePropertyChanged(nameof(StockerName));
- }
- }
- private string _lotId;
- public string LotId
- {
- get => _lotId;
- set
- {
- _lotId = value;
- InvokePropertyChanged(nameof(LotId));
- }
- }
- private int _waferCount;
- public int WaferCount
- {
- get => _waferCount;
- set
- {
- _waferCount = value;
- InvokePropertyChanged(nameof(WaferCount));
- }
- }
- }
- }
|