From ec26ce377ea90bdacccafef2717580b140ea1f94 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Thu, 23 Jun 2022 13:53:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Reading/Dto/ReadingImageTaskViewModel.cs | 11 ++++++++++ .../Reading/ReadingImageTaskService.cs | 20 +++++++++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index cb440f51f..58b580595 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -16,6 +16,15 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string FileName { get; set; } } + public class SubjectTask + { + public Guid SubjectId { get; set; } + + public int UnReadTaskCount { get; set; } + + public int Index { get; set; } + } + public class GetReadingTaskDto { public Guid VisistTaskId { get; set; } @@ -23,6 +32,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid SubjectId { get; set; } + public string SubjectCode { get; set; } + public ReadingCategory ReadingCategory { get; set; } public decimal VisitNum { get; set; } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs index e908266d4..c3993c41a 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs @@ -31,6 +31,7 @@ namespace IRaCIS.Application.Services private readonly IRepository _visitTaskRepository; private readonly IVisitTaskHelpeService _visitTaskHelpeService; private readonly IRepository _subjectVisitRepository; + private readonly IRepository _subjectRepository; private readonly IRepository _readModuleRepository; private readonly IRepository _readingTaskQuestionAnswerRepository; private readonly IRepository _readingQuestionCriterionTrialRepository; @@ -43,6 +44,7 @@ namespace IRaCIS.Application.Services IRepository visitTaskRepository, IVisitTaskHelpeService visitTaskHelpeService, IRepository subjectVisitRepository, + IRepository subjectRepository, IRepository readModuleRepository, IRepository readingTaskQuestionAnswerRepository, IRepository readingQuestionCriterionTrialRepository, @@ -54,6 +56,7 @@ namespace IRaCIS.Application.Services this._visitTaskRepository = visitTaskRepository; this._visitTaskHelpeService = visitTaskHelpeService; this._subjectVisitRepository = subjectVisitRepository; + this._subjectRepository = subjectRepository; this._readModuleRepository = readModuleRepository; this._readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository; this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository; @@ -85,7 +88,19 @@ namespace IRaCIS.Application.Services } if (subjectId != null) { - task = await _visitTaskRepository.Where(x => x.TrialId == trialId && x.ReadingTaskState != ReadingTaskState.HaveSigned && x.SubjectId == subjectId.Value&&x.DoctorUserId == _userInfo.Id).Select(x => new GetReadingTaskDto() + + var subjectList = await _subjectRepository.Where(t => t.TrialId == trialId) + .Where(t => t.SubjectDoctorList.Any(t => t.DoctorUserId == _userInfo.Id)) + .Select((s,index) => new SubjectTask() + { + Index=index, + SubjectId = s.Id, + UnReadTaskCount = s.SubjectVisitTaskList.Count(t => t.ReadingTaskState != ReadingTaskState.HaveSigned && t.DoctorUserId == _userInfo.Id), + }).ToListAsync(); + + var subjectIndex = subjectList.Where(x => x.SubjectId == subjectId).Select(x=>x.Index).FirstOrDefault(); + var newSubjectId = subjectList.Where(x => x.Index >= subjectIndex && x.UnReadTaskCount != 0).Select(x=>x.SubjectId).FirstOrDefault(); + task = await _visitTaskRepository.Where(x => x.TrialId == trialId && x.ReadingTaskState != ReadingTaskState.HaveSigned && x.SubjectId == newSubjectId && x.DoctorUserId == _userInfo.Id).Select(x => new GetReadingTaskDto() { VisistTaskId=x.Id, ReadingCategory = x.ReadingCategory, @@ -115,7 +130,7 @@ namespace IRaCIS.Application.Services } task.SubjectId = await _subjectVisitRepository.Where(x => x.Id == task.VisistId).Select(x => x.SubjectId).FirstOrDefaultAsync(); } - + task.SubjectCode= await _subjectRepository.Where(x => x.Id == task.SubjectId).Select(x => x.Code).FirstOrDefaultAsync(); return task; @@ -149,6 +164,7 @@ namespace IRaCIS.Application.Services return (result, new { VisitTaskId= task.VisistTaskId, SubjectId=task.SubjectId, + SubjectCode=task.SubjectCode, }); }