This commit is contained in:
2022-07-21 14:40:37 +08:00
parent cdd30a9978
commit 319af50009
8 changed files with 210 additions and 52 deletions
@@ -6,11 +6,14 @@
using IRaCIS.Core.Application.ViewModel;
using Microsoft.AspNetCore.Mvc;
namespace IRaCIS.Core.Application.Service
{
public interface IVisitTaskService
{
Task<IResponseOutput> ApplyReReading(ApplyReReadingCommand applyReReadingCommand);
Task<IResponseOutput> ConfirmReReading(ConfirmReReadingCommand agreeReReadingCommand, [FromServices] IVisitTaskHelpeService _visitTaskCommonService);
}
}
@@ -1227,6 +1227,19 @@ namespace IRaCIS.Core.Application.Service.Allocation
foreach (var influenceTask in influenceTaskList)
{
//处理申请的任务
if (influenceTask.Id == origenalTask.Id)
{
ReReadingTaskTrackingDeal(influenceTask, agreeReReadingCommand);
influenceTaskList.ForEach(t =>
{
//记录实际影像的任务
influenceTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = t.Id });
});
}
//申请的访视 要不是重阅重置,要不就是失效 不会存在取消分配
if (influenceTask.ReadingCategory == ReadingCategory.Visit && influenceTask.VisitTaskNum != origenalTask.VisitTaskNum)
{
@@ -1246,6 +1259,93 @@ namespace IRaCIS.Core.Application.Service.Allocation
influenceTask.TaskAllocationState = TaskAllocationState.NotAllocate;
}
}
//另外一个人当前访视
else
{
if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned)
{
influenceTask.TaskState = TaskState.HaveReturned;
}
else
{
influenceTask.TaskState = TaskState.Adbandon;
}
}
}
#endregion
}
//无序阅片 没有 全局 肿瘤学
else
{
#region old
////阅片任务产生了裁判
//if (origenalTask.JudgeVisitTaskId != null)
//{
// //裁判任务是否已阅片完成
// var judgeTask = await _visitTaskRepository.FirstOrDefaultAsync(t => t.Id == origenalTask.JudgeVisitTaskId);
// if (judgeTask.ReadingTaskState == ReadingTaskState.HaveSigned)
// {
// judgeTask.TaskState = TaskState.HaveReturned;
// }
// //裁判任务未完
// else
// {
// judgeTask.TaskState = TaskState.Adbandon;
// }
//}
////不管是否触发裁判 阅片任务退回,待影像重传后重新分 配给原阅片人
//if (trialConfig.ReadingType == ReadingMethod.Double)
//{
// //考虑该访视 另外一个阅片人的任务也同时退回
// var otherTask = await _visitTaskRepository.FirstOrDefaultAsync(t => t.SourceSubjectVisitId == origenalTask.SourceSubjectVisitId && t.Id != origenalTask.Id && t.TaskState == TaskState.Effect);
// if (otherTask.ReadingTaskState == ReadingTaskState.HaveSigned)
// {
// otherTask.TaskState = TaskState.HaveReturned;
// }
// else
// {
// otherTask.TaskState = TaskState.Adbandon;
// }
//}
#endregion
// 1.当前任务及裁判任务
// 2.影响所有阅片人的任务
var judegTaskNum = origenalTask.VisitTaskNum + ReadingCommon.TaskNumDic[ReadingCategory.Judge];
filterExpression = filterExpression.And(t => t.VisitTaskNum == origenalTask.VisitTaskNum || t.VisitTaskNum == judegTaskNum);
var influenceTaskList = await _visitTaskRepository.Where(filterExpression, true).ToListAsync();
foreach (var influenceTask in influenceTaskList)
{
//处理申请的任务
if (influenceTask.Id == origenalTask.Id)
{
ReReadingTaskTrackingDeal(influenceTask, agreeReReadingCommand);
influenceTaskList.ForEach(t =>
{
//记录实际影像的任务
influenceTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = t.Id });
});
}
else
{
if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned)
@@ -1257,56 +1357,8 @@ namespace IRaCIS.Core.Application.Service.Allocation
influenceTask.TaskState = TaskState.Adbandon;
}
}
}
#endregion
}
//无序阅片 没有 全局 肿瘤学
else
{
//阅片任务产生了裁判
if (origenalTask.JudgeVisitTaskId != null)
{
//裁判任务是否已阅片完成
var judgeTask = await _visitTaskRepository.FirstOrDefaultAsync(t => t.Id == origenalTask.JudgeVisitTaskId);
if (judgeTask.ReadingTaskState == ReadingTaskState.HaveSigned)
{
judgeTask.TaskState = TaskState.HaveReturned;
}
//裁判任务未完
else
{
judgeTask.TaskState = TaskState.Adbandon;
}
}
//不管是否触发裁判 阅片任务退回,待影像重传后重新分 配给原阅片人
if (trialConfig.ReadingType == ReadingMethod.Double)
{
//考虑该访视 另外一个阅片人的任务也同时退回
var otherTask = await _visitTaskRepository.FirstOrDefaultAsync(t => t.SourceSubjectVisitId == origenalTask.SourceSubjectVisitId && t.Id != origenalTask.Id && t.TaskState == TaskState.Effect);
if (otherTask.ReadingTaskState == ReadingTaskState.HaveSigned)
{
otherTask.TaskState = TaskState.HaveReturned;
}
else
{
otherTask.TaskState = TaskState.Adbandon;
}
}
}
@@ -1380,6 +1432,13 @@ namespace IRaCIS.Core.Application.Service.Allocation
if (influenceTask.Id == origenalTask.Id)
{
ReReadingTaskTrackingDeal(influenceTask, agreeReReadingCommand);
influenceTaskList.ForEach(t =>
{
//记录实际影像的任务
influenceTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = t.Id });
});
}
//处理其他任务
else
@@ -1462,6 +1521,14 @@ namespace IRaCIS.Core.Application.Service.Allocation
if (influenceTask.Id == origenalTask.Id)
{
ReReadingTaskTrackingDeal(influenceTask, agreeReReadingCommand);
influenceTaskList.ForEach(t =>
{
//记录实际影像的任务
influenceTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = t.Id });
});
}
else
{
@@ -1762,6 +1829,15 @@ namespace IRaCIS.Core.Application.Service.Allocation
{
influenceTask.TaskState = TaskState.Adbandon;
}
influenceTaskList.ForEach(t =>
{
//记录实际影像的任务
influenceTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = t.Id });
});
}
}
@@ -1809,6 +1885,17 @@ namespace IRaCIS.Core.Application.Service.Allocation
{
visitTask.TaskState = TaskState.Adbandon;
}
//同意的访视
if (visitTask.Id == task.Id)
{
currentVisitList.ForEach(t =>
{
//记录实际影像的任务
visitTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = t.Id });
});
}
}
}