示例#1
0
        private void CalcStepOutProfile_Tat()
        {
            var     pts = this.Pts = new List <Pt2D>();
            decimal now = 0;

            Pt2D.SetPt2D(pts, now, 0);

            now = _tatRun;
            Pt2D.SetPt2D(pts, now, _qtyRun);

            now += _tatWait;
            Pt2D.SetPt2D(pts, now, _qtyRun + _qtyWait);
        }
示例#2
0
        private void CalcStepOutProfile()
        {
            var     pts = this.Pts = new List <Pt2D>();
            decimal now = 0;

            Pt2D.SetPt2D(pts, now, 0);

            decimal cumQty = 0;

            //Run Wip (Tact / Tat 중 짧은 기준)
            decimal qtyRun    = _qtyRun;
            decimal tactRun   = qtyRun * this.Tact;
            decimal minTatRun = Math.Min(tactRun, this.RemainTatRun);
            decimal maxTatRun = Math.Max(tactRun, this.RemainTatRun);

            if (qtyRun > 0)
            {
                now     = minTatRun;
                cumQty += qtyRun;
                Pt2D.SetPt2D(pts, now, cumQty);
            }

            //maxTatRun 기준 기록
            if (maxTatRun > minTatRun)
            {
                now = maxTatRun;
                Pt2D.SetPt2D(pts, now, cumQty);
            }

            //Wait Wip (Tat 기준 최소 1CST 도착, 나머지는 수량은 Tact / Tat 중 긴 기준)
            decimal qtyWait   = _qtyWait;
            decimal remainQty = qtyWait;
            decimal tactWait  = qtyWait * this.Tact;

            //Tat 기준 최소 1CST
            if (tactWait > this.RemianTatWait)
            {
                decimal lotSize = SeeplanConfiguration.Instance.LotUnitSize;
                decimal minQty  = Math.Min(remainQty, lotSize);

                now     = maxTatRun + this.RemianTatWait;
                cumQty += minQty;

                Pt2D.SetPt2D(pts, now, cumQty);

                remainQty = remainQty - minQty;
            }

            //나머지 수량, Tact / Tat 중 긴 기준
            decimal maxTatWait = Math.Max(tactWait, this.RemianTatWait);

            now     = maxTatRun + maxTatWait;
            cumQty += remainQty;

            Pt2D.SetPt2D(pts, now, cumQty);

            //다음 Step의 Start Point 시간을 위해 기록 필요 (누적 그래프)
            if (maxTatWait < _tatWait)
            {
                now = maxTatRun + _tatWait;
                Pt2D.SetPt2D(pts, now, cumQty);
            }
        }