コード例 #1
0
ファイル: ResHelper.cs プロジェクト: yichunbong/CSOT
        private static bool IsNeedChamberSetup(FabAoEquipment eqp, FabLot lot)
        {
            //Equipment → ProcessControl → GetLoadableChambers : 투입가능한 챔버리스트 반환
            List <FabSubEqp> list = ChamberMaster.GetLoadableSubEqps(eqp, lot);

            if (list.Count == 0)
            {
                return(false);
            }

            //Equipment → ProcessControl → GetNeedSetupChamber
            var needSetupChamberList = ChamberMaster.GetNeedSetupChamberList(list, lot);

            if (needSetupChamberList != null && needSetupChamberList.Count > 0)
            {
                return(true);
            }

            return(false);
        }
コード例 #2
0
        private static bool IsLoadable(AoEquipment eqp, FabLot lot)
        {
            string reason = string.Empty;


            //EqpArrange
            if (IsLoadableEqpArrange(eqp, lot) == false)
            {
                eqp.EqpDispatchInfo.AddFilteredWipInfo(lot, "EqpArrnage LimitQty");
                return(false);
            }

            //Mask
            if (IsLoadableToolArrange(eqp, lot) == false)
            {
                eqp.EqpDispatchInfo.AddFilteredWipInfo(lot, "Mask");
                return(false);
            }

            //Jig
            if (IsLoadableJigArrange(eqp, lot) == false)
            {
                eqp.EqpDispatchInfo.AddFilteredWipInfo(lot, "Jig");
                return(false);
            }

            //ParallelChamber 확인
            if (ChamberMaster.IsLoadable_ParallelChamber(eqp, lot) == false)
            {
                eqp.EqpDispatchInfo.AddFilteredWipInfo(lot, "Not Available ChamberUnit");
                return(false);
            }

            //설비간 이동시간 반영
            if (IsArrive(eqp, lot, ref reason) == false)
            {
                reason = string.Format("TransferTime/{0} ", reason);

                lot.CurrentFabPlan.AddLotFilteredInfo(reason, DispatchFilter.TransferTime);
                eqp.EqpDispatchInfo.AddFilteredWipInfo(lot, reason);

                return(false);
            }

            //MinQtime 제약
            if (IsStayDuringMinQTime(eqp, lot, ref reason) == false)
            {
                reason = string.Format("Stay MinTime/{0}", reason);

                lot.CurrentFabPlan.AddLotFilteredInfo(reason, DispatchFilter.MinQtime);
                eqp.EqpDispatchInfo.AddFilteredWipInfo(lot, reason);

                return(false);
            }

            //EqpRecipe 제약
            if (IsEqpRecipeTime(eqp, lot, eqp.Now, ref reason) == false)
            {
                reason = string.Format("RecipeTime/{0}", reason);

                lot.CurrentFabPlan.AddLotFilteredInfo(reason, DispatchFilter.RecipeTime);
                eqp.EqpDispatchInfo.AddFilteredWipInfo(lot, reason);

                return(false);
            }

            //OwnerID Limit
            if (IsNotOwnerLimit(eqp, lot, ref reason) == false)
            {
                reason = string.Format("OwenrLimit/{0}", reason);

                lot.CurrentFabPlan.AddLotFilteredInfo(reason, DispatchFilter.OwnerLimit);
                eqp.EqpDispatchInfo.AddFilteredWipInfo(lot, reason);

                return(false);
            }

            //PREVENT_LAYER_CHANGE_FILTER
            if (IsFilterPreventLayerChange(eqp, lot))
            {
                eqp.EqpDispatchInfo.AddFilteredWipInfo(lot, "PreventLayerChangeFilter");
                return(false);
            }

            //CF_PHOTO_TARGET_LINE_FILTER
            if (IsCfPhotoTargetLine(eqp, lot) == false)
            {
                eqp.EqpDispatchInfo.AddFilteredWipInfo(lot, "CfPhotoTargetLineFilter");
                return(false);
            }

            return(true);
        }