فهرست منبع

update Admin.NET/Admin.NET.Core/Service/Job/SysJobService.cs.
增加“清空不保留的作业触发器运行记录”方法,解决执行较频繁的Job产生了大量的记录

Signed-off-by: Lzh666 <422235757@qq.com>

Lzh666 1 سال پیش
والد
کامیت
4e8acb6ad3
1فایلهای تغییر یافته به همراه15 افزوده شده و 1 حذف شده
  1. 15 1
      Admin.NET/Admin.NET.Core/Service/Job/SysJobService.cs

+ 15 - 1
Admin.NET/Admin.NET.Core/Service/Job/SysJobService.cs

@@ -1,4 +1,4 @@
-// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
+// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
 //
 // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
 //
@@ -367,4 +367,18 @@ public class SysJobService : IDynamicApiController, ITransient
     {
         _sysJobTriggerRecordRep.AsSugarClient().DbMaintenance.TruncateTable<SysJobTriggerRecord>();
     }
+    
+    /// <summary>
+    /// 清空不保留的作业触发器运行记录 🔖
+    /// </summary>
+    /// <returns></returns>
+    [NonAction]
+    [DisplayName("清空过期的作业触发器运行记录")]
+    public async Task ClearExpireJobTriggerRecord(SysJobTriggerRecord input)
+    {
+        int keepRecords = 30;//保留记录条数
+        await _sysJobTriggerRecordRep.AsDeleteable().In(it => it.Id,
+         _sysJobTriggerRecordRep.AsQueryable().Skip(keepRecords).OrderByDescending(it => it.LastRunTime)
+         .Where(u => u.JobId == input.JobId && u.TriggerId == input.TriggerId).Select(it => it.Id)).ExecuteCommandAsync();//注意Select不要ToList(), ToList就2次查询了
+    }
 }