Exemple #1
0
        public object TryGetItem(EqpMaster.Eqp eqpInfo, string shopId, string toolID, string stepID = "-")
        {
            string eqpId = eqpInfo.EqpID;

            string key = string.Empty;

            if (this.IsOnlyToolMode)
            {
                key = CommonHelper.CreateKey(shopId, toolID);
            }
            else
            {
                key = CommonHelper.CreateKey(eqpId, toolID);
            }

            GanttInfo info;

            if (_table.TryGetValue(key, out info) == false)
            {
                info = new GanttInfo(eqpInfo, shopId, toolID, 0);
                _table.Add(key, info);
            }

            return(info);
        }
Exemple #2
0
        public override object TryGetItem(string lotID)
        {
            string key = CommonHelper.CreateKey(lotID);

            GanttInfo info;

            if (_table.TryGetValue(key, out info) == false)
            {
                info = new GanttInfo(lotID);
                _table.Add(key, info);
            }

            return(info);
        }
Exemple #3
0
        private DataRow GetDispInfoBySetup(GanttInfo info, string barKey)
        {
            BarList barList;

            if (info.Items.TryGetValue(barKey, out barList) == false)
            {
                return(null);
            }

            var prev = barList.LastOrDefault() as GanttBar;

            if (prev != null && prev.State == EqpState.SETUP)
            {
                return(prev.DispatchingInfo);
            }

            return(null);
        }
Exemple #4
0
        private void DoAddItem(
            GanttInfo info,
            string productId,
            string processId,
            string layer,
            string stepId,
            string lotId,
            DateTime startTime,
            DateTime endTime,
            int qty,
            EqpState state,
            EqpMaster.Eqp eqpInfo,
            DataRow dispatchingInfo)
        {
            string shopID = info.ShopID;
            string eqpId  = info.EqpID;
            string toolID = info.ToolID;

            ToolBar currentBar = new ToolBar(
                shopID,
                eqpId,
                productId,
                processId,
                layer,
                toolID,
                stepId,
                lotId,
                startTime,
                endTime,
                qty,
                state,
                eqpInfo,
                dispatchingInfo,
                false
                );

            var barKey = state != EqpState.DOWN ? currentBar.BarKey : "DOWN";

            if (barKey != string.Empty)
            {
                info.AddItem(barKey, currentBar, this.IsOnlyToolMode);
            }
        }
Exemple #5
0
        public override void  AddItem(
            EqpMaster.Eqp eqpInfo,
            string shopID,
            string toolID,
            string productId,
            string processId,
            string layer,
            string stepId,
            string lotId,
            DateTime startTime,
            DateTime endTime,
            DateTime tkInTime,
            DateTime tkOutTime,
            DateTime nextStateStartTime,
            int qty,
            EqpState state,
            DataRow dispatchingInfo = null)
        {
            GanttInfo info = (GanttInfo)TryGetItem(eqpInfo, shopID, toolID, stepId);

            //BUSY
            DoAddItem(info, productId, processId, layer, stepId, lotId,
                      startTime, endTime, qty, state, eqpInfo, dispatchingInfo);

            //IDLE RUN
            DateTime barStartTime = endTime;
            DateTime barEndTime   = tkOutTime;

            if (barEndTime > nextStateStartTime)
            {
                barEndTime = nextStateStartTime;
            }

            if (barStartTime < barEndTime)
            {
                DoAddItem(info, productId, processId, layer, stepId, lotId,
                          barStartTime, barEndTime, 0, EqpState.IDLERUN, eqpInfo, dispatchingInfo);
            }
        }
Exemple #6
0
        private void AddItem(
            string key,
            EqpMaster.Eqp eqpInfo,
            string subEqpID,
            int?subEqpCount,
            string layer,
            string lotID,
            string origLotID,
            string wipInitRun,
            string productID,
            string productVersion,
            string ownerID,
            string processID,
            string stepID,
            string toolID,
            DateTime startTime,
            DateTime endTime,
            int inQty,
            EqpState state,
            DataRow dispInfo,
            int lotPriority,
            string eqpRecipe,
            string stateInfo,
            bool isGhostBar = false)
        {
            string shopID   = eqpInfo.ShopID;
            string eqpGroup = eqpInfo.EqpGroup;
            string eqpID    = eqpInfo.EqpID;

            GanttInfo info;

            if (this.GanttInfos.TryGetValue(key, out info) == false)
            {
                this.GanttInfos.Add(key, info = new GanttInfo(eqpGroup, eqpID, subEqpID, subEqpCount, layer));
            }

            int sortSeq = GetSortSeq(shopID, stepID);

            //SortSeq MIN 기준으로 변경
            info.SortSeq = Math.Min(info.SortSeq, sortSeq);

            GanttBar bar = new GanttBar(eqpGroup,
                                        eqpID,
                                        subEqpID,
                                        layer,
                                        lotID,
                                        origLotID,
                                        wipInitRun,
                                        productID,
                                        productVersion,
                                        ownerID,
                                        processID,
                                        stepID,
                                        toolID,
                                        startTime,
                                        endTime,
                                        inQty,
                                        state,
                                        eqpInfo,
                                        dispInfo,
                                        lotPriority,
                                        eqpRecipe,
                                        stateInfo,
                                        isGhostBar);

            var barKey = state != EqpState.DOWN ? bar.BarKey : "DOWN";

            if (barKey != string.Empty)
            {
                //SETUP 다음 BUSY로 이어진 BUSY Bar는 SETUP과 동일한 값 설정 하도록 함.
                if (bar.DispatchingInfo == null && bar.State == EqpState.BUSY)
                {
                    bar.DispatchingInfo = GetDispInfoBySetup(info, barKey);
                }

                info.AddItem(barKey, bar, this.IsProductInBarTitle);
            }

            //collect job change
            if (state == EqpState.SETUP)
            {
                AddJobChange(startTime);
            }
        }
Exemple #7
0
        private void DoAddItem(string lotId, string processID, string stepSeq, string productID, int qty, DateTime tkin, DateTime tkout, DateTime toTime, GanttInfo info)
        {
#if DEBUG
            if (lotId == "FAAA611A5")
            {
            }
#endif
            DateTime endOfShiftTime = toTime;

            GanttBar splitBarA  = null;
            GanttBar splitBarB  = null;
            GanttBar currentBar = null;

            bool isSplit = false;

            // Shift Time에 걸쳐 있을 경우
            if (tkin < endOfShiftTime && endOfShiftTime <= tkout)
            {
                splitBarA = new GanttBar(lotId, processID, stepSeq, productID, tkin, endOfShiftTime, qty, qty, EqpState.NONE);
                splitBarB = new GanttBar(lotId, processID, stepSeq, productID, endOfShiftTime, tkout, qty, qty, EqpState.NONE);

                splitBarA.IsShiftSplit = splitBarB.IsShiftSplit = isSplit = true;
            }
            else
            {
                currentBar = new GanttBar(lotId, processID, stepSeq, productID, tkin, tkout, qty, qty, EqpState.NONE);
            }

            if (isSplit == true)
            {
                info.AddItem(splitBarA.BarKey, splitBarA);
                info.AddItem(splitBarB.BarKey, splitBarB);
            }
            else
            {
                info.AddItem(currentBar.BarKey, currentBar);
            }
        }