[重阅裁判任务bug ]

IRC_NewDev
hang 2024-01-17 14:33:09 +08:00
parent ed01407382
commit 9524a31fe6
4 changed files with 77 additions and 74 deletions

View File

@ -49,6 +49,9 @@ namespace IRaCIS.Core.API
triggerOptions.AddTrigger<TableQuestionRowTrigger>();
//triggerOptions.AddTrigger<AddlTrialUserTrigger>();
triggerOptions.AddTrigger<VisitTaskIsFrontTaskNeedSignButNotSignTrigger>();
triggerOptions.AddTrigger<VisitTaskIbeforeTrigger>();

View File

@ -1,61 +0,0 @@
//using AutoMapper;
//using EasyCaching.Core;
//using EntityFrameworkCore.Triggered;
//using IRaCIS.Core.Application.Service;
//using IRaCIS.Core.Application.ViewModel;
//using IRaCIS.Core.Domain.Share;
//using IRaCIS.Core.Infrastructure;
//using System.Linq.Expressions;
//namespace IRaCIS.Core.Application.Triggers
//{
// public class VisitTaskIAfterSignTrigger : IAfterSaveTrigger<VisitTask>
// {
// private readonly IRepository<VisitTask> _visitTaskRepository;
// public VisitTaskIAfterSignTrigger(
// IRepository<VisitTask> visitTaskRepository)
// {
// _visitTaskRepository = visitTaskRepository;
// }
// //添加任务的时候 如果需要签名 并且已经签名了 那么要维护该标准 该Subject IsFrontTaskNeedSignButNotSign字段
// public async Task AfterSave(ITriggerContext<VisitTask> context, CancellationToken cancellationToken)
// {
// var visitTask = context.Entity;
// if(visitTask.SignTime!=null && visitTask.ReadingTaskState == ReadingTaskState.HaveSigned)
// {
// switch (visitTask.ReadingCategory)
// {
// case ReadingCategory.Visit:
// break;
// case ReadingCategory.Global:
// break;
// case ReadingCategory.Judge:
// break;
// case ReadingCategory.Oncology:
// break;
// default:
// break;
// }
// }
// }
// }
//}

View File

@ -0,0 +1,72 @@
using AutoMapper;
using EasyCaching.Core;
using EntityFrameworkCore.Triggered;
using IRaCIS.Core.Application.Service;
using IRaCIS.Core.Application.ViewModel;
using IRaCIS.Core.Domain.Models;
using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Infrastructure;
using System.Linq.Expressions;
namespace IRaCIS.Core.Application.Triggers
{
public class VisitTaskIbeforeTrigger : IBeforeSaveTrigger<VisitTask>, IAfterSaveTrigger<VisitTask>
{
private readonly IRepository<VisitTask> _visitTaskRepository;
private readonly IRepository<ReadingJudgeInfo> _readingJudgeInfoRepository;
public VisitTaskIbeforeTrigger(
IRepository<VisitTask> visitTaskRepository, IRepository<ReadingJudgeInfo> readingJudgeInfoRepository)
{
_visitTaskRepository = visitTaskRepository;
_readingJudgeInfoRepository = readingJudgeInfoRepository;
}
/// <summary>
/// 因为维护状态先后顺序导致 裁判任务关联的 任务上的JudgeVisitTaskId==nulll 在这里需要重新设置下
/// </summary>
/// <param name="context"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public async Task AfterSave(ITriggerContext<VisitTask> context, CancellationToken cancellationToken)
{
var visitTask = context.Entity;
//裁判任务维护当裁判任务受到影响的时候需要清理任务上关联的裁判任务id
if (context.ChangeType == ChangeType.Added && visitTask.ReadingCategory == ReadingCategory.Judge && visitTask.TaskState == TaskState.Effect)
{
var find = _readingJudgeInfoRepository.Where(t => t.JudgeTaskId == visitTask.Id).FirstOrDefault();
if (find != null)
{
var ids = new Guid[] { find.TaskIdOne, find.TaskIdTwo };
await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => ids.Contains(t.Id), u => new VisitTask() { JudgeVisitTaskId = visitTask.Id });
}
}
}
public async Task BeforeSave(ITriggerContext<VisitTask> context, CancellationToken cancellationToken)
{
var visitTask = context.Entity;
//裁判任务维护当裁判任务受到影响的时候需要清理任务上关联的裁判任务id
if (context.ChangeType == ChangeType.Modified)
{
if (visitTask.ReadingCategory == ReadingCategory.Judge && (visitTask.TaskState == TaskState.Adbandon || visitTask.TaskState == TaskState.HaveReturned))
{
var find = _readingJudgeInfoRepository.Where(t => t.JudgeTaskId == visitTask.Id).FirstOrDefault();
if (find != null)
{
var ids = new Guid[] { find.TaskIdOne, find.TaskIdTwo };
await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => ids.Contains(t.Id), u => new VisitTask() { JudgeVisitTaskId = null });
}
}
}
}
}
}

View File

@ -100,20 +100,9 @@ namespace IRaCIS.Core.Application.Triggers
}
}
else if (context.ChangeType == ChangeType.Modified)
{
if (visitTask.ReadingCategory == ReadingCategory.Judge && (visitTask.TaskState == TaskState.Adbandon || visitTask.TaskState == TaskState.HaveReturned))
{
var find = _readingJudgeInfoRepository.Where(t => t.JudgeTaskId == visitTask.Id).FirstOrDefault();
if (find != null)
{
var ids = new Guid[] { find.TaskIdOne, find.TaskIdTwo };
await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => ids.Contains(t.Id), u => new VisitTask() { JudgeVisitTaskId = null });
}
}
}
#region 附加评估 暂时废弃
// //从未签名状态 改为签名状态时 判断是否进行了附加评估,将附加评估的结果冗余
// if (context.ChangeType == ChangeType.Modified && visitTask.ReadingTaskState == ReadingTaskState.HaveSigned && context.UnmodifiedEntity.ReadingTaskState != ReadingTaskState.HaveSigned)