Browse Source

添加某支Recipe的统计功能

git-svn-id: http://10.4.3.168:50001/svn/Furnace@113 dbcde07d-dcf5-c148-8a84-ac3097b7778e
Jiangjinyuan 2 months ago
parent
commit
5802236d55

+ 7 - 1
FrameworkLocal/Common/DBCore/JobDataRecorder.cs

@@ -3,7 +3,9 @@ using System.Collections.Generic;
 using System.Data;
 using System.Data;
 using Aitex.Core.RT.DBCore;
 using Aitex.Core.RT.DBCore;
 using Aitex.Core.RT.Log;
 using Aitex.Core.RT.Log;
+using Aitex.Core.Util;
 using Aitex.Sorter.Common;
 using Aitex.Sorter.Common;
+using MECF.Framework.Common.DataCenter;
 
 
 namespace MECF.Framework.Common.DBCore
 namespace MECF.Framework.Common.DBCore
 {
 {
@@ -34,7 +36,7 @@ namespace MECF.Framework.Common.DBCore
 
 
             DB.Insert(sql);
             DB.Insert(sql);
         }
         }
-
+        //废弃
         public static void StartPJ(string guid, string carrierGuid, string cjGuid, string lotGuid, string name, string portIn, string portOut, int totalWafer, string sequence)
         public static void StartPJ(string guid, string carrierGuid, string cjGuid, string lotGuid, string name, string portIn, string portOut, int totalWafer, string sequence)
         {
         {
             string sql = string.Format(
             string sql = string.Format(
@@ -51,6 +53,8 @@ namespace MECF.Framework.Common.DBCore
                 sequence);
                 sequence);
 
 
             DB.Insert(sql);
             DB.Insert(sql);
+
+
         }
         }
 
 
         public static void EndPJ(string guid, int abortWafer, int unprocessedWafer)
         public static void EndPJ(string guid, int abortWafer, int unprocessedWafer)
@@ -75,6 +79,8 @@ namespace MECF.Framework.Common.DBCore
                 form);
                 form);
 
 
             DB.Insert(sql);
             DB.Insert(sql);
+            Singleton<ScheduleMaintenanceDataManager>.Instance.ReatorRecipeTotalByRecipeName(recipeName);
+
         }
         }
 
 
         public static void StartPJ(string guid)
         public static void StartPJ(string guid)

+ 52 - 5
FrameworkLocal/Common/DataCenter/ScheduleMaintenanceDataManager.cs

@@ -8,6 +8,8 @@ using Aitex.Core.RT.Event;
 using Aitex.Core.RT.Log;
 using Aitex.Core.RT.Log;
 using Aitex.Core.RT.OperationCenter;
 using Aitex.Core.RT.OperationCenter;
 using Aitex.Core.Util;
 using Aitex.Core.Util;
+using DocumentFormat.OpenXml.Vml;
+using DocumentFormat.OpenXml.Wordprocessing;
 using MECF.Framework.Common.CommonData.EnumData;
 using MECF.Framework.Common.CommonData.EnumData;
 using MECF.Framework.Common.DBCore;
 using MECF.Framework.Common.DBCore;
 using MECF.Framework.Common.Equipment;
 using MECF.Framework.Common.Equipment;
@@ -128,7 +130,7 @@ namespace MECF.Framework.Common.DataCenter
 
 
                 OP.Subscribe("System.ScheduleMaintenance.SetAdditionInformationDisplayName", (method, args) =>
                 OP.Subscribe("System.ScheduleMaintenance.SetAdditionInformationDisplayName", (method, args) =>
                 {
                 {
-                    SetAdditionInformationDisplayName((string)args[0], args[1].ToString(), args.Length > 2 ? args[2].ToString(): "");
+                    SetAdditionInformationDisplayName((string)args[0], args[1].ToString(), args.Length > 2 ? args[2].ToString() : "");
                     return true;
                     return true;
                 });
                 });
 
 
@@ -157,7 +159,7 @@ namespace MECF.Framework.Common.DataCenter
                 }
                 }
 
 
                 InitScheduleMaintenance();
                 InitScheduleMaintenance();
-                UpdateSEDWafer();
+                InitAllData();
             }
             }
             catch (Exception ex)
             catch (Exception ex)
             {
             {
@@ -417,7 +419,7 @@ namespace MECF.Framework.Common.DataCenter
 
 
         private Dictionary<MaintenanceItemEnum, ScheduleMaintenanceData> _scheduleMaintenanceDataDictionary;
         private Dictionary<MaintenanceItemEnum, ScheduleMaintenanceData> _scheduleMaintenanceDataDictionary;
 
 
-        public void InitScheduleMaintenance()
+        private void InitScheduleMaintenance()
         {
         {
 
 
             _scheduleMaintenanceDataDictionary = new Dictionary<MaintenanceItemEnum, ScheduleMaintenanceData>
             _scheduleMaintenanceDataDictionary = new Dictionary<MaintenanceItemEnum, ScheduleMaintenanceData>
@@ -526,7 +528,15 @@ namespace MECF.Framework.Common.DataCenter
             }
             }
         }
         }
 
 
