private object GetSeasonDataByYear(DateTime thisTime,
List<DailyDialysisWayStatistic> baseStatisticsList, List<string> dialysisWayList)
{
//源格式:透析方式-季度数组
List<Tuple<string, object>> tupleList = new List<Tuple<string, object>>();
var seasonGroups = new[] { "第一季度", "第二季度", "第三季度", "第四季度" };
dialysisWayList.ForEach(y =>
{
int[] countGroups = new int[4];
for (int i = 1; i <= seasonGroups.Length; i++)
{
DateTime[] seasonDate = GetSeasonDate(thisTime.Year, i);
var count = baseStatisticsList
.Where(z => z.DialysisWay == y && z.DialysisDate >= seasonDate.First() &&
z.DialysisDate <= seasonDate.Last())
.Sum(x => x.Frequency);
countGroups[i - 1] = count;
}
tupleList.Add(new Tuple<string, object>(y, countGroups));
});
return new { seasonGroups, tupleList };
}
/// <summary>
/// 获取输入年-季度的第一天与最后一天
/// </summary>
/// <param name="thisYear">当前年</param>
/// <param name="seasonNum">季度序号</param>
/// <returns></returns>
private DateTime[] GetSeasonDate(int thisYear, int seasonNum = 1)
{
var firstDate = new DateTime(thisYear, (seasonNum - 1) * 3 + 1, 1);
//季度最后一天默认30号,1-4季度为31号.
var day = seasonNum == 1 || seasonNum == 4 ? 31 : 30;
var lastDate = new DateTime(thisYear, (seasonNum - 1) * 3 + 3, day);
return new[] { firstDate, lastDate };
}