Пример #1
0
        private static DateTime GetAvailableSetupTime(FabAoEquipment eqp, DateTime now)
        {
            DateTime availableTime = eqp.AvailableSetupTime;

            //마스크 사용시
            if (eqp.InUseMask != null)
            {
                //실제Setup시 Seize된 툴이 들어옴. 현재 이전의 LoadInfo을 참조해야함.
                if (eqp.InUseMask.LoadInfos.Count > 1)
                {
                    MaskLoadInfo loadInfo = eqp.InUseMask.LoadInfos[eqp.InUseMask.LoadInfos.Count - 2];
                    if (loadInfo.EqpID != eqp.EqpID)
                    {
                        availableTime = LcdHelper.Max(eqp.AvailableSetupTime, (DateTime)loadInfo.AvailableTime);

                        if (availableTime > now)
                        {
                            availableTime = now;
                        }
                    }
                }
            }

            return(availableTime);
        }
Пример #2
0
        public static void AddLoadInfo(this FabMask mask, string eqpID, FabLot lot, bool isInit = false)
        {
            MaskLoadInfo info = new MaskLoadInfo();

            if (lot != null)
            {
                info.EqpID         = eqpID;
                info.AvailableTime = mask.AvailableTime;
                info.PlanInfo      = lot.CurrentFabPlan;
                info.StartTime     = AoFactory.Current.NowDT;

                info.LotID          = lot.LotID;
                info.StepID         = lot.CurrentStepID;
                info.ProductID      = lot.CurrentProductID;
                info.ProductVersion = lot.CurrentProductVersion;

                string key = GetMaskLoadInfoKey(info.EqpID, info.LotID, info.StepID);

                if (mask.LoadInfosView.ContainsKey(key) == false)
                {
                    mask.LoadInfosView.Add(key, info);
                }
            }
            else
            {
                info.StartTime = (DateTime)mask.AvailableTime;
                info.EndTime   = isInit ? info.StartTime : info.StartTime.AddMinutes(GetMaskTransferTime(mask.EqpID, eqpID).TotalMinutes);

                info.EqpID          = eqpID;
                info.LotID          = isInit ? "INIT" : "MOVE";
                info.StepID         = Constants.NULL_ID;
                info.ProductID      = Constants.NULL_ID;
                info.ProductVersion = Constants.NULL_ID;
            }

            mask.LoadInfos.Add(info);
        }