diff --git a/Service/BudgetService.cs b/Service/BudgetService.cs index d3979c9..ee4fd60 100644 --- a/Service/BudgetService.cs +++ b/Service/BudgetService.cs @@ -48,8 +48,8 @@ public class BudgetService( if (archive != null) { - var periodRange = GetPeriodRange(DateTime.Now, BudgetPeriodType.Month, referenceDate); - return archive.Content.Select(c => new BudgetResult + var (start, end) = GetPeriodRange(DateTime.Now, BudgetPeriodType.Month, referenceDate); + return [.. archive.Content.Select(c => new BudgetResult { Name = c.Name, Type = c.Type, @@ -60,9 +60,9 @@ public class BudgetService( NoLimit = c.NoLimit, IsMandatoryExpense = c.IsMandatoryExpense, Description = c.Description, - PeriodStart = periodRange.start, - PeriodEnd = periodRange.end, - }).ToList(); + PeriodStart = start, + PeriodEnd = end, + })]; } logger.LogWarning("获取预算列表时发现归档数据缺失,Year: {Year}, Month: {Month}", year, month); @@ -87,7 +87,13 @@ public class BudgetService( referenceDate, budgets)); - return dtos.Where(dto => dto != null).Cast().ToList(); + dtos = dtos + .OrderByDescending(x => x.IsMandatoryExpense) + .ThenBy(x => x.Type) + .ThenByDescending(x => x.Current) + .ToList(); + + return [.. dtos.Where(dto => dto != null).Cast()]; } public async Task GetSavingsBudgetAsync(int year, int month, BudgetPeriodType type) @@ -299,7 +305,7 @@ public class BudgetService( for (int i = 1; i <= 12; i++) { var currentMonthDate = new DateTime(startDate.Year, i, 1); - + if (currentMonthDate.Year > now.Year || (currentMonthDate.Year == now.Year && i > now.Month)) { result.Trend.Add(null); diff --git a/WebApi/Controllers/BudgetController.cs b/WebApi/Controllers/BudgetController.cs index 89bab85..e3c0762 100644 --- a/WebApi/Controllers/BudgetController.cs +++ b/WebApi/Controllers/BudgetController.cs @@ -16,6 +16,7 @@ public class BudgetController( try { return (await budgetService.GetListAsync(referenceDate)) + .OrderByDescending(b => b.IsMandatoryExpense) .OrderBy(b => b.Category) .ThenBy(b => b.Type) .ThenByDescending(b => b.Limit > 0 ? b.Current / b.Limit : 0)