Browse Source

客户需求 新增LotIdlist

jiangjy 1 month ago
parent
commit
ca213dee55

+ 3 - 0
FrameworkLocal/Common/FAServices/DataVariables.cs

@@ -91,6 +91,7 @@ namespace MECF.Framework.Common.FAServices
         public const string ProcessWaferIdList = "ProcessWaferIdList";
         public const string BoatCurrentFilmThickness = "BoatCurrentFilmThickness";
         public const string DryClearCount = "DryClearCount";
+        public const string LotIdList = "LotIdList";
 
 
         #endregion
@@ -188,6 +189,7 @@ namespace MECF.Framework.Common.FAServices
             //SideDummyStateDetail = 3516,
             //ExtraDummyStateDetail = 3517,
             ProcessWaferIdList = 3520,
+            LotIdList = 3521,
            
            
 
@@ -279,6 +281,7 @@ namespace MECF.Framework.Common.FAServices
             {PPStepChange, new VIDItem() {Name = PPStepChange, Index = (int) DataName.PPStepChange,DataType = "String",Description = "BoatThickness"}},
 
             {ProcessWaferIdList, new VIDItem() {Name = ProcessWaferIdList, Index = (int) DataName.ProcessWaferIdList,DataType = "List",Description = "List of process waferID.\r\nL, n\r\nL, 3\r\n<waferID> \r\n<TimeIn>\r\n<TimeOut>"}},
+            {LotIdList, new VIDItem() {Name = LotIdList, Index = (int) DataName.LotIdList,DataType = "List",Description = "List of process waferID.\r\nL, n\r\nL, 3\r\n<LotIdList> \r\n<TimeIn>\r\n<TimeOut>"}},
        
             #endregion
 

+ 2 - 2
FrameworkLocal/Common/FAServices/UniversalEvents.cs

@@ -194,8 +194,8 @@ namespace MECF.Framework.Common.FAServices
             {PortPPSelected, new VIDItem() {Name = PortPPSelected, Index = (int)EventName.PortPPSelected, LinkableVid = new[] {(int)DataVariables.DataName.LotID,(int)DataVariables.DataName.JobID,(int)DataVariables.DataName.PortID,(int)DataVariables.DataName.RecipeID}}},
             {PortPPSelectFailed, new VIDItem() {Name = PortPPSelectFailed, Index = (int)EventName.PortPPSelectFailed, LinkableVid = new[] {(int)DataVariables.DataName.LotID,(int)DataVariables.DataName.JobID,(int)DataVariables.DataName.PortID,(int)DataVariables.DataName.RecipeID}}},
 
-            {RecipeStart, new VIDItem() {Name = RecipeStart, Index = (int)EventName.RecipeStart, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.PortID,(int)DataVariables.DataName.StationName,(int)DataVariables.DataName.SlotID,(int)DataVariables.DataName.ProcessWaferIdList,(int)DataVariables.DataName.ProcessCarrierIDList}}},
-            {RecipeComplete, new VIDItem() {Name = RecipeComplete, Index = (int)EventName.RecipeComplete, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.PortID,(int)DataVariables.DataName.StationName,(int)DataVariables.DataName.SlotID,(int)DataVariables.DataName.ProcessWaferIdList,(int)DataVariables.DataName.ProcessCarrierIDList}}},
+            {RecipeStart, new VIDItem() {Name = RecipeStart, Index = (int)EventName.RecipeStart, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.PortID,(int)DataVariables.DataName.StationName,(int)DataVariables.DataName.SlotID,(int)DataVariables.DataName.ProcessWaferIdList,(int)DataVariables.DataName.ProcessCarrierIDList,(int)DataVariables.DataName.LotIdList}}},
+            {RecipeComplete, new VIDItem() {Name = RecipeComplete, Index = (int)EventName.RecipeComplete, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.PortID,(int)DataVariables.DataName.StationName,(int)DataVariables.DataName.SlotID,(int)DataVariables.DataName.ProcessWaferIdList,(int)DataVariables.DataName.ProcessCarrierIDList,(int)DataVariables.DataName.LotIdList}}},
             {RecipeStepStart, new VIDItem() {Name = RecipeStepStart, Index = (int)EventName.RecipeStepStart, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.PortID,(int)DataVariables.DataName.StationName,(int)DataVariables.DataName.RecipeStepNumber,(int)DataVariables.DataName.SlotID}}},
             {RecipeStepEnd, new VIDItem() {Name = RecipeStepEnd, Index = (int)EventName.RecipeStepEnd, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.PortID,(int)DataVariables.DataName.StationName, (int)DataVariables.DataName.RecipeStepNumber, (int)DataVariables.DataName.SlotID}}},
             {RecipeFailed, new VIDItem() {Name = RecipeFailed, Index = (int)EventName.RecipeFailed,  LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.PortID,(int)DataVariables.DataName.StationName,(int)DataVariables.DataName.SlotID}}},

