///// <summary> ///// 已经排到的最后一天 ///// </summary> //public DateTime? CapEndTime { get; set; } ///// <summary> ///// 最后一天剩余的能力值 ///// </summary> //public double LastCap { get; set; } ///// <summary> ///// 添加Step到数组中,并记录最后的完成时间 ///// </summary> ///// <param name="step"></param> //public DateTime? AddStep(MOItemTask step) //{ // DateTime? EndTime = null ; // if (!StepList.Where(p => p.MOItemTaskId == step.MOItemTaskId).Any()) // { // StepList.Add(step); // this.endTime = step.PlannedDateTo; // EndTime = this.endTime; // } // SetTimeslice(); // return EndTime; //} //public void AddStep(MOItemTask step,double cap) //{ // double sum = LastCap + cap; // double maxcap = VentureCap * 1.2; // if (sum <= maxcap) // { // LastCap = VentureCap - sum; // } // else // { // LastCap = VentureCap - cap; // if(CapEndTime == null) // { // CapEndTime = DateTime.Now; // } // do // { // CapEndTime = CapEndTime.Value.AddDays(1); // } // while (IsWorkTime(CapEndTime.Value)); // } // step.PlannedDateFrom = new DateTime(CapEndTime.Value.Year, CapEndTime.Value.Month, CapEndTime.Value.Day, 8, 0, 0); // step.PlannedDateTo = new DateTime(CapEndTime.Value.Year, CapEndTime.Value.Month, CapEndTime.Value.Day, 17, 0, 0); // StepList.Add(step); //} public DateTime?AddStep(MOItemTask step, DateTime?lastTime, double cap) { if (lastTime != null) { var workTime = VenTureDayModel.GetWorkTime((DateTime)lastTime, VentureId); var venTureDayModel = this.VenTureDayModelList.Where(p => p.DayDate.Year == workTime.Year && p.DayDate.Month == workTime.Month && p.DayDate.Day == workTime.Day && p.LastCap > 0).FirstOrDefault(); if (venTureDayModel == null) { this.VenTureDayModelList.Add(new VenTureDayModel(workTime, VentureCap, new List <MOItemTask>())); venTureDayModel = this.VenTureDayModelList.Where(p => p.DayDate >= lastTime).FirstOrDefault(); } if (venTureDayModel.LastCap < cap && VentureCap * 0.25 < cap) { } var retModel = venTureDayModel.AddStep(step, cap, lastTime, this.VentureId); StepList.Add(retModel.MOItemTask); return(retModel.EndTime); } else { return(null); } }
public void SetPlanCapCount() { this.PlanCapCount = 0; foreach (var mit in this.StepList) { int cap = VenTureDayModel.GetStandardWorkingTimeByProductId_SpecificationId(mit.ProductId, mit.SpecificationID); this.PlanCapCount += cap; } }
public void DispatchStep() { foreach (var mit in StepList) { var vdm = VenTureDayModelList.Where(p => p.Year == mit.PlannedDateFrom.Value.Year && p.Month == mit.PlannedDateFrom.Value.Month && p.Day == mit.PlannedDateFrom.Value.Day).FirstOrDefault(); if (vdm == null) { vdm = new VenTureDayModel((DateTime)mit.PlannedDateFrom, this.VentureCap, new List <MOItemTask>()); this.VenTureDayModelList.Add(vdm); vdm.StepList.Add(mit); } else { vdm.StepList.Add(mit); } } foreach (var vdm in this.VenTureDayModelList) { vdm.SetTimeslice(); } }