RecipeLayoutSetTotalWaferNumberViewModel.cs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484
  1. using Aitex.Core.RT.SCCore;
  2. using Caliburn.Micro;
  3. using Caliburn.Micro.Core;
  4. using MECF.Framework.Common.DataCenter;
  5. using MECF.Framework.Common.RecipeCenter;
  6. using MECF.Framework.UI.Client.CenterViews.Editors.Recipe;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Collections.ObjectModel;
  10. using System.Linq;
  11. using System.Text;
  12. using System.Threading.Tasks;
  13. using System.Windows;
  14. using FurnaceUI.Models;
  15. using FurnaceUI.Views.Parameter;
  16. using FurnaceUI.Views.Recipes;
  17. namespace FurnaceUI.Views.Editors
  18. {
  19. public class RecipeLayoutSetTotalWaferNumberViewModel : FurnaceUIViewModelBase
  20. {
  21. Dictionary<string, string> wapexPlain = new Dictionary<string, string>();
  22. public TotalWaferNumberMode DialogResultTotalWaferNumberMode { get; set; }
  23. private string _returnValue = "";
  24. public string ReturnValue
  25. {
  26. get => _returnValue;
  27. set
  28. {
  29. _returnValue = value;
  30. SplitCharacter(value);
  31. NotifyOfPropertyChange(nameof(ReturnValue));
  32. }
  33. }
  34. private void SplitCharacter(string value)
  35. {
  36. if (string.IsNullOrEmpty(value) || !value.Contains("|")) return;
  37. string[] listStr = value.Split('|');
  38. if (listStr.Length != 4) return;
  39. NeedNum =int.Parse(listStr[0]);
  40. AdditionalNum = int.Parse(listStr[1]);
  41. ProductCarrierNum = int.Parse(listStr[2]);
  42. LowerSD = int.Parse(listStr[3]);
  43. }
  44. public bool IsSave { get; set; }
  45. public RecipeLayoutSetTotalWaferNumberViewModel()
  46. {
  47. }
  48. private int _needNum = 0;
  49. public int NeedNum
  50. {
  51. get => _needNum;
  52. set
  53. {
  54. _needNum = value;
  55. NotifyOfPropertyChange(nameof(NeedNum));
  56. }
  57. }
  58. private int _additionalNum = 0;
  59. public int AdditionalNum
  60. {
  61. get => _additionalNum;
  62. set
  63. {
  64. _additionalNum = value;
  65. NotifyOfPropertyChange(nameof(AdditionalNum));
  66. }
  67. }
  68. private int _productCarrierNum = 0;
  69. public int ProductCarrierNum
  70. {
  71. get => _productCarrierNum;
  72. set
  73. {
  74. _productCarrierNum = value;
  75. NotifyOfPropertyChange(nameof(ProductCarrierNum));
  76. }
  77. }
  78. private int _lowerSD = 0;
  79. public int LowerSD
  80. {
  81. get => _lowerSD;
  82. set
  83. {
  84. _lowerSD = value;
  85. NotifyOfPropertyChange(nameof(LowerSD));
  86. }
  87. }
  88. private TotalWaferNumberMode _totalWaferNumber = TotalWaferNumberMode.Total;
  89. public TotalWaferNumberMode TotalWaferNumber
  90. {
  91. get => _totalWaferNumber;
  92. set
  93. {
  94. _totalWaferNumber = value;
  95. NotifyOfPropertyChange(nameof(TotalWaferNumber));
  96. }
  97. }
  98. public bool IsEnable => CGlobal.RecipeProcessEditViewEnable;//是否是View模式
  99. public string RecipeType { get; set; }
  100. protected override void OnViewLoaded(object view)
  101. {
  102. base.OnViewLoaded(view);
  103. LoadData();
  104. LoadSetDefaultOption(view);
  105. }
  106. private string _titleText;
  107. public string TitleText
  108. {
  109. get => _titleText;
  110. set
  111. {
  112. _titleText = value;
  113. NotifyOfPropertyChange(nameof(TitleText));
  114. }
  115. }
  116. private void LoadData()
  117. {
  118. wapexPlain.Clear();
  119. wapexPlain.Add("Total", "Set the number of Product wafers .(include Fill Dummy wafers)");
  120. wapexPlain.Add("Carrier", "Set the number of Product carriers. The number oftransferring Product wafers to the boat is the carriernumber times the carrier slot number .");
  121. wapexPlain.Add("Carrierx", "The number of transferring Product wafers to the boat isthe entered-batch carrier number times the carrier slot number.");
  122. wapexPlain.Add("Minimum", "Set the minimum wafer number in process and additionalwafer number in case of going beyond the minimum.");
  123. wapexPlain.Add("Fixed", "Set the lowest slot No. of Lower Side-Dummy. The area ofProduct and FillDummy wafers is decided according tothe area of Side Dummy.");
  124. wapexPlain.Add("Upper", "Product wafers are arranged the upper area on the boatFill Dummy isn't transferred regardless of Product wafer number.");
  125. wapexPlain.Add("Lower", "Product wafers are arranged the lower area on the boat. Fill Dummy isn’t transferred regardless of Product wafer number .");
  126. TitleText = wapexPlain["Total"];
  127. DialogResultTotalWaferNumberMode = TotalWaferNumberMode.Total;
  128. }
  129. private void LoadSetDefaultOption(object view)
  130. {
  131. var totalWaferNumberView = (RecipeLayoutSetTotalWaferNumberView)view;
  132. switch (_totalWaferNumber)
  133. {
  134. case TotalWaferNumberMode.Total:
  135. totalWaferNumberView.RdoTotal.IsChecked = true;
  136. break;
  137. case TotalWaferNumberMode.Carrier:
  138. totalWaferNumberView.RdoCarrier.IsChecked = true;
  139. break;
  140. case TotalWaferNumberMode.Carrierx:
  141. totalWaferNumberView.RdoCarrierx.IsChecked = true;
  142. break;
  143. case TotalWaferNumberMode.Minimum:
  144. totalWaferNumberView.RdoMinimum.IsChecked = true;
  145. break;
  146. case TotalWaferNumberMode.Fixed:
  147. totalWaferNumberView.RdoFixed.IsChecked = true;
  148. break;
  149. case TotalWaferNumberMode.Upper:
  150. totalWaferNumberView.RdoUpper.IsChecked = true;
  151. break;
  152. case TotalWaferNumberMode.Lower:
  153. totalWaferNumberView.RdoLower.IsChecked = true;
  154. break;
  155. default:
  156. break;
  157. }
  158. }
  159. public void EditModeSelectClick(string cmd)
  160. {
  161. switch (cmd)
  162. {
  163. case "Before":
  164. SetBeforeEdit();
  165. break;
  166. case "After":
  167. SetAfterEdit();
  168. break;
  169. default:
  170. break;
  171. }
  172. }
  173. private void SetBeforeEdit()
  174. { }
  175. private void SetAfterEdit()
  176. { }
  177. public void WapLogicSelectClick(string cmd)
  178. {
  179. if (wapexPlain.ContainsKey(cmd))
  180. {
  181. TitleText = wapexPlain[cmd];
  182. }
  183. switch (cmd)
  184. {
  185. case "Total":
  186. SetWapLogicSelectTotal();
  187. break;
  188. case "Carrier":
  189. SetWapLogicSelectCarrier();
  190. break;
  191. case "Carrierx":
  192. SetWapLogicSelectCarrierx();
  193. break;
  194. case "Minimum":
  195. SetWapLogicSelectMinimum();
  196. break;
  197. case "Fixed":
  198. SetWapLogicSelectFixed();
  199. break;
  200. case "Upper":
  201. SetWapLogicSelectUpper();
  202. break;
  203. case "Lower":
  204. SetWapLogicSelectLower();
  205. break;
  206. default:
  207. break;
  208. }
  209. }
  210. private bool _totalWaferIsEnabled = true;
  211. public bool TotalWaferIsEnabled
  212. {
  213. get => _totalWaferIsEnabled;
  214. set
  215. {
  216. _totalWaferIsEnabled = value;
  217. NotifyOfPropertyChange(nameof(TotalWaferIsEnabled));
  218. }
  219. }
  220. private Visibility _totalVisibility = Visibility.Visible;
  221. public Visibility TotalVisibility
  222. {
  223. get => _totalVisibility;
  224. set
  225. {
  226. _totalVisibility = value;
  227. NotifyOfPropertyChange(nameof(TotalVisibility));
  228. }
  229. }
  230. private Visibility _carrierVisibility = Visibility.Hidden;
  231. public Visibility CarrierVisibility
  232. {
  233. get => _carrierVisibility;
  234. set
  235. {
  236. _carrierVisibility = value;
  237. NotifyOfPropertyChange(nameof(CarrierVisibility));
  238. }
  239. }
  240. private Visibility _carrierXVisibility = Visibility.Hidden;
  241. public Visibility CarrierXVisibility
  242. {
  243. get => _carrierXVisibility;
  244. set
  245. {
  246. _carrierXVisibility = value;
  247. NotifyOfPropertyChange(nameof(CarrierXVisibility));
  248. }
  249. }
  250. private Visibility _minimumVisibility = Visibility.Hidden;
  251. public Visibility MinimumVisibility
  252. {
  253. get => _minimumVisibility;
  254. set
  255. {
  256. _minimumVisibility = value;
  257. NotifyOfPropertyChange(nameof(MinimumVisibility));
  258. }
  259. }
  260. private Visibility _fixedVisibility = Visibility.Hidden;
  261. public Visibility FixedVisibility
  262. {
  263. get => _fixedVisibility;
  264. set
  265. {
  266. _fixedVisibility = value;
  267. NotifyOfPropertyChange(nameof(FixedVisibility));
  268. }
  269. }
  270. private Visibility _allWaferVisibility = Visibility.Visible;
  271. public Visibility AllWaferVisibility
  272. {
  273. get => _allWaferVisibility;
  274. set
  275. {
  276. _allWaferVisibility = value;
  277. NotifyOfPropertyChange(nameof(AllWaferVisibility));
  278. }
  279. }
  280. private Visibility _upperAreaVisibility = Visibility.Hidden;
  281. public Visibility UpperAreaVisibility
  282. {
  283. get => _upperAreaVisibility;
  284. set
  285. {
  286. _upperAreaVisibility = value;
  287. NotifyOfPropertyChange(nameof(UpperAreaVisibility));
  288. }
  289. }
  290. private Visibility _lowerAreaVisibility = Visibility.Hidden;
  291. public Visibility LowerAreaVisibility
  292. {
  293. get => _lowerAreaVisibility;
  294. set
  295. {
  296. _lowerAreaVisibility = value;
  297. NotifyOfPropertyChange(nameof(LowerAreaVisibility));
  298. }
  299. }
  300. private Visibility _foupVisibilityVisibility = Visibility.Visible;
  301. public Visibility FoupVisibilityVisibility
  302. {
  303. get => _foupVisibilityVisibility;
  304. set
  305. {
  306. _foupVisibilityVisibility = value;
  307. NotifyOfPropertyChange(nameof(_foupVisibilityVisibility));
  308. }
  309. }
  310. private void SetWapLogicSelectTotal()
  311. {
  312. TotalWaferIsEnabled = true;
  313. AllWaferVisibility = Visibility.Visible;
  314. TotalVisibility = Visibility.Visible;
  315. CarrierVisibility = Visibility.Hidden;
  316. CarrierXVisibility = Visibility.Hidden;
  317. MinimumVisibility = Visibility.Hidden;
  318. FixedVisibility = Visibility.Hidden;
  319. UpperAreaVisibility = Visibility.Hidden;
  320. LowerAreaVisibility = Visibility.Hidden;
  321. FoupVisibilityVisibility = Visibility.Visible;
  322. DialogResultTotalWaferNumberMode = TotalWaferNumberMode.Total;
  323. }
  324. private void SetWapLogicSelectCarrier()
  325. {
  326. TotalWaferIsEnabled = false;
  327. AllWaferVisibility = Visibility.Visible;
  328. TotalVisibility = Visibility.Visible;
  329. CarrierVisibility = Visibility.Visible;
  330. CarrierXVisibility = Visibility.Hidden;
  331. MinimumVisibility = Visibility.Hidden;
  332. FixedVisibility = Visibility.Hidden;
  333. UpperAreaVisibility = Visibility.Hidden;
  334. LowerAreaVisibility = Visibility.Hidden;
  335. FoupVisibilityVisibility = Visibility.Visible;
  336. DialogResultTotalWaferNumberMode = TotalWaferNumberMode.Carrier;
  337. }
  338. private void SetWapLogicSelectCarrierx()
  339. {
  340. AllWaferVisibility = Visibility.Visible;
  341. TotalVisibility = Visibility.Hidden;
  342. CarrierVisibility = Visibility.Hidden;
  343. CarrierXVisibility = Visibility.Visible;
  344. MinimumVisibility = Visibility.Hidden;
  345. FixedVisibility = Visibility.Hidden;
  346. UpperAreaVisibility = Visibility.Hidden;
  347. LowerAreaVisibility = Visibility.Hidden;
  348. FoupVisibilityVisibility = Visibility.Hidden;
  349. DialogResultTotalWaferNumberMode = TotalWaferNumberMode.Carrierx;
  350. }
  351. private void SetWapLogicSelectMinimum()
  352. {
  353. AllWaferVisibility = Visibility.Visible;
  354. TotalVisibility = Visibility.Hidden;
  355. CarrierVisibility = Visibility.Hidden;
  356. CarrierXVisibility = Visibility.Hidden;
  357. MinimumVisibility = Visibility.Visible;
  358. FixedVisibility = Visibility.Hidden;
  359. UpperAreaVisibility = Visibility.Hidden;
  360. LowerAreaVisibility = Visibility.Hidden;
  361. FoupVisibilityVisibility = Visibility.Hidden;
  362. DialogResultTotalWaferNumberMode = TotalWaferNumberMode.Minimum;
  363. }
  364. private void SetWapLogicSelectFixed()
  365. {
  366. AllWaferVisibility = Visibility.Visible;
  367. TotalVisibility = Visibility.Hidden;
  368. CarrierVisibility = Visibility.Hidden;
  369. CarrierXVisibility = Visibility.Hidden;
  370. MinimumVisibility = Visibility.Hidden;
  371. FixedVisibility = Visibility.Visible;
  372. UpperAreaVisibility = Visibility.Hidden;
  373. LowerAreaVisibility = Visibility.Hidden;
  374. FoupVisibilityVisibility = Visibility.Visible;
  375. DialogResultTotalWaferNumberMode = TotalWaferNumberMode.Fixed;
  376. }
  377. private void SetWapLogicSelectUpper()
  378. {
  379. AllWaferVisibility = Visibility.Hidden;
  380. UpperAreaVisibility = Visibility.Visible;
  381. LowerAreaVisibility = Visibility.Hidden;
  382. DialogResultTotalWaferNumberMode = TotalWaferNumberMode.Upper;
  383. }
  384. private void SetWapLogicSelectLower()
  385. {
  386. AllWaferVisibility = Visibility.Hidden;
  387. UpperAreaVisibility = Visibility.Hidden;
  388. LowerAreaVisibility = Visibility.Visible;
  389. DialogResultTotalWaferNumberMode = TotalWaferNumberMode.Lower;
  390. }
  391. public void TempSetSave()
  392. {
  393. IsSave = true;
  394. GetValueToReturnValue();
  395. ((Window)GetView()).DialogResult = true;
  396. }
  397. private void GetValueToReturnValue()
  398. {
  399. ReturnValue = $"{NeedNum}|{AdditionalNum}|{ProductCarrierNum}|{LowerSD}";
  400. }
  401. public void TempSetCancel()
  402. {
  403. IsSave = false;
  404. ((Window)GetView()).DialogResult = false;
  405. }
  406. }
  407. public enum TotalWaferNumberMode
  408. {
  409. Total,
  410. Carrier,
  411. Carrierx,
  412. Minimum,
  413. Fixed,
  414. Upper,
  415. Lower
  416. }
  417. }