Files

57 lines
2.5 KiB
C#
Raw Permalink Normal View History

2026-09-02 16:31:50 +08:00
using JSMachine.WMS.App.IService;
using JSMachine.WMS.Application.IService;
using JSMachine.WMS.Infrastructure;
using JSMachine.WMS.Job.Enum;
using JSMachine.WMS.Job.JobAttributes;
using Quartz;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace JSMachine.WMS.Job.Job
{
[DisallowConcurrentExecution]
[PersistJobDataAfterExecution]
[Job(Name = nameof(DataCleanJob)
, Group = nameof(DataCleanJob) + "_Group"
, Description = "过期数据清理任务"
, ScheduleType = ScheduleType.Simple
, IntervalMilliSeconds = 1000 * 3600 * 24
, RepeatCount = 0
, StartTimeStr = null)]
/// <summary>
/// 定期清理过期 ERP、AGV、操作日志、提升机计数和日志文件,避免历史数据无限增长。
/// </summary>
public class DataCleanJob : IJob
{
private static readonly IERPTaskService ERPTaskService = GlobalServericeProvidor.GetService<IERPTaskService>();
private static readonly IAGVTaskService AgvTaskService = GlobalServericeProvidor.GetService<IAGVTaskService>();
private static readonly IOperationLogService OperationLogService = GlobalServericeProvidor.GetService<IOperationLogService>();
private static readonly IElevatorCountService ElevatorCountService = GlobalServericeProvidor.GetService<IElevatorCountService>();
/// <summary>执行过期业务数据和日志文件清理。</summary>
/// <param name="context">Quartz 作业上下文。</param>
public async Task Execute(IJobExecutionContext context)
{
await ERPTaskService.DeleByExpression(p => p.CreationTime < DateTime.Now.AddMonths(-12));
await AgvTaskService.DeleByExpression(p => p.CreationTime < DateTime.Now.AddMonths(-12));
await OperationLogService.DeleByExpression(p => p.CreationTime < DateTime.Now.AddMonths(-12));
await ElevatorCountService.DeleByExpression(p=> p.CreationTime < DateTime.Now.AddDays(-10));
DirectoryInfo dir = new(Path.Combine($"{AppDomain.CurrentDomain.BaseDirectory}", "logs"));
if (dir.Exists)
{
FileSystemInfo[] fileInfos = dir.GetFileSystemInfos();
foreach (var fileInfo in fileInfos)
{
if (fileInfo.CreationTime <= DateTime.Now.AddMonths(-12))
fileInfo.Delete();
}
}
}
}
}