Esempio n. 1
0
        //处理数据
        public void DataHandle()
        {
            var prods = lotList.Where(w => w.Lot_Type == "Production").Select(s => s.ProdSpec_ID).Distinct();

            foreach (var f in prods)
            {
                var cur  = GetChartModelByProd(f, lotList_Prod_Cur);
                var ystd = GetChartModelByProd(f, lotList_Prod_Ystd);
                if (ystd.ChartEntities.Any())
                {
                    CurModels.Add(cur);
                    YstdModels.Add(ystd);
                }
            }
            GetTableEntities(prods);
            var curOtherModels  = new List <ReqRpt028ChartModel>();
            var ystdOtherModels = new List <ReqRpt028ChartModel>();
            var otherProds      = lotList.Where(w => w.Lot_Type != "Production").Select(s => s.ProdSpec_ID).Distinct().Except(prods);

            foreach (var prod in otherProds)
            {
                var cur  = GetChartModelByProd(prod, lotList_Other_Cur);
                var ystd = GetChartModelByProd(prod, lotList_Other_Ystd);
                if (ystd.ChartEntities.Any())
                {
                    curOtherModels.Add(cur);
                    ystdOtherModels.Add(ystd);
                }
            }
            //计算OtherModel
            if (ystdOtherModels.Any())
            {
                var CurOtherModel  = GetOtherModelByOtherModels(curOtherModels);
                var YSTDOtherModel = GetOtherModelByOtherModels(ystdOtherModels);
                CurModels.Add(CurOtherModel);
                YstdModels.Add(YSTDOtherModel);
            }
        }
Esempio n. 2
0
 private void GetTableEntities(IEnumerable <string> prods)
 {
     //TableEntities
     foreach (var f in prods)
     {
         double keyCt     = 0;
         double MonthCt   = 0;
         var    outs      = outList.Where(w => w.ProdSpec_ID == f);
         var    curModel  = CurModels.Where(w => w.Product == f).First();
         var    ystdModel = YstdModels.Where(w => w.Product == f).First();
         var    curTable  = new ReqRpt028TableEntity {
             Product = f, AlreadyOut = outs.Any() ? outs.First().CurOut : 0, TargetOut = outs.Any() ? outs.First().TargetOut : 0
         };
         var ystdTable = new ReqRpt028TableEntity {
             Product = f, AlreadyOut = outs.Any() ? outs.First().YstdOut : 0, TargetOut = curTable.TargetOut
         };
         double remainDays = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month) - DateTime.Now.Day + 1;
         //curTable.ForecastOut = curModel.ChartEntities.Where(w => w.RemainCT <= remainDays).First().AccWip;
         var belowCurKeys = curModel.ChartEntities.Where(w => w.RemainCT <= remainDays);
         var aboveCurKeys = curModel.ChartEntities.Where(w => w.RemainCT >= remainDays);
         curTable.ForecastOut = belowCurKeys.Sum(s => s.Wip);
         curTable.KeyStage    = aboveCurKeys.Any() ? aboveCurKeys.Last().Stage : curModel.ChartEntities.First().Stage;
         keyCt = aboveCurKeys.Any() ? aboveCurKeys.Last().RemainCT : curModel.ChartEntities.First().RemainCT;
         //目标剩余量
         var remainCurTaget = curTable.AlreadyOut - curTable.TargetOut;
         if (remainCurTaget >= 0)
         {
             curTable.MotherStage = "wafer out"; MonthCt = 0;
         }
         else
         {
             var acc = 0;
             for (var i = curModel.ChartEntities.Count() - 1; i >= 0; i--)
             {
                 acc += curModel.ChartEntities[i].Wip;
                 if (remainCurTaget + acc >= 0)
                 {
                     curTable.MotherStage = curModel.ChartEntities[i].Stage;
                     MonthCt = curModel.ChartEntities[i].RemainCT;
                     break;
                 }
             }
             if (string.IsNullOrEmpty(curTable.MotherStage))
             {
                 curTable.MotherStage = "wafer start";
                 MonthCt = curModel.ChartEntities.First().RemainCT;
             }
         }
         curTable.Day = keyCt - MonthCt;
         keyCt        = 0;
         MonthCt      = 0;
         //ystdTable.ForecastOut=ystdModel.ChartEntities.Where(w => w.RemainCT <= remainDays).First().AccWip;
         var belowYstKeys = ystdModel.ChartEntities.Where(w => w.RemainCT <= remainDays);
         var aboveYstKeys = ystdModel.ChartEntities.Where(w => w.RemainCT >= remainDays);
         ystdTable.ForecastOut = belowYstKeys.Sum(s => s.Wip);
         ystdTable.KeyStage    = aboveYstKeys.Any() ? aboveYstKeys.Last().Stage : ystdModel.ChartEntities.First().Stage;
         keyCt = aboveYstKeys.Any() ? aboveYstKeys.Last().RemainCT : ystdModel.ChartEntities.First().RemainCT;
         //目标剩余量
         var remainYstTaget = ystdTable.AlreadyOut - ystdTable.TargetOut;
         if (remainYstTaget >= 0)
         {
             ystdTable.MotherStage = "wafer out"; MonthCt = 0;
         }
         else
         {
             var acc = 0;
             for (var i = ystdModel.ChartEntities.Count() - 1; i >= 0; i--)
             {
                 acc += ystdModel.ChartEntities[i].Wip;
                 if (remainYstTaget + acc >= 0)
                 {
                     ystdTable.MotherStage = ystdModel.ChartEntities[i].Stage;
                     MonthCt = ystdModel.ChartEntities[i].RemainCT;
                     break;
                 }
             }
             if (string.IsNullOrEmpty(ystdTable.MotherStage))
             {
                 ystdTable.MotherStage = "wafer start";
                 MonthCt = ystdModel.ChartEntities.First().RemainCT;
             }
         }
         ystdTable.Day = keyCt - MonthCt;
         CurTableEntities.Add(curTable);
         YstdTableEntities.Add(ystdTable);
     }
 }