diff --git a/IRaCIS.Core.Application/Service/Allocation/DTO/TaskMedicalReviewViewModel.cs b/IRaCIS.Core.Application/Service/Allocation/DTO/TaskMedicalReviewViewModel.cs index d9ae0afef..d13019dc2 100644 --- a/IRaCIS.Core.Application/Service/Allocation/DTO/TaskMedicalReviewViewModel.cs +++ b/IRaCIS.Core.Application/Service/Allocation/DTO/TaskMedicalReviewViewModel.cs @@ -98,7 +98,7 @@ namespace IRaCIS.Core.Application.ViewModel public Guid? SiteId { get; set; } /// - /// 传了Id 就不查询这条数据 + /// 传了Id /// public Guid? Id { get; set; } @@ -111,7 +111,6 @@ namespace IRaCIS.Core.Application.ViewModel public DateTime? EndSignTime { get; set; } - public bool IsGetBeRead { get; set; } = false; public bool IsGetNextMedicalReviewTask { get; set; } = false; diff --git a/IRaCIS.Core.Application/Service/Allocation/TaskMedicalReviewService.cs b/IRaCIS.Core.Application/Service/Allocation/TaskMedicalReviewService.cs index 0bc4606b5..e5fd1af41 100644 --- a/IRaCIS.Core.Application/Service/Allocation/TaskMedicalReviewService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/TaskMedicalReviewService.cs @@ -11,6 +11,7 @@ using IRaCIS.Core.Application.ViewModel; using IRaCIS.Core.Infrastructure; using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Application.Filter; +using Microsoft.Extensions.Logging; namespace IRaCIS.Core.Application.Service { @@ -143,47 +144,45 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task GetNextMedicalReviewTask(GetNextMedicalReviewTaskInDto inDto) { - var medicalReview = await _taskMedicalReviewRepository.Where(x => x.Id == inDto.MedicalReviewId).Include(x=>x.VisitTask).FirstNotNullAsync(); + var medicalReview = await _taskMedicalReviewRepository.Where(x => x.Id == inDto.MedicalReviewId).Include(x => x.VisitTask).FirstNotNullAsync(); - var subjectReview = (await GetMIMMedicalReviewTaskList(new TaskMedicalReviewQuery() - { - TrialId = medicalReview.TrialId, - IsGetBeRead = true, - Id=inDto.MedicalReviewId, - SubjectId= medicalReview.VisitTask.SubjectId, - TrialReadingCriterionId = medicalReview.VisitTask.TrialReadingCriterionId, - IsGetNextMedicalReviewTask = true, - PageIndex=1, - PageSize=1, - })).Data; - - if (subjectReview.CurrentPageData.Count == 1) - { - return subjectReview.CurrentPageData[0]; - } var data = (await GetMIMMedicalReviewTaskList(new TaskMedicalReviewQuery() { TrialId = medicalReview.TrialId, - IsGetBeRead = true, Id = inDto.MedicalReviewId, TrialReadingCriterionId = medicalReview.VisitTask.TrialReadingCriterionId, - IsGetNextMedicalReviewTask = true, - PageIndex = 1, - PageSize = 1, + IsGetNextMedicalReviewTask = true, + PageIndex = 1, + PageSize = 99999, })).Data; - if (data.CurrentPageData.Count == 1) + + if (data.CurrentPageData.Count > 0) { - return data.CurrentPageData[0]; + + var index = data.CurrentPageData.ToList().FindIndex(x => x.Id == inDto.MedicalReviewId); + + var result = new TaskMedicalReviewView() { }; + + if (index == -1 || data.CurrentPageData.Count == 1) + { + result = data.CurrentPageData[0]; + } + else + { + result = data.CurrentPageData.Skip(index + 1).Take(1).First(); + + } + return result; + } else { - throw new BusinessValidationFailedException(_localizer["MedicalReview_Finish"]); - } - + throw new BusinessValidationFailedException(_localizer["MedicalReview_Finish"]); + } } @@ -201,16 +200,15 @@ namespace IRaCIS.Core.Application.Service var taskMedicalReviewQueryable = _taskMedicalReviewRepository.Where(t => t.VisitTask.TrialId == inQuery.TrialId && t.MedicalManagerUserId == _userInfo.Id&&t.VisitTask.TrialReadingCriterionId==inQuery.TrialReadingCriterionId) .WhereIf(inQuery.IsGetNextMedicalReviewTask, - x=>x.AuditState!= MedicalReviewAuditState.HaveSigned & - + x=>( !x.IsInvalid&&x.AuditState!= MedicalReviewAuditState.HaveSigned & ( x.ReadingMedicalReviewDialogList.Count()!=0&& - x.ReadingMedicalReviewDialogList.Count()>0&& - x.ReadingMedicalReviewDialogList.OrderByDescending(x=>x.CreateTime).FirstOrDefault().UserTypeEnumInt==(int)UserTypeEnum.IndependentReviewer)) + x.ReadingMedicalReviewDialogList.OrderByDescending(x=>x.CreateTime).FirstOrDefault().UserTypeEnumInt==(int)UserTypeEnum.IndependentReviewer) + ) ||x.Id == inQuery.Id // 这里必须找传入id 因为要找到这条的索引 获取下一条 + ) .WhereIf(inQuery.SubjectId != null, t => t.VisitTask.SubjectId == inQuery.SubjectId) .WhereIf(inQuery.SiteId != null, t => t.VisitTask.Subject.SiteId == inQuery.SiteId) .WhereIf(!string.IsNullOrEmpty(inQuery.SubjectCode), t => t.VisitTask.Subject.Code.Contains(inQuery.SubjectCode)) - .WhereIf(inQuery.Id != null, t => t.Id != inQuery.Id) .WhereIf(inQuery.IsUrgent != null, t => t.VisitTask.IsUrgent == inQuery.IsUrgent) .WhereIf(inQuery.AuditState != null, t => t.AuditState == inQuery.AuditState) .WhereIf(inQuery.DoctorUserIdeaEnum != null, t => t.DoctorUserIdeaEnum == inQuery.DoctorUserIdeaEnum) @@ -219,7 +217,7 @@ namespace IRaCIS.Core.Application.Service .WhereIf(inQuery.ReadingCategory != null, t => t.VisitTask.ReadingCategory == inQuery.ReadingCategory) .WhereIf(inQuery.ReadingTaskState != null, t => t.VisitTask.ReadingTaskState == inQuery.ReadingTaskState) .WhereIf(inQuery.IsInvalid != null, t => t.IsInvalid == inQuery.IsInvalid) - .WhereIf(inQuery.IsGetBeRead,x=>!x.IsInvalid&&x.AuditState!= MedicalReviewAuditState.HaveSigned) + //.WhereIf(inQuery.IsGetBeRead,x=>!x.IsInvalid&&x.AuditState!= MedicalReviewAuditState.HaveSigned) .WhereIf(inQuery.TrialReadingCriterionId != null, t => t.VisitTask.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) .OrderBy(x=>x.VisitTask.SubjectId).ThenBy(x => x.AuditState).ThenBy(x=>x.VisitTask.ArmEnum).ThenBy(x=>x.VisitTask.VisitTaskNum) .ProjectTo(_mapper.ConfigurationProvider);