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 Aitex.Core.RT.DBCore;
 using Aitex.Core.RT.Log;
+using Aitex.Core.Util;
 using Aitex.Sorter.Common;
+using MECF.Framework.Common.DataCenter;
 
 namespace MECF.Framework.Common.DBCore
 {
@@ -34,7 +36,7 @@ namespace MECF.Framework.Common.DBCore
 
             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)
         {
             string sql = string.Format(
@@ -51,6 +53,8 @@ namespace MECF.Framework.Common.DBCore
                 sequence);
 
             DB.Insert(sql);
+
+
         }
 
         public static void EndPJ(string guid, int abortWafer, int unprocessedWafer)
@@ -75,6 +79,8 @@ namespace MECF.Framework.Common.DBCore
                 form);
 
             DB.Insert(sql);
+            Singleton<ScheduleMaintenanceDataManager>.Instance.ReatorRecipeTotalByRecipeName(recipeName);
+
         }
 
         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.OperationCenter;
 using Aitex.Core.Util;
+using DocumentFormat.OpenXml.Vml;
+using DocumentFormat.OpenXml.Wordprocessing;
 using MECF.Framework.Common.CommonData.EnumData;
 using MECF.Framework.Common.DBCore;
 using MECF.Framework.Common.Equipment;
@@ -128,7 +130,7 @@ namespace MECF.Framework.Common.DataCenter
 
                 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;
                 });
 
@@ -157,7 +159,7 @@ namespace MECF.Framework.Common.DataCenter
                 }
 
                 InitScheduleMaintenance();
-                UpdateSEDWafer();
+                InitAllData();
             }
             catch (Exception ex)
             {
@@ -417,7 +419,7 @@ namespace MECF.Framework.Common.DataCenter
 
         private Dictionary<MaintenanceItemEnum, ScheduleMaintenanceData> _scheduleMaintenanceDataDictionary;
 
-        public void InitScheduleMaintenance()
+        private void InitScheduleMaintenance()
         {
 
             _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)
             {
@@ -572,7 +582,44 @@ namespace MECF.Framework.Common.DataCenter
                         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

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

@@ -1,31 +1,39 @@
 using Aitex.Common.Util;
 using Aitex.Core.Common.DeviceData;
 using Aitex.Core.RT.DataCenter;
+using Aitex.Core.RT.DBCore;
 using Aitex.Core.RT.Device;
 using Aitex.Core.RT.Device.Unit;
 using Aitex.Core.RT.Event;
 using Aitex.Core.RT.IOCore;
 using Aitex.Core.RT.Log;
 using Aitex.Core.RT.OperationCenter;
+using Aitex.Core.RT.Routine;
 using Aitex.Core.RT.SCCore;
 using Aitex.Core.UI.Control;
 using Aitex.Core.Util;
+using Caliburn.Micro.Core;
+using DocumentFormat.OpenXml.Wordprocessing;
 using FurnaceRT.Devices;
 using FurnaceRT.Equipments.Boats;
 using FurnaceRT.Equipments.Systems;
 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.Equipment;
 using MECF.Framework.Common.SubstrateTrackings;
 using MECF.Framework.Common.Utilities;
 using System;
 using System.Collections.Generic;
+using System.Data;
 using System.IO;
 using System.Linq;
 using System.Text;
 using System.Threading;
 using System.Threading.Tasks;
 using System.Xml.Linq;
+using TwinCAT.Ads.Internal;
 using static Aitex.Core.RT.Device.Unit.IoBoat;
 using static log4net.Appender.RollingFileAppender;
 
@@ -408,7 +416,6 @@ namespace FurnaceRT.Equipments.PMs
             }
             trigDataSend.SetTrigger(false, out _);
         }
-
         private Dictionary<string, string> GetHeatersData()
         {
             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.InitLeakCheck(PMModule.RecipeRunningInfo.Head.LeakCheck);
             PMModule.InitN2PurgeMode(PMModule.RecipeRunningInfo.Head.N2PurgeModeStr, PMModule.RecipeRunningInfo.Head.IsN2PurgeMode);
-
             ResetTrig();
 
             Notify($"Start");
@@ -304,7 +303,6 @@ namespace FurnaceRT.Equipments.PMs.RecipeExecutions
             WaferManager.Instance.UpdateWaferProcessStatus(ModuleHelper.Converter(Module), 0, EnumWaferProcessStatus.InProcess);
 
             PMModule.HeaterEnable(true);
-
             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 FurnaceRT.Equipments.PMs.RecipeExecutions;
 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
 {
@@ -126,6 +130,7 @@ namespace FurnaceRT.Equipments.Schedulers
 
             string layoutData = String.Join(",", layoutRecipeDataExpert.Items);
 
+
             JobDataRecorder.CreatePJ(_processJobInfo.InnerId.ToString(), batchId,
                 _processJobInfo.JobRecipe, _processJobInfo.ProcessRecipe, _processJobInfo.LayoutRecipe, layoutData, "Normal");
         }