瀏覽代碼

同步ELK02代码:增加Process是否结束判定

jiangjy 3 天之前
父節點
當前提交
41c17ab5b4

+ 9 - 5
FrameworkLocal/UIClient/CenterViews/Editors/Recipe/RecipeDataBase.cs

@@ -394,7 +394,7 @@ namespace MECF.Framework.UI.Client.CenterViews.Editors.Recipe
 
 
 
 
 
 
-    public void CloneStep(ref Step destinationStep, Step originalStep)
+        public void CloneStep(ref Step destinationStep, Step originalStep)
         {
         {
             int stepNo = destinationStep.StepNo;
             int stepNo = destinationStep.StepNo;
             destinationStep = (Step)CloneUtil.CloneObjectSetFlag(originalStep, "IsSaved", true);
             destinationStep = (Step)CloneUtil.CloneObjectSetFlag(originalStep, "IsSaved", true);
@@ -1448,12 +1448,16 @@ namespace MECF.Framework.UI.Client.CenterViews.Editors.Recipe
                             }
                             }
                             else
                             else
                             {
                             {
-                                var displayName = (string)dictValues[$"PM1.RecipeEditParameter.AUX.{item.ControlName}.Display"];
-                                var auxUnit = (string)dictValues[$"PM1.RecipeEditParameter.AUX.{item.ControlName}.Unit"];
-                                if (step.AUXSets.Where(x => x.Name == item.ControlName).Any())
+                                if (dictValues != null && dictValues.Count > 0)
                                 {
                                 {
-                                    AddNewAUX(step, item, displayName, auxUnit);
+                                    var displayName = (string)dictValues[$"PM1.RecipeEditParameter.AUX.{item.ControlName}.Display"];
+                                    var auxUnit = (string)dictValues[$"PM1.RecipeEditParameter.AUX.{item.ControlName}.Unit"];
+                                    if (step.AUXSets.Where(x => x.Name == item.ControlName).Any())
+                                    {
+                                        AddNewAUX(step, item, displayName, auxUnit);
+                                    }
                                 }
                                 }
+
                             }
                             }
                         }
                         }
                     }
                     }

+ 3 - 4
Furnace/FurnaceRT/Equipments/Jobs/AutoTransfer.cs

