Exemplo n.º 1
0
        private bool IsMatched_UnpredictWip(ICollection <UnpredictWip> list, string shopID, string checkValue)
        {
            if (list == null || list.Count == 0)
            {
                return(false);
            }

            foreach (var it in list)
            {
                if (it.SHOP_ID != shopID)
                {
                    continue;
                }

                string pattern = it.PATTERN;

                if (string.IsNullOrEmpty(pattern) || LcdHelper.Equals(pattern, "EMPTY"))
                {
                    if (string.IsNullOrEmpty(checkValue) || LcdHelper.IsEmptyID(pattern))
                    {
                        return(true);
                    }
                }
                else
                {
                    if (LcdHelper.Like(checkValue, pattern))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
Exemplo n.º 2
0
        /// <summary>
        /// </summary>
        /// <param name="aeqp"/>
        /// <param name="fs"/>
        /// <param name="det"/>
        /// <param name="handled"/>
        public void ON_PMEVENT3(Mozart.SeePlan.Simulation.AoEquipment aeqp, Mozart.SeePlan.DataModel.PMSchedule fs, Mozart.SeePlan.Simulation.DownEventType det, ref bool handled)
        {
            FabAoEquipment eqp = aeqp.ToFabAoEquipment();

            if (eqp.SetParallelChamberPM(fs, det))
            {
                if (det == DownEventType.Start)
                {
                    eqp.OnStateChanged(LoadingStates.PM);
                }

                return;
            }

            if (det == DownEventType.Start)
            {
                ResHelper.SetLastLoadingInfo(aeqp, null);

                aeqp.Loader.Block();
                aeqp.WriteHistory(LoadingStates.PM);

                FabPMSchedule pm = fs as FabPMSchedule;

                DownMaster.AdjustAheadPMProcessing(eqp, pm);

                //PM의 경우 OnStateChange 함수를 별도로 호출 필요함.
                LoadingStates state = GetPMLoadingState(pm.Type);
                eqp.OnStateChanged(state);

                FabLoadInfo loadInfo = eqp.LoadInfos.Last();

                if (loadInfo.State == LoadingStates.PM)
                {
                    if (pm.Type == ScheduleType.RENT)
                    {
                        loadInfo.StateInfo = "RENT";
                    }

                    if (loadInfo.StateInfo != "AHEAD" && LcdHelper.IsEmptyID(pm.Description) == false)
                    {
                        loadInfo.StateInfo = pm.Description;
                    }
                }
            }
            else
            {
                aeqp.Loader.Unblock();
                aeqp.WriteHistoryAfterBreak();
                aeqp.SetModified();
                eqp.OnStateChanged(LoadingStates.IDLE);

                eqp.AvailablePMTime = DateTime.MaxValue;
            }
        }
Exemplo n.º 3
0
        private bool IsPhotoStep(Dictionary <string, string> photoStep, FabStdStep stdStep)
        {
            string steps;

            photoStep.TryGetValue(stdStep.ShopID, out steps);

            if (LcdHelper.IsEmptyID(steps))
            {
                return(false);
            }

            return(steps.Contains(stdStep.StepID));
        }
Exemplo n.º 4
0
        /// <summary>
        /// </summary>
        /// <param name="handled"/>
        /// <param name="prevReturnValue"/>
        /// <returns/>
        public IList <Mozart.SeePlan.Simulation.IHandlingBatch> GET_WIPS0(ref bool handled, IList <Mozart.SeePlan.Simulation.IHandlingBatch> prevReturnValue)
        {
            List <IHandlingBatch> list = new List <IHandlingBatch>();

            foreach (FabWipInfo wip in InputMart.Instance.FabWipInfo.Values)
            {
                FabStep step = wip.InitialStep as FabStep;

                if (SimHelper.IsTftRunning && step.IsCellShop)
                {
                    continue;
                }
                else if (SimHelper.IsCellRunning && step.IsCellShop == false)
                {
                    continue;
                }

                FabLot lot = CreateHelper.CreateLot(wip, LotState.WIP);
                list.Add(lot);

                if (wip.IsRun)
                {
                    string eqpID = wip.WipEqpID ?? string.Empty;

                    FabEqp eqp;
                    InputMart.Instance.FabEqp.TryGetValue(eqpID, out eqp);
                    if (eqp != null)
                    {
                        eqp.InitRunWips.AddSort(lot, CompareHelper.RunWipComparer.Default);
                    }
                }

                if (SimHelper.IsTftRunning)
                {
                    WipCollector.AddProductByVersion(lot);
                }
            }

            //TODO :  임시로직, CF에 있는 Array제품 버전문제
            if (SimHelper.IsTftRunning)
            {
                foreach (FabLot lot in list)
                {
                    FabProduct prod = lot.FabProduct;


                    if (BopHelper.IsCfShop(lot.Wip.ShopID) && prod.IsArrayShopProduct())
                    {
                        string version = WipCollector.GetVersion(prod.ProductID);

                        if (LcdHelper.IsEmptyID(version) == false)
                        {
                            lot.OrigProductVersion = version;
                        }
                        else
                        {
                            Console.WriteLine();
                        }
                    }
                }
            }

            return(list);
        }