using Microsoft.Extensions.Logging; namespace IRaCIS.Core.Application.BackGroundJob { public interface IObtainTaskAutoCancelJob { Task CancelQCObtaion(Guid subjectVisitId, DateTime startTime); } public class ObtainTaskAutoCancelJob : IObtainTaskAutoCancelJob { private readonly IRepository _subjectVisitRepository; private readonly ILogger _logger; public ObtainTaskAutoCancelJob(IRepository subjectVisitRepository, ILogger logger) { _subjectVisitRepository = subjectVisitRepository; _logger = logger; } public async Task CancelQCObtaion(Guid subjectVisitId, DateTime startTime) { try { var dbSubjectVisit = await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == subjectVisitId).IfNullThrowException(); dbSubjectVisit.IsTake = false; dbSubjectVisit.CurrentActionUserId = null; dbSubjectVisit.CurrentActionUserExpireTime = null; var success = await _subjectVisitRepository.SaveChangesAsync(); _logger.LogWarning($"任务建立时间:{startTime} 取消时间:{DateTime.Now} 取消 受试者访视:{subjectVisitId}success:{success}"); } catch (Exception e) { _logger.LogError("hangfire 定时任务执行失败" + e.Message); } } } }