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)] /// /// 定期清理过期 ERP、AGV、操作日志、提升机计数和日志文件,避免历史数据无限增长。 /// public class DataCleanJob : IJob { private static readonly IERPTaskService ERPTaskService = GlobalServericeProvidor.GetService(); private static readonly IAGVTaskService AgvTaskService = GlobalServericeProvidor.GetService(); private static readonly IOperationLogService OperationLogService = GlobalServericeProvidor.GetService(); private static readonly IElevatorCountService ElevatorCountService = GlobalServericeProvidor.GetService(); /// 执行过期业务数据和日志文件清理。 /// Quartz 作业上下文。 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(); } } } } }