コード例 #1
0
ファイル: FilterHelper.cs プロジェクト: yichunbong/CSOT
        private static bool ExistInflowWip(FabAoEquipment eqp, JobFilterInfo info)
        {
            var wf = WeightHelper.GetWeightFactor(eqp.Target.Preset, Constants.WF_ALLOW_RUN_DOWN_TIME);

            if (wf == null || wf.Factor == 0)
            {
                return(false);
            }

            decimal inflowHour = (decimal)wf.Criteria[0];

            if (inflowHour <= 0)
            {
                return(false);
            }

            var     idleTime   = eqp.GetIdleRunTime();
            decimal adjustHour = inflowHour - Convert.ToDecimal(idleTime.TotalHours);

            if (adjustHour <= 0)
            {
                return(false);
            }

            var inflowQty = InFlowMaster.GetAllowRunDownWip(eqp, info.ProductID, info.ProductVersion, info.OwnerType, info.Step, adjustHour);

            return(inflowQty > 0);
        }
コード例 #2
0
ファイル: WeightHelper.cs プロジェクト: yichunbong/CSOT
        public static FabLot NeedAllowRunDown_Dummy(AoEquipment aeqp, IList <IHandlingBatch> wips)
        {
            //TODO : Current Wait + PreviousStep Run + Inflow Arrivedin
            FabAoEquipment eqp = aeqp.ToFabAoEquipment();

            //if (eqp.EqpID == "THCVD400" && eqp.NowDT >= LcdHelper.StringToDateTime("20200211 091146"))
            //	Console.WriteLine("B");

            decimal inflowHours;

            if (CanMakeDummy(eqp, wips, out inflowHours) == false)
            {
                return(null);
            }

            var     last     = eqp.GetLastPlan();     //eqp.LastPlan as FabPlanInfo;
            FabStep lastStep = last.Step as FabStep;
            FabLot  dummy    = CreateHelper.CreateDispatchDummyLot(lastStep, last);

            if (IsLoadableDummy(eqp, dummy, inflowHours) == false)
            {
                return(null);
            }

            var     idleTime   = eqp.GetIdleRunTime();
            decimal adjustHour = inflowHours - Convert.ToDecimal(idleTime.TotalHours);

            //직전 Step에 Run Wip이 존재하는 경우는 대기함
            bool isExistPrevStepRunWip = InFlowMaster.ExistPrevStepRunWip(eqp, last.ProductID, last.ProductVersion, last.OwnerType, lastStep, adjustHour);

            if (isExistPrevStepRunWip == false)
            {
                //AllowRunDown Factor
                decimal inflowQty = InFlowMaster.GetAllowRunDownWip(eqp, last.ProductID, last.ProductVersion, last.OwnerType, lastStep, adjustHour);

                if (inflowQty <= 0)
                {
                    inflowQty += eqp.GetFilteredWipQty(last);
                }

                if (inflowQty <= 0)
                {
                    return(null);
                }
            }

            dummy.DispatchInTime = eqp.NowDT;

            return(dummy);
        }