public static int CalculateProperEqpCount(AssignEqp assignEqp) { WorkStep workStep = assignEqp.WorkStep; int loadedEqpCount = workStep.LoadedEqpCount; DoubleDictionary <Step, object, StepPlan> stepPlans = StepPlanManager.Current.RunPlans; DateTime nowDt = FindHelper.GetNowDT(); foreach (var stepPlan in stepPlans) { if (stepPlan.Step.StepID != workStep.Key.ToString()) { continue; } if (stepPlan.StepTargetList.Count == 0) { continue; } Mozart.SeePlan.DataModel.StepTarget target = stepPlan.StepTargetList.First(); Tuple <string, string, string> key = target.Key as Tuple <string, string, string>; string lineID = key.Item1; string stepID = key.Item2; string prodID = key.Item3; double remainTargetQty = target.CurrentQty; #if DEBUG if (stepID == "S0100" && prodID == "ASSY_A01") { Console.WriteLine(); } #endif TimeSpan remainTime = target.DueDate - nowDt; double remainSec = remainTime.TotalSeconds; int eqpCount = 0; double currAvailableQty = 0d; var loadedEqps = workStep.LoadedEqps; foreach (var loadedEqp in loadedEqps) { if (currAvailableQty >= remainTargetQty) { break; } MicronBEAssyEqp eqp = FindHelper.FindEquipment(loadedEqp.Target.EqpID); double tactTime = GetTactTime(lineID, stepID, prodID, eqp); currAvailableQty += remainSec / tactTime; eqpCount++; } return(eqpCount); } return(0); }
/// <summary> /// </summary> /// <param name="lot"/> /// <param name="st"/> /// <param name="handled"/> /// <param name="prevReturnValue"/> /// <returns/> public bool FILTER_STEP_TARGET0(Mozart.SeePlan.Simulation.ILot lot, Mozart.SeePlan.DataModel.StepTarget st, ref bool handled, bool prevReturnValue) { FabLot flot = lot as FabLot; if (flot.OwnerType == Constants.OwnerE) { //E Type Demand 생성시 비교필요 2019.6.27기준으로 Demand는 P Type만 존재, 패깅 E Type은 패깅하지 않음. return(true); } return(false); }
/// <summary> /// </summary> /// <param name="pegTarget"/> /// <param name="stepPlanKey"/> /// <param name="step"/> /// <param name="isRun"/> /// <param name="handled"/> /// <param name="prevReturnValue"/> /// <returns/> public Mozart.SeePlan.DataModel.StepTarget CREATE_STEP_TARGET0(PegTarget pegTarget, object stepPlanKey, Step step, bool isRun, ref bool handled, Mozart.SeePlan.DataModel.StepTarget prevReturnValue) { try { Mozart.SeePlan.DataModel.StepTarget st = new Mozart.SeePlan.DataModel.StepTarget(stepPlanKey, step, pegTarget.Qty, pegTarget.DueDate, isRun); return(st); } catch (Exception e) { WriteHelper.WriteErrorHistory(ErrorLevel.FATAL, string.Format("ErrorMessage : {0} MethodName : {1}", e.Message, System.Reflection.MethodInfo.GetCurrentMethod().Name)); } return(default(Mozart.SeePlan.DataModel.StepTarget)); }
/// <summary> /// </summary> /// <param name="x"/> /// <param name="y"/> /// <param name="handled"/> /// <param name="prevReturnValue"/> /// <returns/> public int COMPARE_STEP_TARGET0(Mozart.SeePlan.DataModel.StepTarget x, Mozart.SeePlan.DataModel.StepTarget y, ref bool handled, int prevReturnValue) { int cmp = x.DueDate.CompareTo(y.DueDate); return(cmp); }
/// <summary> /// </summary> /// <param name="pegTarget"/> /// <param name="stepPlanKey"/> /// <param name="step"/> /// <param name="isRun"/> /// <param name="handled"/> /// <param name="prevReturnValue"/> /// <returns/> public Mozart.SeePlan.DataModel.StepTarget CREATE_STEP_TARGET0(Mozart.SeePlan.Pegging.PegTarget pegTarget, object stepPlanKey, Mozart.SeePlan.DataModel.Step step, bool isRun, ref bool handled, Mozart.SeePlan.DataModel.StepTarget prevReturnValue) { var pt = pegTarget as FabPegTarget; var st = new FabStepTarget(stepPlanKey, step, pt.Qty, pt.DueDate, isRun); st.Mo = pegTarget.MoPlan as FabMoPlan; return(st); }