Browse Source

同步报警信息错误问题

jiangjy 1 week ago
parent
commit
71a3a5fb98

+ 172 - 164
Furnace/FurnaceRT/Equipments/Jobs/AutoTransfer.cs

@@ -5940,257 +5940,265 @@ namespace FurnaceRT.Equipments.Jobs
                     #region New
                     if (isScheduleMaintenance)
                     {
-                        #region  SD Dummy 时间/次数/膜厚限制
-
-                        var maintenanceItemSDCarrierUseFreq = ScheduleMaintenanceDataManager.Instance.GetItem(MaintenanceItemEnum.SDCarrierUseFreq.ToString());
-                        var maintenanceItemSDWaferThickness = ScheduleMaintenanceDataManager.Instance.GetItem(MaintenanceItemEnum.SDWaferThickness.ToString());
-                        var maintenanceItemSDWaferUserTime = ScheduleMaintenanceDataManager.Instance.GetItem(MaintenanceItemEnum.SDWaferUserTime.ToString());
-
-
-
-                        if (wafer.WaferType == WaferType.SD && maintenanceItemSDCarrierUseFreq.StartValue > 0 && wafer.UseCount > maintenanceItemSDCarrierUseFreq.StartValue && wafer.UseCount < maintenanceItemSDCarrierUseFreq.LimitValue)
-                        {
-                            if (maintenanceItemSDCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString() ||
-                                maintenanceItemSDCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
-                            {
-                                var msg = pm.GetAlarmWarningMsg(maintenanceItemSDCarrierUseFreq);
-                                Singleton<EquipmentManager>.Instance.SDWaferTypeUseCountWarning.Set(msg);
-                            }
-                        }
 
-                        if (wafer.WaferType == WaferType.SD && maintenanceItemSDWaferUserTime.StartValue > 0 && wafer.UseTime > maintenanceItemSDWaferUserTime.StartValue && wafer.UseTime < maintenanceItemSDWaferUserTime.LimitValue)
+                        #region  SD Dummy 时间/次数/膜厚限制
+                        if (wafer.WaferType == WaferType.SD)
                         {
+                            var maintenanceItemCarrierUseFreq = ScheduleMaintenanceDataManager.Instance.GetItem(MaintenanceItemEnum.SDCarrierUseFreq.ToString());
+                            var maintenanceItemWaferThickness = ScheduleMaintenanceDataManager.Instance.GetItem(MaintenanceItemEnum.SDWaferThickness.ToString());
+                            var maintenanceItemWaferUserTime = ScheduleMaintenanceDataManager.Instance.GetItem(MaintenanceItemEnum.SDWaferUserTime.ToString());
 
-                            if (maintenanceItemSDWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString() ||
-                                maintenanceItemSDWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                            if (maintenanceItemCarrierUseFreq.StartValue > 0 && wafer.UseCount > maintenanceItemCarrierUseFreq.StartValue && wafer.UseCount < maintenanceItemCarrierUseFreq.LimitValue)
                             {
-                                var currentValue = DateTimeUtil.SecondToHHmmss(maintenanceItemSDWaferUserTime.CurrentValue.ToString());
-                                var minValue = DateTimeUtil.SecondToHHmmss(maintenanceItemSDWaferUserTime.StartValue.ToString());
-                                var maxValue = DateTimeUtil.SecondToHHmmss(maintenanceItemSDWaferUserTime.LimitValue.ToString());
-                                var msg = pm.GetAlarmWarningMsg(maintenanceItemSDWaferUserTime, true, currentValue, minValue, maxValue);
-                                Singleton<EquipmentManager>.Instance.SDWaferTypeUseTimeWarning.Set(msg);
+                                if (maintenanceItemCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString() ||
+                                    maintenanceItemCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                                {
+                                    var msg = pm.GetAlarmWarningMsg(maintenanceItemCarrierUseFreq, false, wafer.UseCount.ToString(), maintenanceItemCarrierUseFreq.StartValue.ToString(), maintenanceItemCarrierUseFreq.LimitValue.ToString());
+                                    Singleton<EquipmentManager>.Instance.SDWaferTypeUseCountWarning.Set(msg);
+                                }
                             }
-                        }
 
-                        if (wafer.WaferType == WaferType.SD && maintenanceItemSDWaferThickness.StartValue > 0 && wafer.UseThick > maintenanceItemSDWaferThickness.StartValue && wafer.UseThick < maintenanceItemSDWaferThickness.LimitValue)
-                        {
-                            if (maintenanceItemSDWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString() ||
-                                maintenanceItemSDWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                            if (maintenanceItemWaferUserTime.StartValue > 0 && wafer.UseTime > maintenanceItemWaferUserTime.StartValue && wafer.UseTime < maintenanceItemWaferUserTime.LimitValue)
                             {
-                                var msg = pm.GetAlarmWarningMsg(maintenanceItemSDWaferThickness);
-                                Singleton<EquipmentManager>.Instance.SDWaferTypeThicknessWarning.Set(msg);
+
+                                if (maintenanceItemWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString() ||
+                                    maintenanceItemWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                                {
+                                    var currentValue = DateTimeUtil.SecondToHHmmss(maintenanceItemWaferUserTime.CurrentValue.ToString());
+                                    var minValue = DateTimeUtil.SecondToHHmmss(maintenanceItemWaferUserTime.StartValue.ToString());
+                                    var maxValue = DateTimeUtil.SecondToHHmmss(maintenanceItemWaferUserTime.LimitValue.ToString());
+                                    var msg = pm.GetAlarmWarningMsg(maintenanceItemWaferUserTime, true, currentValue, minValue, maxValue);
+                                    Singleton<EquipmentManager>.Instance.SDWaferTypeUseTimeWarning.Set(msg);
+                                }
                             }
-                        }
 
-                        if (wafer.WaferType == WaferType.SD && maintenanceItemSDCarrierUseFreq.StartValue > 0 && wafer.UseCount >= maintenanceItemSDCarrierUseFreq.LimitValue)
-                        {
-                            if (maintenanceItemSDCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString())
+                            if (maintenanceItemWaferThickness.StartValue > 0 && wafer.UseThick > maintenanceItemWaferThickness.StartValue && wafer.UseThick < maintenanceItemWaferThickness.LimitValue)
                             {
-                                var msg = pm.GetAlarmWarningMsg(maintenanceItemSDCarrierUseFreq);
-                                Singleton<EquipmentManager>.Instance.SDWaferTypeUseCountAlarm.Set(msg);
-                                return false;
+                                if (maintenanceItemWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString() ||
+                                    maintenanceItemWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                                {
+                                    var msg = pm.GetAlarmWarningMsg(maintenanceItemWaferThickness, false, wafer.UseThick.ToString(), maintenanceItemWaferThickness.StartValue.ToString(), maintenanceItemWaferThickness.LimitValue.ToString());
+                                    Singleton<EquipmentManager>.Instance.SDWaferTypeThicknessWarning.Set(msg);
+                                }
                             }
-                            else if (maintenanceItemSDCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
-                            {
-                                var msg = pm.GetAlarmWarningMsg(maintenanceItemSDCarrierUseFreq, true);
 
-                                if (string.IsNullOrEmpty(maintenanceItemSDCarrierUseFreq.AssociationProcessRecipeName))
+                            if (maintenanceItemCarrierUseFreq.StartValue > 0 && wafer.UseCount >= maintenanceItemCarrierUseFreq.LimitValue)
+                            {
+                                if (maintenanceItemCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString())
                                 {
+                                    var msg = pm.GetAlarmWarningMsg(maintenanceItemCarrierUseFreq, false, wafer.UseCount.ToString(), maintenanceItemCarrierUseFreq.StartValue.ToString(), maintenanceItemCarrierUseFreq.LimitValue.ToString());
                                     Singleton<EquipmentManager>.Instance.SDWaferTypeUseCountAlarm.Set(msg);
                                     return false;
                                 }
+                                else if (maintenanceItemCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                                {
+                                    var msg = pm.GetAlarmWarningMsg(maintenanceItemCarrierUseFreq, true);
 
+                                    if (string.IsNullOrEmpty(maintenanceItemCarrierUseFreq.AssociationProcessRecipeName))
+                                    {
+                                        Singleton<EquipmentManager>.Instance.SDWaferTypeUseCountAlarm.Set(msg);
+                                        return false;
+                                    }
 
-                                Singleton<EquipmentManager>.Instance.SDWaferTypeUseCountAlarm.Set(msg);
-                                pm.TriggerJobAutoStart(maintenanceItemSDCarrierUseFreq.AssociationProcessRecipeName, RecipeExecEntryEnum.SDWaferRangeTrigger);
-                                LOG.Info($"{msg} Trigger {maintenanceItemSDCarrierUseFreq.AssociationProcessRecipeName}");
-                                return false;
-
-                            }
-                        }
 
-                        if (wafer.WaferType == WaferType.SD && maintenanceItemSDWaferUserTime.StartValue > 0 && wafer.UseTime >= maintenanceItemSDWaferUserTime.LimitValue)
-                        {
-                            var currentValue = DateTimeUtil.SecondToHHmmss(maintenanceItemSDWaferUserTime.CurrentValue.ToString());
-                            var minValue = DateTimeUtil.SecondToHHmmss(maintenanceItemSDWaferUserTime.StartValue.ToString());
-                            var maxValue = DateTimeUtil.SecondToHHmmss(maintenanceItemSDWaferUserTime.LimitValue.ToString());
-                            var msg = pm.GetAlarmWarningMsg(maintenanceItemSDWaferUserTime, true, currentValue, minValue, maxValue);
+                                    Singleton<EquipmentManager>.Instance.SDWaferTypeUseCountAlarm.Set(msg);
+                                    pm.TriggerJobAutoStart(maintenanceItemCarrierUseFreq.AssociationProcessRecipeName, RecipeExecEntryEnum.SDWaferRangeTrigger);
+                                    LOG.Info($"{msg} Trigger {maintenanceItemCarrierUseFreq.AssociationProcessRecipeName}");
+                                    return false;
 
-                            if (maintenanceItemSDWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString())
-                            {
-                                Singleton<EquipmentManager>.Instance.SDWaferTypeUseTimeAlarm.Set(msg);
-                                return false;
+                                }
                             }
-                            else if (maintenanceItemSDWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+
+                            if (maintenanceItemWaferUserTime.StartValue > 0 && wafer.UseTime >= maintenanceItemWaferUserTime.LimitValue)
                             {
+                                var currentValue = DateTimeUtil.SecondToHHmmss(maintenanceItemWaferUserTime.CurrentValue.ToString());
+                                var minValue = DateTimeUtil.SecondToHHmmss(maintenanceItemWaferUserTime.StartValue.ToString());
+                                var maxValue = DateTimeUtil.SecondToHHmmss(maintenanceItemWaferUserTime.LimitValue.ToString());
+                                var msg = pm.GetAlarmWarningMsg(maintenanceItemWaferUserTime, true, currentValue, minValue, maxValue);
 
-                                if (string.IsNullOrEmpty(maintenanceItemSDWaferUserTime.AssociationProcessRecipeName))
+                                if (maintenanceItemWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString())
                                 {
                                     Singleton<EquipmentManager>.Instance.SDWaferTypeUseTimeAlarm.Set(msg);
                                     return false;
                                 }
+                                else if (maintenanceItemWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                                {
 
-                                Singleton<EquipmentManager>.Instance.SDWaferTypeUseTimeAlarm.Set(msg);
-                                pm.TriggerJobAutoStart(maintenanceItemSDWaferUserTime.AssociationProcessRecipeName, RecipeExecEntryEnum.SDWaferRangeTrigger);
-                                LOG.Info($"{msg} Trigger {maintenanceItemSDWaferUserTime.AssociationProcessRecipeName}");
-                                return false;
-
-                            }
+                                    if (string.IsNullOrEmpty(maintenanceItemWaferUserTime.AssociationProcessRecipeName))
+                                    {
+                                        Singleton<EquipmentManager>.Instance.SDWaferTypeUseTimeAlarm.Set(msg);
+                                        return false;
+                                    }
 
-                        }
+                                    Singleton<EquipmentManager>.Instance.SDWaferTypeUseTimeAlarm.Set(msg);
+                                    pm.TriggerJobAutoStart(maintenanceItemWaferUserTime.AssociationProcessRecipeName, RecipeExecEntryEnum.SDWaferRangeTrigger);
+                                    LOG.Info($"{msg} Trigger {maintenanceItemWaferUserTime.AssociationProcessRecipeName}");
+                                    return false;
 
-                        if (wafer.WaferType == WaferType.SD && maintenanceItemSDWaferThickness.StartValue > 0 && wafer.UseThick >= maintenanceItemSDWaferThickness.LimitValue)
-                        {
+                                }
 
-                            if (maintenanceItemSDWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString())
-                            {
-                                var msg = pm.GetAlarmWarningMsg(maintenanceItemSDWaferThickness);
-                                Singleton<EquipmentManager>.Instance.SDWaferTypeThicknessAlarm.Set(msg);
-                                return false;
                             }
-                            else if (maintenanceItemSDWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+
+                            if (maintenanceItemWaferThickness.StartValue > 0 && wafer.UseThick >= maintenanceItemWaferThickness.LimitValue)
                             {
-                                var msg = pm.GetAlarmWarningMsg(maintenanceItemSDWaferThickness, true);
 
-                                if (string.IsNullOrEmpty(maintenanceItemSDWaferThickness.AssociationProcessRecipeName))
+                                if (maintenanceItemWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString())
                                 {
+                                    var msg = pm.GetAlarmWarningMsg(maintenanceItemWaferThickness, false, wafer.UseThick.ToString(), maintenanceItemWaferThickness.StartValue.ToString(), maintenanceItemWaferThickness.LimitValue.ToString());
                                     Singleton<EquipmentManager>.Instance.SDWaferTypeThicknessAlarm.Set(msg);
                                     return false;
                                 }
+                                else if (maintenanceItemWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                                {
+                                    var msg = pm.GetAlarmWarningMsg(maintenanceItemWaferThickness, true);
+
+                                    if (string.IsNullOrEmpty(maintenanceItemWaferThickness.AssociationProcessRecipeName))
+                                    {
+                                        Singleton<EquipmentManager>.Instance.SDWaferTypeThicknessAlarm.Set(msg);
+                                        return false;
+                                    }
 
 
-                                Singleton<EquipmentManager>.Instance.SDWaferTypeThicknessAlarm.Set(msg);
-                                pm.TriggerJobAutoStart(maintenanceItemSDWaferThickness.AssociationProcessRecipeName, RecipeExecEntryEnum.SDWaferRangeTrigger);
-                                LOG.Info($"{msg} Trigger {maintenanceItemSDWaferThickness.AssociationProcessRecipeName}");
-                                return false;
+                                    Singleton<EquipmentManager>.Instance.SDWaferTypeThicknessAlarm.Set(msg);
+                                    pm.TriggerJobAutoStart(maintenanceItemWaferThickness.AssociationProcessRecipeName, RecipeExecEntryEnum.SDWaferRangeTrigger);
+                                    LOG.Info($"{msg} Trigger {maintenanceItemWaferThickness.AssociationProcessRecipeName}");
+                                    return false;
 
+                                }
                             }
+
                         }
+
                         #endregion
 
                         #region ED
-                        var maintenanceItemEDCarrierUseFreq = ScheduleMaintenanceDataManager.Instance.GetItem(MaintenanceItemEnum.FDCarrierUseFreq.ToString());
-                        var maintenanceItemEDWaferThickness = ScheduleMaintenanceDataManager.Instance.GetItem(MaintenanceItemEnum.FDWaferThickness.ToString());
-                        var maintenanceItemEDWaferUserTime = ScheduleMaintenanceDataManager.Instance.GetItem(MaintenanceItemEnum.FDWaferUserTime.ToString());
-
-                        if (wafer.WaferType == WaferType.ED && maintenanceItemEDCarrierUseFreq.StartValue > 0 && wafer.UseCount > maintenanceItemEDCarrierUseFreq.StartValue && wafer.UseCount < maintenanceItemEDCarrierUseFreq.LimitValue)
+                        if (wafer.WaferType == WaferType.ED)
                         {
-                            if (maintenanceItemEDCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString() ||
-                               maintenanceItemEDCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                            var maintenanceItemCarrierUseFreq = ScheduleMaintenanceDataManager.Instance.GetItem(MaintenanceItemEnum.FDCarrierUseFreq.ToString());
+                            var maintenanceItemWaferThickness = ScheduleMaintenanceDataManager.Instance.GetItem(MaintenanceItemEnum.FDWaferThickness.ToString());
+                            var maintenanceItemWaferUserTime = ScheduleMaintenanceDataManager.Instance.GetItem(MaintenanceItemEnum.FDWaferUserTime.ToString());
+
+                            if (maintenanceItemCarrierUseFreq.StartValue > 0 && wafer.UseCount > maintenanceItemCarrierUseFreq.StartValue && wafer.UseCount < maintenanceItemCarrierUseFreq.LimitValue)
                             {
-                                var msg = pm.GetAlarmWarningMsg(maintenanceItemEDCarrierUseFreq);
-                                Singleton<EquipmentManager>.Instance.FDWaferTypeUseCountWarning.Set(msg);
+                                if (maintenanceItemCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString() ||
+                                   maintenanceItemCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                                {
+                                    var msg = pm.GetAlarmWarningMsg(maintenanceItemCarrierUseFreq, false, wafer.UseCount.ToString(), maintenanceItemCarrierUseFreq.StartValue.ToString(), maintenanceItemCarrierUseFreq.LimitValue.ToString());
+                                    Singleton<EquipmentManager>.Instance.FDWaferTypeUseCountWarning.Set(msg);
+                                }
                             }
-                        }
-
-                        if (wafer.WaferType == WaferType.ED && maintenanceItemEDWaferUserTime.StartValue > 0 && wafer.UseTime > maintenanceItemEDWaferUserTime.StartValue && wafer.UseTime < maintenanceItemEDWaferUserTime.LimitValue)
-                        {
 
-                            if (maintenanceItemEDWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString() ||
-                                maintenanceItemEDWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                            if (maintenanceItemWaferUserTime.StartValue > 0 && wafer.UseTime > maintenanceItemWaferUserTime.StartValue && wafer.UseTime < maintenanceItemWaferUserTime.LimitValue)
                             {
-                                var currentValue = DateTimeUtil.SecondToHHmmss(maintenanceItemEDWaferUserTime.CurrentValue.ToString());
-                                var minValue = DateTimeUtil.SecondToHHmmss(maintenanceItemEDWaferUserTime.StartValue.ToString());
-                                var maxValue = DateTimeUtil.SecondToHHmmss(maintenanceItemEDWaferUserTime.LimitValue.ToString());
-                                var msg = pm.GetAlarmWarningMsg(maintenanceItemEDWaferUserTime, true, currentValue, minValue, maxValue);
 
-                                Singleton<EquipmentManager>.Instance.FDWaferTypeUseTimeWarning.Set(msg);
-                            }
+                                if (maintenanceItemWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString() ||
+                                    maintenanceItemWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                                {
+                                    var currentValue = DateTimeUtil.SecondToHHmmss(maintenanceItemWaferUserTime.CurrentValue.ToString());
+                                    var minValue = DateTimeUtil.SecondToHHmmss(maintenanceItemWaferUserTime.StartValue.ToString());
+                                    var maxValue = DateTimeUtil.SecondToHHmmss(maintenanceItemWaferUserTime.LimitValue.ToString());
+                                    var msg = pm.GetAlarmWarningMsg(maintenanceItemWaferUserTime, true, currentValue, minValue, maxValue);
 
-                        }
+                                    Singleton<EquipmentManager>.Instance.FDWaferTypeUseTimeWarning.Set(msg);
+                                }
 
-                        if (wafer.WaferType == WaferType.ED && maintenanceItemEDWaferThickness.StartValue > 0 && wafer.UseThick > maintenanceItemEDWaferThickness.StartValue && wafer.UseThick < maintenanceItemEDWaferThickness.LimitValue)
-                        {
-                            if (maintenanceItemEDWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString() ||
-                                maintenanceItemEDWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
-                            {
-                                var msg = pm.GetAlarmWarningMsg(maintenanceItemEDWaferThickness);
-                                Singleton<EquipmentManager>.Instance.FDWaferTypeThicknessWarning.Set(msg);
                             }
-                        }
-
-                        if (wafer.WaferType == WaferType.ED && maintenanceItemEDCarrierUseFreq.StartValue > 0 && wafer.UseCount >= maintenanceItemEDCarrierUseFreq.LimitValue)
-                        {
 
-                            if (maintenanceItemEDCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString())
+                            if (maintenanceItemWaferThickness.StartValue > 0 && wafer.UseThick > maintenanceItemWaferThickness.StartValue && wafer.UseThick < maintenanceItemWaferThickness.LimitValue)
                             {
-                                var msg = pm.GetAlarmWarningMsg(maintenanceItemEDCarrierUseFreq);
-                                Singleton<EquipmentManager>.Instance.FDWaferTypeUseCountAlarm.Set(msg);
-                                return false;
+                                if (maintenanceItemWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString() ||
+                                    maintenanceItemWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                                {
+                                    var msg = pm.GetAlarmWarningMsg(maintenanceItemWaferThickness, false, wafer.UseThick.ToString(), maintenanceItemWaferThickness.StartValue.ToString(), maintenanceItemWaferThickness.LimitValue.ToString());
+                                    Singleton<EquipmentManager>.Instance.FDWaferTypeThicknessWarning.Set(msg);
+                                }
                             }
-                            else if (maintenanceItemEDCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+
+                            if (maintenanceItemCarrierUseFreq.StartValue > 0 && wafer.UseCount >= maintenanceItemCarrierUseFreq.LimitValue)
                             {
-                                var msg = pm.GetAlarmWarningMsg(maintenanceItemEDCarrierUseFreq);
 
-                                if (string.IsNullOrEmpty(maintenanceItemEDCarrierUseFreq.AssociationProcessRecipeName))
+                                if (maintenanceItemCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString())
                                 {
+                                    var msg = pm.GetAlarmWarningMsg(maintenanceItemCarrierUseFreq, false, wafer.UseCount.ToString(), maintenanceItemCarrierUseFreq.StartValue.ToString(), maintenanceItemCarrierUseFreq.LimitValue.ToString());
                                     Singleton<EquipmentManager>.Instance.FDWaferTypeUseCountAlarm.Set(msg);
                                     return false;
                                 }
-                                Singleton<EquipmentManager>.Instance.FDWaferTypeUseCountAlarm.Set(msg);
-                                pm.TriggerJobAutoStart(maintenanceItemEDCarrierUseFreq.AssociationProcessRecipeName, RecipeExecEntryEnum.EDWaferRangeTrigger);
-                                LOG.Info($"{msg} Trigger {maintenanceItemEDCarrierUseFreq.AssociationProcessRecipeName}");
-                                return false;
+                                else if (maintenanceItemCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                                {
+                                    var msg = pm.GetAlarmWarningMsg(maintenanceItemCarrierUseFreq);
 
-                            }
-                        }
+                                    if (string.IsNullOrEmpty(maintenanceItemCarrierUseFreq.AssociationProcessRecipeName))
+                                    {
+                                        Singleton<EquipmentManager>.Instance.FDWaferTypeUseCountAlarm.Set(msg);
+                                        return false;
+                                    }
+                                    Singleton<EquipmentManager>.Instance.FDWaferTypeUseCountAlarm.Set(msg);
+                                    pm.TriggerJobAutoStart(maintenanceItemCarrierUseFreq.AssociationProcessRecipeName, RecipeExecEntryEnum.EDWaferRangeTrigger);
+                                    LOG.Info($"{msg} Trigger {maintenanceItemCarrierUseFreq.AssociationProcessRecipeName}");
+                                    return false;
 
-                        if (wafer.WaferType == WaferType.ED && maintenanceItemEDWaferUserTime.StartValue > 0 && wafer.UseTime >= maintenanceItemEDWaferUserTime.LimitValue)
-                        {
+                                }
+                            }
 
+                            if (maintenanceItemWaferUserTime.StartValue > 0 && wafer.UseTime >= maintenanceItemWaferUserTime.LimitValue)
+                            {
 
-                            var currentValue = DateTimeUtil.SecondToHHmmss(maintenanceItemEDWaferUserTime.CurrentValue.ToString());
-                            var minValue = DateTimeUtil.SecondToHHmmss(maintenanceItemEDWaferUserTime.StartValue.ToString());
-                            var maxValue = DateTimeUtil.SecondToHHmmss(maintenanceItemEDWaferUserTime.LimitValue.ToString());
-                            var msg = pm.GetAlarmWarningMsg(maintenanceItemEDWaferUserTime, true, currentValue, minValue, maxValue);
 
-                            if (maintenanceItemEDWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString())
-                            {
-                                Singleton<EquipmentManager>.Instance.FDWaferTypeUseTimeAlarm.Set(msg);
-                                return false;
-                            }
-                            else if (maintenanceItemEDWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
-                            {
+                                var currentValue = DateTimeUtil.SecondToHHmmss(maintenanceItemWaferUserTime.CurrentValue.ToString());
+                                var minValue = DateTimeUtil.SecondToHHmmss(maintenanceItemWaferUserTime.StartValue.ToString());
+                                var maxValue = DateTimeUtil.SecondToHHmmss(maintenanceItemWaferUserTime.LimitValue.ToString());
+                                var msg = pm.GetAlarmWarningMsg(maintenanceItemWaferUserTime, true, currentValue, minValue, maxValue);
 
-                                if (string.IsNullOrEmpty(maintenanceItemEDWaferUserTime.AssociationProcessRecipeName))
+                                if (maintenanceItemWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString())
                                 {
                                     Singleton<EquipmentManager>.Instance.FDWaferTypeUseTimeAlarm.Set(msg);
                                     return false;
                                 }
+                                else if (maintenanceItemWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                                {
 
-                                Singleton<EquipmentManager>.Instance.FDWaferTypeUseTimeAlarm.Set(msg);
-                                pm.TriggerJobAutoStart(maintenanceItemEDWaferUserTime.AssociationProcessRecipeName ,RecipeExecEntryEnum.EDWaferRangeTrigger);
-                                LOG.Info($"{msg} Trigger {maintenanceItemEDWaferUserTime.AssociationProcessRecipeName}");
-                                return false;
-
-                            }
-                        }
+                                    if (string.IsNullOrEmpty(maintenanceItemWaferUserTime.AssociationProcessRecipeName))
+                                    {
+                                        Singleton<EquipmentManager>.Instance.FDWaferTypeUseTimeAlarm.Set(msg);
+                                        return false;
+                                    }
 
-                        if (wafer.WaferType == WaferType.ED && maintenanceItemEDWaferThickness.StartValue > 0 && wafer.UseThick >= maintenanceItemEDWaferThickness.LimitValue)
-                        {
+                                    Singleton<EquipmentManager>.Instance.FDWaferTypeUseTimeAlarm.Set(msg);
+                                    pm.TriggerJobAutoStart(maintenanceItemWaferUserTime.AssociationProcessRecipeName, RecipeExecEntryEnum.EDWaferRangeTrigger);
+                                    LOG.Info($"{msg} Trigger {maintenanceItemWaferUserTime.AssociationProcessRecipeName}");
+                                    return false;
 
-                            if (maintenanceItemEDWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString())
-                            {
-                                var msg = pm.GetAlarmWarningMsg(maintenanceItemEDWaferThickness);
-                                Singleton<EquipmentManager>.Instance.FDWaferTypeThicknessAlarm.Set(msg);
-                                return false;
+                                }
                             }
-                            else if (maintenanceItemEDWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+
+                            if (maintenanceItemWaferThickness.StartValue > 0 && wafer.UseThick >= maintenanceItemWaferThickness.LimitValue)
                             {
-                                var msg = pm.GetAlarmWarningMsg(maintenanceItemEDWaferThickness, true);
 
-                                if (string.IsNullOrEmpty(maintenanceItemEDWaferThickness.AssociationProcessRecipeName))
+                                if (maintenanceItemWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString())
                                 {
+                                    var msg = pm.GetAlarmWarningMsg(maintenanceItemWaferThickness, false, wafer.UseThick.ToString(), maintenanceItemWaferThickness.StartValue.ToString(), maintenanceItemWaferThickness.LimitValue.ToString());
                                     Singleton<EquipmentManager>.Instance.FDWaferTypeThicknessAlarm.Set(msg);
                                     return false;
                                 }
-                                Singleton<EquipmentManager>.Instance.FDWaferTypeThicknessAlarm.Set(msg);
-                                pm.TriggerJobAutoStart(maintenanceItemEDWaferThickness.AssociationProcessRecipeName,RecipeExecEntryEnum.EDWaferRangeTrigger);
-                                LOG.Info($"{msg} Trigger {maintenanceItemEDWaferThickness.AssociationProcessRecipeName}");
-                                return false;
+                                else if (maintenanceItemWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                                {
+                                    var msg = pm.GetAlarmWarningMsg(maintenanceItemWaferThickness, true);
+
+                                    if (string.IsNullOrEmpty(maintenanceItemWaferThickness.AssociationProcessRecipeName))
+                                    {
+                                        Singleton<EquipmentManager>.Instance.FDWaferTypeThicknessAlarm.Set(msg);
+                                        return false;
+                                    }
+                                    Singleton<EquipmentManager>.Instance.FDWaferTypeThicknessAlarm.Set(msg);
+                                    pm.TriggerJobAutoStart(maintenanceItemWaferThickness.AssociationProcessRecipeName, RecipeExecEntryEnum.EDWaferRangeTrigger);
+                                    LOG.Info($"{msg} Trigger {maintenanceItemWaferThickness.AssociationProcessRecipeName}");
+                                    return false;
 
+                                }
                             }
+
                         }
+
                         #endregion
                     }
                     else

+ 172 - 169
Furnace/FurnaceRT/Equipments/PMs/RecipeExecutions/PreProcess.cs

@@ -85,263 +85,266 @@ namespace FurnaceRT.Equipments.PMs.RecipeExecutions
                             #region New
                             if (isScheduleMaintenance)
                             {
-                                #region  SD Dummy 时间/次数/膜厚限制
-
-                                var maintenanceItemSDCarrierUseFreq = ScheduleMaintenanceDataManager.Instance.GetItem(MaintenanceItemEnum.SDCarrierUseFreq.ToString());
-                                var maintenanceItemSDWaferThickness = ScheduleMaintenanceDataManager.Instance.GetItem(MaintenanceItemEnum.SDWaferThickness.ToString());
-                                var maintenanceItemSDWaferUserTime = ScheduleMaintenanceDataManager.Instance.GetItem(MaintenanceItemEnum.SDWaferUserTime.ToString());
-
-
 
-                                if (wafer.WaferType == WaferType.SD && maintenanceItemSDCarrierUseFreq.StartValue > 0 && wafer.UseCount > maintenanceItemSDCarrierUseFreq.StartValue && wafer.UseCount < maintenanceItemSDCarrierUseFreq.LimitValue)
-                                {
-                                    if (maintenanceItemSDCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString() ||
-                                        maintenanceItemSDCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
-                                    {
-                                        var msg = pm.GetAlarmWarningMsg(maintenanceItemSDCarrierUseFreq);
-                                        Singleton<EquipmentManager>.Instance.SDWaferTypeUseCountWarning.Set(msg);
-                                    }
-                                }
-
-                                if (wafer.WaferType == WaferType.SD && maintenanceItemSDWaferUserTime.StartValue > 0 && wafer.UseTime > maintenanceItemSDWaferUserTime.StartValue && wafer.UseTime < maintenanceItemSDWaferUserTime.LimitValue)
+                                #region  SD Dummy 时间/次数/膜厚限制
+                                if (wafer.WaferType == WaferType.SD)
                                 {
+                                    var maintenanceItemCarrierUseFreq = ScheduleMaintenanceDataManager.Instance.GetItem(MaintenanceItemEnum.SDCarrierUseFreq.ToString());
+                                    var maintenanceItemWaferThickness = ScheduleMaintenanceDataManager.Instance.GetItem(MaintenanceItemEnum.SDWaferThickness.ToString());
+                                    var maintenanceItemWaferUserTime = ScheduleMaintenanceDataManager.Instance.GetItem(MaintenanceItemEnum.SDWaferUserTime.ToString());
 
-                                    if (maintenanceItemSDWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString() ||
-                                        maintenanceItemSDWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                                    if (maintenanceItemCarrierUseFreq.StartValue > 0 && wafer.UseCount > maintenanceItemCarrierUseFreq.StartValue && wafer.UseCount < maintenanceItemCarrierUseFreq.LimitValue)
                                     {
-                                        var currentValue = DateTimeUtil.SecondToHHmmss(maintenanceItemSDWaferUserTime.CurrentValue.ToString());
-                                        var minValue = DateTimeUtil.SecondToHHmmss(maintenanceItemSDWaferUserTime.StartValue.ToString());
-                                        var maxValue = DateTimeUtil.SecondToHHmmss(maintenanceItemSDWaferUserTime.LimitValue.ToString());
-                                        var msg = pm.GetAlarmWarningMsg(maintenanceItemSDWaferUserTime, true, currentValue, minValue, maxValue);
-                                        Singleton<EquipmentManager>.Instance.SDWaferTypeUseTimeWarning.Set(msg);
+                                        if (maintenanceItemCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString() ||
+                                            maintenanceItemCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                                        {
+                                            var msg = pm.GetAlarmWarningMsg(maintenanceItemCarrierUseFreq, false, wafer.UseCount.ToString(), maintenanceItemCarrierUseFreq.StartValue.ToString(), maintenanceItemCarrierUseFreq.LimitValue.ToString());
+                                            Singleton<EquipmentManager>.Instance.SDWaferTypeUseCountWarning.Set(msg);
+                                        }
                                     }
-                                }
 
-                                if (wafer.WaferType == WaferType.SD && maintenanceItemSDWaferThickness.StartValue > 0 && wafer.UseThick > maintenanceItemSDWaferThickness.StartValue && wafer.UseThick < maintenanceItemSDWaferThickness.LimitValue)
-                                {
-                                    if (maintenanceItemSDWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString() ||
-                                        maintenanceItemSDWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString()
-                                        )
+                                    if (maintenanceItemWaferUserTime.StartValue > 0 && wafer.UseTime > maintenanceItemWaferUserTime.StartValue && wafer.UseTime < maintenanceItemWaferUserTime.LimitValue)
                                     {
-                                        var msg = pm.GetAlarmWarningMsg(maintenanceItemSDWaferThickness);
-                                        Singleton<EquipmentManager>.Instance.SDWaferTypeThicknessWarning.Set(msg);
-                                    }
-                                }
 
-                                if (wafer.WaferType == WaferType.SD && maintenanceItemSDCarrierUseFreq.StartValue > 0 && wafer.UseCount >= maintenanceItemSDCarrierUseFreq.LimitValue)
-                                {
+                                        if (maintenanceItemWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString() ||
+                                            maintenanceItemWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                                        {
+                                            var currentValue = DateTimeUtil.SecondToHHmmss(maintenanceItemWaferUserTime.CurrentValue.ToString());
+                                            var minValue = DateTimeUtil.SecondToHHmmss(maintenanceItemWaferUserTime.StartValue.ToString());
+                                            var maxValue = DateTimeUtil.SecondToHHmmss(maintenanceItemWaferUserTime.LimitValue.ToString());
+                                            var msg = pm.GetAlarmWarningMsg(maintenanceItemWaferUserTime, true, currentValue, minValue, maxValue);
+                                            Singleton<EquipmentManager>.Instance.SDWaferTypeUseTimeWarning.Set(msg);
+                                        }
+                                    }
 
-                                    if (maintenanceItemSDCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString())
+                                    if (maintenanceItemWaferThickness.StartValue > 0 && wafer.UseThick > maintenanceItemWaferThickness.StartValue && wafer.UseThick < maintenanceItemWaferThickness.LimitValue)
                                     {
-                                        var msg = pm.GetAlarmWarningMsg(maintenanceItemSDCarrierUseFreq);
-                                        Singleton<EquipmentManager>.Instance.SDWaferTypeUseCountAlarm.Set(msg);
-                                        return Result.FAIL;
+                                        if (maintenanceItemWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString() ||
+                                            maintenanceItemWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                                        {
+                                            var msg = pm.GetAlarmWarningMsg(maintenanceItemWaferThickness, false, wafer.UseThick.ToString(), maintenanceItemWaferThickness.StartValue.ToString(), maintenanceItemWaferThickness.LimitValue.ToString());
+                                            Singleton<EquipmentManager>.Instance.SDWaferTypeThicknessWarning.Set(msg);
+                                        }
                                     }
-                                    else if (maintenanceItemSDCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
-                                    {
-                                        var msg = pm.GetAlarmWarningMsg(maintenanceItemSDCarrierUseFreq, true);
 
-                                        if (string.IsNullOrEmpty(maintenanceItemSDCarrierUseFreq.AssociationProcessRecipeName))
+                                    if (maintenanceItemCarrierUseFreq.StartValue > 0 && wafer.UseCount >= maintenanceItemCarrierUseFreq.LimitValue)
+                                    {
+                                        if (maintenanceItemCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString())
                                         {
+                                            var msg = pm.GetAlarmWarningMsg(maintenanceItemCarrierUseFreq, false, wafer.UseCount.ToString(), maintenanceItemCarrierUseFreq.StartValue.ToString(), maintenanceItemCarrierUseFreq.LimitValue.ToString());
                                             Singleton<EquipmentManager>.Instance.SDWaferTypeUseCountAlarm.Set(msg);
                                             return Result.FAIL;
                                         }
+                                        else if (maintenanceItemCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                                        {
+                                            var msg = pm.GetAlarmWarningMsg(maintenanceItemCarrierUseFreq, true);
 
+                                            if (string.IsNullOrEmpty(maintenanceItemCarrierUseFreq.AssociationProcessRecipeName))
+                                            {
+                                                Singleton<EquipmentManager>.Instance.SDWaferTypeUseCountAlarm.Set(msg);
+                                                return Result.FAIL;
+                                            }
 
-                                        Singleton<EquipmentManager>.Instance.SDWaferTypeUseCountAlarm.Set(msg);
-                                        pm.TriggerJobAutoStart(maintenanceItemSDCarrierUseFreq.AssociationProcessRecipeName, RecipeExecEntryEnum.SDWaferRangeTrigger);
-                                        LOG.Info($"{msg} Trigger {maintenanceItemSDCarrierUseFreq.AssociationProcessRecipeName}");
-                                        return Result.FAIL;
-
-                                    }
-                                }
 
-                                if (wafer.WaferType == WaferType.SD && maintenanceItemSDWaferUserTime.StartValue > 0 && wafer.UseTime >= maintenanceItemSDWaferUserTime.LimitValue)
-                                {
-                                    var currentValue = DateTimeUtil.SecondToHHmmss(maintenanceItemSDWaferUserTime.CurrentValue.ToString());
-                                    var minValue = DateTimeUtil.SecondToHHmmss(maintenanceItemSDWaferUserTime.StartValue.ToString());
-                                    var maxValue = DateTimeUtil.SecondToHHmmss(maintenanceItemSDWaferUserTime.LimitValue.ToString());
-                                    var msg = pm.GetAlarmWarningMsg(maintenanceItemSDWaferUserTime, true, currentValue, minValue, maxValue);
+                                            Singleton<EquipmentManager>.Instance.SDWaferTypeUseCountAlarm.Set(msg);
+                                            pm.TriggerJobAutoStart(maintenanceItemCarrierUseFreq.AssociationProcessRecipeName, RecipeExecEntryEnum.SDWaferRangeTrigger);
+                                            LOG.Info($"{msg} Trigger {maintenanceItemCarrierUseFreq.AssociationProcessRecipeName}");
+                                            return Result.FAIL;
 
-                                    if (maintenanceItemSDWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString())
-                                    {
-                                        Singleton<EquipmentManager>.Instance.SDWaferTypeUseTimeAlarm.Set(msg);
-                                        return Result.FAIL;
+                                        }
                                     }
-                                    else if (maintenanceItemSDWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+
+                                    if (maintenanceItemWaferUserTime.StartValue > 0 && wafer.UseTime >= maintenanceItemWaferUserTime.LimitValue)
                                     {
+                                        var currentValue = DateTimeUtil.SecondToHHmmss(maintenanceItemWaferUserTime.CurrentValue.ToString());
+                                        var minValue = DateTimeUtil.SecondToHHmmss(maintenanceItemWaferUserTime.StartValue.ToString());
+                                        var maxValue = DateTimeUtil.SecondToHHmmss(maintenanceItemWaferUserTime.LimitValue.ToString());
+                                        var msg = pm.GetAlarmWarningMsg(maintenanceItemWaferUserTime, true, currentValue, minValue, maxValue);
 
-                                        if (string.IsNullOrEmpty(maintenanceItemSDWaferUserTime.AssociationProcessRecipeName))
+                                        if (maintenanceItemWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString())
                                         {
                                             Singleton<EquipmentManager>.Instance.SDWaferTypeUseTimeAlarm.Set(msg);
                                             return Result.FAIL;
                                         }
+                                        else if (maintenanceItemWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                                        {
 
-                                        Singleton<EquipmentManager>.Instance.SDWaferTypeUseTimeAlarm.Set(msg);
-                                        pm.TriggerJobAutoStart(maintenanceItemSDWaferUserTime.AssociationProcessRecipeName, RecipeExecEntryEnum.SDWaferRangeTrigger);
-                                        LOG.Info($"{msg} Trigger {maintenanceItemSDWaferUserTime.AssociationProcessRecipeName}");
-                                        return Result.FAIL;
-
-                                    }
+                                            if (string.IsNullOrEmpty(maintenanceItemWaferUserTime.AssociationProcessRecipeName))
+                                            {
+                                                Singleton<EquipmentManager>.Instance.SDWaferTypeUseTimeAlarm.Set(msg);
+                                                return Result.FAIL;
+                                            }
 
-                                }
+                                            Singleton<EquipmentManager>.Instance.SDWaferTypeUseTimeAlarm.Set(msg);
+                                            pm.TriggerJobAutoStart(maintenanceItemWaferUserTime.AssociationProcessRecipeName, RecipeExecEntryEnum.SDWaferRangeTrigger);
+                                            LOG.Info($"{msg} Trigger {maintenanceItemWaferUserTime.AssociationProcessRecipeName}");
+                                            return Result.FAIL;
 
-                                if (wafer.WaferType == WaferType.SD && maintenanceItemSDWaferThickness.StartValue > 0 && wafer.UseThick >= maintenanceItemSDWaferThickness.LimitValue)
-                                {
+                                        }
 
-                                    if (maintenanceItemSDWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString())
-                                    {
-                                        var msg = pm.GetAlarmWarningMsg(maintenanceItemSDWaferThickness);
-                                        Singleton<EquipmentManager>.Instance.SDWaferTypeThicknessAlarm.Set(msg);
-                                        return Result.FAIL;
                                     }
-                                    else if (maintenanceItemSDWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+
+                                    if (maintenanceItemWaferThickness.StartValue > 0 && wafer.UseThick >= maintenanceItemWaferThickness.LimitValue)
                                     {
-                                        var msg = pm.GetAlarmWarningMsg(maintenanceItemSDWaferThickness, true);
 
-                                        if (string.IsNullOrEmpty(maintenanceItemSDWaferThickness.AssociationProcessRecipeName))
+                                        if (maintenanceItemWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString())
                                         {
+                                            var msg = pm.GetAlarmWarningMsg(maintenanceItemWaferThickness, false, wafer.UseThick.ToString(), maintenanceItemWaferThickness.StartValue.ToString(), maintenanceItemWaferThickness.LimitValue.ToString());
                                             Singleton<EquipmentManager>.Instance.SDWaferTypeThicknessAlarm.Set(msg);
                                             return Result.FAIL;
                                         }
+                                        else if (maintenanceItemWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                                        {
+                                            var msg = pm.GetAlarmWarningMsg(maintenanceItemWaferThickness, true);
+
+                                            if (string.IsNullOrEmpty(maintenanceItemWaferThickness.AssociationProcessRecipeName))
+                                            {
+                                                Singleton<EquipmentManager>.Instance.SDWaferTypeThicknessAlarm.Set(msg);
+                                                return Result.FAIL;
+                                            }
 
 
-                                        Singleton<EquipmentManager>.Instance.SDWaferTypeThicknessAlarm.Set(msg);
-                                        pm.TriggerJobAutoStart(maintenanceItemSDWaferThickness.AssociationProcessRecipeName, RecipeExecEntryEnum.SDWaferRangeTrigger);
-                                        LOG.Info($"{msg} Trigger {maintenanceItemSDWaferThickness.AssociationProcessRecipeName}");
-                                        return Result.FAIL;
+                                            Singleton<EquipmentManager>.Instance.SDWaferTypeThicknessAlarm.Set(msg);
+                                            pm.TriggerJobAutoStart(maintenanceItemWaferThickness.AssociationProcessRecipeName, RecipeExecEntryEnum.SDWaferRangeTrigger);
+                                            LOG.Info($"{msg} Trigger {maintenanceItemWaferThickness.AssociationProcessRecipeName}");
+                                            return Result.FAIL;
 
+                                        }
                                     }
+
                                 }
+
                                 #endregion
 
                                 #region ED
-                                var maintenanceItemEDCarrierUseFreq = ScheduleMaintenanceDataManager.Instance.GetItem(MaintenanceItemEnum.FDCarrierUseFreq.ToString());
-                                var maintenanceItemEDWaferThickness = ScheduleMaintenanceDataManager.Instance.GetItem(MaintenanceItemEnum.FDWaferThickness.ToString());
-                                var maintenanceItemEDWaferUserTime = ScheduleMaintenanceDataManager.Instance.GetItem(MaintenanceItemEnum.FDWaferUserTime.ToString());
-
-                                if (wafer.WaferType == WaferType.ED && maintenanceItemEDCarrierUseFreq.StartValue > 0 && wafer.UseCount > maintenanceItemEDCarrierUseFreq.StartValue && wafer.UseCount < maintenanceItemEDCarrierUseFreq.LimitValue)
+                                if (wafer.WaferType == WaferType.ED)
                                 {
-                                    if (maintenanceItemEDCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString() ||
-                                        maintenanceItemEDCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString()
-                                        )
+                                    var maintenanceItemCarrierUseFreq = ScheduleMaintenanceDataManager.Instance.GetItem(MaintenanceItemEnum.FDCarrierUseFreq.ToString());
+                                    var maintenanceItemWaferThickness = ScheduleMaintenanceDataManager.Instance.GetItem(MaintenanceItemEnum.FDWaferThickness.ToString());
+                                    var maintenanceItemWaferUserTime = ScheduleMaintenanceDataManager.Instance.GetItem(MaintenanceItemEnum.FDWaferUserTime.ToString());
+
+                                    if (maintenanceItemCarrierUseFreq.StartValue > 0 && wafer.UseCount > maintenanceItemCarrierUseFreq.StartValue && wafer.UseCount < maintenanceItemCarrierUseFreq.LimitValue)
                                     {
-                                        var msg = pm.GetAlarmWarningMsg(maintenanceItemEDCarrierUseFreq);
-                                        Singleton<EquipmentManager>.Instance.FDWaferTypeUseCountWarning.Set(msg);
+                                        if (maintenanceItemCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString() ||
+                                           maintenanceItemCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                                        {
+                                            var msg = pm.GetAlarmWarningMsg(maintenanceItemCarrierUseFreq, false, wafer.UseCount.ToString(), maintenanceItemCarrierUseFreq.StartValue.ToString(), maintenanceItemCarrierUseFreq.LimitValue.ToString());
+                                            Singleton<EquipmentManager>.Instance.FDWaferTypeUseCountWarning.Set(msg);
+                                        }
                                     }
-                                }
 
-                                if (wafer.WaferType == WaferType.ED && maintenanceItemEDWaferUserTime.StartValue > 0 && wafer.UseTime > maintenanceItemEDWaferUserTime.StartValue && wafer.UseTime < maintenanceItemEDWaferUserTime.LimitValue)
-                                {
-
-                                    if (maintenanceItemEDWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString() ||
-                                        maintenanceItemEDWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString()
-
-                                        )
+                                    if (maintenanceItemWaferUserTime.StartValue > 0 && wafer.UseTime > maintenanceItemWaferUserTime.StartValue && wafer.UseTime < maintenanceItemWaferUserTime.LimitValue)
                                     {
-                                        var currentValue = DateTimeUtil.SecondToHHmmss(maintenanceItemEDWaferUserTime.CurrentValue.ToString());
-                                        var minValue = DateTimeUtil.SecondToHHmmss(maintenanceItemEDWaferUserTime.StartValue.ToString());
-                                        var maxValue = DateTimeUtil.SecondToHHmmss(maintenanceItemEDWaferUserTime.LimitValue.ToString());
-                                        var msg = pm.GetAlarmWarningMsg(maintenanceItemEDWaferUserTime, true, currentValue, minValue, maxValue);
 
-                                        Singleton<EquipmentManager>.Instance.FDWaferTypeUseTimeWarning.Set(msg);
-                                    }
+                                        if (maintenanceItemWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString() ||
+                                            maintenanceItemWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                                        {
+                                            var currentValue = DateTimeUtil.SecondToHHmmss(maintenanceItemWaferUserTime.CurrentValue.ToString());
+                                            var minValue = DateTimeUtil.SecondToHHmmss(maintenanceItemWaferUserTime.StartValue.ToString());
+                                            var maxValue = DateTimeUtil.SecondToHHmmss(maintenanceItemWaferUserTime.LimitValue.ToString());
+                                            var msg = pm.GetAlarmWarningMsg(maintenanceItemWaferUserTime, true, currentValue, minValue, maxValue);
 
-                                }
+                                            Singleton<EquipmentManager>.Instance.FDWaferTypeUseTimeWarning.Set(msg);
+                                        }
 
-                                if (wafer.WaferType == WaferType.ED && maintenanceItemEDWaferThickness.StartValue > 0 && wafer.UseThick > maintenanceItemEDWaferThickness.StartValue && wafer.UseThick < maintenanceItemEDWaferThickness.LimitValue)
-                                {
-                                    if (maintenanceItemEDWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString() ||
-                                        maintenanceItemEDWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString())
-                                    {
-                                        var msg = pm.GetAlarmWarningMsg(maintenanceItemEDWaferThickness);
-                                        Singleton<EquipmentManager>.Instance.FDWaferTypeThicknessWarning.Set(msg);
                                     }
-                                }
 
-                                if (wafer.WaferType == WaferType.ED && maintenanceItemEDCarrierUseFreq.StartValue > 0 && wafer.UseCount >= maintenanceItemEDCarrierUseFreq.LimitValue)
-                                {
-
-                                    if (maintenanceItemEDCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString())
+                                    if (maintenanceItemWaferThickness.StartValue > 0 && wafer.UseThick > maintenanceItemWaferThickness.StartValue && wafer.UseThick < maintenanceItemWaferThickness.LimitValue)
                                     {
-                                        var msg = pm.GetAlarmWarningMsg(maintenanceItemEDCarrierUseFreq);
-                                        Singleton<EquipmentManager>.Instance.FDWaferTypeUseCountAlarm.Set(msg);
-                                        return Result.FAIL;
+                                        if (maintenanceItemWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString() ||
+                                            maintenanceItemWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                                        {
+                                            var msg = pm.GetAlarmWarningMsg(maintenanceItemWaferThickness, false, wafer.UseThick.ToString(), maintenanceItemWaferThickness.StartValue.ToString(), maintenanceItemWaferThickness.LimitValue.ToString());
+                                            Singleton<EquipmentManager>.Instance.FDWaferTypeThicknessWarning.Set(msg);
+                                        }
                                     }
-                                    else if (maintenanceItemEDCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+
+                                    if (maintenanceItemCarrierUseFreq.StartValue > 0 && wafer.UseCount >= maintenanceItemCarrierUseFreq.LimitValue)
                                     {
-                                        var msg = pm.GetAlarmWarningMsg(maintenanceItemEDCarrierUseFreq);
 
-                                        if (string.IsNullOrEmpty(maintenanceItemEDCarrierUseFreq.AssociationProcessRecipeName))
+                                        if (maintenanceItemCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString())
                                         {
+                                            var msg = pm.GetAlarmWarningMsg(maintenanceItemCarrierUseFreq, false, wafer.UseCount.ToString(), maintenanceItemCarrierUseFreq.StartValue.ToString(), maintenanceItemCarrierUseFreq.LimitValue.ToString());
                                             Singleton<EquipmentManager>.Instance.FDWaferTypeUseCountAlarm.Set(msg);
                                             return Result.FAIL;
                                         }
-                                        Singleton<EquipmentManager>.Instance.FDWaferTypeUseCountAlarm.Set(msg);
-                                        pm.TriggerJobAutoStart(maintenanceItemEDCarrierUseFreq.AssociationProcessRecipeName, RecipeExecEntryEnum.EDWaferRangeTrigger);
-                                        LOG.Info($"{msg} Trigger {maintenanceItemEDCarrierUseFreq.AssociationProcessRecipeName}");
-                                        return Result.FAIL;
+                                        else if (maintenanceItemCarrierUseFreq.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                                        {
+                                            var msg = pm.GetAlarmWarningMsg(maintenanceItemCarrierUseFreq);
+
+                                            if (string.IsNullOrEmpty(maintenanceItemCarrierUseFreq.AssociationProcessRecipeName))
+                                            {
+                                                Singleton<EquipmentManager>.Instance.FDWaferTypeUseCountAlarm.Set(msg);
+                                                return Result.FAIL;
+                                            }
+                                            Singleton<EquipmentManager>.Instance.FDWaferTypeUseCountAlarm.Set(msg);
+                                            pm.TriggerJobAutoStart(maintenanceItemCarrierUseFreq.AssociationProcessRecipeName, RecipeExecEntryEnum.EDWaferRangeTrigger);
+                                            LOG.Info($"{msg} Trigger {maintenanceItemCarrierUseFreq.AssociationProcessRecipeName}");
+                                            return Result.FAIL;
 
+                                        }
                                     }
-                                }
 
-                                if (wafer.WaferType == WaferType.ED && maintenanceItemEDWaferUserTime.StartValue > 0 && wafer.UseTime >= maintenanceItemEDWaferUserTime.LimitValue)
-                                {
+                                    if (maintenanceItemWaferUserTime.StartValue > 0 && wafer.UseTime >= maintenanceItemWaferUserTime.LimitValue)
+                                    {
 
-                                    var currentValue = DateTimeUtil.SecondToHHmmss(maintenanceItemEDWaferUserTime.CurrentValue.ToString());
-                                    var minValue = DateTimeUtil.SecondToHHmmss(maintenanceItemEDWaferUserTime.StartValue.ToString());
-                                    var maxValue = DateTimeUtil.SecondToHHmmss(maintenanceItemEDWaferUserTime.LimitValue.ToString());
-                                    var msg = pm.GetAlarmWarningMsg(maintenanceItemEDWaferUserTime, true, currentValue, minValue, maxValue);
 
-                                    if (maintenanceItemEDWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString())
-                                    {
-                                        Singleton<EquipmentManager>.Instance.FDWaferTypeUseTimeAlarm.Set(msg);
-                                        return Result.FAIL;
-                                    }
-                                    else if (maintenanceItemEDWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
-                                    {
+                                        var currentValue = DateTimeUtil.SecondToHHmmss(maintenanceItemWaferUserTime.CurrentValue.ToString());
+                                        var minValue = DateTimeUtil.SecondToHHmmss(maintenanceItemWaferUserTime.StartValue.ToString());
+                                        var maxValue = DateTimeUtil.SecondToHHmmss(maintenanceItemWaferUserTime.LimitValue.ToString());
+                                        var msg = pm.GetAlarmWarningMsg(maintenanceItemWaferUserTime, true, currentValue, minValue, maxValue);
 
-                                        if (string.IsNullOrEmpty(maintenanceItemEDWaferUserTime.AssociationProcessRecipeName))
+                                        if (maintenanceItemWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString())
                                         {
                                             Singleton<EquipmentManager>.Instance.FDWaferTypeUseTimeAlarm.Set(msg);
                                             return Result.FAIL;
                                         }
+                                        else if (maintenanceItemWaferUserTime.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                                        {
 
-                                        Singleton<EquipmentManager>.Instance.FDWaferTypeUseTimeAlarm.Set(msg);
-                                        pm.TriggerJobAutoStart(maintenanceItemEDWaferUserTime.AssociationProcessRecipeName, RecipeExecEntryEnum.EDWaferRangeTrigger);
-                                        LOG.Info($"{msg} Trigger {maintenanceItemEDWaferUserTime.AssociationProcessRecipeName}");
-                                        return Result.FAIL;
-
-                                    }
-                                }
+                                            if (string.IsNullOrEmpty(maintenanceItemWaferUserTime.AssociationProcessRecipeName))
+                                            {
+                                                Singleton<EquipmentManager>.Instance.FDWaferTypeUseTimeAlarm.Set(msg);
+                                                return Result.FAIL;
+                                            }
 
-                                if (wafer.WaferType == WaferType.ED && maintenanceItemEDWaferThickness.StartValue > 0 && wafer.UseThick >= maintenanceItemEDWaferThickness.LimitValue)
-                                {
+                                            Singleton<EquipmentManager>.Instance.FDWaferTypeUseTimeAlarm.Set(msg);
+                                            pm.TriggerJobAutoStart(maintenanceItemWaferUserTime.AssociationProcessRecipeName, RecipeExecEntryEnum.EDWaferRangeTrigger);
+                                            LOG.Info($"{msg} Trigger {maintenanceItemWaferUserTime.AssociationProcessRecipeName}");
+                                            return Result.FAIL;
 
-                                    if (maintenanceItemEDWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString())
-                                    {
-                                        var msg = pm.GetAlarmWarningMsg(maintenanceItemEDWaferThickness);
-                                        Singleton<EquipmentManager>.Instance.FDWaferTypeThicknessAlarm.Set(msg);
-                                        return Result.FAIL;
+                                        }
                                     }
-                                    else if (maintenanceItemEDWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+
+                                    if (maintenanceItemWaferThickness.StartValue > 0 && wafer.UseThick >= maintenanceItemWaferThickness.LimitValue)
                                     {
-                                        var msg = pm.GetAlarmWarningMsg(maintenanceItemEDWaferThickness, true);
 
-                                        if (string.IsNullOrEmpty(maintenanceItemEDWaferThickness.AssociationProcessRecipeName))
+                                        if (maintenanceItemWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.AlarmReport.ToString())
                                         {
+                                            var msg = pm.GetAlarmWarningMsg(maintenanceItemWaferThickness, false, wafer.UseThick.ToString(), maintenanceItemWaferThickness.StartValue.ToString(), maintenanceItemWaferThickness.LimitValue.ToString());
                                             Singleton<EquipmentManager>.Instance.FDWaferTypeThicknessAlarm.Set(msg);
                                             return Result.FAIL;
                                         }
-                                        Singleton<EquipmentManager>.Instance.FDWaferTypeThicknessAlarm.Set(msg);
-                                        pm.TriggerJobAutoStart(maintenanceItemEDWaferThickness.AssociationProcessRecipeName, RecipeExecEntryEnum.EDWaferRangeTrigger);
-                                        LOG.Info($"{msg} Trigger {maintenanceItemEDWaferThickness.AssociationProcessRecipeName}");
-                                        return Result.FAIL;
+                                        else if (maintenanceItemWaferThickness.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
+                                        {
+                                            var msg = pm.GetAlarmWarningMsg(maintenanceItemWaferThickness, true);
+
+                                            if (string.IsNullOrEmpty(maintenanceItemWaferThickness.AssociationProcessRecipeName))
+                                            {
+                                                Singleton<EquipmentManager>.Instance.FDWaferTypeThicknessAlarm.Set(msg);
+                                                return Result.FAIL;
+                                            }
+                                            Singleton<EquipmentManager>.Instance.FDWaferTypeThicknessAlarm.Set(msg);
+                                            pm.TriggerJobAutoStart(maintenanceItemWaferThickness.AssociationProcessRecipeName, RecipeExecEntryEnum.EDWaferRangeTrigger);
+                                            LOG.Info($"{msg} Trigger {maintenanceItemWaferThickness.AssociationProcessRecipeName}");
+                                            return Result.FAIL;
 
+                                        }
                                     }
+
                                 }
-                                #endregion
 
+                                #endregion
                             }
                             #endregion
                         }