WaferStatusImp.cs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using MECF.Framework.Common.DataCenter;
  7. using OpenSEMI.ClientBase.Handlers;
  8. using OpenSEMI.ClientBase;
  9. using ACC = Aitex.Core.Common;
  10. namespace VirgoUI.Client.Models.Sys
  11. {
  12. public class WaferStatusImp
  13. {
  14. public WaferStatusImp(IQueryDataService dataService)
  15. {
  16. DataService = dataService;
  17. }
  18. public List<WaferInfo> GetWaferStatus(string moduleID)
  19. {
  20. List<WaferInfo> result = new List<WaferInfo>();
  21. string param = moduleID + ".ModuleWaferList";
  22. ACC.WaferInfo[] wafers = QueryDataClient.Instance.Service.GetData(param) as ACC.WaferInfo[];
  23. if (wafers != null)
  24. {
  25. for (int i = 0; i < wafers.Length; i++)
  26. {
  27. result.Add(WaferInfoConverter(wafers[i], moduleID, i));
  28. }
  29. }
  30. return result;
  31. }
  32. private WaferInfo WaferInfoConverter(ACC.WaferInfo awafer, string modid, int slotid)
  33. {
  34. WaferInfo wafer = new WaferInfo();
  35. wafer.ModuleID = modid;
  36. wafer.SlotID = slotid;
  37. wafer.SlotIndex = slotid + 1;
  38. wafer.WaferID = awafer.WaferID;
  39. wafer.SourceName = awafer.WaferOrigin;
  40. wafer.IsReversed = awafer.IsReversed;
  41. wafer.WaferStatus = WaferStatusConverter(awafer);
  42. wafer.Orient = (wafer.WaferStatus == 0) ? "" : (awafer.IsReversed ? "D" : "U");
  43. wafer.SourceName = wafer.Orient + ": " + awafer.WaferOrigin;
  44. return wafer;
  45. }
  46. //0: trans?
  47. //1:goden
  48. //2:blue
  49. //3:cyan
  50. //4:green
  51. //5:error
  52. private int WaferStatusConverter(ACC.WaferInfo awafer)
  53. {
  54. if (awafer.Status == ACC.WaferStatus.Empty)
  55. return 0;
  56. if (awafer.Status == ACC.WaferStatus.Normal)
  57. {
  58. switch (awafer.ProcessState)
  59. {
  60. case ACC.EnumWaferProcessStatus.InProcess: return 3;
  61. case ACC.EnumWaferProcessStatus.Completed: return 4;
  62. case ACC.EnumWaferProcessStatus.Failed: return 5;
  63. case ACC.EnumWaferProcessStatus.Idle: return awafer.ProcessJob == null ? 1 : 2;
  64. }
  65. }
  66. if (awafer.Status == ACC.WaferStatus.Dummy)
  67. {
  68. return 1;
  69. }
  70. return 5;
  71. }
  72. private IQueryDataService DataService;
  73. }
  74. }