All checks were successful
Docker Build & Deploy / Build Docker Image (push) Successful in 34s
Docker Build & Deploy / Deploy to Production (push) Successful in 9s
Docker Build & Deploy / Cleanup Dangling Images (push) Successful in 1s
Docker Build & Deploy / WeChat Notification (push) Successful in 1s
45 lines
1.3 KiB
C#
45 lines
1.3 KiB
C#
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, "预算归档任务执行出错");
|
||
}
|
||
}
|
||
}
|