| 
															
																@@ -13,14 +13,17 @@ using DocumentFormat.OpenXml.VariantTypes; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 using FurnaceRT.Equipments.Systems;
 
															 | 
															
															 | 
															
																 using FurnaceRT.Equipments.Systems;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 using MECF.Framework.Common.CommonData.EnumData;
 
															 | 
															
															 | 
															
																 using MECF.Framework.Common.CommonData.EnumData;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 using MECF.Framework.Common.DataCenter;
 
															 | 
															
															 | 
															
																 using MECF.Framework.Common.DataCenter;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+using MECF.Framework.Common.DBCore;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 using MECF.Framework.Common.Equipment;
 
															 | 
															
															 | 
															
																 using MECF.Framework.Common.Equipment;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 using MECF.Framework.Common.Event;
 
															 | 
															
															 | 
															
																 using MECF.Framework.Common.Event;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 using MECF.Framework.Common.OperationCenter;
 
															 | 
															
															 | 
															
																 using MECF.Framework.Common.OperationCenter;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 using MECF.Framework.Common.Utilities;
 
															 | 
															
															 | 
															
																 using MECF.Framework.Common.Utilities;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.PMs;
 
															 | 
															
															 | 
															
																 using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.PMs;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robot;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 using System;
 
															 | 
															
															 | 
															
																 using System;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 using System.Collections;
 
															 | 
															
															 | 
															
																 using System.Collections;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 using System.Collections.Generic;
 
															 | 
															
															 | 
															
																 using System.Collections.Generic;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+using System.Data;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 using System.Diagnostics;
 
															 | 
															
															 | 
															
																 using System.Diagnostics;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 using System.Linq;
 
															 | 
															
															 | 
															
																 using System.Linq;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 using System.Runtime.Remoting.Metadata.W3cXsd2001;
 
															 | 
															
															 | 
															
																 using System.Runtime.Remoting.Metadata.W3cXsd2001;
 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -29,7 +32,35 @@ namespace FurnaceRT.Equipments.PMs 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 {
 
															 | 
															
															 | 
															
																 {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																     public partial class PMModule
 
															 | 
															
															 | 
															
																     public partial class PMModule
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																     {
 
															 | 
															
															 | 
															
																     {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        private List<ScheduleMaintenanceDataItem> _dbRecords { get; set; } = new List<ScheduleMaintenanceDataItem>();
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        public void GetAllDBRecord()
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            _dbRecords.Clear();
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            DataTable dt = DataQuery.Query("select * from \"schedule_maintenance\"");
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            for (int i = 0; i < dt.Rows.Count; i++)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                ScheduleMaintenanceDataItem item = new ScheduleMaintenanceDataItem();
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                item.Item = dt.Rows[i]["maintenance_item"].ToString();
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                item.Display = dt.Rows[i]["maintenance_display"].ToString();
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                item.Unit = dt.Rows[i]["unit"].ToString();
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                item.MaintenanceProcessing = dt.Rows[i]["maintenance_processing"].ToString();
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                item.Path = dt.Rows[i]["path"].ToString();
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                item.AdditionInformationName = dt.Rows[i]["addition_information_name"].ToString();
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                item.AdditionInformationDisplay = dt.Rows[i]["addition_information_display"].ToString();
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                item.AdditionInformationDisplaySupplement = dt.Rows[i]["addition_information_display_supplement"].ToString();
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                item.AssociationProcessRecipeName = dt.Rows[i]["association_process_recipeName"].ToString();
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                if (float.TryParse(dt.Rows[i]["current_value"].ToString(), out float value))
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    item.CurrentValue = value;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                if (float.TryParse(dt.Rows[i]["scheduling_start_value"].ToString(), out value))
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    item.StartValue = value;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                if (float.TryParse(dt.Rows[i]["maintenance_limit_value"].ToString(), out value))
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    item.LimitValue = value;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                _dbRecords.Add(item);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         private void InitScheduleMaintenance()
 
															 | 
															
															 | 
															
																         private void InitScheduleMaintenance()
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         {
 
															 | 
															
															 | 
															
																         {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -174,7 +205,7 @@ namespace FurnaceRT.Equipments.PMs 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             if (string.IsNullOrEmpty(stepName) || thickness <= 0)
 
															 | 
															
															 | 
															
																             if (string.IsNullOrEmpty(stepName) || thickness <= 0)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 return;
 
															 | 
															
															 | 
															
																                 return;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             var stepNo = stepName.Split(':').FirstOrDefault();
 
															 | 
															
															 | 
															
																             var stepNo = stepName.Split(':').FirstOrDefault();
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            var list = Singleton<ScheduleMaintenanceDataManager>.Instance.Item.Values
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            var list = _dbRecords
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 .Where(a => !string.IsNullOrEmpty(a.AdditionInformationDisplaySupplement))
 
															 | 
															
															 | 
															
																                 .Where(a => !string.IsNullOrEmpty(a.AdditionInformationDisplaySupplement))
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 .Where(a => a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.StepThickness}")
 
															 | 
															
															 | 
															
																                 .Where(a => a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.StepThickness}")
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 .Where(a => a.AdditionInformationDisplaySupplement.Split(',').Contains(stepNo))
 
															 | 
															
															 | 
															
																                 .Where(a => a.AdditionInformationDisplaySupplement.Split(',').Contains(stepNo))
 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -189,11 +220,6 @@ namespace FurnaceRT.Equipments.PMs 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 Singleton<ScheduleMaintenanceDataManager>.Instance.Increase(item.Item, thickness);
 
															 | 
															
															 | 
															
																                 Singleton<ScheduleMaintenanceDataManager>.Instance.Increase(item.Item, thickness);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                if (item.CurrentValue > item.StartValue && item.CurrentValue < item.LimitValue)
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                    MaintenanceProcessingCommandExec(item.MaintenanceProcessing, new AlarmReportItem(Singleton<EquipmentManager>.Instance.ReatorStepThicknessWarning.Set, $"more than {item.StartValue} Å"));
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                if (item.CurrentValue >= item.LimitValue)
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                    MaintenanceProcessingCommandExec(item.MaintenanceProcessing, new AlarmReportItem(Singleton<EquipmentManager>.Instance.ReatorStepThicknessAlarm.Set, $"more than {item.LimitValue} Å"));
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             }
 
															 | 
															
															 | 
															
																             }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         }
 
															 | 
															
															 | 
															
																         }
 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -206,9 +232,12 @@ namespace FurnaceRT.Equipments.PMs 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             if (string.IsNullOrEmpty(stepName) || stepTime <= 0)
 
															 | 
															
															 | 
															
																             if (string.IsNullOrEmpty(stepName) || stepTime <= 0)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 return;
 
															 | 
															
															 | 
															
																                 return;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             var stepNo = stepName.Split(':').FirstOrDefault();
 
															 | 
															
															 | 
															
																             var stepNo = stepName.Split(':').FirstOrDefault();
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            var list = Singleton<ScheduleMaintenanceDataManager>.Instance.Item.Values.Where(a => a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.StepRunTime}" && a.AdditionInformationDisplay == stepNo).ToList();
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            var list = _dbRecords.Where(a => a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.StepRunTime}" && a.AdditionInformationDisplay == stepNo).ToList();
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             if (list == null || list.Count == 0)
 
															 | 
															
															 | 
															
																             if (list == null || list.Count == 0)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 return;
 
															 | 
															
															 | 
															
																                 return;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             foreach (var item in list)
 
															 | 
															
															 | 
															
																             foreach (var item in list)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             {
 
															 | 
															
															 | 
															
																             {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 if (item == null)
 
															 | 
															
															 | 
															
																                 if (item == null)
 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -230,13 +259,16 @@ namespace FurnaceRT.Equipments.PMs 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             if (string.IsNullOrEmpty(stepName))
 
															 | 
															
															 | 
															
																             if (string.IsNullOrEmpty(stepName))
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 return;
 
															 | 
															
															 | 
															
																                 return;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             var stepNo = stepName.Split(':').FirstOrDefault();
 
															 | 
															
															 | 
															
																             var stepNo = stepName.Split(':').FirstOrDefault();
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            var list = Singleton<ScheduleMaintenanceDataManager>.Instance.Item.Values.Where(a => a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.StepRunFreq}" && a.AdditionInformationDisplay == stepNo).ToList();
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            var list = _dbRecords.Where(a => a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.StepRunFreq}" && a.AdditionInformationDisplay == stepNo).ToList();
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             if (list == null || list.Count == 0)
 
															 | 
															
															 | 
															
																             if (list == null || list.Count == 0)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 return;
 
															 | 
															
															 | 
															
																                 return;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             foreach (var item in list)
 
															 | 
															
															 | 
															
																             foreach (var item in list)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             {
 
															 | 
															
															 | 
															
																             {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 if (item == null)
 
															 | 
															
															 | 
															
																                 if (item == null)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                     continue;
 
															 | 
															
															 | 
															
																                     continue;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 Singleton<ScheduleMaintenanceDataManager>.Instance.Increase(item.Item);
 
															 | 
															
															 | 
															
																                 Singleton<ScheduleMaintenanceDataManager>.Instance.Increase(item.Item);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             }
 
															 | 
															
															 | 
															
																             }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -250,7 +282,10 @@ namespace FurnaceRT.Equipments.PMs 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             if (string.IsNullOrEmpty(recipeName))
 
															 | 
															
															 | 
															
																             if (string.IsNullOrEmpty(recipeName))
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 return;
 
															 | 
															
															 | 
															
																                 return;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            var item = Singleton<ScheduleMaintenanceDataManager>.Instance.Item.Values.Where(a => a.Item == MaintenanceItemEnum.RecipeExecuteFreq.ToString() && a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.Recipe}" && a.AdditionInformationDisplay == recipeName).FirstOrDefault();
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            var item = _dbRecords
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                .FirstOrDefault(a => a.Item == MaintenanceItemEnum.RecipeExecuteFreq.ToString()
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                && a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.Recipe}"
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                && a.AdditionInformationDisplay == recipeName);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             if (item == null)
 
															 | 
															
															 | 
															
																             if (item == null)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 return;
 
															 | 
															
															 | 
															
																                 return;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -268,7 +303,10 @@ namespace FurnaceRT.Equipments.PMs 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         {
 
															 | 
															
															 | 
															
																         {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             if (string.IsNullOrEmpty(recipeName) || thickness <= 0)
 
															 | 
															
															 | 
															
																             if (string.IsNullOrEmpty(recipeName) || thickness <= 0)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 return;
 
															 | 
															
															 | 
															
																                 return;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            var item = Singleton<ScheduleMaintenanceDataManager>.Instance.Item.Values.Where(a => a.Item == MaintenanceItemEnum.RecipeThickness.ToString() && a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.Recipe}" && a.AdditionInformationDisplay == recipeName).FirstOrDefault();
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            var item = _dbRecords
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                .FirstOrDefault(a => a.Item == MaintenanceItemEnum.RecipeThickness.ToString()
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                && a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.Recipe}"
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                && a.AdditionInformationDisplay == recipeName);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             if (item == null)
 
															 | 
															
															 | 
															
																             if (item == null)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 return;
 
															 | 
															
															 | 
															
																                 return;
 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -277,7 +315,72 @@ namespace FurnaceRT.Equipments.PMs 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 Singleton<ScheduleMaintenanceDataManager>.Instance.Increase(item.Item, thickness);
 
															 | 
															
															 | 
															
																                 Singleton<ScheduleMaintenanceDataManager>.Instance.Increase(item.Item, thickness);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         }
 
															 | 
															
															 | 
															
																         }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        /// <summary>
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        /// 检查
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        /// </summary>
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        /// <param name="stepName"></param>
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        /// <param name="isPause"></param>
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        public void CheckRecipeStepGroupThicknessMoreThan(string stepName, out bool isPause)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            isPause = false;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            if (string.IsNullOrEmpty(stepName))
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                return;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            var stepNo = stepName.Split(':').FirstOrDefault();
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            var reactorStepThicknessList = _dbRecords
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                .Where(a => a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.StepThickness}")
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                .Where(a => !string.IsNullOrEmpty(a.AdditionInformationDisplay))
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                .Where(a => !string.IsNullOrEmpty(a.AdditionInformationDisplaySupplement))
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                .Where(a => a.AdditionInformationDisplaySupplement.Split(',').Contains(stepNo))
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                .ToList();
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            foreach (var item in reactorStepThicknessList)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                if (!Enum.TryParse<MaintenanceProcessingCommandEnum>(item.MaintenanceProcessing, out var command))
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    continue;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                if (item.StartValue < 0 || item.LimitValue <= item.StartValue || command == MaintenanceProcessingCommandEnum.None)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    continue;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                string message = $"{item.Item}-{item.Display} {item.AdditionInformationDisplay}  {item.CurrentValue} limit is ({item.StartValue}~{item.LimitValue}) times";
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                string nullMessage = $"{item.Display} No recipe file associated, unable to trigger JobAutoStart";
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                bool isWarning = item.CurrentValue > item.StartValue && item.CurrentValue < item.LimitValue;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                bool isAlarm = item.CurrentValue >= item.LimitValue;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                if (isWarning)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    Singleton<EquipmentManager>.Instance.ReatorStepThicknessWarning.Set(message);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                if (isAlarm)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    Singleton<EquipmentManager>.Instance.ReatorStepThicknessAlarm.Set(message);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    if (command == MaintenanceProcessingCommandEnum.JobManualStart)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        Singleton<EquipmentManager>.Instance.ReatorStepThicknessAlarm.Set(message);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        if (string.IsNullOrEmpty(item.AssociationProcessRecipeName))
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            Singleton<EquipmentManager>.Instance.ReatorStepThicknessAlarm.Set(nullMessage);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        else
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            LOG.Info($"{message} Trigger {item.AssociationProcessRecipeName}");
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            CheckToPostMessage((int)MSG.RunOtherRecipe, item.AssociationProcessRecipeName, "Process");
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    isPause = true;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    return;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         /// <summary>
 
															 | 
															
															 | 
															
																         /// <summary>
 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -287,20 +390,35 @@ namespace FurnaceRT.Equipments.PMs 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         /// <param name="isPause"></param>
 
															 | 
															
															 | 
															
																         /// <param name="isPause"></param>
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         public void CheckRecipeStepTimeMoreThan(string stepName, out bool isPause)
 
															 | 
															
															 | 
															
																         public void CheckRecipeStepTimeMoreThan(string stepName, out bool isPause)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         {
 
															 | 
															
															 | 
															
																         {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            isPause = false;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            if (string.IsNullOrEmpty(stepName))
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                return;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             var stepNo = stepName.Split(':').FirstOrDefault();
 
															 | 
															
															 | 
															
																             var stepNo = stepName.Split(':').FirstOrDefault();
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            var item = Singleton<ScheduleMaintenanceDataManager>.Instance.Item.Values
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                .Where(a => a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.StepRunFreq}" && a.AdditionInformationDisplay == stepNo)
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                .FirstOrDefault();
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            var item = _dbRecords.FirstOrDefault(a => a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.StepRunTime}" && a.AdditionInformationDisplay == stepNo);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            if (item == null || !Enum.TryParse<MaintenanceProcessingCommandEnum>(item.MaintenanceProcessing, out var command))
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                return;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            if (item.StartValue < 0 || item.LimitValue <= item.StartValue || command == MaintenanceProcessingCommandEnum.None)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                return;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            string message = $"{item.Item}-{item.Display} {item.AdditionInformationDisplay}  {item.CurrentValue} limit is ({item.StartValue}~{item.LimitValue}) times";
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            CheckRecipeMoreThan(
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                stepNo,
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                Singleton<EquipmentManager>.Instance.ReatorStepRunTimeWarning.Set,
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                Singleton<EquipmentManager>.Instance.ReatorStepRunTimeAlarm.Set,
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                item,
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                "HH:mm",
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                out isPause);
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            bool isWarning = item.CurrentValue > item.StartValue && item.CurrentValue < item.LimitValue;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            bool isAlarm = item.CurrentValue >= item.LimitValue;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            if (isWarning)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                Singleton<EquipmentManager>.Instance.ReatorStepRunTimeWarning.Set(message);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            if (isAlarm)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                Singleton<EquipmentManager>.Instance.ReatorStepRunTimeAlarm.Set(message);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                isPause = true;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         }
 
															 | 
															
															 | 
															
																         }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -311,20 +429,31 @@ namespace FurnaceRT.Equipments.PMs 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         /// <param name="isPause"></param>
 
															 | 
															
															 | 
															
																         /// <param name="isPause"></param>
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         public void CheckRecipeStepFreqMoreThan(string stepName, out bool isPause)
 
															 | 
															
															 | 
															
																         public void CheckRecipeStepFreqMoreThan(string stepName, out bool isPause)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         {
 
															 | 
															
															 | 
															
																         {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            isPause = false;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            if (string.IsNullOrEmpty(stepName))
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                return;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             var stepNo = stepName.Split(':').FirstOrDefault();
 
															 | 
															
															 | 
															
																             var stepNo = stepName.Split(':').FirstOrDefault();
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            var item = Singleton<ScheduleMaintenanceDataManager>.Instance.Item.Values
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                .Where(a => a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.StepRunFreq}" && a.AdditionInformationDisplay == stepNo)
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                .FirstOrDefault();
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            var item = _dbRecords.FirstOrDefault(a => a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.StepRunFreq}" && a.AdditionInformationDisplay == stepNo);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            if (item == null || !Enum.TryParse<MaintenanceProcessingCommandEnum>(item.MaintenanceProcessing, out var command))
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                return;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            if (item.StartValue < 0 || item.LimitValue <= item.StartValue || command == MaintenanceProcessingCommandEnum.None)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                return;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            string message = $"{item.Item}-{item.Display} {item.AdditionInformationDisplay}  {item.CurrentValue} limit is ({item.StartValue}~{item.LimitValue}) times";
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            bool isWarning = item.CurrentValue > item.StartValue && item.CurrentValue < item.LimitValue;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            bool isAlarm = item.CurrentValue >= item.LimitValue;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            if (isWarning)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                Singleton<EquipmentManager>.Instance.ReatorStepRunFreqWarning.Set(message);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            CheckRecipeMoreThan(
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                stepNo,
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                Singleton<EquipmentManager>.Instance.ReatorStepRunFreqWarning.Set,
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                Singleton<EquipmentManager>.Instance.ReatorStepRunFreqAlarm.Set,
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                item,
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                "times",
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                out isPause);
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            if (isAlarm)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                Singleton<EquipmentManager>.Instance.ReatorStepRunFreqAlarm.Set(message);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                isPause = true;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         }
 
															 | 
															
															 | 
															
																         }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -336,20 +465,52 @@ namespace FurnaceRT.Equipments.PMs 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         public void CheckRecipeExecuteFreqMoreThan(string recipeName, out bool isPause)
 
															 | 
															
															 | 
															
																         public void CheckRecipeExecuteFreqMoreThan(string recipeName, out bool isPause)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         {
 
															 | 
															
															 | 
															
																         {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            var item = Singleton<ScheduleMaintenanceDataManager>.Instance.Item.Values
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            isPause = false;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            if (string.IsNullOrEmpty(recipeName))
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                return;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            var item = _dbRecords
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                          .FirstOrDefault(a =>
 
															 | 
															
															 | 
															
																                          .FirstOrDefault(a =>
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                           a.Item == MaintenanceItemEnum.RecipeExecuteFreq.ToString() &&
 
															 | 
															
															 | 
															
																                           a.Item == MaintenanceItemEnum.RecipeExecuteFreq.ToString() &&
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                           a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.Recipe}" &&
 
															 | 
															
															 | 
															
																                           a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.Recipe}" &&
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                           a.AdditionInformationDisplay == recipeName);
 
															 | 
															
															 | 
															
																                           a.AdditionInformationDisplay == recipeName);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            CheckRecipeMoreThan(
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                recipeName,
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                Singleton<EquipmentManager>.Instance.RecipeExecuteFreqWarning.Set,
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                Singleton<EquipmentManager>.Instance.RecipeExecuteFreqAlarm.Set,
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                item,
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                "times",
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                out isPause, true);
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            if (item == null || !Enum.TryParse<MaintenanceProcessingCommandEnum>(item.MaintenanceProcessing, out var command))
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                return;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            if (item.StartValue < 0 || item.LimitValue <= item.StartValue || command == MaintenanceProcessingCommandEnum.None)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                return;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            string message = $"{item.Item}-{item.Display} {item.AdditionInformationDisplay}  {item.CurrentValue} limit is ({item.StartValue}~{item.LimitValue}) times";
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            bool isWarning = item.CurrentValue > item.StartValue && item.CurrentValue < item.LimitValue;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            bool isAlarm = item.CurrentValue >= item.LimitValue;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            if (isWarning)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                Singleton<EquipmentManager>.Instance.RecipeExecuteFreqWarning.Set(message);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            if (isAlarm)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                Singleton<EquipmentManager>.Instance.RecipeExecuteFreqWarning.Set(message);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                if (command == MaintenanceProcessingCommandEnum.JobAutoStart)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    if (string.IsNullOrEmpty(item.AssociationProcessRecipeName))
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        Singleton<EquipmentManager>.Instance.RecipeExecuteFreqAlarm.Set(message);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    else
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        LOG.Info($"{message} Trigger {item.AssociationProcessRecipeName}");
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        CheckToPostMessage((int)MSG.RunOtherRecipe, item.AssociationProcessRecipeName, "Process");
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                isPause = true;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                return;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         }
 
															 | 
															
															 | 
															
																         }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         /// <summary>
 
															 | 
															
															 | 
															
																         /// <summary>
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         ///  检查Recipe执行 累计膜厚是否超限
 
															 | 
															
															 | 
															
																         ///  检查Recipe执行 累计膜厚是否超限
 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -358,76 +519,53 @@ namespace FurnaceRT.Equipments.PMs 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         /// <param name="isPause"></param>
 
															 | 
															
															 | 
															
																         /// <param name="isPause"></param>
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         public void CheckRecipeThicknessMoreThan(string recipeName, out bool isPause)
 
															 | 
															
															 | 
															
																         public void CheckRecipeThicknessMoreThan(string recipeName, out bool isPause)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         {
 
															 | 
															
															 | 
															
																         {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            var item = Singleton<ScheduleMaintenanceDataManager>.Instance.Item.Values
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                       .FirstOrDefault(a =>
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                        a.Item == MaintenanceItemEnum.RecipeThickness.ToString() &&
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                        a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.Recipe}" &&
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                        a.AdditionInformationDisplay == recipeName);
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            CheckRecipeMoreThan(
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                recipeName,
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                Singleton<EquipmentManager>.Instance.RecipeThicknessWarning.Set,
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                Singleton<EquipmentManager>.Instance.RecipeThicknessAlarm.Set,
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                item,
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                "Å",
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                out isPause,true);
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-        }
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-        private void CheckRecipeMoreThan(
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-         string recipeName,
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-         Action<string> warningSetId,
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-         Action<string> alarmSetId,
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-         ScheduleMaintenanceDataItem item,
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-         string unit,
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-         out bool isPause,
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-         bool isEnableJobAutoStart = false)
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-        {
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             isPause = false;
 
															 | 
															
															 | 
															
																             isPause = false;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             if (string.IsNullOrEmpty(recipeName))
 
															 | 
															
															 | 
															
																             if (string.IsNullOrEmpty(recipeName))
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 return;
 
															 | 
															
															 | 
															
																                 return;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            var item = _dbRecords.FirstOrDefault(a =>
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                         a.Item == MaintenanceItemEnum.RecipeThickness.ToString() &&
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                         a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.Recipe}" &&
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                         a.AdditionInformationDisplay == recipeName);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             if (item == null || !Enum.TryParse<MaintenanceProcessingCommandEnum>(item.MaintenanceProcessing, out var command))
 
															 | 
															
															 | 
															
																             if (item == null || !Enum.TryParse<MaintenanceProcessingCommandEnum>(item.MaintenanceProcessing, out var command))
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 return;
 
															 | 
															
															 | 
															
																                 return;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            string message = $"{item.AdditionInformationDisplay} {item.CurrentValue} more than {item.StartValue} {unit}";
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            string nullMessage = $"No recipe file associated, unable to trigger JobAutoStart";
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            var warningAction = new AlarmReportItem(warningSetId, message);
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            var alarmAction = new AlarmReportItem(alarmSetId, message);
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            if (item.StartValue < 0 || item.LimitValue <= item.StartValue || command == MaintenanceProcessingCommandEnum.None)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                return;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            string message = $"{item.Item}-{item.Display} {item.AdditionInformationDisplay}  {item.CurrentValue} limit is ({item.StartValue}~{item.LimitValue}) Å";
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            if (item.CurrentValue > item.StartValue && item.CurrentValue < item.LimitValue && command != MaintenanceProcessingCommandEnum.None)
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            bool isWarning = item.CurrentValue > item.StartValue && item.CurrentValue < item.LimitValue;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            bool isAlarm = item.CurrentValue >= item.LimitValue;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            if (isWarning)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             {
 
															 | 
															
															 | 
															
																             {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                warningAction.Exec();
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                Singleton<EquipmentManager>.Instance.RecipeThicknessWarning.Set(message);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             }
 
															 | 
															
															 | 
															
																             }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            if (item.CurrentValue >= item.LimitValue)
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            if (isAlarm)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             {
 
															 | 
															
															 | 
															
																             {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                ExecuteAlarm(alarmAction, ref isPause);
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                if (isEnableJobAutoStart)
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                Singleton<EquipmentManager>.Instance.RecipeThicknessAlarm.Set(message);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                if (command == MaintenanceProcessingCommandEnum.JobAutoStart)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 {
 
															 | 
															
															 | 
															
																                 {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                    switch (command)
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    if (string.IsNullOrEmpty(item.AssociationProcessRecipeName))
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                     {
 
															 | 
															
															 | 
															
																                     {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                        case MaintenanceProcessingCommandEnum.JobAutoStart:
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                            if (string.IsNullOrEmpty(item.AssociationProcessRecipeName))
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                            {
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                                ExecuteAlarm(new AlarmReportItem(alarmSetId, nullMessage), ref isPause);
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                                return;
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                            }
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                            CheckToPostMessage((int)MSG.RunOtherRecipe, item.AssociationProcessRecipeName, "Process");
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                            break;
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        Singleton<EquipmentManager>.Instance.RecipeThicknessAlarm.Set(message);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                     }
 
															 | 
															
															 | 
															
																                     }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    else
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        LOG.Info($"{message} Trigger {item.AssociationProcessRecipeName}");
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        CheckToPostMessage((int)MSG.RunOtherRecipe, item.AssociationProcessRecipeName, "Process");
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 }
 
															 | 
															
															 | 
															
																                 }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                isPause = true;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                return;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             }
 
															 | 
															
															 | 
															
																             }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-        }
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-     
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-        private void ExecuteAlarm(AlarmReportItem alarmAction, ref bool isPause)
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-        {
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            alarmAction.Exec();
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            isPause = true;
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         }
 
															 | 
															
															 | 
															
																         }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																     }
 
															 | 
															
															 | 
															
																     }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 }
 
															 | 
															
															 | 
															
																 }
 
															 |