+ 4 - 0
Furnace/FurnaceRT/Config/FurnaceGemModel.xml

@@ -9089,6 +9089,7 @@
     <DVID id="3518" valueType="Ascii" logicalName="PPStepChange" value="" eventTrigger="" description="BoatThickness" isArray="false" />
     <DVID id="3519" valueType="List" logicalName="ProcessCarrierIDList" value="" eventTrigger="" description="List of process CarrierID.&#xD;&#xA;L, n&#xD;&#xA;L, 3&#xD;&#xA;&lt;CarrierID&gt; &#xD;&#xA;&lt;TimeIn&gt;&#xD;&#xA;&lt;TimeOut&gt;" isArray="false" />
     <DVID id="3520" valueType="List" logicalName="ProcessWaferIdList" value="" eventTrigger="" description="List of process waferID.&#xD;&#xA;L, n&#xD;&#xA;L, 3&#xD;&#xA;&lt;waferID&gt; &#xD;&#xA;&lt;TimeIn&gt;&#xD;&#xA;&lt;TimeOut&gt;" isArray="false" />
+    <DVID id="3521" valueType="List" logicalName="LotIdList" value="" eventTrigger="" description="List of process waferID.&#xD;&#xA;L, n&#xD;&#xA;L, 3&#xD;&#xA;&lt;LotIdList&gt; &#xD;&#xA;&lt;TimeIn&gt;&#xD;&#xA;&lt;TimeOut&gt;" isArray="false" />
     <DVID id="3526" valueType="List" logicalName="BoatSlotMapList" value="" eventTrigger="" description="List of boat map slot result.&#xD;&#xA;L, n&#xD;&#xA;L, 3&#xD;&#xA;&lt;SlotMapInt&gt; &#xD;&#xA;&lt;TimeIn&gt;&#xD;&#xA;&lt;TimeOut&gt;" isArray="false" />
   </DataVariables>
   <DataCollections useAnnotatedEvent="false">
@@ -9146,6 +9147,7 @@
         <ReportVariable id="3110" varType="DataVariable" logicalName="SlotID" />
         <ReportVariable id="3520" varType="DataVariable" logicalName="ProcessWaferIdList" />
         <ReportVariable id="3519" varType="DataVariable" logicalName="ProcessCarrierIDList" />
+        <ReportVariable id="3521" varType="DataVariable" logicalName="LotIdList" />
       </RPTID>
       <RPTID id="12" logicalName="DefaultDefinedReport_12">
         <ReportVariable id="3103" varType="DataVariable" logicalName="RecipeID" />
@@ -9428,6 +9430,7 @@
           <ReportVariable id="3110" varType="DataVariable" logicalName="SlotID" />
           <ReportVariable id="3520" varType="DataVariable" logicalName="ProcessWaferIdList" />
           <ReportVariable id="3519" varType="DataVariable" logicalName="ProcessCarrierIDList" />
