Example #1
0
        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);
        }
Example #2
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);
        }
Example #3
0
        /// <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));
        }
Example #4
0
        /// <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);
        }
Example #5
0
        /// <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);
        }