Browse Source

手动添加冲突bug 代码

lixiang 8 months ago
parent
commit
bfd7d2def6
1 changed files with 50 additions and 16 deletions
  1. 50 16
      Venus/Venus_RT/Modules/SystemDispatcher.cs

+ 50 - 16
Venus/Venus_RT/Modules/SystemDispatcher.cs

@@ -903,6 +903,9 @@ namespace Venus_RT.Modules
         public RState CycleState => _cycleState;
         private Dictionary<string, ControlJobInfo> _loadportControlJobDic = new Dictionary<string, ControlJobInfo>();
         public List<string> InUseRecipes = new List<string>();
+        public List<string> LP1InUseRecipes = new List<string>();
+        public List<string> LP2InUseRecipes = new List<string>();
+        public List<string> LP3InUseRecipes = new List<string>();
         #region public interface
         public SystemDispatcher()
         {
@@ -932,6 +935,9 @@ namespace Venus_RT.Modules
                 DATA.Subscribe($"{lp}.CycleSetPoint", () => _lpCycleSP[lp], SubscriptionAttribute.FLAG.IgnoreSaveDB);
                 DATA.Subscribe($"{lp}.Throughput", () => _lpThroughput[lp], SubscriptionAttribute.FLAG.IgnoreSaveDB);
             }
+            DATA.Subscribe("Scheduler.LP1.InUsingRecipe", () => LP1InUseRecipes);
+            DATA.Subscribe("Scheduler.LP2.InUsingRecipe", () => LP2InUseRecipes);
+            DATA.Subscribe("Scheduler.LP3.InUsingRecipe", () => LP3InUseRecipes);
         }
 
         /// <summary>
@@ -1195,6 +1201,9 @@ namespace Venus_RT.Modules
                     return false;
             }
             InUseRecipes.Clear();
+            LP1InUseRecipes.Clear();
+            LP2InUseRecipes.Clear();
+            LP3InUseRecipes.Clear();
             return true;
         }
 
@@ -1204,21 +1213,34 @@ namespace Venus_RT.Modules
             {
                 if (cj.State == EnumControlJobState.Completed && !cj.BeenPosted)
                 {
+                    if (cj.Module == "LP1")
+                    {
+                        LP1InUseRecipes.Clear();
+                    }
+                    else if (cj.Module == "LP2")
+                    {
+                        LP2InUseRecipes.Clear();
+                    }
+                    else if (cj.Module == "LP3")
+                    {
+                        LP3InUseRecipes.Clear();
+                    }
+                    //_lstControlJobs.Remove(doneJob);
+                    _loadportControlJobDic[cj.Module] = null;
                     //LP;WaferSize;Lot;Number;Start;End;
                     sJobName = $"{cj.Module};{cj.JobWaferSize};{cj.LotName};{cj.LotWafers.Count};{cj.StartTime:T};{cj.EndTime:T}";
                     cj.BeenPosted = true;
-                    //return true;
+                    return true;
+
                 }
             }
-            var doneJob = _lstControlJobs.Where(cj => cj.State == EnumControlJobState.Completed && !cj.BeenPosted).FirstOrDefault();
-            if (doneJob != null)
-            {
-                sJobName = $"{doneJob.Module};{doneJob.JobWaferSize};{doneJob.LotName};{doneJob.LotWafers.Count};{doneJob.StartTime:T};{doneJob.EndTime:T}";
-                //_lstControlJobs.Remove(doneJob);
-                _loadportControlJobDic[doneJob.Module] = null;
+            //var doneJob = _lstControlJobs.Where(cj => cj.State == EnumControlJobState.Completed && !cj.BeenPosted).FirstOrDefault();
+            //if (doneJob != null)
+            //{
 
-                return true;
-            }
+
+            //    return true;
+            //}
             sJobName = "NULL";
             return false;
         }
@@ -1395,13 +1417,22 @@ namespace Venus_RT.Modules
 
             if (RtInstance.ConfigType == ConfigType.Kepler2200)
             {
-                foreach (var item in _lstProcessJobs)
+                var item = _lstProcessJobs.Where(x => x.LotName == cj.LotName).FirstOrDefault();
+                if (item != null && item.ControlJobName == cj.Name && !CheckSequenceKepler2200TemperatureReady(item.Sequence))
                 {
-                    if (item.ControlJobName == cj.Name && !CheckSequenceKepler2200TemperatureReady(item.Sequence))
-                    {
-                        return false;
-                    }
-                    GetAllJobRecipe(cj, item.Sequence);
+                    return false;
+                }
+                if (cj.Module == "LP1")
+                {
+                    GetAllJobRecipe(LP1InUseRecipes, cj, item.Sequence);
+                }
+                else if (cj.Module == "LP2")
+                {
+                    GetAllJobRecipe(LP2InUseRecipes, cj, item.Sequence);
+                }
+                else if (cj.Module == "LP3")
+                {
+                    GetAllJobRecipe(LP3InUseRecipes, cj, item.Sequence);
                 }
             }
 
@@ -1460,6 +1491,9 @@ namespace Venus_RT.Modules
             _lstControlJobs.Clear();
             _lstProcessJobs.Clear();
             InUseRecipes.Clear();
+            LP1InUseRecipes.Clear();
+            LP2InUseRecipes.Clear();
+            LP3InUseRecipes.Clear();
             _qePollingJobs.Clear();
             _cycleState = RState.End;
         }
@@ -4864,7 +4898,7 @@ namespace Venus_RT.Modules
                 _LLInOutPath = SequenceLLInOutPath.DInDOut;
         }
 
-        private bool GetAllJobRecipe(ControlJobInfo cj,SequenceInfo seq)
+        private bool GetAllJobRecipe(List<string> InUseRecipes, ControlJobInfo cj,SequenceInfo seq)
         {
             for (int i = 0; i < seq.Steps.Count; i++)
             {