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); }
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); } }