Exemple #1
0
        private void ProcessData()
        {
            _rsltPivotDic = new Dictionary <string, IocvData.ResultPivot>();
            _rsltChartDic = new Dictionary <string, IocvData.ResultChart>();

            var modelContext = this._result.GetCtx <ModelDataContext>();

            // ACT_DATE : string 형식 (20161215 180000 위와 같이 데이터 들어옴)
            //var dtAct = modelContext.InOutAct.Where(x => x.SHOP_ID == this.SelectedShopID
            //    & this.FromTime <= x.ACT_DATE.Replace(" ", "").DbToDateTime()
            //    & x.ACT_DATE.Replace(" ", "").DbToDateTime() < this.ToTime)
            //    .Where(x => this.IsAllProductSeletected ? true : this.SelectedProductList.Contains(x.PRODUCT_ID))
            //    .Where(x => this.IsAllInOutSeletected ? true : this.SelectedInOutList.Contains(x.IN_OUT.ToUpper()))
            //    .Where(x => x.ACT_QTY > 0)
            //    .GroupBy(x => new {
            //        SHOP_ID = x.SHOP_ID,
            //        IN_OUT_FLAG = x.IN_OUT.ToUpper() == IocvData.Consts.InFlag ? IocvData.Consts.InFlag :
            //            IocvData.Consts.OutFlag,
            //        TARGET_DATE = x.ACT_DATE.Replace(" ", "").DbToDateTime(),
            //        PROD_ID = x.PRODUCT_ID,
            //        PROD_VER = x.PRODUCT_VERSION
            //        })
            //    .Select(g => new
            //        {
            //            SHOP_ID = g.Key.SHOP_ID,
            //            IN_OUT_FLAG = g.Key.IN_OUT_FLAG,
            //            TARGET_DATE = g.Key.TARGET_DATE,
            //            PROD_ID = g.Key.PROD_ID,
            //            PROD_VER = g.Key.PROD_VER,
            //            DEPT = IocvData.Consts.ACT,
            //            QTY = g.Sum(s => s.ACT_QTY)
            //        });

            //foreach (var row in dtAct)
            //{
            //    AddResult(row.SHOP_ID, row.IN_OUT_FLAG, row.TARGET_DATE, row.PROD_ID, row.PROD_VER,
            //        IocvData.Consts.ACT, row.QTY);
            //}

            // PLAN_DATE : DateTime 형식 (2016-12-08 00:00:00 위와 같이 데이터 들어옴)
            var dtPlan = modelContext.InOutPlan.Where(x => x.SHOP_ID == this.SelectedShopID)
                         .Where(x => this.IsAllProductSeletected ? true : this.SelectedProductList.Contains(x.PRODUCT_ID))
                         .Where(x => this.IsAllInOutSeletected ? true : this.SelectedInOutList.Contains(x.IN_OUT.ToUpper()))
                         .Where(x => x.PLAN_QTY > 0)
                         .Select(x => new
            {
                SHOP_ID     = x.SHOP_ID,
                IN_OUT_FLAG = x.IN_OUT.Trim().ToUpper() == IocvData.Consts.InFlag ? IocvData.Consts.InFlag :
                              IocvData.Consts.OutFlag,
                TARGET_DATE = x.PLAN_DATE == x.PLAN_DATE.Date ?
                              ShopCalendar.StartTimeOfDay(x.PLAN_DATE) : //x.PLAN_DATE.AddHours(ShopCalendar.StartTime.Hours)
                              x.PLAN_DATE,                               // Data가 00:00:00 형식에 대한 예외처리
                PROD_ID = x.PRODUCT_ID,
                //PROD_VER = x.PRODUCT_VERSION,
                DEPT = IocvData.Consts.PLAN,
                QTY  = (double)x.PLAN_QTY
            })
                         .Where(x => this.FromTime <= x.TARGET_DATE & x.TARGET_DATE < this.ToTime);

            foreach (var row in dtPlan)
            {
                AddResult(row.SHOP_ID,
                          row.IN_OUT_FLAG,
                          row.TARGET_DATE,
                          row.PROD_ID,
                          "-",//row.PROD_VER,
                          IocvData.Consts.PLAN, row.QTY);
            }

            string filter = Globals.CreateFilter(string.Empty, SmcvData.Schema.SHOP_ID, "=", this.SelectedShopID);

            filter = Globals.CreateFilter(filter, SimResultData.StepMoveSchema.TARGET_DATE, ">=", this.FromTime.ToString(), "AND");
            filter = Globals.CreateFilter(filter, SimResultData.StepMoveSchema.TARGET_DATE, "<", this.ToTime.ToString(), "AND");

            DataTable dtStepMove = _result.LoadOutput(SimResultData.OutputName.StepMove, filter);

            foreach (DataRow row in dtStepMove.Rows)
            {
                SimResultData.StepMoveInfo info = new SimResultData.StepMoveInfo(row);

                if (this.IsAllProductSeletected == false && this.SelectedProductList.Contains(info.ProductID) == false)
                {
                    continue;
                }

                string inStepID = this.SelectedShopID == "ARRAY" ? this.SelectedArrayInStepID :
                                  (this.SelectedShopID == "CF" ? this.SelectedCfInStepID : this.SelectedCellInStepID);
                string outStepID = this.SelectedShopID == "ARRAY" ? this.SelectedArrayOutStepID :
                                   (this.SelectedShopID == "CF" ? this.SelectedCfOutStepID : "--");

                string inOutFlag = string.Empty;
                if (info.StepID == inStepID)
                {
                    inOutFlag = IocvData.Consts.InFlag;
                }
                else if (info.StepID == outStepID)
                {
                    inOutFlag = IocvData.Consts.OutFlag;
                }
                else
                {
                    continue;
                }

                if (this.IsAllInOutSeletected == false && this.SelectedInOutList.Contains(inOutFlag) == false)
                {
                    continue;
                }

                double qty = inOutFlag == IocvData.Consts.InFlag ? info.InQty : info.OutQty;

                AddResult(info.ShopID, inOutFlag, info.TargetDate, info.ProductID, info.ProductVersion, IocvData.Consts.SIM, qty);
            }
        }