|
@@ -23,8 +23,11 @@ namespace MECF.Framework.Common.DataCenter
|
|
{
|
|
{
|
|
public ScheduleMaintenanceDataItem DataItem { get; private set; }
|
|
public ScheduleMaintenanceDataItem DataItem { get; private set; }
|
|
|
|
|
|
- public ScheduleMaintenanceData(string item, string display, string unit, float startValue, float limitValue, string maintenanceProcessing, string path, string additionInformationName = "", string additionInformationDisplay = "", string associationProcessRecipeName = "", string additionInformationDisplaySupplement = "")
|
|
|
|
|
|
+ public ScheduleMaintenanceData(string item, string unit, string path, string additionInformationName = "", string additionInformationDisplay = "", float startValue = 0, float limitValue = 0, string display = "", string maintenanceProcessing = "None", string associationProcessRecipeName = "", string additionInformationDisplaySupplement = "")
|
|
{
|
|
{
|
|
|
|
+ if (string.IsNullOrEmpty(display))
|
|
|
|
+ display = item;
|
|
|
|
+
|
|
ScheduleMaintenanceDataManager.Instance.Subscribe(item, display, unit, startValue, limitValue, maintenanceProcessing, path, additionInformationName, additionInformationDisplay, associationProcessRecipeName, additionInformationDisplaySupplement);
|
|
ScheduleMaintenanceDataManager.Instance.Subscribe(item, display, unit, startValue, limitValue, maintenanceProcessing, path, additionInformationName, additionInformationDisplay, associationProcessRecipeName, additionInformationDisplaySupplement);
|
|
|
|
|
|
DataItem = ScheduleMaintenanceDataManager.Instance.GetItem(item);
|
|
DataItem = ScheduleMaintenanceDataManager.Instance.GetItem(item);
|
|
@@ -159,8 +162,6 @@ namespace MECF.Framework.Common.DataCenter
|
|
_items[item.Item] = item;
|
|
_items[item.Item] = item;
|
|
}
|
|
}
|
|
|
|
|
|
- InitScheduleMaintenance();
|
|
|
|
- InitAllData();
|
|
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
catch (Exception ex)
|
|
{
|
|
{
|
|
@@ -416,264 +417,18 @@ namespace MECF.Framework.Common.DataCenter
|
|
|
|
|
|
#region
|
|
#region
|
|
|
|
|
|
- private Dictionary<string, string> _stepThickness;
|
|
|
|
-
|
|
|
|
- private Dictionary<MaintenanceItemEnum, ScheduleMaintenanceData> _scheduleMaintenanceDataDictionary;
|
|
|
|
-
|
|
|
|
- private void InitScheduleMaintenance()
|
|
|
|
- {
|
|
|
|
-
|
|
|
|
- _scheduleMaintenanceDataDictionary = new Dictionary<MaintenanceItemEnum, ScheduleMaintenanceData>
|
|
|
|
- {
|
|
|
|
- { MaintenanceItemEnum.SDCarrierUseFreq, new ScheduleMaintenanceData(MaintenanceItemEnum.SDCarrierUseFreq.ToString(),"SDCarrierUseFreq", "Times", 0, 0, "None", "CarrierWafer.SieDummy", "Carrier Kind", "Side Dummy") },
|
|
|
|
- { MaintenanceItemEnum.SDWaferThickness, new ScheduleMaintenanceData(MaintenanceItemEnum.SDWaferThickness.ToString(), "SDWaferThickness", "Å", 0, 0, "None", "CarrierWafer.SieDummy", "Carrier Kind", "Side Dummy") },
|
|
|
|
- { MaintenanceItemEnum.SDUsableDummyWafer, new ScheduleMaintenanceData(MaintenanceItemEnum.SDUsableDummyWafer.ToString(), "SDWaferRemain", "Sheets", 0, 0, "None", "CarrierWafer.SieDummy", "Carrier Kind", "Side Dummy") },
|
|
|
|
- { MaintenanceItemEnum.SDBufferRackStayTime, new ScheduleMaintenanceData(MaintenanceItemEnum.SDBufferRackStayTime.ToString(), "SDCarrierStay", "h:m", 0, 0, "None", "CarrierWafer.SieDummy", "Carrier Kind", "Side Dummy") },
|
|
|
|
- { MaintenanceItemEnum.SDWaferUserTime, new ScheduleMaintenanceData(MaintenanceItemEnum.SDWaferUserTime.ToString(), "SDWaferUserTime", "h:m", 0, 0, "None", "CarrierWafer.SieDummy", "Carrier Kind", "Side Dummy") },
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- { MaintenanceItemEnum.FDCarrierUseFreq, new ScheduleMaintenanceData(MaintenanceItemEnum.FDCarrierUseFreq.ToString(),"FDCarrierUseFreq", "Times", 0, 0, "None", "CarrierWafer.FillDummy", "Carrier Kind", "Fill Dummy") },
|
|
|
|
- { MaintenanceItemEnum.FDWaferThickness, new ScheduleMaintenanceData(MaintenanceItemEnum.FDWaferThickness.ToString(),"FDWaferThickness", "Å", 0, 0, "None", "CarrierWafer.FillDummy", "Carrier Kind", "Fill Dummy") },
|
|
|
|
- { MaintenanceItemEnum.FDUsableDummyWafer, new ScheduleMaintenanceData(MaintenanceItemEnum.FDUsableDummyWafer.ToString(),"FDWaferRemain", "Sheets", 0, 0, "None", "CarrierWafer.FillDummy", "Carrier Kind", "Fill Dummy") },
|
|
|
|
- { MaintenanceItemEnum.FDBufferRackStayTime, new ScheduleMaintenanceData(MaintenanceItemEnum.FDBufferRackStayTime.ToString(), "FDCarrierStay", "h:m", 0, 0, "None", "CarrierWafer.FillDummy", "Carrier Kind", "Fill Dummy") },
|
|
|
|
- { MaintenanceItemEnum.FDWaferUserTime, new ScheduleMaintenanceData(MaintenanceItemEnum.FDWaferUserTime.ToString(), "FDWaferUserTime", "h:m", 0, 0, "None", "CarrierWafer.FillDummy", "Carrier Kind", "Fill Dummy") },
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- { MaintenanceItemEnum.BoatRecipeThickness1, new ScheduleMaintenanceData(MaintenanceItemEnum.BoatRecipeThickness1.ToString(), "BoatRecipeThickness1", "Å", 0, 0, "None", "Boat", "", "") },
|
|
|
|
- { MaintenanceItemEnum.BoatTCUseTime, new ScheduleMaintenanceData(MaintenanceItemEnum.BoatTCUseTime.ToString(), "BoatTCUseTime", "h:m", 0, 0, "None", "Boat", "", "") },
|
|
|
|
- { MaintenanceItemEnum.BoatCKDUseTime, new ScheduleMaintenanceData(MaintenanceItemEnum.BoatCKDUseTime.ToString(), "BoatCKDUseTime", "h:m", 0, 0, "None", "Boat", "", "") },
|
|
|
|
- { MaintenanceItemEnum.BoatPUMPUseTime, new ScheduleMaintenanceData(MaintenanceItemEnum.BoatPUMPUseTime.ToString(), "BoatPUMPUseTime", "h:m", 0, 0, "None", "Boat", "", "") },
|
|
|
|
-
|
|
|
|
-
|
|
|
|
|
|
|
|
- { MaintenanceItemEnum.NonOperationTime1, new ScheduleMaintenanceData(MaintenanceItemEnum.NonOperationTime1.ToString(), "NonOperationTime1", "h:m", 0, 0, "None", "Conditioning", "", "") },
|
|
|
|
- { MaintenanceItemEnum.NonOperationTime2, new ScheduleMaintenanceData(MaintenanceItemEnum.NonOperationTime2.ToString(), "NonOperationTime2", "h:m", 0, 0, "None", "Conditioning", "", "") },
|
|
|
|
|
|
|
|
- { MaintenanceItemEnum.RecipeExecuteFreq, new ScheduleMaintenanceData(MaintenanceItemEnum.RecipeExecuteFreq.ToString(), "Recipe Run Freq", "Times", 0, 0, "None", "Reactor.Recipe", "Select Recipe", "") },
|
|
|
|
- { MaintenanceItemEnum.RecipeThickness, new ScheduleMaintenanceData(MaintenanceItemEnum.RecipeThickness.ToString(), "Recipe Thickness", "Å", 0, 0, "None", "Reactor.Recipe", "Select Recipe", "") },
|
|
|
|
|
|
|
|
|
|
|
|
- { MaintenanceItemEnum.RecipeStepExecuteFreq1, new ScheduleMaintenanceData(MaintenanceItemEnum.RecipeStepExecuteFreq1.ToString(), "Recipe StepRunTime1", "Times", 0, 0, "None", "Reactor.StepRunFreq", "Step ID", "") },
|
|
|
|
- { MaintenanceItemEnum.RecipeStepExecuteFreq2, new ScheduleMaintenanceData(MaintenanceItemEnum.RecipeStepExecuteFreq2.ToString(), "Recipe StepRunTime2", "Times", 0, 0, "None", "Reactor.StepRunFreq", "Step ID", "") },
|
|
|
|
- { MaintenanceItemEnum.RecipeStepExecuteFreq3, new ScheduleMaintenanceData(MaintenanceItemEnum.RecipeStepExecuteFreq3.ToString(), "Recipe StepRunTime3", "Times", 0, 0, "None", "Reactor.StepRunFreq", "Step ID", "") },
|
|
|
|
|
|
|
|
|
|
|
|
- { MaintenanceItemEnum.RecipeStepExecuteTime1, new ScheduleMaintenanceData(MaintenanceItemEnum.RecipeStepExecuteTime1.ToString(), "Recipe StepRunTime1", "h:m", 0, 0, "None", "Reactor.StepRunTime", "Step ID", "") },
|
|
|
|
- { MaintenanceItemEnum.RecipeStepExecuteTime2, new ScheduleMaintenanceData(MaintenanceItemEnum.RecipeStepExecuteTime2.ToString(), "Recipe StepRunTime2", "h:m", 0, 0, "None", "Reactor.StepRunTime", "Step ID", "") },
|
|
|
|
- { MaintenanceItemEnum.RecipeStepExecuteTime3, new ScheduleMaintenanceData(MaintenanceItemEnum.RecipeStepExecuteTime3.ToString(), "Recipe StepRunTime3", "h:m", 0, 0, "None", "Reactor.StepRunTime", "Step ID", "") },
|
|
|
|
- { MaintenanceItemEnum.RecipeStepExecuteTime4, new ScheduleMaintenanceData(MaintenanceItemEnum.RecipeStepExecuteTime4.ToString(), "Recipe StepRunTime4", "h:m", 0, 0, "None", "Reactor.StepRunTime", "Step ID", "") },
|
|
|
|
- { MaintenanceItemEnum.RecipeStepExecuteTime5, new ScheduleMaintenanceData(MaintenanceItemEnum.RecipeStepExecuteTime5.ToString(), "Recipe StepRunTime5", "h:m", 0, 0, "None", "Reactor.StepRunTime", "Step ID", "") },
|
|
|
|
- { MaintenanceItemEnum.RecipeStepExecuteTime6, new ScheduleMaintenanceData(MaintenanceItemEnum.RecipeStepExecuteTime6.ToString(), "Recipe StepRunTime6", "h:m", 0, 0, "None", "Reactor.StepRunTime", "Step ID", "") },
|
|
|
|
- { MaintenanceItemEnum.RecipeStepExecuteTime7, new ScheduleMaintenanceData(MaintenanceItemEnum.RecipeStepExecuteTime7.ToString(), "Recipe StepRunTime7", "h:m", 0, 0, "None", "Reactor.StepRunTime", "Step ID", "") },
|
|
|
|
- { MaintenanceItemEnum.RecipeStepExecuteTime8, new ScheduleMaintenanceData(MaintenanceItemEnum.RecipeStepExecuteTime8.ToString(), "Recipe StepRunTime8", "h:m", 0, 0, "None", "Reactor.StepRunTime", "Step ID", "") },
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- { MaintenanceItemEnum.RecipeThickness1_Step, new ScheduleMaintenanceData(MaintenanceItemEnum.RecipeThickness1_Step.ToString(), "Recipe StepThickness1", "Å", 0, 0, "None", "Reactor.StepThickness", "Step Group", "") },
|
|
|
|
- { MaintenanceItemEnum.RecipeThickness2_Step, new ScheduleMaintenanceData(MaintenanceItemEnum.RecipeThickness2_Step.ToString(), "Recipe StepThickness2", "Å", 0, 0, "None", "Reactor.StepThickness", "Step Group", "") },
|
|
|
|
- { MaintenanceItemEnum.RecipeThickness3_Step, new ScheduleMaintenanceData(MaintenanceItemEnum.RecipeThickness3_Step.ToString(), "Recipe StepThickness3", "Å", 0, 0, "None", "Reactor.StepThickness", "Step Group", "") },
|
|
|
|
- { MaintenanceItemEnum.RecipeThickness4_Step, new ScheduleMaintenanceData(MaintenanceItemEnum.RecipeThickness4_Step.ToString(), "Recipe StepThickness4", "Å", 0, 0, "None", "Reactor.StepThickness", "Step Group", "") },
|
|
|
|
- { MaintenanceItemEnum.RecipeThickness5_Step, new ScheduleMaintenanceData(MaintenanceItemEnum.RecipeThickness5_Step.ToString(), "Recipe StepThickness5", "Å", 0, 0, "None", "Reactor.StepThickness", "Step Group", "") },
|
|
|
|
- { MaintenanceItemEnum.RecipeThickness6_Step, new ScheduleMaintenanceData(MaintenanceItemEnum.RecipeThickness6_Step.ToString(), "Recipe StepThickness6", "Å", 0, 0, "None", "Reactor.StepThickness", "Step Group", "") },
|
|
|
|
- { MaintenanceItemEnum.RecipeThickness7_Step, new ScheduleMaintenanceData(MaintenanceItemEnum.RecipeThickness7_Step.ToString(), "Recipe StepThickness7", "Å", 0, 0, "None", "Reactor.StepThickness", "Step Group", "") },
|
|
|
|
- { MaintenanceItemEnum.RecipeThickness8_Step, new ScheduleMaintenanceData(MaintenanceItemEnum.RecipeThickness8_Step.ToString(), "Recipe StepThickness8", "Å", 0, 0, "None", "Reactor.StepThickness", "Step Group", "") }
|
|
|
|
- };
|
|
|
|
- _stepThickness = new Dictionary<string, string>()
|
|
|
|
- {
|
|
|
|
- {"1","WAIT"},
|
|
|
|
- {"2","Name"},
|
|
|
|
- };
|
|
|
|
- }
|
|
|
|
- #region DataItemEnum.Reactor 模块
|
|
|
|
-
|
|
|
|
- /// <summary>
|
|
|
|
- /// 根据RecipeStep +StepGroup统计 累计膜厚
|
|
|
|
- /// </summary>
|
|
|
|
- /// <param name="recipeName"></param>
|
|
|
|
- public void UpdateRecipeStepGroupThickness(string stepName, float thickness)
|
|
|
|
- {
|
|
|
|
- if (string.IsNullOrEmpty(stepName) || thickness <= 0)
|
|
|
|
- return;
|
|
|
|
- var stepNo = stepName.Split(':').FirstOrDefault();
|
|
|
|
- var list = Item.Values
|
|
|
|
- .Where(a => !string.IsNullOrEmpty(a.AdditionInformationDisplaySupplement))
|
|
|
|
- .Where(a => a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.StepThickness}")
|
|
|
|
- .Where(a => a.AdditionInformationDisplaySupplement.Split(',').Contains(stepNo))
|
|
|
|
- .ToList();
|
|
|
|
- if (list != null && list.Count > 0)
|
|
|
|
- {
|
|
|
|
- foreach (var item in list)
|
|
|
|
- {
|
|
|
|
- Increase(item.Item, thickness);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- /// <summary>
|
|
|
|
- /// 根据RecipeStep统计 Step执行Time 累计时间
|
|
|
|
- /// </summary>
|
|
|
|
- /// <param name="recipeName"></param>
|
|
|
|
- public void UpdateRecipeStepRunTime(string stepName, double stepTime)
|
|
|
|
- {
|
|
|
|
- if (string.IsNullOrEmpty(stepName) || stepTime <= 0)
|
|
|
|
- return;
|
|
|
|
- var stepNo = stepName.Split(':').FirstOrDefault();
|
|
|
|
- var list = Item.Values.Where(a => a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.StepRunTime}" && a.AdditionInformationDisplay == stepNo).ToList();
|
|
|
|
- if (list != null && list.Count > 0)
|
|
|
|
- {
|
|
|
|
- foreach (var item in list)
|
|
|
|
- {
|
|
|
|
- Increase(item.Item, (float)stepTime);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- /// <summary>
|
|
|
|
- /// 根据RecipeStep统计 Step执行 累计次数
|
|
|
|
- /// </summary>
|
|
|
|
- /// <param name="recipeName"></param>
|
|
|
|
- public void UpdateRecipeStepFre(string stepName)
|
|
|
|
- {
|
|
|
|
- if (string.IsNullOrEmpty(stepName))
|
|
|
|
- return;
|
|
|
|
- var stepNo = stepName.Split(':').FirstOrDefault();
|
|
|
|
- var list = Item.Values.Where(a => a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.StepRunFreq}" && a.AdditionInformationDisplay == stepNo).ToList();
|
|
|
|
- if (list != null && list.Count > 0)
|
|
|
|
- {
|
|
|
|
- foreach (var item in list)
|
|
|
|
- {
|
|
|
|
- Increase(item.Item);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- /// <summary>
|
|
|
|
- /// 根据RecipeName统计 Recipe执行 累计次数
|
|
|
|
- /// </summary>
|
|
|
|
- /// <param name="processRecipeName"></param>
|
|
|
|
- public void UpdateRecipeFre(string recipeName)
|
|
|
|
- {
|
|
|
|
- if (string.IsNullOrEmpty(recipeName))
|
|
|
|
- return;
|
|
|
|
- var item = Item.Values.Where(a => a.Item == MaintenanceItemEnum.RecipeExecuteFreq.ToString() && a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.Recipe}" && a.AdditionInformationDisplay == recipeName).FirstOrDefault();
|
|
|
|
- if (item != null && item.Item == MaintenanceItemEnum.RecipeExecuteFreq.ToString())
|
|
|
|
- {
|
|
|
|
- Increase(item.Item);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- /// <summary>
|
|
|
|
- /// 根据RecipeName统计累计膜厚
|
|
|
|
- /// </summary>
|
|
|
|
- /// <param name="recipeName"></param>
|
|
|
|
- /// <param name="thickness"></param>
|
|
|
|
- public void UpdateRecipeTotalThickness(string recipeName, float thickness)
|
|
|
|
- {
|
|
|
|
- if (string.IsNullOrEmpty(recipeName) || thickness <= 0)
|
|
|
|
- return;
|
|
|
|
- var item = Item.Values.Where(a => a.Item == MaintenanceItemEnum.RecipeThickness.ToString() && a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.Recipe}" && a.AdditionInformationDisplay == recipeName).FirstOrDefault();
|
|
|
|
-
|
|
|
|
- if (item != null && item.Item == MaintenanceItemEnum.RecipeThickness.ToString())
|
|
|
|
- {
|
|
|
|
- Increase(item.Item, thickness);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- #endregion
|
|
|
|
- }
|
|
|
|
- public void UpdateRecipeStepThicknessAndTime(string stepName, float thickness, float timeS)
|
|
|
|
- {
|
|
|
|
- if (string.IsNullOrEmpty(stepName))
|
|
|
|
- return;
|
|
|
|
- var checkName = stepName;
|
|
|
|
- var nameParas = stepName.Split(':');
|
|
|
|
- if (nameParas != null && nameParas.Length > 1)
|
|
|
|
- checkName = nameParas[1];
|
|
|
|
- }
|
|
|
|
- public bool CheckScheduleMaintenanceBeforeJobStart(out string reason)
|
|
|
|
- {
|
|
|
|
- reason = "";
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- public void MaintenanceProcessingCommandExec(string maintenanceProcessing, Action<string> alarmReportExec, string warningMessage)
|
|
|
|
- {
|
|
|
|
- if (Enum.TryParse<MaintenanceProcessingCommandEnum>(maintenanceProcessing, out var command))
|
|
|
|
- {
|
|
|
|
- switch (command)
|
|
|
|
- {
|
|
|
|
- case MaintenanceProcessingCommandEnum.None:
|
|
|
|
- break;
|
|
|
|
- case MaintenanceProcessingCommandEnum.AlarmReport:
|
|
|
|
- alarmReportExec(warningMessage);
|
|
|
|
- break;
|
|
|
|
- case MaintenanceProcessingCommandEnum.JobProhibition:
|
|
|
|
- break;
|
|
|
|
- case MaintenanceProcessingCommandEnum.JobManualStart:
|
|
|
|
- break;
|
|
|
|
- case MaintenanceProcessingCommandEnum.JobAutoStart:
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- public void InitAllData()
|
|
|
|
- {
|
|
|
|
- InitScheduleMaintenance();
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public void UpdateSEDWafer()
|
|
|
|
- {
|
|
|
|
- if (_scheduleMaintenanceDataDictionary == null)
|
|
|
|
- {
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- var ccc = BinarySerializer<Dictionary<ModuleName, Dictionary<int, WaferInfo>>>.FromStream("WaferManager");
|
|
|
|
- List<WaferInfo> waferInfos = new List<WaferInfo>();
|
|
|
|
- if (ccc != null)
|
|
|
|
- {
|
|
|
|
- foreach (var moduleWafers in ccc)
|
|
|
|
- {
|
|
|
|
- waferInfos.AddRange(moduleWafers.Value.Select(a => a.Value));
|
|
|
|
- }
|
|
|
|
- if (waferInfos.Any(a => a.WaferType == WaferType.ED))
|
|
|
|
- {
|
|
|
|
-
|
|
|
|
- var maxEDUseCount = waferInfos.Where(a => a.WaferType == WaferType.ED).Max(a => a.UseCount);
|
|
|
|
- var maxEDUseThick = waferInfos.Where(a => a.WaferType == WaferType.ED).Max(a => a.UseThick);
|
|
|
|
- var maxEDUseTime = waferInfos.Where(a => a.WaferType == WaferType.ED).Max(a => a.UseTime);
|
|
|
|
-
|
|
|
|
- if (_scheduleMaintenanceDataDictionary.TryGetValue(MaintenanceItemEnum.FDCarrierUseFreq, out var FDCarrierUseFreq))
|
|
|
|
- FDCarrierUseFreq.SetValue(maxEDUseCount);
|
|
|
|
-
|
|
|
|
- if (_scheduleMaintenanceDataDictionary.TryGetValue(MaintenanceItemEnum.FDWaferThickness, out var FDWaferThickness))
|
|
|
|
- FDWaferThickness.SetValue(maxEDUseThick);
|
|
|
|
-
|
|
|
|
- if (_scheduleMaintenanceDataDictionary.TryGetValue(MaintenanceItemEnum.FDWaferUserTime, out var FDWaferUserTime))
|
|
|
|
- FDWaferUserTime.SetValue(maxEDUseTime);
|
|
|
|
- }
|
|
|
|
- if (waferInfos.Any(a => a.WaferType == WaferType.SD))
|
|
|
|
- {
|
|
|
|
-
|
|
|
|
- var maxSDUseCount = waferInfos.Where(a => a.WaferType == WaferType.SD).Max(a => a.UseCount);
|
|
|
|
- var maxSDUseThick = waferInfos.Where(a => a.WaferType == WaferType.SD).Max(a => a.UseThick);
|
|
|
|
- var maxSDUseTime = waferInfos.Where(a => a.WaferType == WaferType.SD).Max(a => a.UseTime);
|
|
|
|
- if (_scheduleMaintenanceDataDictionary.TryGetValue(MaintenanceItemEnum.SDCarrierUseFreq, out var SDCarrierUseFreq))
|
|
|
|
- SDCarrierUseFreq.SetValue(maxSDUseCount);
|
|
|
|
-
|
|
|
|
- if (_scheduleMaintenanceDataDictionary.TryGetValue(MaintenanceItemEnum.SDWaferThickness, out var SDWaferThickness))
|
|
|
|
- SDWaferThickness.SetValue(maxSDUseThick);
|
|
|
|
-
|
|
|
|
- if (_scheduleMaintenanceDataDictionary.TryGetValue(MaintenanceItemEnum.SDWaferUserTime, out var SDWaferUserTime))
|
|
|
|
- SDWaferUserTime.SetValue(maxSDUseTime);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
#endregion
|
|
#endregion
|
|
|
|
|
|
-
|
|
|
|
|
|
+
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|