xby-y
7 天以前 b3ff80e45d24a821ca0731983b1546b48570cdf1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
using WIDESEA_ITaskInfoService;
using WIDESEA_Model.Models;
 
namespace WIDESEA_TaskInfoService;
 
public class Task_HtyService : ServiceBase<Dt_Task_Hty, IRepository<Dt_Task_Hty>>, ITask_HtyService
{
    public Task_HtyService(IRepository<Dt_Task_Hty> BaseDal) : base(BaseDal)
    {
    }
 
    /// <summary>
    /// 删除指定日期之前的历史任务数据
    /// </summary>
    /// <param name="keepMonths">保留的月数,默认为3个月(本月+后两个月)</param>
    /// <returns>删除的记录数</returns>
    public int DeleteOldTaskHistory(int keepMonths = 3)
    {
        try
        {
            // 计算保留日期:当前日期减去keepMonths个月
            DateTime keepDate = DateTime.Now.AddMonths(-keepMonths);
            
            // 先查询出要删除的数据
            List<Dt_Task_Hty> tasksToDelete = BaseDal.QueryData().Where(x => x.CreateDate < keepDate).ToList();
            
            // 如果没有要删除的数据,直接返回0
            if (tasksToDelete.Count == 0)
            {
                return 0;
            }
            
            // 删除查询出的历史记录
            bool result = BaseDal.DeleteData(tasksToDelete);
            return result ? tasksToDelete.Count : 0;
        }
        catch (Exception ex)
        {
            // 记录异常日志
            //Console.WriteLine($"删除历史任务记录失败: {ex.Message}");
            return 0;
        }
    }
 
    /// <summary>
    /// 定时任务调用的历史任务删除方法
    /// </summary>
    public void Task_Hty_Job()
    {
        // 删除3个月之前的历史任务数据,保留本月和后两个月的数据
        DeleteOldTaskHistory(3);
    }
}