Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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;
            }
        }
Exemplo n.º 3
0
 private void SetDateRange()
 {
     _dateList = new List <string>();
     for (DateTime dt = ShopCalendar.ShiftStartTimeOfDayT(_planStartTime); dt <= EndTime; dt = dt.AddDays(1))
     {
         _dateList.Add(dt.ToString("yyyyMMdd"));
     }
 }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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]++;
        }
Exemplo n.º 6
0
        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);
            //}
        }
Exemplo n.º 7
0
        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);
            }
        }
Exemplo n.º 8
0
        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);
            }
        }
Exemplo n.º 9
0
        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
        }
Exemplo n.º 10
0
        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;
                }
            }
        }
Exemplo n.º 11
0
        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_");
        }
Exemplo n.º 12
0
        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);
                }
            }
        }
Exemplo n.º 13
0
        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);
            }
        }