diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs index f518f5b56..a547462b9 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs @@ -89,13 +89,39 @@ namespace IRaCIS.Core.Application.Service } - public async Task AddIsPDChangeTask(Guid taskId) + /// + /// 添加转变任务 + /// + /// + /// + public async Task AddConvertedTask(Guid taskId) { var taskInfo = await _visitTaskRepository.Where(x => x.Id == taskId).IgnoreAutoIncludes().AsNoTracking().FirstNotNullAsync(); taskInfo.ReadingTaskState = ReadingTaskState.WaitReading; taskInfo.IsConvertedTask = true; - + taskInfo.Id = NewId.NextGuid(); + await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => + x.IsAnalysisCreate == taskInfo.IsAnalysisCreate + && x.IsSelfAnalysis == taskInfo.IsSelfAnalysis + && x.VisitTaskNum > taskInfo.VisitTaskNum + && x.DoctorUserId == taskInfo.DoctorUserId + && x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId + && x.SubjectId == taskInfo.SubjectId + && x.ArmEnum == taskInfo.ArmEnum && + x.TaskState == TaskState.Effect, x => new VisitTask() + { + IsConvertedTask = true + }); + + await _visitTaskRepository.AddAsync(taskInfo); + + await _visitTaskRepository.BatchUpdateNoTrackingAsync(x=>x.Id==taskId, x => new VisitTask() + { + TaskState = TaskState.Freeze + }); + + await _visitTaskRepository.SaveChangesAsync(); } //基于标准签名 产生任务 (或者手动选择某些访视生成该标准的任务) diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index bf1ad0c21..1b6ee85d7 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -271,6 +271,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public decimal VisitTaskNum { get; set; } public bool IsCurrentTask { get; set; } + + public List CrterionDictionaryGroup { get; set; } } public class MergeLesionInDto @@ -383,6 +385,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto { public string Answer { get; set; } + public List CrterionDictionaryGroup { get; set; } + public List Childrens = new List(); } @@ -624,6 +628,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public class TrialReadQuestionData : ReadingQuestionTrial { + public List CrterionDictionaryGroup { get; set; } + public bool IsPage { get; set; } = false; public string Answer { get; set; } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index 7e8824cb8..c641d427b 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -633,7 +633,21 @@ namespace IRaCIS.Application.Services if (visitTaskId != null) { - answers = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == visitTaskId).ToListAsync(); ; + answers = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == visitTaskId).ToListAsync(); + + var taskinfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstNotNullAsync(); + questions.ForEach(x => + { + x.CrterionDictionaryGroup = taskinfo.CrterionDictionaryGroup; + }); + } + else + { + var crterionDictionaryGroup= new List() { CrterionDictionaryGroup.General, CrterionDictionaryGroup.BeforeConvert }; + questions.ForEach(x => + { + x.CrterionDictionaryGroup = crterionDictionaryGroup; + }); } @@ -823,9 +837,27 @@ namespace IRaCIS.Application.Services }).OrderBy(x => x.ShowOrder).ToListAsync(); - - //是否是预览 - if (inDto.IsGetPreview == false) + if (inDto.TaskId != null) + { + var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.TaskId).FirstNotNullAsync(); + + qusetionList.ForEach(x => + { + + x.CrterionDictionaryGroup = taskInfo.CrterionDictionaryGroup; + }); + } + else + { + qusetionList.ForEach(x => + { + + x.CrterionDictionaryGroup = new List() { CrterionDictionaryGroup.General, CrterionDictionaryGroup.BeforeConvert }; + }); + } + + //是否是预览 + if (inDto.IsGetPreview == false) { // 是否获取所有问题 if (inDto.IsGetallQuestion) diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/General/GeneralCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/General/GeneralCalculateService.cs index b79089363..733d2435a 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/General/GeneralCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/General/GeneralCalculateService.cs @@ -175,7 +175,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate BlindName = x.TaskBlindName, IsBaseLine = x.SourceSubjectVisit.IsBaseLine, VisitTaskId = x.Id, - + CrterionDictionaryGroup= x.CrterionDictionaryGroup, TaskName = x.TaskName, LatestScanDate= x.SourceSubjectVisit!=null?x.SourceSubjectVisit.LatestScanDate : null, VisitTaskNum = x.VisitTaskNum, diff --git a/IRaCIS.Core.Domain/Allocation/VisitTask.cs b/IRaCIS.Core.Domain/Allocation/VisitTask.cs index 7cc8f1e40..8ffc4efce 100644 --- a/IRaCIS.Core.Domain/Allocation/VisitTask.cs +++ b/IRaCIS.Core.Domain/Allocation/VisitTask.cs @@ -294,7 +294,31 @@ namespace IRaCIS.Core.Domain.Models /// public bool IsConvertedTask { get; set; } = false; + [NotMapped] + public List CrterionDictionaryGroup + { + get + { + try + { + if (this.IsConvertedTask) + { + return new List() { Share.CrterionDictionaryGroup.General, Share.CrterionDictionaryGroup.Converted }; + } + else + { + return new List() { Share.CrterionDictionaryGroup.General, Share.CrterionDictionaryGroup.BeforeConvert }; + } + } + catch (Exception) + { + + return new List(); + } + + } + }