+          <ReportVariable id="3521" varType="DataVariable" logicalName="LotIdList" />
         </RPTID>
       </CEID>
       <CEID id="2001" logicalName="RecipeComplete" description="" enabled="true">
@@ -9438,6 +9441,7 @@
           <ReportVariable id="3110" varType="DataVariable" logicalName="SlotID" />
           <ReportVariable id="3520" varType="DataVariable" logicalName="ProcessWaferIdList" />
           <ReportVariable id="3519" varType="DataVariable" logicalName="ProcessCarrierIDList" />
+          <ReportVariable id="3521" varType="DataVariable" logicalName="LotIdList" />
         </RPTID>
       </CEID>
       <CEID id="2002" logicalName="RecipeStepStart" description="" enabled="true">

+ 2 - 0
Furnace/FurnaceRT/Config/VIDs/_CEID.xml

@@ -154,6 +154,7 @@
       <int>3110</int>
       <int>3520</int>
       <int>3519</int>
+      <int>3521</int>
     </LinkableVID>
   </VIDItem>
   <VIDItem Name="RecipeComplete" Index="2001" Module="System" Type="" Unit="" Parameter="RecipeComplete">
@@ -164,6 +165,7 @@
       <int>3110</int>
       <int>3520</int>
       <int>3519</int>
+      <int>3521</int>
     </LinkableVID>
   </VIDItem>
   <VIDItem Name="RecipeStepStart" Index="2002" Module="System" Type="" Unit="" Parameter="RecipeStepStart">

+ 1 - 0
Furnace/FurnaceRT/Config/VIDs/_DVID.xml

@@ -51,5 +51,6 @@
   <VIDItem Name="PPStepChange" Index="3518" DataType="String" Description="BoatThickness" Module="System" Type="" Unit="" Parameter="PPStepChange" />
   <VIDItem Name="ProcessCarrierIDList" Index="3519" DataType="List" Description="List of process CarrierID.&#xD;&#xA;L, n&#xD;&#xA;L, 3&#xD;&#xA;&lt;CarrierID&gt; &#xD;&#xA;&lt;TimeIn&gt;&#xD;&#xA;&lt;TimeOut&gt;" Module="System" Type="" Unit="" Parameter="ProcessCarrierIDList" />
   <VIDItem Name="ProcessWaferIdList" Index="3520" DataType="List" Description="List of process waferID.&#xD;&#xA;L, n&#xD;&#xA;L, 3&#xD;&#xA;&lt;waferID&gt; &#xD;&#xA;&lt;TimeIn&gt;&#xD;&#xA;&lt;TimeOut&gt;" Module="System" Type="" Unit="" Parameter="ProcessWaferIdList" />
+  <VIDItem Name="LotIdList" Index="3521" DataType="List" Description="List of process waferID.&#xD;&#xA;L, n&#xD;&#xA;L, 3&#xD;&#xA;&lt;LotIdList&gt; &#xD;&#xA;&lt;TimeIn&gt;&#xD;&#xA;&lt;TimeOut&gt;" Module="System" Type="" Unit="" Parameter="LotIdList" />
   <VIDItem Name="BoatSlotMapList" Index="3526" DataType="List" Description="List of boat map slot result.&#xD;&#xA;L, n&#xD;&#xA;L, 3&#xD;&#xA;&lt;SlotMapInt&gt; &#xD;&#xA;&lt;TimeIn&gt;&#xD;&#xA;&lt;TimeOut&gt;" Module="System" Type="" Unit="" Parameter="BoatSlotMapList" />
 </ArrayOfVIDItem>

+ 60 - 1
Furnace/FurnaceRT/Equipments/PMs/RecipeFACallback.cs

