LoadJOBTwoViewModel.cs 53 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174
  1. using Aitex.Core.Common;
  2. using Aitex.Core.RT.SCCore;
  3. using Aitex.Core.Util;
  4. using Caliburn.Micro;
  5. using Caliburn.Micro.Core;
  6. using FurnaceUI.Common;
  7. using FurnaceUI.Models;
  8. using MECF.Framework.Common.DataCenter;
  9. using MECF.Framework.Common.Equipment;
  10. using MECF.Framework.Common.OperationCenter;
  11. using MECF.Framework.Common.SubstrateTrackings;
  12. using MECF.Framework.UI.Client.ClientBase;
  13. using Microsoft.VisualBasic;
  14. using OpenSEMI.ClientBase;
  15. using System;
  16. using System.Collections.Generic;
  17. using System.Collections.ObjectModel;
  18. using System.Linq;
  19. using System.Net.Sockets;
  20. using System.Text;
  21. using System.Threading;
  22. using System.Threading.Tasks;
  23. using System.Windows;
  24. namespace FurnaceUI.Views.Jobs
  25. {
  26. public class LoadJOBTwoViewModel : FurnaceModuleUIViewModelBase
  27. {
  28. public bool IsExecuteRTCommand { get; set; } = true;
  29. public bool IsAutoFillCarrierId { get; set; } = false;
  30. public bool IsPChecked { get; set; } = true;
  31. public bool IsMChecked { get; set; } = false;
  32. public bool IsM1Checked { get; set; } = false;
  33. public bool IsM2Checked { get; set; } = false;
  34. public bool IsSDChecked { get; set; } = false;
  35. public bool IsEDChecked { get; set; } = false;
  36. public Visibility IsWaferTypeExceptPVisible => IsExecuteRTCommand ? Visibility.Visible : Visibility.Collapsed;
  37. public Visibility PTypeRadioButtonVisibility { get; set; }
  38. public Visibility MTypeRadioButtonVisibility { get; set; }
  39. public Visibility M1TypeRadioButtonVisibility { get; set; }
  40. public Visibility M2TypeRadioButtonVisibility { get; set; }
  41. public Visibility SDTypeRadioButtonVisibility { get; set; }
  42. public Visibility EDTypeRadioButtonVisibility { get; set; }
  43. public bool IsSetValue { get; set; } = false;
  44. public LoadJOBTwoViewModel()
  45. {
  46. }
  47. private int MaxValue;
  48. [Subscription("Stocker1.LotID")]
  49. public string Stocker1LotID { get; set; }
  50. [Subscription("Stocker2.LotID")]
  51. public string Stocker2LotID { get; set; }
  52. [Subscription("Stocker3.LotID")]
  53. public string Stocker3LotID { get; set; }
  54. [Subscription("Stocker4.LotID")]
  55. public string Stocker4LotID { get; set; }
  56. [Subscription("Stocker5.LotID")]
  57. public string Stocker5LotID { get; set; }
  58. [Subscription("Stocker6.LotID")]
  59. public string Stocker6LotID { get; set; }
  60. [Subscription("Stocker7.LotID")]
  61. public string Stocker7LotID { get; set; }
  62. [Subscription("Stocker8.LotID")]
  63. public string Stocker8LotID { get; set; }
  64. [Subscription("Stocker9.LotID")]
  65. public string Stocker9LotID { get; set; }
  66. [Subscription("Stocker10.LotID")]
  67. public string Stocker10LotID { get; set; }
  68. [Subscription("Stocker11.LotID")]
  69. public string Stocker11LotID { get; set; }
  70. [Subscription("Stocker12.LotID")]
  71. public string Stocker12LotID { get; set; }
  72. [Subscription("Stocker13.LotID")]
  73. public string Stocker13LotID { get; set; }
  74. [Subscription("Stocker14.LotID")]
  75. public string Stocker14LotID { get; set; }
  76. [Subscription("Stocker15.LotID")]
  77. public string Stocker15LotID { get; set; }
  78. [Subscription("Stocker16.LotID")]
  79. public string Stocker16LotID { get; set; }
  80. [Subscription("Stocker17.LotID")]
  81. public string Stocker17LotID { get; set; }
  82. [Subscription("Stocker18.LotID")]
  83. public string Stocker18LotID { get; set; }
  84. [Subscription("Stocker19.LotID")]
  85. public string Stocker19LotID { get; set; }
  86. [Subscription("Stocker20.LotID")]
  87. public string Stocker20LotID { get; set; }
  88. [Subscription("Stocker21.LotID")]
  89. public string Stocker21LotID { get; set; }
  90. [Subscription("Stocker1.Carrier")]
  91. public CarrierInfo Stocker1CarrierData { get; set; }
  92. [Subscription("Stocker2.Carrier")]
  93. public CarrierInfo Stocker2CarrierData { get; set; }
  94. [Subscription("Stocker3.Carrier")]
  95. public CarrierInfo Stocker3CarrierData { get; set; }
  96. [Subscription("Stocker4.Carrier")]
  97. public CarrierInfo Stocker4CarrierData { get; set; }
  98. [Subscription("Stocker5.Carrier")]
  99. public CarrierInfo Stocker5CarrierData { get; set; }
  100. [Subscription("Stocker6.Carrier")]
  101. public CarrierInfo Stocker6CarrierData { get; set; }
  102. [Subscription("Stocker7.Carrier")]
  103. public CarrierInfo Stocker7CarrierData { get; set; }
  104. [Subscription("Stocker8.Carrier")]
  105. public CarrierInfo Stocker8CarrierData { get; set; }
  106. [Subscription("Stocker9.Carrier")]
  107. public CarrierInfo Stocker9CarrierData { get; set; }
  108. [Subscription("Stocker10.Carrier")]
  109. public CarrierInfo Stocker10CarrierData { get; set; }
  110. [Subscription("Stocker11.Carrier")]
  111. public CarrierInfo Stocker11CarrierData { get; set; }
  112. [Subscription("Stocker12.Carrier")]
  113. public CarrierInfo Stocker12CarrierData { get; set; }
  114. [Subscription("Stocker13.Carrier")]
  115. public CarrierInfo Stocker13CarrierData { get; set; }
  116. [Subscription("Stocker14.Carrier")]
  117. public CarrierInfo Stocker14CarrierData { get; set; }
  118. [Subscription("Stocker15.Carrier")]
  119. public CarrierInfo Stocker15CarrierData { get; set; }
  120. [Subscription("Stocker16.Carrier")]
  121. public CarrierInfo Stocker16CarrierData { get; set; }
  122. [Subscription("Stocker17.Carrier")]
  123. public CarrierInfo Stocker17CarrierData { get; set; }
  124. [Subscription("Stocker18.Carrier")]
  125. public CarrierInfo Stocker18CarrierData { get; set; }
  126. [Subscription("Stocker19.Carrier")]
  127. public CarrierInfo Stocker19CarrierData { get; set; }
  128. [Subscription("Stocker20.Carrier")]
  129. public CarrierInfo Stocker20CarrierData { get; set; }
  130. [Subscription("Stocker21.Carrier")]
  131. public CarrierInfo Stocker21CarrierData { get; set; }
  132. [Subscription("FIMS1.Carrier")]
  133. public CarrierInfo FIMS1CarrierData { get; set; }
  134. [Subscription("FIMS2.Carrier")]
  135. public CarrierInfo FIMS2CarrierData { get; set; }
  136. [Subscription("LP1.Carrier")]
  137. public CarrierInfo LP1CarrierData { get; set; }
  138. [Subscription("LP2.Carrier")]
  139. public CarrierInfo LP2CarrierData { get; set; }
  140. [Subscription("CarrierRobot.Carrier")]
  141. public CarrierInfo CassetteRobotCarrierData { get; set; }
  142. public ObservableCollection<CarrierInfo> CarrierDataNameList { get; set; } = new ObservableCollection<CarrierInfo>();
  143. [Subscription("Scheduler.OccupyStockers")]
  144. public List<string> OccupyStockers { get; set; }
  145. private int _stockValue;
  146. public int StockValue
  147. {
  148. get => _stockValue;
  149. set
  150. {
  151. _stockValue = value;
  152. NotifyOfPropertyChange("StockValue");
  153. }
  154. }
  155. private Visibility _pTypeVisibility = Visibility.Visible;
  156. public Visibility PTypeVisibility
  157. {
  158. get => _pTypeVisibility;
  159. set
  160. {
  161. _pTypeVisibility = value;
  162. NotifyOfPropertyChange("PTypeVisibility");
  163. }
  164. }
  165. private Visibility _sdTypeVisibility = Visibility.Hidden;
  166. public Visibility SDTypeVisibility
  167. {
  168. get => _sdTypeVisibility;
  169. set
  170. {
  171. _sdTypeVisibility = value;
  172. NotifyOfPropertyChange("SDTypeVisibility");
  173. }
  174. }
  175. private Visibility _m1TypeVisibility = Visibility.Hidden;
  176. public Visibility M1TypeVisibility
  177. {
  178. get => _m1TypeVisibility;
  179. set
  180. {
  181. _m1TypeVisibility = value;
  182. NotifyOfPropertyChange("M1TypeVisibility");
  183. }
  184. }
  185. private Visibility _m2TypeVisibility = Visibility.Hidden;
  186. public Visibility M2TypeVisibility
  187. {
  188. get => _m2TypeVisibility;
  189. set
  190. {
  191. _m2TypeVisibility = value;
  192. NotifyOfPropertyChange("M2TypeVisibility");
  193. }
  194. }
  195. private Visibility _edTypeVisibility = Visibility.Hidden;
  196. public Visibility EDTypeVisibility
  197. {
  198. get => _edTypeVisibility;
  199. set
  200. {
  201. _edTypeVisibility = value;
  202. NotifyOfPropertyChange("EDTypeVisibility");
  203. }
  204. }
  205. private Visibility _mTypeVisibility = Visibility.Hidden;
  206. public Visibility MTypeVisibility
  207. {
  208. get => _mTypeVisibility;
  209. set
  210. {
  211. _mTypeVisibility = value;
  212. NotifyOfPropertyChange("MTypeVisibility");
  213. }
  214. }
  215. private Visibility _allTypeVisibility = Visibility.Hidden;
  216. public Visibility AllTypeVisibility
  217. {
  218. get => _allTypeVisibility;
  219. set
  220. {
  221. _allTypeVisibility = value;
  222. NotifyOfPropertyChange("ALLTypeVisibility");
  223. }
  224. }
  225. public string ExecCommand { get; set; }
  226. public string ExecText { get; set; } = "EXEC";
  227. private string _batchType = "P";
  228. public string WaferType { get; set; } = "P";
  229. public string LoadJobPara { get; set; }
  230. public string LoadJobTypePara { get; set; }
  231. public ObservableCollection<CarrierInfo> MCarrierlist = new ObservableCollection<CarrierInfo>();
  232. public ObservableCollection<CarrierInfo> M1Carrierlist = new ObservableCollection<CarrierInfo>();
  233. public ObservableCollection<CarrierInfo> M2Carrierlist = new ObservableCollection<CarrierInfo>();
  234. public ObservableCollection<CarrierInfo> SDCarrierlist = new ObservableCollection<CarrierInfo>();
  235. public ObservableCollection<CarrierInfo> EDCarrierlist = new ObservableCollection<CarrierInfo>();
  236. public ObservableCollection<CarrierInfo> PCarrierlist = new ObservableCollection<CarrierInfo>();
  237. public ObservableCollection<CarrierInfo> NoneCarrierlist = new ObservableCollection<CarrierInfo>();
  238. public ObservableCollection<CarrierInfo> Carrierlist = new ObservableCollection<CarrierInfo>();
  239. public Dictionary<string, string> stockerWaferTypeDict { get; set; } = new Dictionary<string, string>();
  240. public ObservableCollection<CarrierMaterialInformation> CarrierM1ItemList { get; set; } = new ObservableCollection<CarrierMaterialInformation>();
  241. public ObservableCollection<CarrierMaterialInformation> CarrierM1ItemTempList { get; set; } = new ObservableCollection<CarrierMaterialInformation>();
  242. public ObservableCollection<CarrierMaterialInformation> CarrierM2ItemList { get; set; } = new ObservableCollection<CarrierMaterialInformation>();
  243. public ObservableCollection<CarrierMaterialInformation> CarrierM2ItemTempList { get; set; } = new ObservableCollection<CarrierMaterialInformation>();
  244. public ObservableCollection<CarrierMaterialInformation> CarrierMItemList { get; set; } = new ObservableCollection<CarrierMaterialInformation>();
  245. public ObservableCollection<CarrierMaterialInformation> CarrierMItemTempList { get; set; } = new ObservableCollection<CarrierMaterialInformation>();
  246. public ObservableCollection<CarrierMaterialInformation> CarrierSDItemList { get; set; } = new ObservableCollection<CarrierMaterialInformation>();
  247. public ObservableCollection<CarrierMaterialInformation> CarrierSDItemTempList { get; set; } = new ObservableCollection<CarrierMaterialInformation>();
  248. public ObservableCollection<CarrierMaterialInformation> CarrierEDItemList { get; set; } = new ObservableCollection<CarrierMaterialInformation>();
  249. public ObservableCollection<CarrierMaterialInformation> CarrierEDItemTempList { get; set; } = new ObservableCollection<CarrierMaterialInformation>();
  250. public ObservableCollection<CarrierMaterialInformation> CarrierPItemList { get; set; } = new ObservableCollection<CarrierMaterialInformation>();
  251. public ObservableCollection<CarrierMaterialInformation> CarrierPItemTempList { get; set; } = new ObservableCollection<CarrierMaterialInformation>();
  252. public ObservableCollection<CarrierInformation> CarrierInformationList { get; set; } = new ObservableCollection<CarrierInformation>();
  253. protected override void OnInitialize()
  254. {
  255. base.OnInitialize();
  256. IsAutoFillCarrierId = (bool)QueryDataClient.Instance.Service.GetConfig("System.IsAutoFillCarrierId");
  257. InitStockerWaferTypeDict();
  258. if (IsM1Checked)
  259. {
  260. M1TypeVisibility = Visibility.Visible;
  261. WaferType = "M1";
  262. }
  263. else if (IsM2Checked)
  264. {
  265. M2TypeVisibility = Visibility.Visible;
  266. WaferType = "M2";
  267. }
  268. else if (IsPChecked)
  269. {
  270. PTypeVisibility = Visibility.Visible;
  271. WaferType = "P";
  272. }
  273. else if (IsEDChecked)
  274. {
  275. EDTypeVisibility = Visibility.Visible;
  276. WaferType = "ED";
  277. }
  278. else if (IsSDChecked)
  279. {
  280. SDTypeVisibility = Visibility.Visible;
  281. WaferType = "SD";
  282. }
  283. else
  284. {
  285. EDTypeVisibility = Visibility.Visible;
  286. WaferType = "ED";
  287. }
  288. MaxValue = 0;
  289. }
  290. private void InitStockerWaferTypeDict()
  291. {
  292. for (int i = 1; i <= 18; i++)
  293. {
  294. var dataType = (string)QueryDataClient.Instance.Service.GetConfig($"System.Stocker.Stocker{i}WaferType").ToString();
  295. var stockerWaferType = dataType.Replace("1", "").Replace("2", "");
  296. var item = stockerWaferType.ToString() + i;
  297. stockerWaferTypeDict.Add(item, dataType);
  298. }
  299. }
  300. public void StockerCarrier()
  301. {
  302. CarrierDataNameList.Clear();
  303. if (Stocker1CarrierData != null)
  304. {
  305. Stocker1CarrierData.StockerIndex = 1;
  306. CarrierDataNameList.Add(Stocker1CarrierData);
  307. }
  308. if (Stocker2CarrierData != null)
  309. {
  310. Stocker2CarrierData.StockerIndex = 2;
  311. CarrierDataNameList.Add(Stocker2CarrierData);
  312. }
  313. if (Stocker3CarrierData != null)
  314. {
  315. Stocker3CarrierData.StockerIndex = 3;
  316. CarrierDataNameList.Add(Stocker3CarrierData);
  317. }
  318. if (Stocker4CarrierData != null)
  319. {
  320. Stocker4CarrierData.StockerIndex = 4;
  321. CarrierDataNameList.Add(Stocker4CarrierData);
  322. }
  323. if (Stocker5CarrierData != null)
  324. {
  325. Stocker5CarrierData.StockerIndex = 5;
  326. CarrierDataNameList.Add(Stocker5CarrierData);
  327. }
  328. if (Stocker6CarrierData != null)
  329. {
  330. Stocker6CarrierData.StockerIndex = 6;
  331. CarrierDataNameList.Add(Stocker6CarrierData);
  332. }
  333. if (Stocker7CarrierData != null)
  334. {
  335. Stocker7CarrierData.StockerIndex = 7;
  336. CarrierDataNameList.Add(Stocker7CarrierData);
  337. }
  338. if (Stocker8CarrierData != null)
  339. {
  340. Stocker8CarrierData.StockerIndex = 8;
  341. CarrierDataNameList.Add(Stocker8CarrierData);
  342. }
  343. if (Stocker9CarrierData != null)
  344. {
  345. Stocker9CarrierData.StockerIndex = 9;
  346. CarrierDataNameList.Add(Stocker9CarrierData);
  347. }
  348. if (Stocker10CarrierData != null)
  349. {
  350. Stocker10CarrierData.StockerIndex = 10;
  351. CarrierDataNameList.Add(Stocker10CarrierData);
  352. }
  353. if (Stocker11CarrierData != null)
  354. {
  355. Stocker11CarrierData.StockerIndex = 11;
  356. CarrierDataNameList.Add(Stocker11CarrierData);
  357. }
  358. if (Stocker12CarrierData != null)
  359. {
  360. Stocker12CarrierData.StockerIndex = 12;
  361. CarrierDataNameList.Add(Stocker12CarrierData);
  362. }
  363. if (Stocker13CarrierData != null)
  364. {
  365. Stocker13CarrierData.StockerIndex = 13;
  366. CarrierDataNameList.Add(Stocker13CarrierData);
  367. }
  368. if (Stocker14CarrierData != null)
  369. {
  370. Stocker14CarrierData.StockerIndex = 14;
  371. CarrierDataNameList.Add(Stocker14CarrierData);
  372. }
  373. if (Stocker15CarrierData != null)
  374. {
  375. Stocker15CarrierData.StockerIndex = 15;
  376. CarrierDataNameList.Add(Stocker15CarrierData);
  377. }
  378. if (Stocker16CarrierData != null)
  379. {
  380. Stocker16CarrierData.StockerIndex = 16;
  381. CarrierDataNameList.Add(Stocker16CarrierData);
  382. }
  383. if (Stocker17CarrierData != null)
  384. {
  385. Stocker17CarrierData.StockerIndex = 17;
  386. CarrierDataNameList.Add(Stocker17CarrierData);
  387. }
  388. if (Stocker18CarrierData != null)
  389. {
  390. Stocker18CarrierData.StockerIndex = 18;
  391. CarrierDataNameList.Add(Stocker18CarrierData);
  392. }
  393. foreach (var item in CarrierDataNameList)
  394. {
  395. if (string.IsNullOrEmpty(item.Name))
  396. {
  397. item.Name = $"Stocker{item.StockerIndex}";
  398. }
  399. }
  400. if ((bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsFIMS1Installed"))
  401. CarrierDataNameList.Add(FIMS1CarrierData);
  402. if ((bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsFIMS2Installed"))
  403. CarrierDataNameList.Add(FIMS2CarrierData);
  404. CarrierDataNameList.Add(CassetteRobotCarrierData);
  405. }
  406. string[] moduleNames = new string[] { "Stocker1", "Stocker2", "Stocker3", "Stocker4", "Stocker5", "Stocker6", "Stocker7", "Stocker8", "Stocker9",
  407. "Stocker10","Stocker11","Stocker12","Stocker13","Stocker14","Stocker15","Stocker16","Stocker17","Stocker18"};
  408. protected override void InvokeAfterUpdateProperty(Dictionary<string, object> data)
  409. {
  410. base.InvokeAfterUpdateProperty(data);
  411. }
  412. protected override void OnViewLoaded(object view)
  413. {
  414. base.OnViewLoaded(view);
  415. StockerCarrier();
  416. MCarrierlist.Clear();
  417. M1Carrierlist.Clear();
  418. M2Carrierlist.Clear();
  419. EDCarrierlist.Clear();
  420. SDCarrierlist.Clear();
  421. PCarrierlist.Clear();
  422. for (int i = 0; i < CarrierDataNameList.Count; i++)
  423. {
  424. string stockerType = (string)QueryDataClient.Instance.Service.GetConfig($"System.Stocker.Stocker{CarrierDataNameList[i].StockerIndex}WaferType");
  425. if (stockerType == null)
  426. {
  427. continue;
  428. }
  429. if (OccupyStockers != null && OccupyStockers.Any(x => x == $"Stocker{CarrierDataNameList[i].StockerIndex}"))
  430. continue;
  431. //有下列几种情况下 stocker不被统计
  432. //1:位于CarrierRobot上
  433. //2:位于FIMS1/2上
  434. //3:放到了其他stocker上
  435. var boolCarrierRobot = (CassetteRobotCarrierData != null && CassetteRobotCarrierData.InnerId != Guid.Empty && CassetteRobotCarrierData.InternalModuleName.ToString().Equals(CarrierDataNameList[i].Name));
  436. var boolFIMS1 = (FIMS1CarrierData != null && FIMS1CarrierData.InnerId != Guid.Empty && FIMS1CarrierData.InternalModuleName.ToString().Equals(CarrierDataNameList[i].Name));
  437. var boolFIMS2 = (FIMS2CarrierData != null && FIMS2CarrierData.InnerId != Guid.Empty && FIMS2CarrierData.InternalModuleName.ToString().Equals(CarrierDataNameList[i].Name));
  438. var boolOtherStocker = (CarrierDataNameList[i].Name != CarrierDataNameList[i].InternalModuleName.ToString() && CarrierDataNameList[i].InnerId != Guid.Empty);
  439. if (boolCarrierRobot || boolFIMS1 || boolFIMS2 || boolOtherStocker)
  440. {
  441. continue;
  442. }
  443. if (stockerType.Equals("M1") || stockerType.Equals(CarrierType.None.ToString()))
  444. {
  445. CarrierDataNameList[i].CarrierType = stockerType.Equals(CarrierType.M1.ToString()) ? CarrierType.M1 : CarrierType.None;
  446. M1Carrierlist.Add(CarrierDataNameList[i]);
  447. }
  448. if (stockerType.Equals("M2") || stockerType.Equals(CarrierType.None.ToString()))
  449. {
  450. CarrierDataNameList[i].CarrierType = stockerType.Equals(CarrierType.M2.ToString()) ? CarrierType.M2 : CarrierType.None;
  451. M2Carrierlist.Add(CarrierDataNameList[i]);
  452. }
  453. if (stockerType.Equals("ED") || stockerType.Equals(CarrierType.None.ToString()))
  454. {
  455. CarrierDataNameList[i].CarrierType = stockerType.Equals(CarrierType.ED.ToString()) ? CarrierType.ED : CarrierType.None;
  456. EDCarrierlist.Add(CarrierDataNameList[i]);
  457. }
  458. if (stockerType.Equals("SD") || stockerType.Equals(CarrierType.None.ToString()))
  459. {
  460. CarrierDataNameList[i].CarrierType = stockerType.Equals(CarrierType.SD.ToString()) ? CarrierType.SD : CarrierType.None;
  461. SDCarrierlist.Add(CarrierDataNameList[i]);
  462. }
  463. if (stockerType.Contains("P") || stockerType.Equals(CarrierType.None.ToString()))
  464. {
  465. CarrierDataNameList[i].CarrierType = stockerType.Contains(CarrierType.P.ToString()) ? CarrierType.P : CarrierType.None;
  466. PCarrierlist.Add(CarrierDataNameList[i]);
  467. }
  468. }
  469. }
  470. protected override void OnViewReady(object view)
  471. {
  472. base.OnViewReady(view);
  473. }
  474. protected override void OnActivate()
  475. {
  476. base.OnActivate();
  477. }
  478. public void ValueCmd(string cmdPar)
  479. {
  480. switch (cmdPar)
  481. {
  482. case "Add":
  483. //最大值调整为动态获取 而不是根据配置项
  484. MaxValue = getStockEmptyMaxValue(WaferType);
  485. if (StockValue < MaxValue)
  486. {
  487. StockValue++;
  488. //InitialPortName(WaferType);
  489. switch (WaferType)
  490. {
  491. case "P":
  492. CarrierPItemTempList.Clear();
  493. for (int i = 0; i < PCarrierlist.Count; i++)
  494. {
  495. if (CarrierStatus.Normal.Equals(PCarrierlist[i].Status)) continue;
  496. if (!(bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{PCarrierlist[i].StockerIndex}Installed")) continue;
  497. CarrierMaterialInformation carrierInfo = new CarrierMaterialInformation();
  498. carrierInfo.No = $"{PCarrierlist[i].StockerIndex}";
  499. carrierInfo.ModuleName = $"Stocker{PCarrierlist[i].StockerIndex}";
  500. carrierInfo.CarrierType = PCarrierlist[i].CarrierType.ToString();
  501. carrierInfo.CarrierId = PCarrierlist[i].CarrierId;
  502. carrierInfo.WaferCount = PCarrierlist[i].WaferCount.ToString();
  503. carrierInfo.StockerCarrierEnable = true;
  504. CarrierPItemTempList.Add(carrierInfo);
  505. }
  506. CarrierPItemList.Add(CarrierPItemTempList[StockValue - 1]);
  507. break;
  508. case "SD":
  509. CarrierSDItemTempList.Clear();
  510. for (int i = 0; i < SDCarrierlist.Count; i++)
  511. {
  512. if (CarrierStatus.Normal.Equals(SDCarrierlist[i].Status)) continue;
  513. if (!(bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{SDCarrierlist[i].StockerIndex}Installed")) continue;
  514. CarrierMaterialInformation carrierInfo = new CarrierMaterialInformation();
  515. carrierInfo.No = $"{SDCarrierlist[i].StockerIndex}"; ;
  516. carrierInfo.ModuleName = $"Stocker{SDCarrierlist[i].StockerIndex}";
  517. carrierInfo.CarrierType = SDCarrierlist[i].CarrierType.ToString();
  518. carrierInfo.CarrierId = SDCarrierlist[i].CarrierId;
  519. carrierInfo.WaferCount = SDCarrierlist[i].WaferCount.ToString();
  520. carrierInfo.StockerCarrierEnable = true;
  521. CarrierSDItemTempList.Add(carrierInfo);
  522. }
  523. CarrierSDItemList.Add(CarrierSDItemTempList[StockValue - 1]);
  524. break;
  525. case "ED":
  526. CarrierEDItemTempList.Clear();
  527. for (int i = 0; i < EDCarrierlist.Count; i++)
  528. {
  529. if (CarrierStatus.Normal.Equals(EDCarrierlist[i].Status)) continue;
  530. if (!(bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{EDCarrierlist[i].StockerIndex}Installed")) continue;
  531. CarrierMaterialInformation carrierInfo = new CarrierMaterialInformation();
  532. carrierInfo.No = $"{EDCarrierlist[i].StockerIndex}";
  533. carrierInfo.ModuleName = $"Stocker{EDCarrierlist[i].StockerIndex}";
  534. carrierInfo.CarrierType = EDCarrierlist[i].CarrierType.ToString();
  535. carrierInfo.CarrierId = EDCarrierlist[i].CarrierId;
  536. carrierInfo.WaferCount = EDCarrierlist[i].WaferCount.ToString();
  537. carrierInfo.StockerCarrierEnable = true;
  538. CarrierEDItemTempList.Add(carrierInfo);
  539. }
  540. CarrierEDItemList.Add(CarrierEDItemTempList[StockValue - 1]);
  541. break;
  542. case "M":
  543. CarrierMItemTempList.Clear();
  544. for (int i = 0; i < MCarrierlist.Count; i++)
  545. {
  546. if (CarrierStatus.Normal.Equals(MCarrierlist[i].Status)) continue;
  547. if (!(bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{MCarrierlist[i].StockerIndex}Installed")) continue;
  548. CarrierMaterialInformation carrierInfo = new CarrierMaterialInformation();
  549. carrierInfo.No = $"{MCarrierlist[i].StockerIndex}";
  550. //carrierInfo.ModuleName = MCarrierlist[i].InternalModuleName.ToString();
  551. carrierInfo.ModuleName = $"Stocker{MCarrierlist[i].StockerIndex}";
  552. carrierInfo.CarrierType = MCarrierlist[i].CarrierType.ToString();
  553. carrierInfo.CarrierId = MCarrierlist[i].CarrierId;
  554. carrierInfo.WaferCount = MCarrierlist[i].WaferCount.ToString();
  555. carrierInfo.StockerCarrierEnable = true;
  556. CarrierMItemTempList.Add(carrierInfo);
  557. }
  558. CarrierMItemList.Add(CarrierMItemTempList[StockValue - 1]);
  559. break;
  560. case "M1":
  561. CarrierM1ItemTempList.Clear();
  562. for (int i = 0; i < M1Carrierlist.Count; i++)
  563. {
  564. if (CarrierStatus.Normal.Equals(M1Carrierlist[i].Status)) continue;
  565. if (!(bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{M1Carrierlist[i].StockerIndex}Installed")) continue;
  566. CarrierMaterialInformation carrierInfo = new CarrierMaterialInformation();
  567. carrierInfo.No = $"{M1Carrierlist[i].StockerIndex}";
  568. carrierInfo.ModuleName = $"Stocker{M1Carrierlist[i].StockerIndex}";
  569. carrierInfo.CarrierType = M1Carrierlist[i].CarrierType.ToString();
  570. carrierInfo.CarrierId = M1Carrierlist[i].CarrierId;
  571. carrierInfo.WaferCount = M1Carrierlist[i].WaferCount.ToString();
  572. carrierInfo.StockerCarrierEnable = true;
  573. CarrierM1ItemTempList.Add(carrierInfo);
  574. }
  575. CarrierM1ItemList.Add(CarrierM1ItemTempList[StockValue - 1]);
  576. break;
  577. case "M2":
  578. CarrierM2ItemTempList.Clear();
  579. for (int i = 0; i < M2Carrierlist.Count; i++)
  580. {
  581. if (CarrierStatus.Normal.Equals(M2Carrierlist[i].Status)) continue;
  582. if (!(bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{M2Carrierlist[i].StockerIndex}Installed")) continue;
  583. CarrierMaterialInformation carrierInfo = new CarrierMaterialInformation();
  584. carrierInfo.No = $"{M2Carrierlist[i].StockerIndex}";
  585. carrierInfo.ModuleName = $"Stocker{M2Carrierlist[i].StockerIndex}";
  586. carrierInfo.CarrierType = M2Carrierlist[i].CarrierType.ToString();
  587. carrierInfo.CarrierId = M2Carrierlist[i].CarrierId;
  588. carrierInfo.WaferCount = M2Carrierlist[i].WaferCount.ToString();
  589. carrierInfo.StockerCarrierEnable = true;
  590. CarrierM2ItemTempList.Add(carrierInfo);
  591. }
  592. CarrierM2ItemList.Add(CarrierM2ItemTempList[StockValue - 1]);
  593. break;
  594. default:
  595. break;
  596. }
  597. }
  598. break;
  599. case "Sub":
  600. if (StockValue > 0)
  601. {
  602. StockValue--;
  603. if (WaferType == "M" && CarrierMItemList.Count > 0)
  604. {
  605. CarrierMItemList.RemoveAt(CarrierMItemList.Count - 1);
  606. }
  607. if (WaferType == "M1" && CarrierM1ItemList.Count > 0)
  608. {
  609. CarrierM1ItemList.RemoveAt(CarrierM1ItemList.Count - 1);
  610. }
  611. if (WaferType == "M2" && CarrierM2ItemList.Count > 0)
  612. {
  613. CarrierM2ItemList.RemoveAt(CarrierM2ItemList.Count - 1);
  614. }
  615. if (WaferType == "ED" && CarrierEDItemList.Count > 0)
  616. {
  617. CarrierEDItemList.RemoveAt(CarrierEDItemList.Count - 1);
  618. }
  619. if (WaferType == "SD" && CarrierSDItemList.Count > 0)
  620. {
  621. CarrierSDItemList.RemoveAt(CarrierSDItemList.Count - 1);
  622. }
  623. if (WaferType == "P" && CarrierPItemList.Count > 0)
  624. {
  625. CarrierPItemList.RemoveAt(CarrierPItemList.Count - 1);
  626. }
  627. //InitialPortName(WaferType);
  628. }
  629. break;
  630. default:
  631. break;
  632. }
  633. }
  634. /// <summary>
  635. /// 获取指定类型下空Stock数量
  636. /// </summary>
  637. /// <param name="stockType"></param>
  638. /// <returns></returns>
  639. public int getStockEmptyMaxValue(string stockType)
  640. {
  641. if ("P".Equals(stockType))
  642. {
  643. int count = 0;
  644. for (int i = 0; i < PCarrierlist.Count; i++)
  645. {
  646. if ((bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{PCarrierlist[i].StockerIndex}Installed") && CarrierStatus.Empty.Equals(PCarrierlist[i].Status))
  647. {
  648. count++;
  649. }
  650. }
  651. return count;
  652. }
  653. if ("SD".Equals(stockType))
  654. {
  655. int count = 0;
  656. for (int i = 0; i < SDCarrierlist.Count; i++)
  657. {
  658. if ((bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{SDCarrierlist[i].StockerIndex}Installed") && CarrierStatus.Empty.Equals(SDCarrierlist[i].Status))
  659. {
  660. count++;
  661. }
  662. }
  663. return count;
  664. }
  665. if ("ED".Equals(stockType))
  666. {
  667. int count = 0;
  668. for (int i = 0; i < EDCarrierlist.Count; i++)
  669. {
  670. if ((bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{EDCarrierlist[i].StockerIndex}Installed") && CarrierStatus.Empty.Equals(EDCarrierlist[i].Status))
  671. {
  672. count++;
  673. }
  674. }
  675. return count;
  676. }
  677. if ("M1".Equals(stockType))
  678. {
  679. int count = 0;
  680. for (int i = 0; i < M1Carrierlist.Count; i++)
  681. {
  682. if ((bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{M1Carrierlist[i].StockerIndex}Installed") && CarrierStatus.Empty.Equals(M1Carrierlist[i].Status))
  683. {
  684. count++;
  685. }
  686. }
  687. return count;
  688. }
  689. if ("M2".Equals(stockType))
  690. {
  691. int count = 0;
  692. for (int i = 0; i < M2Carrierlist.Count; i++)
  693. {
  694. if ((bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsStocker{M2Carrierlist[i].StockerIndex}Installed") && CarrierStatus.Empty.Equals(M2Carrierlist[i].Status))
  695. {
  696. count++;
  697. }
  698. }
  699. return count;
  700. }
  701. return 0;
  702. }
  703. public void WaferTypeSelect(string type)
  704. {
  705. var waferTypeList = QueryDataClient.Instance.Service.GetConfigItemList().Where(m => m.Name.StartsWith(ConstantsCommon.Stocker)).ToList();
  706. switch (type)
  707. {
  708. case ConstantsCommon.P:
  709. StockValue = waferTypeList.Where(n => n.Value.ToString().Contains(ConstantsCommon.P)).Count();
  710. PTypeVisibility = Visibility.Visible;
  711. SDTypeVisibility = Visibility.Collapsed;
  712. EDTypeVisibility = Visibility.Collapsed;
  713. MTypeVisibility = Visibility.Collapsed;
  714. M1TypeVisibility = Visibility.Collapsed;
  715. M2TypeVisibility = Visibility.Collapsed;
  716. WaferType = ConstantsCommon.P;
  717. CarrierPItemList.Clear();
  718. for (int i = 0; i < PCarrierlist.Count; i++)
  719. {
  720. if (CarrierStatus.Normal.Equals(PCarrierlist[i].Status))
  721. {
  722. StockValue--;
  723. continue;
  724. }
  725. }
  726. break;
  727. case ConstantsCommon.SD:
  728. StockValue = waferTypeList.Where(n => n.Value.ToString().Contains(ConstantsCommon.SD)).Count();
  729. PTypeVisibility = Visibility.Collapsed;
  730. SDTypeVisibility = Visibility.Visible;
  731. EDTypeVisibility = Visibility.Collapsed;
  732. MTypeVisibility = Visibility.Collapsed;
  733. M1TypeVisibility = Visibility.Collapsed;
  734. M2TypeVisibility = Visibility.Collapsed;
  735. WaferType = ConstantsCommon.SD;
  736. CarrierSDItemList.Clear();
  737. for (int i = 0; i < SDCarrierlist.Count; i++)
  738. {
  739. if (CarrierStatus.Normal.Equals(SDCarrierlist[i].Status))
  740. {
  741. StockValue--;
  742. continue;
  743. }
  744. }
  745. break;
  746. case ConstantsCommon.ED:
  747. StockValue = waferTypeList.Where(n => n.Value.ToString().Contains(ConstantsCommon.ED)).Count();
  748. PTypeVisibility = Visibility.Collapsed;
  749. SDTypeVisibility = Visibility.Collapsed;
  750. EDTypeVisibility = Visibility.Visible;
  751. MTypeVisibility = Visibility.Collapsed;
  752. M1TypeVisibility = Visibility.Collapsed;
  753. M2TypeVisibility = Visibility.Collapsed;
  754. WaferType = ConstantsCommon.ED;
  755. CarrierEDItemList.Clear();
  756. for (int i = 0; i < EDCarrierlist.Count; i++)
  757. {
  758. if (CarrierStatus.Normal.Equals(EDCarrierlist[i].Status))
  759. {
  760. StockValue--;
  761. continue;
  762. }
  763. }
  764. break;
  765. case ConstantsCommon.M:
  766. StockValue = waferTypeList.Where(n => n.Value.ToString().Contains(ConstantsCommon.M)).Count();
  767. PTypeVisibility = Visibility.Collapsed;
  768. SDTypeVisibility = Visibility.Collapsed;
  769. EDTypeVisibility = Visibility.Collapsed;
  770. MTypeVisibility = Visibility.Visible;
  771. AllTypeVisibility = Visibility.Visible;
  772. M1TypeVisibility = Visibility.Collapsed;
  773. M2TypeVisibility = Visibility.Collapsed;
  774. WaferType = ConstantsCommon.M;
  775. CarrierMItemList.Clear();
  776. for (int i = 0; i < MCarrierlist.Count; i++)
  777. {
  778. if (CarrierStatus.Normal.Equals(MCarrierlist[i].Status))
  779. {
  780. StockValue--;
  781. continue;
  782. }
  783. }
  784. break;
  785. case ConstantsCommon.M1:
  786. StockValue = waferTypeList.Where(n => n.Value.ToString().Contains(ConstantsCommon.M1)).Count();
  787. PTypeVisibility = Visibility.Collapsed;
  788. SDTypeVisibility = Visibility.Collapsed;
  789. EDTypeVisibility = Visibility.Collapsed;
  790. MTypeVisibility = Visibility.Collapsed;
  791. M1TypeVisibility = Visibility.Visible;
  792. M2TypeVisibility = Visibility.Collapsed;
  793. WaferType = ConstantsCommon.M1;
  794. CarrierM1ItemList.Clear();
  795. for (int i = 0; i < M1Carrierlist.Count; i++)
  796. {
  797. if (CarrierStatus.Normal.Equals(M1Carrierlist[i].Status))
  798. {
  799. StockValue--;
  800. continue;
  801. }
  802. }
  803. break;
  804. case ConstantsCommon.M2:
  805. StockValue = waferTypeList.Where(n => n.Value.ToString().Contains(ConstantsCommon.M2)).Count();
  806. PTypeVisibility = Visibility.Collapsed;
  807. SDTypeVisibility = Visibility.Collapsed;
  808. EDTypeVisibility = Visibility.Collapsed;
  809. MTypeVisibility = Visibility.Collapsed;
  810. M1TypeVisibility = Visibility.Collapsed;
  811. M2TypeVisibility = Visibility.Visible;
  812. WaferType = ConstantsCommon.M2;
  813. CarrierM2ItemList.Clear();
  814. for (int i = 0; i < M2Carrierlist.Count; i++)
  815. {
  816. if (CarrierStatus.Normal.Equals(M2Carrierlist[i].Status))
  817. {
  818. StockValue--;
  819. continue;
  820. }
  821. }
  822. break;
  823. default:
  824. break;
  825. }
  826. MaxValue = StockValue;
  827. StockValue = 0;
  828. InitialPortName(WaferType);
  829. }
  830. public void GetCarrier()
  831. {
  832. }
  833. public void EditCarrierID(string value)
  834. {
  835. var windowManager = IoC.Get<IWindowManager>();
  836. WaferMapSelectedViewModel inputCarrierInfoViewModel = new WaferMapSelectedViewModel();
  837. inputCarrierInfoViewModel.WaferType = WaferType;
  838. inputCarrierInfoViewModel.WaferNo = value;
  839. CarrierMaterialInformation carr=null;
  840. switch (WaferType)
  841. {
  842. case "P":
  843. carr = CarrierPItemList.FirstOrDefault(x => x.No == value);
  844. break;
  845. case "SD":
  846. carr = CarrierSDItemList.FirstOrDefault(x => x.No == value);
  847. break;
  848. case "ED":
  849. carr = CarrierEDItemList.FirstOrDefault(x => x.No == value);
  850. break;
  851. case "M1":
  852. carr = CarrierM1ItemList.FirstOrDefault(x => x.No == value);
  853. break;
  854. case "M2":
  855. carr = CarrierM2ItemList.FirstOrDefault(x => x.No == value);
  856. break;
  857. default:
  858. break;
  859. }
  860. if (carr != null) inputCarrierInfoViewModel.StrSlots = carr.StrSlot;
  861. inputCarrierInfoViewModel.Wafers = carr.Wafers;
  862. if ((bool)(windowManager as WindowManager)?.ShowDialogWithTitle(inputCarrierInfoViewModel, null, "Wafer Map"))
  863. {
  864. foreach (var item in CarrierPItemList)
  865. {
  866. if (item.No.Equals(inputCarrierInfoViewModel.WaferNo))
  867. {
  868. item.CarrierId = inputCarrierInfoViewModel.CarrierID;
  869. item.WaferCount = inputCarrierInfoViewModel.WaferCount;
  870. item.SlotMap = inputCarrierInfoViewModel.SlotMap;
  871. item.StrSlot = inputCarrierInfoViewModel.StrSlots;
  872. item.ExistSlot = inputCarrierInfoViewModel.IsExistChecked ? "Exist" : "None";
  873. }
  874. }
  875. foreach (var item in CarrierSDItemList)
  876. {
  877. if (item.No.Equals(inputCarrierInfoViewModel.WaferNo))
  878. {
  879. item.CarrierId = inputCarrierInfoViewModel.CarrierID;
  880. item.WaferCount = inputCarrierInfoViewModel.WaferCount;
  881. item.SlotMap = inputCarrierInfoViewModel.SlotMap;
  882. item.StrSlot = inputCarrierInfoViewModel.StrSlots;
  883. item.ExistSlot = inputCarrierInfoViewModel.IsExistChecked ? "Exist" : "None";
  884. }
  885. }
  886. foreach (var item in CarrierEDItemList)
  887. {
  888. if (item.No.Equals(inputCarrierInfoViewModel.WaferNo))
  889. {
  890. item.CarrierId = inputCarrierInfoViewModel.CarrierID;
  891. item.WaferCount = inputCarrierInfoViewModel.WaferCount;
  892. item.SlotMap = inputCarrierInfoViewModel.SlotMap;
  893. item.StrSlot = inputCarrierInfoViewModel.StrSlots;
  894. item.ExistSlot = inputCarrierInfoViewModel.IsExistChecked ? "Exist" : "None";
  895. }
  896. }
  897. foreach (var item in CarrierMItemList)
  898. {
  899. if (item.No.Equals(inputCarrierInfoViewModel.WaferNo))
  900. {
  901. item.CarrierId = inputCarrierInfoViewModel.CarrierID;
  902. item.WaferCount = inputCarrierInfoViewModel.WaferCount;
  903. item.SlotMap = inputCarrierInfoViewModel.SlotMap;
  904. item.StrSlot = inputCarrierInfoViewModel.StrSlots;
  905. item.ExistSlot = inputCarrierInfoViewModel.IsExistChecked ? "Exist" : "None";
  906. }
  907. }
  908. foreach (var item in CarrierM1ItemList)
  909. {
  910. if (item.No.Equals(inputCarrierInfoViewModel.WaferNo))
  911. {
  912. item.CarrierId = inputCarrierInfoViewModel.CarrierID;
  913. item.WaferCount = inputCarrierInfoViewModel.WaferCount;
  914. item.SlotMap = inputCarrierInfoViewModel.SlotMap;
  915. item.StrSlot = inputCarrierInfoViewModel.StrSlots;
  916. item.ExistSlot = inputCarrierInfoViewModel.IsExistChecked ? "Exist" : "None";
  917. }
  918. }
  919. foreach (var item in CarrierM2ItemList)
  920. {
  921. if (item.No.Equals(inputCarrierInfoViewModel.WaferNo))
  922. {
  923. item.CarrierId = inputCarrierInfoViewModel.CarrierID;
  924. item.WaferCount = inputCarrierInfoViewModel.WaferCount;
  925. item.SlotMap = inputCarrierInfoViewModel.SlotMap;
  926. item.StrSlot = inputCarrierInfoViewModel.StrSlots;
  927. item.ExistSlot = inputCarrierInfoViewModel.IsExistChecked ? "Exist" : "None";
  928. }
  929. }
  930. }
  931. else
  932. {
  933. }
  934. }
  935. public void TextChangedCmd()
  936. {
  937. if (StockValue < 0) StockValue = 0;
  938. InitialPortName(_batchType);
  939. }
  940. private void InitialPortName(string Type, bool initLotID = false)
  941. {
  942. //RightPort1Visibility = false; RightPort2Visibility = false; RightPort3Visibility = false;
  943. var StockerConfigList = QueryDataClient.Instance.Service.GetConfigItemList().Where(m => m.Name.Contains("WaferType")).ToList();
  944. int j = 0;
  945. int x = 0;
  946. int y = 0;
  947. for (int i = 1; i <= StockerConfigList.Count; i++)
  948. {
  949. string StockerType = (string)QueryDataClient.Instance.Service.GetConfig($"System.Stocker.Stocker{i}WaferType");
  950. if (j == StockValue || j > 12 && Type == "P")
  951. break;
  952. if (x == StockValue || x > 6 && Type == "ED")
  953. break;
  954. }
  955. }
  956. public void LoadPortCheck(string No, string LPName)
  957. {
  958. foreach (var item in CarrierPItemList)
  959. {
  960. if (item.No.Equals(No))
  961. {
  962. item.LoadPortName = LPName;
  963. }
  964. }
  965. foreach (var item in CarrierSDItemList)
  966. {
  967. if (item.No.Equals(No))
  968. {
  969. item.LoadPortName = LPName;
  970. }
  971. }
  972. foreach (var item in CarrierEDItemList)
  973. {
  974. if (item.No.Equals(No))
  975. {
  976. item.LoadPortName = LPName;
  977. }
  978. }
  979. foreach (var item in CarrierMItemList)
  980. {
  981. if (item.No.Equals(No))
  982. {
  983. item.LoadPortName = LPName;
  984. }
  985. }
  986. foreach (var item in CarrierM1ItemList)
  987. {
  988. if (item.No.Equals(No))
  989. {
  990. item.LoadPortName = LPName;
  991. }
  992. }
  993. foreach (var item in CarrierM2ItemList)
  994. {
  995. if (item.No.Equals(No))
  996. {
  997. item.LoadPortName = LPName;
  998. }
  999. }
  1000. }
  1001. public void LoadPortSelect(string StockerName, string LoadJobPara1)
  1002. {
  1003. string[] StockArray = LoadJobPara.Split(';');
  1004. string para = "";
  1005. foreach (var item in StockArray)
  1006. {
  1007. if (item.Contains(StockerName))
  1008. {
  1009. para = LoadJobPara.Replace(item + ";", LoadJobPara1);
  1010. }
  1011. }
  1012. LoadJobPara = para;
  1013. }
  1014. public void EXECCmd(string cmdPar)
  1015. {
  1016. //if (!DialogBox.Confirm("Are you sure to execute?"))
  1017. // return;
  1018. ObservableCollection<CarrierMaterialInformation> itemList = new ObservableCollection<CarrierMaterialInformation>();
  1019. switch (WaferType)
  1020. {
  1021. case "P":
  1022. itemList = CarrierPItemList;
  1023. break;
  1024. case "M":
  1025. itemList = CarrierMItemList;
  1026. break;
  1027. case "M1":
  1028. itemList = CarrierM1ItemList;
  1029. break;
  1030. case "M2":
  1031. itemList = CarrierM2ItemList;
  1032. break;
  1033. case "SD":
  1034. itemList = CarrierSDItemList;
  1035. break;
  1036. case "ED":
  1037. itemList = CarrierEDItemList;
  1038. break;
  1039. }
  1040. LoadJobPara = string.Empty;
  1041. foreach (var item in itemList)
  1042. {
  1043. item.CarrierId = IsAutoFillCarrierId ? item.No : item.CarrierId;
  1044. if (!item.StockerCarrierEnable)
  1045. continue;
  1046. if (string.IsNullOrEmpty(item.LoadPortName))
  1047. {
  1048. DialogBox.ShowWarning($"Number {item.No} LoadPort is empty,please select LoadPort!");
  1049. return;
  1050. }
  1051. var loadJobPara = item.ModuleName + "," + item.CarrierId + "," + item.StrSlot + "," + item.ExistSlot + "," + item.SlotMap + "," + item.LoadPortName + ";";
  1052. if (!string.IsNullOrEmpty(LoadJobPara) && LoadJobPara.Contains(item.ModuleName))
  1053. {
  1054. this.LoadPortSelect(item.ModuleName, loadJobPara);
  1055. }
  1056. else
  1057. LoadJobPara += loadJobPara;
  1058. }
  1059. if (string.IsNullOrEmpty(LoadJobPara))
  1060. {
  1061. DialogBox.ShowWarning("Load job parameter is empty,please select loadport number!");
  1062. return;
  1063. }
  1064. //string para = "Stocker1,P_00000036,25,Exist,1111111111111111111111111,LP1;Stocker2,P_00000037,25,Exist,1111111111111111111111111,LP2";
  1065. if (IsExecuteRTCommand && !DialogBox.Confirm("Are you sure to accept?"))
  1066. return;
  1067. Dictionary<string, object> param = new Dictionary<string, object>()
  1068. {
  1069. {"WaferType", WaferType },
  1070. {"CarrierPara", LoadJobPara.TrimEnd(';')},
  1071. {"TransferType", "Loading"},
  1072. };
  1073. if (IsExecuteRTCommand)
  1074. {
  1075. InvokeClient.Instance.Service.DoOperation($"System.{ExecCommand}", param);
  1076. }
  1077. ((Window)GetView()).DialogResult = true;
  1078. }
  1079. public void ClosedCmd(string cmdPar)
  1080. {
  1081. (GetView() as Window).Close();
  1082. }
  1083. }
  1084. }