-        public void UpdateSEDWafer()
+
+        public void InitAllData()
+        {
+            InitScheduleMaintenance();
+            InitReatorRecipeTotal();
+            InitSEDWafer();
+        }
+
+        private void InitSEDWafer()
         {
         {
             if (_scheduleMaintenanceDataDictionary == null)
             if (_scheduleMaintenanceDataDictionary == null)
             {
             {
@@ -572,7 +582,44 @@ namespace MECF.Framework.Common.DataCenter
                         SDWaferUserTime.SetValue(maxSDUseTime);
                         SDWaferUserTime.SetValue(maxSDUseTime);
                 }
                 }
 
 
-                // var data = ccc.Select(a => a.Value.Select(e=>e.Value)).ToList();
+            }
+        }
+        public void UpdateSEDWafer()
+        {
+            InitSEDWafer();
+        }
+
+
+        #endregion
+
+        #region ReatorRecipe
+        private void InitReatorRecipeTotal()
+        {
+            var dbItem = GetScheduleMaintenanceData(MaintenanceItemEnum.RecipeExecuteFreq);
+            if (dbItem == null)
+                return;
+
+
+            float total = 0;
+
+            string sql = $"SELECT guid FROM pj_data WHERE pj_data.recipe_name= (SELECT schedule_maintenance.addition_information_display FROM schedule_maintenance WHERE maintenance_item='{MaintenanceItemEnum.RecipeExecuteFreq}')";
+
+            var ds = DB.ExecuteDataset(sql);
+            if (ds != null && ds.Tables != null && ds.Tables.Count > 0 && ds.Tables[0].Rows != null)
+            {
+                total= ds.Tables[0].Rows.Count;
+            }
+
+            dbItem.SetValue(total);
+        }
+        public void ReatorRecipeTotalByRecipeName(string processRecipeName)
+        {
+            if (string.IsNullOrEmpty(processRecipeName))
+                return;
+            var dbItem = GetScheduleMaintenanceData(MaintenanceItemEnum.RecipeExecuteFreq);
+            if (dbItem.DataItem.AdditionInformationDisplay == processRecipeName)
+            {
+                dbItem.Increase();
             }
             }
         }
         }
         #endregion
         #endregion

+ 8 - 1
Furnace/FurnaceRT/Equipments/PMs/PMMethods.cs

@@ -1,31 +1,39 @@
 using Aitex.Common.Util;
 using Aitex.Common.Util;
 using Aitex.Core.Common.DeviceData;
 using Aitex.Core.Common.DeviceData;
 using Aitex.Core.RT.DataCenter;
 using Aitex.Core.RT.DataCenter;
+using Aitex.Core.RT.DBCore;
 using Aitex.Core.RT.Device;
 using Aitex.Core.RT.Device;
 using Aitex.Core.RT.Device.Unit;
 using Aitex.Core.RT.Device.Unit;
 using Aitex.Core.RT.Event;
 using Aitex.Core.RT.Event;
 using Aitex.Core.RT.IOCore;
 using Aitex.Core.RT.IOCore;
 using Aitex.Core.RT.Log;
 using Aitex.Core.RT.Log;
 using Aitex.Core.RT.OperationCenter;
 using Aitex.Core.RT.OperationCenter;
+using Aitex.Core.RT.Routine;
 using Aitex.Core.RT.SCCore;
 using Aitex.Core.RT.SCCore;
 using Aitex.Core.UI.Control;
 using Aitex.Core.UI.Control;
 using Aitex.Core.Util;
 using Aitex.Core.Util;
+using Caliburn.Micro.Core;
+using DocumentFormat.OpenXml.Wordprocessing;
 using FurnaceRT.Devices;
 using FurnaceRT.Devices;
 using FurnaceRT.Equipments.Boats;
 using FurnaceRT.Equipments.Boats;
 using FurnaceRT.Equipments.Systems;
 using FurnaceRT.Equipments.Systems;
 using FurnaceRT.Equipments.WaferRobots;
 using FurnaceRT.Equipments.WaferRobots;
+using MECF.Framework.Common.CommonData.EnumData;
+using MECF.Framework.Common.DataCenter;
 using MECF.Framework.Common.Device.Bases;
 using MECF.Framework.Common.Device.Bases;
 using MECF.Framework.Common.Equipment;
 using MECF.Framework.Common.Equipment;
 using MECF.Framework.Common.SubstrateTrackings;
 using MECF.Framework.Common.SubstrateTrackings;
 using MECF.Framework.Common.Utilities;
 using MECF.Framework.Common.Utilities;
 using System;
 using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
