示例#1
0
        private static bool IsLoadableEqpArrange(AoEquipment aeqp, FabLot lot)
        {
            var eqp = aeqp.ToFabAoEquipment();

            bool checkQty = true;

            if (InputMart.Instance.GlobalParameters.ApplyArrangeMType == false)
            {
                checkQty = false;
            }

            bool isLoadable = EqpArrangeMaster.IsLoadable(eqp, lot, checkQty);

            if (isLoadable == false)
            {
                return(false);
            }

            //1차 선택 (1차 : Mask 미고려 선택, 2차 : Mask 고려 후 선택)
            if (lot.CurrentEqpArrange != null)
            {
                string productVersion = lot.CurrentProductVersion;
                lot.CurrentEqpArrange.SetUsedArrange(productVersion);
            }

            return(true);
        }
示例#2
0
        private static bool IsLoadableDummy(FabAoEquipment eqp, FabLot dummy, decimal inflowHours)
        {
            var now = eqp.NowDT;

            var last = eqp.GetLastPlan();             //eqp.LastPlan as FabPlanInfo;

            if (last == null)
            {
                return(false);
            }

            //M제약에 의해 진행 중인 last의 Arrange가 없어진 경우
            if (EqpArrangeMaster.IsLoadable(eqp, dummy) == false)
            {
                return(false);
            }

            var currEA = dummy.CurrentEqpArrange;

            if (currEA == null || currEA.IsLoableByProductVersion(last.ProductVersion) == false)
            {
                return(false);
            }

            string reason = string.Empty;

            if (FilterMaster.IsEqpRecipeTime(eqp, dummy, now.AddHours((double)inflowHours), ref reason) == false)
            {
                return(false);
            }

            //Dummy Mask 확인
            if (FilterMaster.IsLoadableToolArrange(eqp, dummy, false) == false)
            {
                return(false);
            }

            //MixRun(ParallelChamber)
            if (eqp.IsParallelChamber)
            {
                var subEqp = eqp.TriggerSubEqp;
                if (subEqp != null)
                {
                    if (subEqp.IsLoadable(last.FabStep, now) == false)
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }