From 407ceece1a3be3d7ebb6cd2ef55ad4ddc4395134 Mon Sep 17 00:00:00 2001
From: hwh <332078369@qq.com>
Date: 星期四, 16 一月 2025 11:15:57 +0800
Subject: [PATCH] 清理日志任务

---
 Admin.NET/WCS.Application/Job/LogClearJob.cs |   37 +++++++++++++++++++++++++++++++++++++
 1 files changed, 37 insertions(+), 0 deletions(-)

diff --git a/Admin.NET/WCS.Application/Job/LogClearJob.cs b/Admin.NET/WCS.Application/Job/LogClearJob.cs
new file mode 100644
index 0000000..0c0f058
--- /dev/null
+++ b/Admin.NET/WCS.Application/Job/LogClearJob.cs
@@ -0,0 +1,37 @@
+锘縰sing Furion.Schedule;
+using Microsoft.Extensions.Logging;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WCS.Application;
+/// <summary>
+/// 鏃ュ織娓呯悊浠诲姟
+/// </summary>
+[JobDetail("job_logClear", Description = "浠诲姟鏃ュ織娓呯悊浠诲姟", GroupName = "default", Concurrent = false)]
+[Daily(TriggerId = "trigger_logClear", Description = "浠诲姟鏃ュ織娓呯悊浠诲姟")]
+public class LogClearJob : IJob
+{
+    private readonly IServiceScopeFactory _scopeFactory;
+    private readonly ILogger _logger;
+
+    public LogClearJob(IServiceScopeFactory scopeFactory, ILoggerFactory loggerFactory)
+    {
+        _scopeFactory = scopeFactory;
+        _logger = loggerFactory.CreateLogger(CommonConst.SysLogCategoryName);
+    }
+
+    public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
+    {
+        using var serviceScope = _scopeFactory.CreateScope();
+        
+        var rep = serviceScope.ServiceProvider.GetRequiredService<SqlSugarRepository<WcsTask>>();
+        DateTime threeMonthsAgo = DateTime.Now.AddMonths(-3);
+        await rep.CopyNew().Context.Deleteable<WcsTask>().Where(s => s.CreateTime < threeMonthsAgo).ExecuteCommandAsync(stoppingToken);
+        await rep.CopyNew().Context.Deleteable<WcsTaskMonitor>().Where(s => s.CreateTime < threeMonthsAgo).ExecuteCommandAsync(stoppingToken);
+        threeMonthsAgo = DateTime.Now.AddMonths(-6);
+        await rep.CopyNew().Context.Deleteable<WcsAlarmLog>().Where(s => s.CreateTime < threeMonthsAgo).ExecuteCommandAsync(stoppingToken);
+    }
+}

--
Gitblit v1.8.0