57 lines
2.5 KiB
C#
57 lines
2.5 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|