From 0e0dd0c7d384448140b3024754e484b6a50d22e2 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Mon, 15 Jul 2024 14:43:49 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E8=B7=B3=E8=BF=87=E9=98=85=E7=89=87?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReadingImageTask/ReadingImageTaskService.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index 546e7470e..0d1b212f4 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -2770,14 +2770,20 @@ namespace IRaCIS.Application.Services var subjectIndex = subjectTaskList.Where(x => x.SubjectId == inDto.SubjectId && x.SubjectCode == inDto.SubjectCode).Select(x => x.Index).FirstOrDefault(); - var currentSubject = subjectTaskList.Where(x => x.Index >= subjectIndex && !x.ExistReadingApply).OrderBy(x => x.Index).FirstOrDefault(); + + var currentSubject = subjectTaskList.Where(x => x.Index >= subjectIndex && !x.ExistReadingApply) + // 排除跳过的 + .Where(x=> x.UnReadCanReadTaskList.Select(y => y.Id).Intersect(cacheSkipIds).Count()==0) + .OrderBy(x => x.Index).FirstOrDefault(); + if (currentSubject == null) { throw new BusinessValidationFailedException(_localizer["ReadingImage_TaskFinish"], ApiResponseCodeEnum.CloseCurrentWindows); } - task = currentSubject.UnReadCanReadTaskList.Select(x => new GetReadingTaskDto() + task = currentSubject.UnReadCanReadTaskList + .Select(x => new GetReadingTaskDto() { ReadingCategory = x.ReadingCategory, SubjectCode = currentSubject.SubjectCode, From 49e21a6342f305b1356763dcc5af49f7ccc8649e Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Tue, 16 Jul 2024 09:57:33 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E5=8A=A0=E8=BF=94=E5=9B=9E=E5=8F=82?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Reading/ReadingImageTask/ReadingImageTaskService.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index 0d1b212f4..5c507b269 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -22,6 +22,8 @@ using AutoMapper.QueryableExtensions; using IRaCIS.Application.Contracts; using IRaCIS.Core.Domain.Models; using Microsoft.Extensions.Options; +using System.Linq; +using NPOI.SS.Formula.Functions; using static Microsoft.EntityFrameworkCore.DbLoggerCategory; namespace IRaCIS.Application.Services @@ -3001,7 +3003,7 @@ namespace IRaCIS.Application.Services /// /// [HttpPost] - public async Task VerifyReadingRestTime() + public async Task VerifyReadingRestTime() { var userTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt; if (userTypeEnum != UserTypeEnum.IndependentReviewer) @@ -3051,6 +3053,8 @@ namespace IRaCIS.Application.Services #endregion } + + return true; } /// @@ -3058,7 +3062,7 @@ namespace IRaCIS.Application.Services /// /// [HttpPost] - public async Task ResetReadingRestTime(Guid? userID) + public async Task ResetReadingRestTime(Guid? userID) { if (userID == null) { @@ -3085,6 +3089,7 @@ namespace IRaCIS.Application.Services { _provider.Set(startReadingTimeKey, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), TimeSpan.FromHours(48)); } + return true; } /// From 74aec46a94858ba107b57e25df128269e74549a0 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Tue, 16 Jul 2024 10:10:12 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=80=BC=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Reading/Interface/IReadingImageTaskService.cs | 2 +- .../Service/Reading/ReadingImageTask/ReadingImageTaskService.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/Interface/IReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/Interface/IReadingImageTaskService.cs index 95c4bac51..22e12adaa 100644 --- a/IRaCIS.Core.Application/Service/Reading/Interface/IReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/Interface/IReadingImageTaskService.cs @@ -37,7 +37,7 @@ namespace IRaCIS.Core.Application.Contracts Task> GetManualList(GetManualListInDto inDto); - Task ResetReadingRestTime(Guid? userId); + Task ResetReadingRestTime(Guid? userId); Task> GetReadingPastResultList(GetReadingPastResultListInDto inDto); diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index 5c507b269..32597aa5e 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -3008,7 +3008,7 @@ namespace IRaCIS.Application.Services var userTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt; if (userTypeEnum != UserTypeEnum.IndependentReviewer) { - return; + return true; } var startReadingTimeKey = _userInfo.Id.ToString() + "StartReadingTime"; var startRestTimeKey = _userInfo.Id.ToString() + "StartRestTime"; From 4026eca65690302a2392ef739fade1ba56384a87 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Wed, 17 Jul 2024 10:10:28 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Reading/ReadingImageTask/ReadingImageTaskService.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index 32597aa5e..2748d09e1 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -2707,6 +2707,12 @@ namespace IRaCIS.Application.Services } + var c = _provider.Get(clearSkipReadingCacheKey).Value; + Console.WriteLine(c); + // 加这个测试 + Thread.Sleep(3000); // 3000毫秒 = 3秒 + return true; + } /// From 85a303171c3f18b25244178e3b2dba66f89790a7 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Wed, 17 Jul 2024 10:19:51 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReadingImageTaskService.cs | 40 +++++++++++++++++-- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index 2748d09e1..950364f69 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -2707,10 +2707,29 @@ namespace IRaCIS.Application.Services } - var c = _provider.Get(clearSkipReadingCacheKey).Value; - Console.WriteLine(c); - // 加这个测试 - Thread.Sleep(3000); // 3000毫秒 = 3秒 + /// + /// 设置跳过阅片的缓存 + /// + /// + /// + [HttpPost] + public async Task SetSkipReadingCache(SetSkipReadingCacheInDto inDto ) + { + var clearSkipReadingCacheKey = _userInfo.Id.ToString() + "SkipReadingCache"; + var clearSkipReadingCache = _provider.Get(clearSkipReadingCacheKey).Value; + if (clearSkipReadingCache == null|| clearSkipReadingCache==string.Empty) + { + List cacheIds = new List(); + cacheIds.Add(inDto.VisitTaskId); + + _provider.Set(clearSkipReadingCacheKey, JsonConvert.SerializeObject(cacheIds), TimeSpan.FromHours(24)); + } + else + { + List? cacheIds=JsonConvert.DeserializeObject>(clearSkipReadingCache); + cacheIds.Add(inDto.VisitTaskId); + _provider.Set(clearSkipReadingCacheKey, JsonConvert.SerializeObject(cacheIds), TimeSpan.FromHours(24)); + } return true; } @@ -2820,12 +2839,25 @@ namespace IRaCIS.Application.Services })).CurrentPageData; + + + + + if (subjectTaskList.Count() == 0) { throw new BusinessValidationFailedException(_localizer["ReadingImage_TaskFinish"], ApiResponseCodeEnum.CloseCurrentWindows); } var taskList = subjectTaskList.FirstOrDefault()!.UnReadCanReadTaskList; + // 排除跳过的 + List remainingItems = taskList.Select(x => x.Id).Except(cacheSkipIds).ToList(); + + taskList = taskList.Where(x => remainingItems.Contains(x.Id)).ToList(); + if (taskList.Count() == 0) + { + throw new BusinessValidationFailedException(_localizer["ReadingImage_TaskFinish"], ApiResponseCodeEnum.CloseCurrentWindows); + } Random random = new Random(); //返回的范围是 0- taskList.Count-1 From d72f3e89a24efdeb67447c328644477f8768033a Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Wed, 17 Jul 2024 11:06:47 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Reading/Dto/ReadingImageTaskViewModel.cs | 5 ++++ .../ReadingImageTaskService.cs | 28 ++++++++++++++++--- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index d0288c364..605c64b6e 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -1701,6 +1701,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto } + public class SetSkipReadingCacheInDto + { + public Guid VisitTaskId { get; set; } + } + public class ResetReadingTaskInDto { public Guid VisitTaskId { get; set; } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index 950364f69..7c007f802 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -2707,6 +2707,20 @@ namespace IRaCIS.Application.Services } + + /// + /// 清除跳过阅片的缓存 + /// + /// + [HttpPost] + public async Task ClearSkipReadingCache() + { + var clearSkipReadingCacheKey = _userInfo.Id.ToString() + "SkipReadingCache"; + _provider.Remove(clearSkipReadingCacheKey); + return true; + } + + /// /// 设置跳过阅片的缓存 /// @@ -2757,6 +2771,16 @@ namespace IRaCIS.Application.Services throw new BusinessValidationFailedException(_localizer["ReadingImage_IDMust"]); } + + #region 跳过阅片 + var clearSkipReadingCacheKey = _userInfo.Id.ToString() + "SkipReadingCache"; + var clearSkipReadingCache = _provider.Get(clearSkipReadingCacheKey).Value; + List cacheSkipIds = new List(); + if (clearSkipReadingCache != null && clearSkipReadingCache != string.Empty) + { + cacheSkipIds = JsonConvert.DeserializeObject>(clearSkipReadingCache); + } + #endregion var trialReadingCriterion = await _readingQuestionCriterionTrialRepository.FindAsync(trialReadingCriterionId ?? Guid.Empty); if (inDto.VisitTaskId != null) @@ -2840,10 +2864,6 @@ namespace IRaCIS.Application.Services })).CurrentPageData; - - - - if (subjectTaskList.Count() == 0) { throw new BusinessValidationFailedException(_localizer["ReadingImage_TaskFinish"], ApiResponseCodeEnum.CloseCurrentWindows); From d9fc5e3646360ee2422d5aeed3098cc909f5a223 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Wed, 17 Jul 2024 13:37:01 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=8A=E4=B8=80?= =?UTF-8?q?=E6=AC=A1=E4=BB=BB=E5=8A=A1=E7=9A=84=E7=AD=94=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Reading/Dto/ReadingImageTaskViewModel.cs | 2 ++ .../ReadingImageTaskService.cs | 33 +++++++++++++++++-- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index 605c64b6e..0cb0ecae0 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -609,6 +609,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto { public string Answer { get; set; } + public string LastTaskAnswer { get; set; } + public bool IsFirstChangeTask { get; set; } = false; public List CrterionDictionaryGroup { get; set; } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index 7c007f802..3cae0656b 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -874,10 +874,33 @@ namespace IRaCIS.Application.Services var answers = new List(); + var lastTaskAnswer = new List(); + if (visitTaskId != null) { answers = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == visitTaskId).ToListAsync(); + var taskInfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstNotNullAsync(); + + var laskTaskId = await _visitTaskRepository.Where(x => + (x.SubjectId == taskInfo.SubjectId && x.TaskState == TaskState.Effect + && x.IsAnalysisCreate == taskInfo.IsAnalysisCreate + && x.DoctorUserId == taskInfo.DoctorUserId + && x.IsSelfAnalysis == taskInfo.IsSelfAnalysis + && x.VisitTaskNum < taskInfo.VisitTaskNum + && x.ArmEnum == taskInfo.ArmEnum + && x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId + && x.ReadingCategory == ReadingCategory.Visit) || x.Id == taskInfo.BeforeConvertedTaskId + ).OrderByDescending(x => x.VisitTaskNum).Select(x => x.Id).FirstOrDefaultAsync(); + if (criterionIdInfo.IsReadingTaskViewInOrder != ReadingOrder.InOrder) + { + // 无序的话 不要查 + laskTaskId = Guid.NewGuid(); + } + + lastTaskAnswer = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == laskTaskId).ToListAsync(); + + var taskinfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).ProjectTo(_mapper.ConfigurationProvider).FirstNotNullAsync(); if (taskinfo.VisitTaskNum == 0) @@ -922,24 +945,28 @@ namespace IRaCIS.Application.Services foreach (var item in result) { - GetDicomReadingAnswer(item, questions, answers); + GetDicomReadingAnswer(item, questions, answers, lastTaskAnswer); } return result; } - private void GetDicomReadingAnswer(DicomReadingQuestionAnswer item, List questions, List answers) + private void GetDicomReadingAnswer(DicomReadingQuestionAnswer item, List questions, List answers, List lastTaskAnswers) { var answer = answers.Where(x => x.ReadingQuestionTrialId == item.Id).Select(x => x.Answer).FirstIsNullReturnEmpty(); item.Answer = answer.IsNullOrEmpty() ? item.DefaultValue : answer; + var lastTaskAnswer = lastTaskAnswers.Where(x => x.ReadingQuestionTrialId == item.Id).Select(x => x.Answer).FirstIsNullReturnEmpty(); + item.LastTaskAnswer = lastTaskAnswer.IsNullOrEmpty() ? item.DefaultValue : lastTaskAnswer; + + item.Childrens = questions.Where(x => x.ParentId == item.Id || (x.GroupId == item.Id && x.ParentId == null)).ToList(); if (item.Childrens != null && item.Childrens.Count > 0) { foreach (var question in item.Childrens) { - GetDicomReadingAnswer(question, questions, answers); + GetDicomReadingAnswer(question, questions, answers, lastTaskAnswers); } }