Files
jinko.yikatong/Src/Dlhis.ScheduledTask/Jobs/ArchiveDeviceUploadLogJob.cs
2025-05-12 14:52:17 +08:00

52 lines
1.7 KiB
C#

using Dlhis.Entity.Device.Entities;
using Dlhis.ScheduledTask.Attributes;
namespace Dlhis.ScheduledTask.Jobs;
/// <summary>
/// 归档设备通行记录
/// </summary>
[RecurringJob(nameof(ArchiveDeviceUploadLogJob), "0 0/5 * * * ?", Name = "归档设备通行记录")]
public class ArchiveDeviceUploadLogJob : BaseJob
{
public ArchiveDeviceUploadLogJob(IServiceProvider serviceProvider) : base(serviceProvider)
{
}
protected override async Task RunAsync(IServiceProvider serviceProvider)
{
var before60Days = DateTime.Today.AddDays(-60).AddSeconds(1);
const int limit = 500;
const string tableName = "deviceuploadlog_20250107";
var data = await DbContext.Queryable<DeviceUploadLogEntity>().Where(x => x.RaiseDateTime < before60Days).OrderBy(x => x.Id).ToPageListAsync(1, limit);
do
{
if (data.Any())
{
await DbContext.Client.Ado.BeginTranAsync();
try
{
await DbContext.DeleteReallyAsync(data);
foreach (var item in data)
{
item.Id = 0;
}
await DbContext.Client.Insertable(data).AS(tableName).ExecuteCommandAsync();
await DbContext.Client.Ado.CommitTranAsync();
}
catch (Exception)
{
await DbContext.Client.Ado.RollbackTranAsync();
}
await Task.Delay(200);
data = await DbContext.Queryable<DeviceUploadLogEntity>().Where(x => x.RaiseDateTime < before60Days).OrderBy(x => x.Id).ToPageListAsync(1, limit);
}
} while (data.Count == limit);
}
}