private void SetResultData() { _resultDataDic = new Dictionary <string, PrvData.ResultData>(); string filter = Globals.CreateFilter(string.Empty, SimResultData.StepWipSchema.SHOP_ID, "=", this.SelectedShopID); filter = Globals.CreateFilter(filter, SimResultData.StepWipSchema.TARGET_DATE, ">=", this.FromTime.ToString(), "AND"); filter = Globals.CreateFilter(filter, SimResultData.StepWipSchema.TARGET_DATE, "<", this.ToTime.ToString(), "AND"); DataTable dtStepWip = _result.LoadOutput(SimResultData.OutputName.StepWip, filter); //var prodsInStepWip = ComboHelper.Distinct(dtStepWip, SimResultData.StepWipSchema.PRODUCT_ID, string.Empty); foreach (DataRow drow in dtStepWip.Rows) { SimResultData.StepWip stepWip = new SimResultData.StepWip(drow); if (this.SelectedProductList.Contains(stepWip.ProductID) == false) { continue; } string mainProcID = string.Empty; _mainProcDic.TryGetValue(stepWip.ShopID + stepWip.ProductID, out mainProcID); if (string.IsNullOrEmpty(mainProcID)) { continue; } PrvData.StepInfo stepInfo; _stdStepDic.TryGetValue(stepWip.ShopID + stepWip.StepID, out stepInfo); //string[] isWaitRunArr = stepWip.WaitQty * stepWip.RunQty > 0 ? new string[]{"Run", "Wait"} // : stepWip.RunQty > 0 ? new string[]{"Run"} : new string[]{"Wait"}; //foreach (string isWaitRun in isWaitRunArr) //{ //} string key = stepWip.ShopID + stepWip.ProductID + mainProcID + stepWip.StepID + stepWip.TargetDate; PrvData.ResultData resultData; if (_resultDataDic.TryGetValue(key, out resultData) == false) { resultData = new PrvData.ResultData(stepWip.ShopID, stepWip.ProductID, mainProcID, stepWip.StepID, stepInfo , stepWip.TargetDate); string key2 = stepWip.ShopID + stepWip.ProductID + mainProcID + stepWip.StepID; PrvData.ProcStepTatInfo tatInfo; _tatDic.TryGetValue(key2, out tatInfo); resultData.SetTatAndProgRate(tatInfo, this.SelectedSectorSize); _resultDataDic.Add(key, resultData); } resultData.AddQty((int)stepWip.WaitQty, (int)stepWip.RunQty); } }
private void InitializeData() { var modelContext = this._result.GetCtx <ModelDataContext>(); // ALL Step정보 _stepInfoDic = new Dictionary <string, SwvData.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 (_stepInfoDic.ContainsKey(step.SHOP_ID + step.STEP_ID) == false) { _stepInfoDic.Add(step.SHOP_ID + step.STEP_ID, new SwvData.StepInfo(step.SHOP_ID, step.STEP_ID, step.STEP_DESC, step.STEP_TYPE, (int)step.STEP_SEQ, step.LAYER_ID)); } } // StepWip 정보 _stepWipAllDic = new Dictionary <string, SwvData.StepWipInf>(); _stepWipChartAllDDic = new DoubleDictionary <DateTime, string, List <SwvData.StepWipChartInf> >(); // Result / StepWip 재공정보 DataTable dtStepWip = _result.LoadOutput(SimResultData.OutputName.StepWip); foreach (DataRow drow in dtStepWip.Rows) { SimResultData.StepWip row = new SimResultData.StepWip(drow); SwvData.StepInfo stepInfo; _stepInfoDic.TryGetValue(row.ShopID + row.StepID, out stepInfo); string stepDesc = stepInfo == null ? Consts.NULL_ID : stepInfo.StepDesc; int stepSeq = stepInfo == null ? int.MaxValue : stepInfo.StepSeq; string layer = stepInfo == null ? Consts.NULL_ID : stepInfo.Layer; Dictionary <string, List <SwvData.StepWipChartInf> > dic; if (_stepWipChartAllDDic.TryGetValue(row.TargetDate, out dic) == false) { _stepWipChartAllDDic.Add(row.TargetDate, dic = new Dictionary <string, List <SwvData.StepWipChartInf> >()); } List <SwvData.StepWipChartInf> list; if (dic.TryGetValue(row.ShopID, out list) == false) { dic.Add(row.ShopID, list = new List <SwvData.StepWipChartInf>()); } SwvData.StepWipChartInf inf = new SwvData.StepWipChartInf(row.TargetDate, row.ShopID, row.StepID, stepDesc, stepSeq, layer); list.Add(inf); } }
private void InitializeData() { var modelContext = this._result.GetCtx <ModelDataContext>(); _stdStepDic = new Dictionary <string, PrvData.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 PrvData.StepInfo(step.SHOP_ID, step.STEP_ID, step.STEP_DESC, step.STEP_TYPE, (int)step.STEP_SEQ, step.LAYER_ID)); } } try { _defaultRunTat = Convert.ToDouble(_result.Experiment.GetArgument("DefaultRunTAT")); _defaultWaitTat = Convert.ToDouble(_result.Experiment.GetArgument("DefaultWaitTAT")); } catch { _defaultWaitTat = 0; _defaultRunTat = 0; } _mainProcDic = new Dictionary <string, string>(); var dtProduct = modelContext.Product; foreach (var prod in dtProduct) { if (_mainProcDic.ContainsKey(prod.SHOP_ID + prod.PRODUCT_ID) == false) { _mainProcDic.Add(prod.SHOP_ID + prod.PRODUCT_ID, prod.PROCESS_ID); } } foreach (var prod in dtProduct) { if (_mainProcDic.ContainsKey(prod.SHOP_ID + prod.PRODUCT_ID) == false) { _mainProcDic.Add(prod.SHOP_ID + prod.PRODUCT_ID, prod.PROCESS_ID); } } var dtTat = modelContext.Tat;// modelContext.Tat.Where(x => x.PRODUCT_TYPE == "Production");//.Join(modelContext.ProcStep.Where(x => x.IS_MANDATORY == 'Y'), //t => t.SHOP_ID + t.PROCESS_ID + t.STEP_ID, //p => p.SHOP_ID + p.PROCESS_ID + p.STEP_ID, //(t, p) => new //{ // SHOP_ID = t.SHOP_ID, // PRODUCT_ID = t.PRODUCT_ID, // PROCESS_ID = t.PROCESS_ID, // STEP_ID = t.STEP_ID, // STEP_SEQ = p.STEP_SEQ, // RUN_TAT = t.RUN_TAT, // WAIT_TAT = t.WAIT_TAT //}) //.OrderBy(x => x.SHOP_ID + x.PROD_ID + x.PROC_ID).ThenBy(x => x.STEP_SEQ); Dictionary <string, PrvData.TatInfo> tatAllDic = new Dictionary <string, PrvData.TatInfo>(); foreach (var row in dtTat) { PrvData.TatInfo tatInfo = new PrvData.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 procStepMand = modelContext.ProcStep.OrderBy(x => x.SHOP_ID + x.PROCESS_ID).OrderBy(x => x.STEP_SEQ); Dictionary <string, List <ProcStep> > procStepDic = new Dictionary <string, List <ProcStep> >(); foreach (var row in procStepMand) { 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> mainProcProdList = new List <string>(); DataTable dtStepWip = _result.LoadOutput(SimResultData.OutputName.StepWip); foreach (DataRow drow in dtStepWip.Rows) { SimResultData.StepWip stepWip = new SimResultData.StepWip(drow); string mainProcID = string.Empty; _mainProcDic.TryGetValue(stepWip.ShopID + stepWip.ProductID, out mainProcID); if (string.IsNullOrEmpty(mainProcID)) { continue; } string item = CommonHelper.CreateKey(stepWip.ShopID, stepWip.ProductID, mainProcID); if (mainProcProdList.Contains(item) == false) { mainProcProdList.Add(item); } } _tatDic = new Dictionary <string, PrvData.ProcStepTatInfo>(); foreach (string item in mainProcProdList) { 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; PrvData.TatInfo tatInfo; if (tatAllDic.TryGetValue(key2, out tatInfo)) { waitTat = tatInfo.WaitTat; runTat = tatInfo.RunTat; tat = tatInfo.Tat; } cumTat += tat; PrvData.ProcStepTatInfo psTatInfo; if (_tatDic.TryGetValue(key2, out psTatInfo) == false) { _tatDic.Add(key2, psTatInfo = new PrvData.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) { PrvData.ProcStepTatInfo psTatInfo; if (_tatDic.TryGetValue(k, out psTatInfo) == false) { continue; // 있을 수 없음 } psTatInfo.SetTotalTat(totalTat); } } }