43 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C#
		
	
	
| 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<SubjectVisit> _subjectVisitRepository;
 | |
|         private readonly ILogger<ObtainTaskAutoCancelJob> _logger;
 | |
| 
 | |
|         public ObtainTaskAutoCancelJob(IRepository<SubjectVisit> subjectVisitRepository, ILogger<ObtainTaskAutoCancelJob> 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);
 | |
| 
 | |
|             }
 | |
| 
 | |
|         }
 | |
|     }
 | |
| }
 |