修改回退流程代码

Uat_Study
hang 2022-07-06 11:17:28 +08:00
parent 14c2a9393f
commit 15b24f27b5
1 changed files with 70 additions and 118 deletions

View File

@ -12,6 +12,7 @@ using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Infrastructure;
using IRaCIS.Core.Application.Contracts;
using IRaCIS.Core.Infra.EFCore.Common;
using System.Linq.Expressions;
namespace IRaCIS.Core.Application.Service
{
@ -1221,78 +1222,12 @@ namespace IRaCIS.Core.Application.Service
}
}
////产生的新任务
//await _visitTaskCommonService.AddTaskAsync(new GenerateTaskCommand()
//{
// TrialId = trialId,
// ReadingCategory = ReadingCategory.ReReading,
// ReReadingTask = origenalTask,
// //同步才可以
// Action = (newTask) =>
// {
// visitTaskReReadingAppply.NewReReadingTaskId = newTask.Id;
// if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer)
// {
// if (visitTaskReReadingAppply.IsCopyOrigenalForms)
// {
// var origenalAnswerList = _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == origenalTask.Id).ToList();
// origenalAnswerList.ForEach(t => { t.VisitTaskId = newTask.Id; t.Id = Guid.Empty; });
// _readingTaskQuestionAnswerRepository.AddRangeAsync(origenalAnswerList).Wait();
// }
// }
// //IR申请 PM同意 立即分配
// if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager)
// {
// //有序阅片
// if (trialConfig.IsReadingTaskViewInOrder)
// {
// }
// else
// {
// //无序阅片
// newTask.DoctorUserId = origenalTask.DoctorUserId;
// newTask.TaskAllocationState = TaskAllocationState.Allocated;
// newTask.AllocateTime = DateTime.Now;
// }
// }
// }
//});
//}
}
await _visitTaskRepository.SaveChangesAsync();
return ResponseOutput.Ok();
}
@ -1309,39 +1244,77 @@ namespace IRaCIS.Core.Application.Service
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager)
{
//有序
if (trialConfig.IsReadingTaskViewInOrder)
var task = (await _visitTaskRepository.FirstOrDefaultAsync(t => t.Id == taskId)).IfNullThrowException();
//申请的任务 肯定是未完成阅片的 并且是访视类型的
if (task.ReadingTaskState != ReadingTaskState.HaveSigned && task.ReadingCategory == ReadingCategory.Visit)
{
}
//无序 无序阅片没有 全局 肿瘤学
else
{
// 当前任务标为失效,后续任务不处理
var task = (await _visitTaskRepository.FirstOrDefaultAsync(t => t.Id == taskId)).IfNullThrowException();
#region 有序 无序公用流程
// 当前任务标为失效
task.TaskState = TaskState.Adbandon;
//执行类似一致性核查回退流程 回退访视到影像上传流程
await VisitBackAsync(task.SourceSubjectVisitId);
//考虑该访视 另外一个阅片人的任务也同时退回
var otherTask = await _visitTaskRepository.FirstOrDefaultAsync(t => t.SourceSubjectVisitId == task.SourceSubjectVisitId && t.Id != task.Id && t.TaskState == TaskState.Effect);
if (otherTask.ReadingTaskState == ReadingTaskState.HaveSigned)
//考虑该访视 另外一个阅片人的任务
var otherReviewerTask = await _visitTaskRepository.FirstOrDefaultAsync(t => t.SourceSubjectVisitId == task.SourceSubjectVisitId && t.Id != task.Id && t.TaskState == TaskState.Effect);
#endregion
//有序
if (trialConfig.IsReadingTaskViewInOrder)
{
otherTask.TaskState = TaskState.HaveReturned;
//本身自己 有序 PM 申请回退流程
if (otherReviewerTask.ReadingTaskState == ReadingTaskState.HaveSigned)
{
//另外阅片人完成阅片了 就设置为重阅重置
otherReviewerTask.TaskState = TaskState.HaveReturned;
//另外一个阅片人 有序PM 申请重阅流程
}
else
{
otherReviewerTask.TaskState = TaskState.Adbandon;
//另外一个阅片人 有序 PM 申请回退流程
}
}
//无序 无序阅片没有 全局 肿瘤学
else
{
otherTask.TaskState = TaskState.Adbandon;
}
if (otherReviewerTask.ReadingTaskState == ReadingTaskState.HaveSigned)
{
//另外阅片人完成阅片了 就设置为重阅重置
otherReviewerTask.TaskState = TaskState.HaveReturned;
}
else
{
//回退访视
if (task.ReadingCategory == ReadingCategory.Visit)
{
//执行类似一致性核查回退流程
await VisitBackAsync(task.SourceSubjectVisitId);
otherReviewerTask.TaskState = TaskState.Adbandon;
}
}
}
}
await _visitTaskRepository.SaveChangesAsync();
@ -1395,7 +1368,7 @@ namespace IRaCIS.Core.Application.Service
/// <summary>
/// 重阅影响提示列表
/// 重阅影响提示列表 仅仅针对已完成的任务申请
/// </summary>
/// <param name="taskId"></param>
/// <returns></returns>
@ -1407,8 +1380,8 @@ namespace IRaCIS.Core.Application.Service
var trialConfig = (await _trialRepository.Where(t => t.Id == trialId).Select(t => new { TrialId = t.Id, t.IsReadingTaskViewInOrder, t.ReadingType }).FirstOrDefaultAsync()).IfNullThrowException();
Expression<Func<VisitTask, bool>> filterExpression = t => t.TrialId == trialId && t.SubjectId == filterObj.SubjectId && t.TaskState == TaskState.Effect;
List<VisitTaskSimpleView> list = null;
//有序
if (trialConfig.IsReadingTaskViewInOrder)
@ -1416,58 +1389,37 @@ namespace IRaCIS.Core.Application.Service
//当前任务及其之后的所有访视任务、全局任务、裁判任务、肿瘤学阅片任务
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer)
{
list = await _visitTaskRepository.Where(t => t.TrialId == trialId && t.SubjectId == filterObj.SubjectId)
.Where(t => t.TaskState == TaskState.Effect && !t.IsAnalysisCreate)
//过滤区别
.Where(t => t.VisitTaskNum >= filterObj.VisitTaskNum && t.DoctorUserId==filterObj.DoctorUserId)
.ProjectTo<VisitTaskSimpleView>(_mapper.ConfigurationProvider).ToListAsync();
filterExpression = filterExpression.And(t => t.VisitTaskNum >= filterObj.VisitTaskNum && t.DoctorUserId == filterObj.DoctorUserId);
}
//影响所有阅片人
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager)
{
list = await _visitTaskRepository.Where(t => t.TrialId == trialId && t.SubjectId == filterObj.SubjectId)
.Where(t => t.TaskState == TaskState.Effect && !t.IsAnalysisCreate)
//过滤区别
.Where(t => t.VisitTaskNum >= filterObj.VisitTaskNum )
.ProjectTo<VisitTaskSimpleView>(_mapper.ConfigurationProvider).ToListAsync();
filterExpression = filterExpression.And(t => t.VisitTaskNum >= filterObj.VisitTaskNum);
}
}
//无序
else
{
//1.当前任务及裁判任务
//2.影响当前阅片人的任务
//1.当前任务及裁判任务
//2.影响当前阅片人的任务
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer)
{
list = await _visitTaskRepository.Where(t => t.TrialId == trialId && t.SubjectId == filterObj.SubjectId )
.Where(t => t.TaskState == TaskState.Effect && !t.IsAnalysisCreate)
//过滤区别
.Where (t=> t.Id==filterObj.Id || t.Id ==filterObj.JudgeVisitTaskId)
.ProjectTo<VisitTaskSimpleView>(_mapper.ConfigurationProvider).ToListAsync();
filterExpression = filterExpression.And(t => t.Id == filterObj.Id || t.Id == filterObj.JudgeVisitTaskId);
}
//1.当前任务及裁判任务
// 1.当前任务及裁判任务
// 2.影响所有阅片人的任务
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager)
{
var judegTaskNum = filterObj.VisitTaskNum + ReadingCommon.TaskNumDic[ReadingCategory.Judge];
list = await _visitTaskRepository.Where(t => t.TrialId == trialId && t.SubjectId == filterObj.SubjectId)
.Where(t => t.TaskState == TaskState.Effect && !t.IsAnalysisCreate)
//过滤区别
.Where(t => t.VisitTaskNum==filterObj.VisitTaskNum || t.VisitTaskNum== judegTaskNum)
.ProjectTo<VisitTaskSimpleView>(_mapper.ConfigurationProvider).ToListAsync();
filterExpression = filterExpression.And(t => t.VisitTaskNum == filterObj.VisitTaskNum || t.VisitTaskNum == judegTaskNum);
}
}
var list = await _visitTaskRepository.Where(filterExpression).ProjectTo<VisitTaskSimpleView>(_mapper.ConfigurationProvider).ToListAsync();
return list;
}