Files
EmailBill/Service/Jobs/BudgetArchiveJob.cs
孙诚 ef4ed9fd57
Some checks failed
Docker Build & Deploy / Build Docker Image (push) Failing after 6s
Docker Build & Deploy / Deploy to Production (push) Has been skipped
Docker Build & Deploy / Cleanup Dangling Images (push) Successful in 2s
Docker Build & Deploy / WeChat Notification (push) Successful in 2s
feat: Implement scheduled tasks management and budget archiving functionality
- Added BudgetArchiveJob for monthly budget archiving.
- Created BudgetArchive entity and BudgetArchiveRepository for managing archived budgets.
- Introduced JobController for handling job execution, pausing, and resuming.
- Developed ScheduledTasksView for displaying and managing scheduled tasks in the frontend.
- Updated PeriodicBillJob to improve scope handling.
- Enhanced OpenAiService with increased HTTP timeout.
- Added archiveBudgets API endpoint for archiving budgets by year and month.
- Refactored BudgetController to utilize new repository patterns and improved error handling.
- Introduced rich-content styles for better rendering of HTML content in Vue components.
- Updated various Vue components to support rich HTML content display.
2026-01-09 14:03:01 +08:00

43 lines
1.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using Quartz;
namespace Service.Jobs;
/// <summary>
/// 预算归档定时任务
/// </summary>
[DisallowConcurrentExecution]
public class BudgetArchiveJob(
IServiceProvider serviceProvider,
ILogger<BudgetArchiveJob> logger) : IJob
{
public async Task Execute(IJobExecutionContext context)
{
try
{
logger.LogInformation("开始执行预算归档任务");
// 每个月1号执行归档上个月的数据
var targetDate = DateTime.Now.AddMonths(-1);
var year = targetDate.Year;
var month = targetDate.Month;
using var scope = serviceProvider.CreateScope();
var budgetService = scope.ServiceProvider.GetRequiredService<IBudgetService>();
var result = await budgetService.ArchiveBudgetsAsync(year, month);
if (string.IsNullOrEmpty(result))
{
logger.LogInformation("归档 {Year}年{Month}月 预算任务执行成功", year, month);
}
else
{
logger.LogWarning("归档 {Year}年{Month}月 预算任务提示: {Result}", year, month, result);
}
}
catch (Exception ex)
{
logger.LogError(ex, "预算归档任务执行出错");
}
}
}