/// <summary> /// 处理老数据 : 2020.3月份及以前的。 /// 确保在3月之前开始的任务,得到拆分。 /// 4月开始,任务会通过禅道保证在当月开始及结束。 /// </summary> List <Task> SplitTaskFinishedBefore20200331(List <Task> tsks) { if (Wd.Year >= 2020 && Wd.Mon > 3) { return(tsks); } foreach (var T in tsks) { if (!T.Inf.IsFinished) { //TODO //没有完成的,需要向后拆: //3月的任务已经全部结束掉了,或者拆了新阶段。所以只需要向前拆。 //2月及以前的就不管了。 continue; } if (T.Res.FinishedPhs.Year >= 2020 && T.Res.FinishedPhs.Month > 3) { continue; } bool StartFinishInSameMonth = (T.Res.StartedPhs.Month == T.Res.FinishedPhs.Month && T.Res.StartedPhs.Year == T.Res.FinishedPhs.Year); if (StartFinishInSameMonth) { continue; } //3月之前开始的,当时没有拆分任务,那么按 当前完成度,照完时间占比,拆分一下 var TotalDaySpent = Wd.CountWDays(T.Res.StartedPhs, T.Res.FinishedPhs); var SpentThisMonth = Wd.CountWDays(Wd.Day1, T.Res.FinishedPhs); var PctgInM = (float)SpentThisMonth / TotalDaySpent; T.Phs.LastId = 1; T.Phs.LstCompDeg = T.Phs.CompDeg - (uint)(PctgInM * 100f); T.Res.StartedPhs = Wd.Day1; } return(tsks); }