Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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);
                }
            }
        }