@@ -73,11 +73,58 @@ namespace FurnaceRT.Equipments.PMs
 
         public void RecipeComplete(string module, string recipeName)
         {
+
             ModuleName moduleName = ModuleHelper.Converter(module);
-            EV.Notify(PMRecipeComplete[moduleName], new SerializableDictionary<string, string>()
+            var wafers = WaferManager.Instance.GetWafers(ModuleName.PM1);
+            List<string> fdcwafers = new List<string>();
+            List<string> fdcCarriers = new List<string>();
+            List<string> fdcLotIds = new List<string>();
+            if (wafers != null)
+            {
+                foreach (var wafer in wafers)
+                {
+                    if (!(fdcwafers.Contains(wafer.OriginCarrierID)))
+                    {
+                        fdcCarriers.Add(wafer.OriginCarrierID);
+                    }
+
+                    if (!(fdcwafers.Contains(wafer.WaferID)))
+                    {
+                        fdcwafers.Add(wafer.WaferID);
+                    }
+                    if (!(fdcwafers.Contains(wafer.LotId)))
+                    {
+                        fdcLotIds.Add(wafer.LotId);
+                    }
+                }
+            }
+            SECsDataItem _fdccridlst = new SECsDataItem(SECsFormat.List);
+            foreach (var fdcid in fdcCarriers)
+            {
+                _fdccridlst.Add("CRID", fdcid, SECsFormat.Ascii);
+            }
+
+            SECsDataItem _fdcwaferList = new SECsDataItem(SECsFormat.List);
+            foreach (var fdcid in fdcwafers)
+            {
+                _fdcwaferList.Add("CRID", fdcid, SECsFormat.Ascii);
+            }
+
+            SECsDataItem _fdcLotIds = new SECsDataItem(SECsFormat.List);
+            foreach (var fdcid in fdcLotIds)
+            {
+                _fdcLotIds.Add("CRID", fdcid, SECsFormat.Ascii);
+            }
+
+       
+
+            EV.Notify(PMRecipeComplete[moduleName], new SerializableDictionary<string, object>()
             {
                 {DVIDName.RecipeID,  recipeName},
                 {DVIDName.StationName,  module},
+                {"ProcessWaferIdList",  _fdcwaferList},
+                {"ProcessCarrierIDList",  _fdccridlst},
+                {"LotIdList",  _fdcLotIds},
             });
         }
 
@@ -97,6 +144,7 @@ namespace FurnaceRT.Equipments.PMs
             var wafers = WaferManager.Instance.GetWafers(ModuleName.PM1);
             List<string> fdcwafers = new List<string>();
             List<string> fdcCarriers = new List<string>();
+            List<string> fdcLotIds = new List<string>();
             if (wafers != null)
             {
                 foreach (var wafer in wafers)
@@ -109,6 +157,10 @@ namespace FurnaceRT.Equipments.PMs
                     if (!(fdcwafers.Contains(wafer.WaferID)))
                     {
                         fdcwafers.Add(wafer.WaferID);
+                    }   
+                    if (!(fdcwafers.Contains(wafer.LotId)))
+                    {
+                        fdcLotIds.Add(wafer.LotId);
                     }
                 }
             }
@@ -122,6 +174,12 @@ namespace FurnaceRT.Equipments.PMs
             foreach (var fdcid in fdcwafers)
             {
                 _fdcwaferList.Add("CRID", fdcid, SECsFormat.Ascii);
+            }    
+            
+            SECsDataItem _fdcLotIds = new SECsDataItem(SECsFormat.List);
+            foreach (var fdcid in fdcLotIds)
+            {
+                _fdcLotIds.Add("CRID", fdcid, SECsFormat.Ascii);
             }
 
             EV.Notify(PMRecipeStart[moduleName], new SerializableDictionary<string, object>()
@@ -130,6 +188,7 @@ namespace FurnaceRT.Equipments.PMs
                 {DVIDName.StationName,  module},
                 {"ProcessWaferIdList",  _fdcwaferList},
                 {"ProcessCarrierIDList",  _fdccridlst},
+                {"LotIdList",  _fdcLotIds},
             });
         }