private void SetControls() { this.startDatePicker.DateTime = _planStartTime; this.startDatePicker.Properties.EditMask = "yyyy-MM-dd"; this.startDatePicker.Properties.VistaDisplayMode = DevExpress.Utils.DefaultBoolean.True; this.startDatePicker.Properties.VistaEditTime = DevExpress.Utils.DefaultBoolean.True; DateTime defaultEndTime = _result.StartTime.AddDays(Globals.GetResultPlanPeriod(_result)); this.endDatePicker.DateTime = ShopCalendar.ShiftStartTimeOfDayT(defaultEndTime); this.endDatePicker.Properties.EditMask = "yyyy-MM-dd"; this.endDatePicker.Properties.VistaDisplayMode = DevExpress.Utils.DefaultBoolean.True; this.endDatePicker.Properties.VistaEditTime = DevExpress.Utils.DefaultBoolean.True; SetAreaIDComboBox(); SetShopCombo(); SetStepIDCombo(TargetShopID); SetOwnerTypeCombo(); SetProductCombo(); _isFirstLoad = true; }
private void BindPivotGrid(string batchID) { _detailDict = new Dictionary <string, DetailInfo>(); bool isFirstItem = true; foreach (DataRow row in _eqpPlanTable.Rows) { JobChangePlanData.EqpPlan ep = new JobChangePlanData.EqpPlan(row); if (ep.ProductID.StartsWith("CE")) { ep.ProductID = GetCellProductID(ep.ProductID); } if (ep.BatchID != batchID) { continue; } string layer = FindLayer(ep.ShopID, ep.StepID); string stepDesc = FindDesc(ep.ShopID, ep.StepID); if (layer == string.Empty) { continue; } string key = layer + ep.StepID; DetailInfo info; if (_detailDict.TryGetValue(key, out info) == false) { info = new DetailInfo(ep.BatchID, ep.ShopID, layer, ep.StepID, stepDesc); if (isFirstItem) { info.FillDummyDates(_shiftList); } _detailDict.Add(key, info); } DateTime shift = ShopCalendar.ShiftStartTimeOfDayT(ep.StartTime); info.AddQty(shift, ep.OutTargetQty); if (ep.StepID == "T02100") { Console.WriteLine("a"); } info.CalculateTimes(ep.StartTime, ep.EndTime); isFirstItem = false; } }
private void SetDateRange() { _dateList = new List <string>(); for (DateTime dt = ShopCalendar.ShiftStartTimeOfDayT(_planStartTime); dt <= EndTime; dt = dt.AddDays(1)) { _dateList.Add(dt.ToString("yyyyMMdd")); } }
private DateTime GetPlanDate(DateTime t) { DateTime planDate = t; if (this.dayRadioBtn.Checked) { planDate = ShopCalendar.SplitDate(t); } else if (this.shiftRadioBtn.Checked) { planDate = ShopCalendar.ShiftStartTimeOfDayT(t); } return(planDate); }
public void AddJobChange(DateTime tkinTime) { string chgTime = tkinTime.ToString(this.DateKeyPattern); string shiftTime = ShopCalendar.ShiftStartTimeOfDayT(tkinTime).ToString(this.DateGroupPattern); if (_jobChgCntByHour.ContainsKey(chgTime) == false) { _jobChgCntByHour.Add(chgTime, 0); } if (_jobChgCntByShift.ContainsKey(shiftTime) == false) { _jobChgCntByShift.Add(shiftTime, 0); } _jobChgCntByHour[chgTime]++; _jobChgCntByShift[shiftTime]++; }
private void SetDateRanges() { _dateRangeList = new List <DateTime>(); float hours = this.IsTimeConditionHour ? 24 : (int)ShopCalendar.ShiftHours; for (DateTime start = ShopCalendar.ShiftStartTimeOfDayT(this.FromTime); // this.FromTime; start < ShopCalendar.ShiftStartTimeOfDayT(this.ToTime); //this.ToTime; start = start.AddHours(hours)) { _dateRangeList.Add(start); } //if (/*this.shiftComboBoxEdit.SelectedIndex > 0 &&*/ this.ToTime != ShopCalendar.StartTimeOfDay(this.ToTime) // && _dateRangeList.Contains(this.ToTime) == false) //{ // _dateRangeList.Add(this.ToTime); //} }
internal static void WriteStepTarget(FabPegTarget pt, bool isOut, string stepType, bool isExtraAdd) { FabPegPart pp = pt.PegPart as FabPegPart; FabStep step = pp.Current.Step; FabProduct prod = pp.FabProduct; //Key : FactoryID, ShopID, ProductID, StepID, StepType, TargetShift, TargetKey string factoryID = step.FactoryID; string shopID = step.ShopID; string prodductID = prod.ProductID; string stepID = step.StepID; stepType = GetStepType(stepType); if (stepType == Constants.IN) { stepID = string.Format("{0}_{1}", shopID, Constants.IN); } else if (stepType == Constants.OUT) { stepID = string.Format("{0}_{1}", shopID, Constants.OUT); } DateTime targetShift = ShopCalendar.ShiftStartTimeOfDayT(pt.CalcDate); string targetKey = pt.TargetKey; Outputs.StepTarget row = OutputMart.Instance.StepTarget.Find(factoryID, shopID, prodductID, stepID, stepType, targetShift, targetKey); if (row != null) { if (isOut) { row.TARGET_OUT_QTY = +Convert.ToDecimal(pt.CalcQty); } else { row.TARGET_IN_QTY = +Convert.ToDecimal(pt.CalcQty); } } else { row = new Outputs.StepTarget(); row.VERSION_NO = ModelContext.Current.VersionNo; row.FACTORY_ID = step.FactoryID; row.AREA_ID = step.AreaID; row.SHOP_ID = step.ShopID; row.PRODUCT_ID = prod.ProductID; row.STEP_ID = stepID; row.TARGET_DATE = pt.CalcDate; row.TARGET_SHIFT = targetShift; row.DEMAND_ID = pt.FabMoPlan.DemandID; row.DEMAND_PRODUCT_ID = pt.FabMoPlan.PreMoPlan.ProductID; row.DEMAND_PLAN_DATE = pt.FabMoPlan.DueDate; row.DEMAND_QTY = pt.FabMoPlan.Qty; row.TARGET_KEY = pt.TargetKey; row.STEP_TYPE = stepType; row.SEQ = pt.Seq++; // GetSequence(step, stepType, isExtraAdd); if (isOut) { row.TARGET_IN_QTY = 0; row.TARGET_OUT_QTY = Convert.ToDecimal(pt.CalcQty); } else { row.TARGET_IN_QTY = Convert.ToDecimal(pt.CalcQty); row.TARGET_OUT_QTY = 0; } //InTarget용(BuildInPlan) if (isExtraAdd) { row.TARGET_IN_QTY = Convert.ToDecimal(pt.CalcQty); row.TARGET_OUT_QTY = Convert.ToDecimal(pt.CalcQty); } OutputMart.Instance.StepTarget.Add(row); } }
private void LoadData() { _dict = new Dictionary <string, ResultItem>(); string areaID = this.TargetAreaID; string shopID = this.TargetShopID; bool isFirst = true; SetDateRanges(); _stdStepList = GetStdStepList(areaID); bool isOnlyMainStep = this.ShowSubStep == false; bool useOrigProdVer = this.UseOrigProdVer; var stepWip = _resultCtx.StepWip; foreach (var item in stepWip) { if (areaID != item.AREA_ID) { continue; } if (item.SHOP_ID != shopID && shopID != Consts.ALL) { continue; } if (item.PLAN_DATE < this.QueryStartTime) { continue; } if (item.PLAN_DATE >= this.QueryEndTime) { continue; } if (this.StepComboBox.Text != Consts.ALL && !item.STD_STEP_ID.Contains(this.StepComboBox.Text.ToString())) { continue; } string stepID = item.STEP_ID; string stdStepID = item.STD_STEP_ID; int stepSeq = item.STD_STEP_SEQ; if (isOnlyMainStep) { var stdStep = FindMainStep(item.SHOP_ID, stdStepID); if (stdStep == null) { continue; } stepID = stdStep.STEP_ID; stdStepID = stdStep.STEP_ID; stepSeq = stdStep.STEP_SEQ; } string productVersion = item.PRODUCT_VERSION; if (useOrigProdVer) { productVersion = item.ORIG_PRODUCT_VERSION; } if (isFirst) { foreach (string date in _dayHourList) { ResultItem padding; string dateString = GetDateString(date); string k = item.SHOP_ID + item.PRODUCT_ID + productVersion + item.OWNER_TYPE + stdStepID + dateString; if (_dict.TryGetValue(k, out padding) == false) { padding = new ResultItem(); padding.LINE_ID = item.SHOP_ID; padding.STD_STEP = item.STD_STEP_ID; padding.STEP_SEQ = item.STD_STEP_SEQ; padding.PROD_ID = item.PRODUCT_ID; padding.PROD_VER = productVersion; padding.OWNER_TYPE = item.OWNER_TYPE; padding.DATE_INFO = dateString; padding.WAIT_QTY = 0; padding.RUN_QTY = 0; _dict.Add(k, padding); } } isFirst = false; } ResultItem ri; DateTime planDate = item.PLAN_DATE; DateTime shift = ShopCalendar.ShiftStartTimeOfDayT(planDate); string dateStr2 = GetDateString(planDate); string key = item.SHOP_ID + item.PRODUCT_ID + productVersion + item.OWNER_TYPE + stdStepID + dateStr2; if (_dict.TryGetValue(key, out ri) == false) { ri = new ResultItem(); ri.LINE_ID = item.SHOP_ID; ri.PROD_ID = item.PRODUCT_ID; ri.PROD_VER = productVersion; ri.OWNER_TYPE = item.OWNER_TYPE; ri.STD_STEP = item.STD_STEP_ID; ri.STEP_SEQ = item.STD_STEP_SEQ; ri.DATE_INFO = dateStr2; _dict.Add(key, ri); } ri.WAIT_QTY += Convert.ToSingle(item.WAIT_QTY); ri.RUN_QTY += Convert.ToSingle(item.RUN_QTY); } }
private void LoadData() { #region Wip string filter = string.Format("{0} = '{1}' OR {0} = '{2}'", BalanceTableViewData.Wip.Schema.STEP_ID, BalanceTableViewData.BANK_STEP, BalanceTableViewData.NEXT_STEP); DataTable wipTable = _result.LoadInput(BalanceTableViewData.WIP_DATA_TABLE, filter); foreach (DataRow wRow in wipTable.Rows) { BalanceTableViewData.Wip wip = new BalanceTableViewData.Wip(wRow); if (wip.ProductID == "CE0002") { Console.WriteLine("a"); } if (wip.StepID == BalanceTableViewData.BANK_STEP) { string cellID = GetToProductID(wip.ProductID); CellInfo cinfo; if (_resultDict.TryGetValue(cellID, out cinfo)) { cinfo.AddQty(wip.ProductID.StartsWith("C") ? CellInfo.CF_WIP : CellInfo.TFT_WIP, BalanceTableViewData.INITIAL_SHIFT, wip.Qty); } } else if (wip.StepID == BalanceTableViewData.NEXT_STEP) { CellInfo cinfo; if (_resultDict.TryGetValue(wip.ProductID, out cinfo)) { cinfo.AddQty(CellInfo.CF_WIP, BalanceTableViewData.INITIAL_SHIFT, wip.Qty); cinfo.AddQty(CellInfo.TFT_WIP, BalanceTableViewData.INITIAL_SHIFT, wip.Qty); } } } #endregion #region StepTarget filter = string.Format("{0} = '{1}'", BalanceTableViewData.StepTarget.Schema.STEP_ID, BalanceTableViewData.NEXT_STEP); DataTable stepTargetTable = _result.LoadOutput(BalanceTableViewData.STEP_TARGET_DATA_TABLE, filter); foreach (DataRow sRow in stepTargetTable.Rows) { BalanceTableViewData.StepTarget st = new BalanceTableViewData.StepTarget(sRow); if (st.ProductID == "CE0011") { Console.WriteLine("a"); } CellInfo cinfo; if (_resultDict.TryGetValue(st.ProductID, out cinfo)) { cinfo.AddQty(CellInfo.CELL_IN_TARGET, st.TargetDate, st.InTargetQty); cinfo.AddQty(CellInfo.CELL_OUT_TARGET, st.TargetDate, st.OutTargetQty); } } #endregion #region EqpPlan filter = string.Format("{0} = '{1}' OR {0} = '{2}'", BalanceTableViewData.EqpPlan.Schema.STEP_ID, BalanceTableViewData.BANK_STEP, BalanceTableViewData.NEXT_STEP); DataTable eqpPlanTable = _result.LoadOutput(BalanceTableViewData.EQP_PLAN_DATA_TABLE, filter); foreach (DataRow eRow in eqpPlanTable.Rows) { BalanceTableViewData.EqpPlan ep = new BalanceTableViewData.EqpPlan(eRow); if (ep.ProductID == "TF0007") { Console.WriteLine("a"); } string shiftIn = ShopCalendar.ShiftStartTimeOfDayT(ep.StartTime).ToString("yyyy-MM-dd HH"); string shiftOut = ShopCalendar.ShiftStartTimeOfDayT(ep.EndTime).ToString("yyyy-MM-dd HH"); if (ep.StepID == BalanceTableViewData.BANK_STEP) { string cellID = GetToProductID(ep.ProductID); CellInfo cinfo; if (_resultDict.TryGetValue(cellID, out cinfo)) { cinfo.AddQty(ep.ProductID.StartsWith("C") ? CellInfo.CF_DONE : CellInfo.TFT_DONE, shiftIn, ep.OutTargetQty); } } else if (ep.StepID == BalanceTableViewData.NEXT_STEP) { CellInfo cinfo; if (_resultDict.TryGetValue(ep.ProductID, out cinfo)) { cinfo.AddQty(CellInfo.CELL_IN_PLAN, shiftIn, ep.OutTargetQty); cinfo.AddQty(CellInfo.CELL_OUT_PLAN, shiftOut, ep.OutTargetQty); } } } #endregion }
private void InitializeData() { var modelContext = this._result.GetCtx <ModelDataContext>(); _stdStepDic = new Dictionary <string, TcData.StepInfo>(); var stdStep = modelContext.StdStep.Where(x => x.STEP_SEQ > 0) .OrderBy(x => x.SHOP_ID);//.OrderByDescending(x => x.STEP_SEQ); foreach (var step in stdStep) { if (_stdStepDic.ContainsKey(step.SHOP_ID + step.STEP_ID) == false) { _stdStepDic.Add(step.SHOP_ID + step.STEP_ID, new TcData.StepInfo(step.SHOP_ID, step.STEP_ID, step.STEP_DESC, step.STEP_TYPE, (int)step.STEP_SEQ, step.LAYER_ID)); } } try { _defaultRunTat = this.IsUseDefaultTatChecked ? Convert.ToDouble(_result.Experiment.GetArgument("DefaultRunTAT")) : 0.0; _defaultWaitTat = this.IsUseDefaultTatChecked ? Convert.ToDouble(_result.Experiment.GetArgument("DefaultWaitTAT")) : 0.0; } catch { _defaultWaitTat = 0; _defaultRunTat = 0; } var dtProduct = modelContext.Product; Dictionary <string, string> mainProcByProdDic = new Dictionary <string, string>(); foreach (var prod in dtProduct) { if (mainProcByProdDic.ContainsKey(prod.SHOP_ID + prod.PRODUCT_ID) == false) { mainProcByProdDic.Add(prod.SHOP_ID + prod.PRODUCT_ID, prod.PROCESS_ID); } } var dtTat = modelContext.Tat;//modelContext.Tat.Where(x => x.PRODUCT_TYPE == Consts.Production); Dictionary <string, TcData.TatInfo> tatAllDic = new Dictionary <string, TcData.TatInfo>(); foreach (var row in dtTat) { TcData.TatInfo tatInfo = new TcData.TatInfo(row.WAIT_TAT, row.RUN_TAT); if (tatAllDic.ContainsKey(row.SHOP_ID + row.PRODUCT_ID + row.PROCESS_ID + row.STEP_ID) == false) { tatAllDic.Add(row.SHOP_ID + row.PRODUCT_ID + row.PROCESS_ID + row.STEP_ID, tatInfo); } } var dtProcStepMand = modelContext.ProcStep.OrderBy(x => x.SHOP_ID + x.PROCESS_ID).OrderBy(x => x.STEP_SEQ); _procStepDic = new Dictionary <string, List <ProcStep> >(); foreach (var row in dtProcStepMand) { string key = CommonHelper.CreateKey(row.SHOP_ID, row.PROCESS_ID); List <ProcStep> list; if (_procStepDic.TryGetValue(key, out list) == false) { _procStepDic.Add(key, list = new List <ProcStep>()); } list.Add(row); } List <string> mainProcInEqpPlanList = new List <string>(); DataTable dtEqpPlan = _result.LoadOutput(SimResultData.OutputName.EqpPlan); foreach (DataRow drow in dtEqpPlan.Rows) { SimResultData.EqpPlan eqpPlan = new SimResultData.EqpPlan(drow); string mainProcID = string.Empty; mainProcByProdDic.TryGetValue(eqpPlan.ShopID + eqpPlan.ProductID, out mainProcID); if (string.IsNullOrEmpty(mainProcID)) { continue; } string item = CommonHelper.CreateKey(eqpPlan.ShopID, eqpPlan.ProductID, mainProcID); if (mainProcInEqpPlanList.Contains(item) == false) { mainProcInEqpPlanList.Add(item); } } // 기준정보 Tat 집계 _tatDic = new Dictionary <string, TcData.ProcStepTatInfo>(); foreach (string item in mainProcInEqpPlanList) { string shopID = item.Split('@')[0]; string prodID = item.Split('@')[1]; string mainProcID = item.Split('@')[2]; string key = CommonHelper.CreateKey(shopID, mainProcID); List <ProcStep> procStepList; if (_procStepDic.TryGetValue(key, out procStepList) == false) { continue; } double cumTat = 0; List <string> keyList = new List <string>(); foreach (ProcStep procStep in procStepList) { double waitTat = _defaultWaitTat; double runTat = _defaultWaitTat; double tat = waitTat + runTat; string key2 = procStep.SHOP_ID + prodID + procStep.PROCESS_ID + procStep.STEP_ID; TcData.TatInfo tatInfo; if (tatAllDic.TryGetValue(key2, out tatInfo)) { waitTat = tatInfo.WaitTat; runTat = tatInfo.RunTat; tat = tatInfo.Tat; } cumTat += tat; TcData.ProcStepTatInfo psTatInfo; if (_tatDic.TryGetValue(key2, out psTatInfo) == false) { _tatDic.Add(key2, psTatInfo = new TcData.ProcStepTatInfo(procStep.SHOP_ID, prodID, procStep.PROCESS_ID, procStep.STEP_ID, procStep.STEP_SEQ, waitTat, runTat, cumTat)); } if (keyList.Contains(key2) == false) { keyList.Add(key2); } } double totalTat = cumTat; foreach (string k in keyList) { TcData.ProcStepTatInfo psTatInfo; if (_tatDic.TryGetValue(k, out psTatInfo) == false) { continue; // 있을 수 없음 } psTatInfo.SetTotalTat(totalTat); } } // Simuation Run, Wait TAT 산출 && 시뮬레이션에서 FabIn부터 FabOut까지 흐른 Product 집계 _simTatInfoDic = new Dictionary <string, TcData.SimTatInfo>(); _allStepRunProdInSimList = new List <string>(); var eqpPlanDic = dtEqpPlan.AsEnumerable() .GroupBy(x => x.GetString(SimResultData.EqpPlanSchema.LOT_ID)) .ToDictionary(x => x.Key); foreach (string lotID in eqpPlanDic.Keys) { var sortedList = eqpPlanDic[lotID].OrderBy(x => x.GetDateTime(SimResultData.EqpPlanSchema.START_TIME)); if (sortedList.Count() >= 2) { var firstRow = sortedList.ToList()[0]; foreach (var row in sortedList) { string rowShopID = row.GetString(SimResultData.EqpPlanSchema.SHOP_ID); string rowStepID = row.GetString(SimResultData.EqpPlanSchema.STEP_ID); if (_stdStepDic.ContainsKey(rowShopID + rowStepID)) { firstRow = row; break; } } var lastRow = sortedList.ToList()[sortedList.Count() - 1]; string shopID = firstRow.GetString(SimResultData.EqpPlanSchema.SHOP_ID); string prodID = firstRow.GetString(SimResultData.EqpPlanSchema.PRODUCT_ID); string mainProcID = string.Empty; mainProcByProdDic.TryGetValue(shopID + prodID, out mainProcID); if (string.IsNullOrEmpty(mainProcID) == false) { string key = CommonHelper.CreateKey(shopID, mainProcID); List <ProcStep> procStepList; if (_procStepDic.TryGetValue(key, out procStepList) && procStepList.Count() >= 2) { string firstStepReal = procStepList[0].STEP_ID; string lastStepReal = procStepList[procStepList.Count() - 1].STEP_ID; string firstStepLot = firstRow.GetString(SimResultData.EqpPlanSchema.STEP_ID); string lastStepLot = lastRow.GetString(SimResultData.EqpPlanSchema.STEP_ID); if (firstStepReal == firstStepLot && lastStepReal == lastStepLot) { if (_allStepRunProdInSimList.Contains(shopID + prodID) == false) { _allStepRunProdInSimList.Add(shopID + prodID); } } } } } DateTime preRowEndTime = DateTime.MinValue; foreach (var row in sortedList) { string shopID = row.GetString(SimResultData.EqpPlanSchema.SHOP_ID); string prodID = row.GetString(SimResultData.EqpPlanSchema.PRODUCT_ID); string procID = row.GetString(SimResultData.EqpPlanSchema.PROCESS_ID); string stepID = row.GetString(SimResultData.EqpPlanSchema.STEP_ID); DateTime startTime = row.GetDateTime(SimResultData.EqpPlanSchema.START_TIME); DateTime endTime = row.GetDateTime(SimResultData.EqpPlanSchema.END_TIME); // 시뮬레이션 투입 Lot은 EqpPlan에 ARRAY/ARRAY00000 이런 식으로 정보가 한 줄 더 찍힘 -> 이에 대한 예외처리 if (_stdStepDic.ContainsKey(shopID + stepID) == false) { continue; } string mainChecker = CommonHelper.CreateKey(shopID, prodID, procID); if (mainProcInEqpPlanList.Contains(mainChecker) == false) { preRowEndTime = endTime; continue; } double runTAT = endTime > startTime ? (endTime - startTime).TotalSeconds : 0; double waitTAT = preRowEndTime == DateTime.MinValue ? 0 : startTime > preRowEndTime ? (startTime - preRowEndTime).TotalSeconds : 0; if (runTAT <= 0 && preRowEndTime == DateTime.MinValue) { preRowEndTime = endTime; continue; } DateTime targetShift = ShopCalendar.ShiftStartTimeOfDayT(startTime); TcData.SimTatInfo simTatInfo; if (_simTatInfoDic.TryGetValue(shopID + targetShift + prodID + procID + stepID, out simTatInfo) == false) { _simTatInfoDic.Add(shopID + targetShift + prodID + procID + stepID, simTatInfo = new TcData.SimTatInfo(shopID, targetShift, prodID, procID, stepID)); } if (runTAT > 0) { simTatInfo.AddRunTatToList(runTAT); } if (preRowEndTime != DateTime.MinValue) { simTatInfo.AddWaitTatToList(waitTAT); } preRowEndTime = endTime; } } }
private void SetData() { _shiftList = new List <DateTime>(); DateTime startShift = ShopCalendar.ShiftStartTimeOfDayT(Globals.GetResultStartTime(_result)); int shiftCount = Globals.GetResultPlanPeriod(_result) * 3; for (int i = 0; i < shiftCount; i++) { _shiftList.Add(startShift.AddHours(ShopCalendar.ShiftHours * i)); } _bomDict = new Dictionary <string, string>(); DataTable bomTable = _result.LoadInput(JobChangePlanData.INNER_BOM_DATA_TABLE); foreach (DataRow bRow in bomTable.Rows) { JobChangePlanData.InnerBom bom = new JobChangePlanData.InnerBom(bRow); if (_bomDict.ContainsKey(bom.FromProductID) == false) { _bomDict.Add(bom.FromProductID, bom.ToProductID); } } _layerDict = new Dictionary <string, string>(); _descDict = new Dictionary <string, string>(); _layerOrder = new List <string>(); DataTable stdStepTable = _result.LoadInput(JobChangePlanData.STD_STEP_DATA_TABLE); stdStepTable.DefaultView.Sort = JobChangePlanData.StdStep.Schema.STEP_ID + " " + "ASC"; stdStepTable = stdStepTable.DefaultView.ToTable(); foreach (DataRow sRow in stdStepTable.Rows) { JobChangePlanData.StdStep step = new JobChangePlanData.StdStep(sRow); string key = step.ShopID + step.StepID; if (_layerDict.ContainsKey(key) == false) { _layerDict.Add(key, key.EndsWith("C00000") ? "BANK_" : step.Layer); } if (_descDict.ContainsKey(key) == false) { _descDict.Add(key, step.StepDesc); } if (step.Layer != "BANK" && step.Layer != "F/T" && _layerOrder.Contains(step.Layer) == false) { _layerOrder.Add(step.Layer); } } _layerOrder.Add("F/T"); _layerOrder.Add("BANK"); _layerOrder.Add("BANK_"); }
private void LoadWipData() { //Dictionary<string, SmcvData.WipDetail> var wipCurStepDic = _wipCurStepDic.ToDictionary(x => x.Key, y => y.Value); if (this.SelectedShopID == Consts.ALL && this.IsSelectedInputWip) { foreach (string shopID in this.shopIdComboBoxEdit.Properties.Items) { if (shopID == Consts.ALL) { continue; } wipCurStepDic.Clear(); foreach (string key in _wipCurStepDic.Keys) { if (key.StartsWith(shopID) == false) { continue; } if (wipCurStepDic.ContainsKey(key) == false) { wipCurStepDic.Add(key, _wipCurStepDic[key]); } } } } else if (this.SelectedShopID == Consts.ALL && this.IsSelectedInputWip == false) { wipCurStepDic.Clear(); string sFromTime = this.FromTime != ShopCalendar.ShiftStartTimeOfDayT(this.FromTime) ? ShopCalendar.ShiftStartTimeOfDayT(this.FromTime).AddHours((double)ShopCalendar.ShiftHours).DbToString() : this.FromTime.DbToString(); wipCurStepDic = _wipCurStepDic.Where(x => x.Key.StartsWith(sFromTime)) .ToDictionary(x => x.Key, y => y.Value); } else if (this.SelectedShopID != Consts.ALL && this.IsSelectedInputWip) { wipCurStepDic.Clear(); wipCurStepDic = _wipCurStepDic.Where(x => x.Key.StartsWith(this.SelectedShopID)) .ToDictionary(x => x.Key, y => y.Value); } else { wipCurStepDic.Clear(); string sFromTime = this.FromTime != ShopCalendar.ShiftStartTimeOfDayT(this.FromTime) ? ShopCalendar.ShiftStartTimeOfDayT(this.FromTime).AddHours((double)ShopCalendar.ShiftHours).DbToString() : this.FromTime.DbToString(); wipCurStepDic = _wipCurStepDic .Where(x => x.Key.StartsWith(sFromTime + this.SelectedShopID)) .ToDictionary(x => x.Key, y => y.Value); } foreach (var wipCur in wipCurStepDic) { foreach (DateTime date in _dateRangeList) { SmcvData.ResultItem padding; string dateString = this.IsTimeConditionHour ? ShopCalendar.StartTimeOfDayT(date).ToString("yyyyMMdd") : date.DbToTimeString(); string k = wipCur.Value.ShopID + wipCur.Value.ProductID + wipCur.Value.ProductVersion + wipCur.Value.OwnerType + wipCur.Value.StepID + Consts.NULL_ID + dateString; string k2 = wipCur.Value.ShopID + wipCur.Value.ProductID + wipCur.Value.ProductVersion + wipCur.Value.OwnerType + wipCur.Value.StepID; if (this.IsSelectedInputWip == false) { k2 = this.FromTime.DbToString() + k2; } int wipCurStep = 0; SmcvData.WipDetail wipDetail; _wipCurStepDic.TryGetValue(k2, out wipDetail); wipCurStep = wipDetail == null ? 0 : wipDetail.GlassQty; if (_dict.TryGetValue(k, out padding) == false) { SmcvData.StepInfo stepInfo; _stepInfoDic.TryGetValue(wipCur.Value.ShopID + wipCur.Value.StepID, out stepInfo); padding = new SmcvData.ResultItem(wipCur.Value.ShopID, wipCur.Value.ProductID, wipCur.Value.ProductVersion, wipCur.Value.OwnerType, wipCur.Value.StepID, Consts.NULL_ID, date);//, 0, 0); padding.SetStepInfo(stepInfo); _dict.Add(k, padding); } padding.UpdateWipQty(wipCurStep, 0); } } var wipMainStepDic = _wipMainStepDic.ToDictionary(x => x.Key, y => y.Value); if (this.SelectedShopID == Consts.ALL && this.IsSelectedInputWip) { foreach (string shopID in this.shopIdComboBoxEdit.Properties.Items) { if (shopID == Consts.ALL) { continue; } wipMainStepDic.Clear(); foreach (string key in _wipMainStepDic.Keys) { if (key.StartsWith(shopID) == false) { continue; } if (wipMainStepDic.ContainsKey(key) == false) { wipMainStepDic.Add(key, _wipMainStepDic[key]); } } } } else if (this.SelectedShopID == Consts.ALL && this.IsSelectedInputWip == false) { wipMainStepDic.Clear(); wipMainStepDic = _wipMainStepDic.Where(x => x.Key.StartsWith(this.FromTime.DbToString())) .ToDictionary(x => x.Key, y => y.Value); } else if (this.SelectedShopID != Consts.ALL && this.IsSelectedInputWip) { wipMainStepDic.Clear(); wipMainStepDic = _wipMainStepDic.Where(x => x.Key.StartsWith(this.SelectedShopID)) .ToDictionary(x => x.Key, y => y.Value); } else { wipMainStepDic.Clear(); wipMainStepDic = _wipMainStepDic .Where(x => x.Key.StartsWith(this.FromTime.DbToString() + this.SelectedShopID)) .ToDictionary(x => x.Key, y => y.Value); } foreach (var wipMain in wipMainStepDic) { foreach (DateTime date in _dateRangeList) { SmcvData.ResultItem padding; string dateString = this.IsTimeConditionHour ? ShopCalendar.StartTimeOfDayT(date).ToString("yyyyMMdd") : date.DbToTimeString(); string k = wipMain.Value.ShopID + wipMain.Value.ProductID + wipMain.Value.ProductVersion + wipMain.Value.OwnerType + wipMain.Value.StepID + Consts.NULL_ID + dateString; string k2 = wipMain.Value.ShopID + wipMain.Value.ProductID + wipMain.Value.ProductVersion + wipMain.Value.OwnerType + wipMain.Value.StepID; if (this.IsSelectedInputWip == false) { k2 = this.FromTime.DbToString() + k2; } if (k2 == "ARRAYB8A550QU5V501AASMP041500-00") { } int wipMainStep = 0; SmcvData.WipDetail wipDetail; _wipMainStepDic.TryGetValue(k2, out wipDetail); wipMainStep = wipDetail == null ? 0 : wipDetail.GlassQty; if (_dict.TryGetValue(k, out padding) == false) { SmcvData.StepInfo stepInfo; _stepInfoDic.TryGetValue(wipMain.Value.ShopID + wipMain.Value.StepID, out stepInfo); padding = new SmcvData.ResultItem(wipMain.Value.ShopID, wipMain.Value.ProductID, wipMain.Value.ProductVersion, wipMain.Value.OwnerType, wipMain.Value.StepID, Consts.NULL_ID, date);//, 0, 0); padding.SetStepInfo(stepInfo); _dict.Add(k, padding); } padding.UpdateWipQty(0, wipMainStep); } } }
private void LoadActData() { string shopID = this.SelectedShopID; if (shopID == Consts.ALL) { shopID = string.Empty; } foreach (DataRow row in _dtStepMoveAct.Rows) { SimInputData.StepMoveAct item = new SimInputData.StepMoveAct(row); if (shopID != "" && item.ShopID != shopID) { continue; } if (item.TargetDate < this.FromTime || item.TargetDate >= this.ToTime) { continue; } string eqpGrpID = string.Empty; _eqpGrpDic.TryGetValue(item.ShopID + item.EqpID, out eqpGrpID); if (this.IsAllAreaSelected == false) { if (this.SelectedEqpGrpInAreaList.Count <= 0) { continue; } if (string.IsNullOrEmpty(eqpGrpID)) { continue; } if (this.SelectedEqpGrpInAreaList.Contains(eqpGrpID) == false) { continue; } } foreach (DateTime date in _dateRangeList) { SmcvData.ResultItem padding; string dateString = this.IsTimeConditionHour ? ShopCalendar.StartTimeOfDayT(date).ToString("yyyyMMdd") : date.DbToTimeString(); string k = item.ShopID + item.ProductID + Consts.NULL_ID + item.OwnerType + item.StepID + item.EqpID + dateString; string k2 = item.ShopID + item.ProductID + Consts.NULL_ID + item.OwnerType + item.StepID; int wipCurStep = 0; int wipMainStep = 0; if (_dict.TryGetValue(k, out padding) == false) { if (k2 == "ARRAYB8A550QU5V501AASMP041500-00") { } SmcvData.WipDetail wipDetail; _wipCurStepDic.TryGetValue(k2, out wipDetail); wipCurStep = wipDetail == null ? 0 : wipDetail.GlassQty; wipDetail = null; _wipMainStepDic.TryGetValue(k2, out wipDetail); wipMainStep = wipDetail == null ? 0 : wipDetail.GlassQty; SmcvData.StepInfo stepInfo; _stepInfoDic.TryGetValue(item.ShopID + item.StepID, out stepInfo); padding = new SmcvData.ResultItem(item.ShopID, item.ProductID, Consts.NULL_ID, item.OwnerType, item.StepID, item.EqpID, date);//, 0, 0); padding.SetStepInfo(stepInfo); _dict.Add(k, padding); } } SmcvData.ResultItem ri; DateTime modTargetDate = this.IsTimeConditionHour ? ShopCalendar.StartTimeOfDayT(item.TargetDate) : ShopCalendar.ShiftStartTimeOfDayT(item.TargetDate); string curShopID = item.ShopID; string productID = item.ProductID; string productVersion = Consts.NULL_ID; string ownerType = item.OwnerType; string stepID = item.StepID; string eqpID = item.EqpID; //DateTime shift = ShopCalendar.ShiftStartTimeOfDayT(modTargetDate); string dateString2 = this.IsTimeConditionHour ? modTargetDate.ToString("yyyyMMdd") : modTargetDate.DbToTimeString(); string key = curShopID + productID + ownerType + stepID + eqpID + dateString2; if (_dict.TryGetValue(key, out ri) == false) { continue; // 있을 수 없음 //ri = new SmcvData.ResultItem(curShopID, productID, productVersion, ownerType, stepID, eqpID, modTargetDate); //_dict.Add(key, ri); } ri.UpdateActQty((int)item.InQty, (int)item.OutQty); } }