using Furion.DatabaseAccessor;
|
using Furion.Schedule;
|
using Microsoft.EntityFrameworkCore;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading;
|
using System.Threading.Tasks;
|
|
namespace FlexJobApi.Core
|
{
|
/// <summary>
|
/// 定时按日期计算任务发布状态
|
/// </summary>
|
public class CalcTaskSatusByDateJob(
|
IRepository<TaskInfo> rep
|
) : IJob
|
{
|
private readonly IRepository<TaskInfo> rep = rep;
|
|
public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
|
{
|
var now = DateTime.Now;
|
var entities = await rep.AsQueryable()
|
.Where(it => it.EndTime < now && it.ReleaseStatus != EnumTaskReleaseStatus.Stopped)
|
.ToListAsync();
|
if (entities.IsNotNull())
|
{
|
foreach (var entity in entities)
|
{
|
entity.ReleaseStatus = EnumTaskReleaseStatus.Stopped;
|
}
|
await rep.UpdateAsync(entities);
|
}
|
}
|
}
|
}
|