+using System.Data;
 using System.IO;
 using System.IO;
 using System.Linq;
 using System.Linq;
 using System.Text;
 using System.Text;
 using System.Threading;
 using System.Threading;
 using System.Threading.Tasks;
 using System.Threading.Tasks;
 using System.Xml.Linq;
 using System.Xml.Linq;
+using TwinCAT.Ads.Internal;
 using static Aitex.Core.RT.Device.Unit.IoBoat;
 using static Aitex.Core.RT.Device.Unit.IoBoat;
 using static log4net.Appender.RollingFileAppender;
 using static log4net.Appender.RollingFileAppender;
 
 
@@ -408,7 +416,6 @@ namespace FurnaceRT.Equipments.PMs
             }
             }
             trigDataSend.SetTrigger(false, out _);
             trigDataSend.SetTrigger(false, out _);
         }
         }
-
         private Dictionary<string, string> GetHeatersData()
         private Dictionary<string, string> GetHeatersData()
         {
         {
             Dictionary<string, string> result = new Dictionary<string, string>();
             Dictionary<string, string> result = new Dictionary<string, string>();

+ 0 - 2
Furnace/FurnaceRT/Equipments/PMs/RecipeExecutions/Process.cs

@@ -288,7 +288,6 @@ namespace FurnaceRT.Equipments.PMs.RecipeExecutions
             PMModule.InitAlarmCondition(PMModule.RecipeRunningInfo.Head.AlarmCondition);
             PMModule.InitAlarmCondition(PMModule.RecipeRunningInfo.Head.AlarmCondition);
             PMModule.InitLeakCheck(PMModule.RecipeRunningInfo.Head.LeakCheck);
             PMModule.InitLeakCheck(PMModule.RecipeRunningInfo.Head.LeakCheck);
             PMModule.InitN2PurgeMode(PMModule.RecipeRunningInfo.Head.N2PurgeModeStr, PMModule.RecipeRunningInfo.Head.IsN2PurgeMode);
             PMModule.InitN2PurgeMode(PMModule.RecipeRunningInfo.Head.N2PurgeModeStr, PMModule.RecipeRunningInfo.Head.IsN2PurgeMode);
-
             ResetTrig();
             ResetTrig();
 
 
             Notify($"Start");
             Notify($"Start");
@@ -304,7 +303,6 @@ namespace FurnaceRT.Equipments.PMs.RecipeExecutions
             WaferManager.Instance.UpdateWaferProcessStatus(ModuleHelper.Converter(Module), 0, EnumWaferProcessStatus.InProcess);
             WaferManager.Instance.UpdateWaferProcessStatus(ModuleHelper.Converter(Module), 0, EnumWaferProcessStatus.InProcess);
 
 
             PMModule.HeaterEnable(true);
             PMModule.HeaterEnable(true);
-
             return Result.RUN;
             return Result.RUN;
         }
         }
 
 

+ 5 - 0
Furnace/FurnaceRT/Equipments/Schedulers/SchedulerDBCallback.cs

@@ -11,6 +11,10 @@ using MECF.Framework.Common.Jobs;
 using MECF.Framework.Common.SubstrateTrackings;
 using MECF.Framework.Common.SubstrateTrackings;
 using FurnaceRT.Equipments.PMs.RecipeExecutions;
 using FurnaceRT.Equipments.PMs.RecipeExecutions;
 using Aitex.Core.RT.Log;
 using Aitex.Core.RT.Log;
+using FurnaceRT.Equipments.PMs;
+using MECF.Framework.Common.CommonData.EnumData;
+using MECF.Framework.Common.DataCenter;
+using Aitex.Core.Util;
 
 
 namespace FurnaceRT.Equipments.Schedulers
 namespace FurnaceRT.Equipments.Schedulers
 {
 {
@@ -126,6 +130,7 @@ namespace FurnaceRT.Equipments.Schedulers
 
 
             string layoutData = String.Join(",", layoutRecipeDataExpert.Items);
             string layoutData = String.Join(",", layoutRecipeDataExpert.Items);
 
 
+
             JobDataRecorder.CreatePJ(_processJobInfo.InnerId.ToString(), batchId,
             JobDataRecorder.CreatePJ(_processJobInfo.InnerId.ToString(), batchId,
                 _processJobInfo.JobRecipe, _processJobInfo.ProcessRecipe, _processJobInfo.LayoutRecipe, layoutData, "Normal");
                 _processJobInfo.JobRecipe, _processJobInfo.ProcessRecipe, _processJobInfo.LayoutRecipe, layoutData, "Normal");
         }
         }