@@ -971,13 +971,14 @@ namespace FurnaceRT.Equipments.Jobs
 
 
         private void UpdateProcessJobStatus()
         private void UpdateProcessJobStatus()
         {
         {
+            var pmModule = Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule;
             foreach (var pj in _lstProcessJobs)
             foreach (var pj in _lstProcessJobs)
             {
             {
                 if (pj.ProcessingState == EnumProcessingState.Discharging && pj.IsEmptyLayout)
                 if (pj.ProcessingState == EnumProcessingState.Discharging && pj.IsEmptyLayout)
                 {
                 {
                     pj.SetState(EnumProcessJobState.ProcessingComplete);
                     pj.SetState(EnumProcessJobState.ProcessingComplete);
                     JobDataRecorder.EndPJ(pj.InnerId.ToString(), 0, 0);
                     JobDataRecorder.EndPJ(pj.InnerId.ToString(), 0, 0);
-                    var pmModule = Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule;
+                
                     pmModule?.SetN2PurgeLAO2CheckFirstEnable(false);
                     pmModule?.SetN2PurgeLAO2CheckFirstEnable(false);
                     pmModule?.SetN2PurgeProcess(false);
                     pmModule?.SetN2PurgeProcess(false);
                 }
                 }
@@ -985,12 +986,11 @@ namespace FurnaceRT.Equipments.Jobs
                 {
                 {
                     if (pj.State == EnumProcessJobState.Processing)
                     if (pj.State == EnumProcessJobState.Processing)
                     {
                     {
-                        if (CheckAllWaferReturned(pj, true))
+                        if (CheckAllWaferReturned(pj, true) && pmModule.CheckRecipeIsCompleted(pj))
                         {
                         {
                             pj.SetState(EnumProcessJobState.ProcessingComplete);
                             pj.SetState(EnumProcessJobState.ProcessingComplete);
                             JobDataRecorder.EndPJ(pj.InnerId.ToString(), 0, 0);
                             JobDataRecorder.EndPJ(pj.InnerId.ToString(), 0, 0);
                             _faCallback.EndDischarge(pj);
                             _faCallback.EndDischarge(pj);
-                            var pmModule = Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule;
                             pmModule?.SetN2PurgeLAO2CheckFirstEnable(false);
                             pmModule?.SetN2PurgeLAO2CheckFirstEnable(false);
                             pmModule?.SetN2PurgeProcess(false);
                             pmModule?.SetN2PurgeProcess(false);
                         }
                         }
@@ -1001,7 +1001,6 @@ namespace FurnaceRT.Equipments.Jobs
                         {
                         {
                             pj.SetState(EnumProcessJobState.ProcessingComplete);
                             pj.SetState(EnumProcessJobState.ProcessingComplete);
                             JobDataRecorder.EndPJ(pj.InnerId.ToString(), 0, 0);
                             JobDataRecorder.EndPJ(pj.InnerId.ToString(), 0, 0);
-                            var pmModule = Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule;
                             pmModule?.SetN2PurgeLAO2CheckFirstEnable(false);
                             pmModule?.SetN2PurgeLAO2CheckFirstEnable(false);
                             pmModule?.SetN2PurgeProcess(false);
                             pmModule?.SetN2PurgeProcess(false);
                         }
                         }

+ 11 - 0
Furnace/FurnaceRT/Equipments/PMs/PMMethods.cs

@@ -20,6 +20,7 @@ using MECF.Framework.Common.Device.Bases;
 using MECF.Framework.Common.Equipment;
 using MECF.Framework.Common.Equipment;
 using MECF.Framework.Common.Extens;
 using MECF.Framework.Common.Extens;
 using MECF.Framework.Common.FAServices;
 using MECF.Framework.Common.FAServices;
+using MECF.Framework.Common.Jobs;
 using MECF.Framework.Common.SubstrateTrackings;
 using MECF.Framework.Common.SubstrateTrackings;
 using MECF.Framework.Common.Utilities;
 using MECF.Framework.Common.Utilities;
 using System;
 using System;
@@ -448,6 +449,16 @@ namespace FurnaceRT.Equipments.PMs
 
 
 
 
         }
         }
+        public bool CheckRecipeIsCompleted(ProcessJobInfo pj)
+        {
+
+            var pm = Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule;
+            if (pm == null || pm.RecipeRunningInfo == null || pm.RecipeRunningInfo.RecipeStepList == null)
+            {
+                return true;
+            }
+            return pm.IsRecipeCompleted;
+        }
         public string GetRecipeAbnormalEndByPJId(string pjId)
         public string GetRecipeAbnormalEndByPJId(string pjId)
         {
         {
 
 

+ 12 - 0
Furnace/FurnaceRT/Equipments/PMs/PMModule.cs

@@ -168,6 +168,18 @@ namespace FurnaceRT.Equipments.PMs
         private PMPostTransferRoutine _postTransferRoutine;
         private PMPostTransferRoutine _postTransferRoutine;
 
 
         private ModuleName _module;
         private ModuleName _module;
+        public bool IsRecipeCompleted
+        {
+            get
+            {
+                if (_processRoutine == null)
+                {
+                    return true;
+                }
+                return _processRoutine.IsRecipeCompleted;
+
+            }
+        }
 
 
         private RecipeRunningInfo _recipeRunningInfo = new RecipeRunningInfo();
         private RecipeRunningInfo _recipeRunningInfo = new RecipeRunningInfo();
 
 

+ 1 - 1
Furnace/FurnaceRT/Equipments/PMs/RecipeExecutions/Process.cs

@@ -69,7 +69,7 @@ namespace FurnaceRT.Equipments.PMs.RecipeExecutions
         private double _totalElpasedTime;
         private double _totalElpasedTime;
 
 
         public RecipeContinueMode ContinueAction { get; set; }
         public RecipeContinueMode ContinueAction { get; set; }
-
+        public bool IsRecipeCompleted { get { return _state == RecipeRunningState.RecipeCompleted || _state == RecipeRunningState.Error; } }
         public DateTime _recipeStartTime
         public DateTime _recipeStartTime
         {
         {
             get;
             get;