diff --git a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs index f884bfb3..34428631 100644 --- a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs @@ -234,7 +234,16 @@ namespace IRaCIS.Core.Application.ViewModel public bool IsUrgent => UnReadTaskList.Any(t => t.IsUrgent); - public int UnReadTaskCount { get; set; } + public int UnReadTaskCount + { + get + { + + return this.UnReadTaskList.Count(); + + + } + } public bool ExistReadingApply { get; set; } @@ -282,7 +291,17 @@ namespace IRaCIS.Core.Application.ViewModel } + public class GetOrderReadingIQueryableInDto + { + public Guid TrialId { get; set; } + + public Guid TrialReadingCriterionId { get; set; } + public string? SubjectCode { get; set; } = null; + + public PageInput? Page { get; set; } = null; + + } public class VisitTaskQuery : PageInput { diff --git a/IRaCIS.Core.Application/Service/Allocation/Interface/IVisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/Interface/IVisitTaskService.cs index 6e2208a6..c9a5a55b 100644 --- a/IRaCIS.Core.Application/Service/Allocation/Interface/IVisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/Interface/IVisitTaskService.cs @@ -16,6 +16,6 @@ namespace IRaCIS.Core.Application.Service Task ConfirmReReading(ConfirmReReadingCommand agreeReReadingCommand, [FromServices] IVisitTaskHelpeService _visitTaskCommonService); - (int, IOrderedQueryable) GetOrderReadingIQueryable(Guid trialId, Guid? trialReadingCriterionId,string? subjectCode = null); + Task<(int, List)> GetOrderReadingIQueryable(GetOrderReadingIQueryableInDto inDto); } } \ No newline at end of file diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index 6ccacd9c..6c999fd7 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -882,12 +882,23 @@ namespace IRaCIS.Core.Application.Service.Allocation // .Where(t => t.UnReadTaskCount > 0); - var visitTaskQuery = GetOrderReadingIQueryable(trialId, trialReadingCriterionId, iRUnReadSubjectQuery.SubjectCode); + var visitTaskListInfo =await GetOrderReadingIQueryable(new GetOrderReadingIQueryableInDto() + { + TrialId= trialId, + TrialReadingCriterionId=trialReadingCriterionId, + SubjectCode = iRUnReadSubjectQuery.SubjectCode, + Page= new PageInput() { + PageIndex= iRUnReadSubjectQuery.PageIndex, + PageSize= iRUnReadSubjectQuery.PageSize, + Asc = iRUnReadSubjectQuery.Asc, + SortField= iRUnReadSubjectQuery.SortField, - var totalCount = visitTaskQuery.Item1; - var currentPageData = await visitTaskQuery.Item2 - .Skip((iRUnReadSubjectQuery.PageIndex - 1) * iRUnReadSubjectQuery.PageSize) - .Take(iRUnReadSubjectQuery.PageSize).ToListAsync(); + } + + }); + + var totalCount = visitTaskListInfo.Item1; + var currentPageData = visitTaskListInfo.Item2; var result = new PageOutput() { @@ -951,13 +962,14 @@ namespace IRaCIS.Core.Application.Service.Allocation /// /// 获取有序阅片IQuery对象 /// - /// + /// + /// - public (int, IOrderedQueryable) GetOrderReadingIQueryable(Guid trialId, Guid? trialReadingCriterionId,string? subjectCode =null) + public async Task<(int, List)> GetOrderReadingIQueryable(GetOrderReadingIQueryableInDto inDto) { - var visitGroupQuery = _visitTaskRepository.Where(x => x.TrialId == trialId && x.DoctorUserId == _userInfo.Id) - .WhereIf(trialReadingCriterionId != null, t => t.TrialReadingCriterionId == trialReadingCriterionId) - .WhereIf(!string.IsNullOrEmpty(subjectCode), t => t.Subject.Code.Contains(subjectCode) || t.BlindSubjectCode.Contains(subjectCode)) + var visitGroupQuery = _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId && x.DoctorUserId == _userInfo.Id) + .Where(t => t.TrialReadingCriterionId == inDto.TrialId) + .WhereIf(!string.IsNullOrEmpty(inDto.SubjectCode), t => t.Subject.Code.Contains(inDto.SubjectCode) || t.BlindSubjectCode.Contains(inDto.SubjectCode)) .Where(t => (t.ReadingTaskState != ReadingTaskState.HaveSigned || t.ReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed || t.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed) && t.TaskState == TaskState.Effect) .GroupBy(x => new { x.SubjectId, x.Subject.Code, x.BlindSubjectCode }); @@ -966,34 +978,42 @@ namespace IRaCIS.Core.Application.Service.Allocation { SubjectId = x.Key.SubjectId, SubjectCode = x.Key.BlindSubjectCode == string.Empty ? x.Key.Code : x.Key.BlindSubjectCode, - UnReadTaskCount = x.Where(y => y.ReadingTaskState != ReadingTaskState.HaveSigned).Count(), + ExistReadingApply = x.Any(y => y.ReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed), UnReadTaskList = x.Where(y => y.ReadingTaskState != ReadingTaskState.HaveSigned).OrderBy(x => x.VisitTaskNum) .Select(u => new IRUnreadTaskView() { Id = u.Id, IsUrgent = u.IsUrgent, - VisitNum = u.VisitTaskNum, TaskBlindName = u.TaskBlindName, VisistId = u.SourceSubjectVisitId, SuggesteFinishedTime = u.SuggesteFinishedTime, ReadingCategory = u.ReadingCategory, IsAnalysisCreate = u.IsAnalysisCreate, - TrialReadingCriterionId = u.TrialReadingCriterionId, - IsClinicalDataSigned= u.Subject.ClinicalDataList.Any(c => c.IsSign && (c.ReadingId == u.SouceReadModuleId || c.ReadingId == u.SourceSubjectVisitId)) - }).ToList(), + }).Where(z=>z.IsClinicalDataSigned).ToList(), }).Where(x => x.UnReadTaskCount > 0).OrderBy(x => x.SubjectId); + // 有序阅片需要找到最小需要 + var count = visitGroupQuery.Count(); - var count = visitGroupQuery.Select(x => new + var result = new List(); + + if (inDto.Page != null) { - UnReadTaskCount = x.Where(y => y.ReadingTaskState != ReadingTaskState.HaveSigned).Count(), - }).Where(x => x.UnReadTaskCount > 0).Count(); - return (count, visitTaskQuery); + result = await visitTaskQuery + .Skip((inDto.Page.PageIndex - 1) * inDto.Page.PageSize) + .Take(inDto.Page.PageSize).ToListAsync(); + } + else + { + result= await visitTaskQuery.ToListAsync(); + } + + return (count, result); } diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index be09e1f9..10e370c2 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -884,7 +884,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid TrialId { get; set; } - public Guid? TrialReadingCriterionId { get; set; } + public Guid TrialReadingCriterionId { get; set; } 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 237f5611..c9a23723 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -1251,7 +1251,10 @@ namespace IRaCIS.Application.Services } else if (inDto.SubjectId != null) { - var subjectTaskList = await _visitTaskService.GetOrderReadingIQueryable(inDto.TrialId, trialReadingCriterionId).Item2.ToListAsync(); + var subjectTaskList = (await _visitTaskService.GetOrderReadingIQueryable(new GetOrderReadingIQueryableInDto() { + TrialId= inDto.TrialId, + TrialReadingCriterionId=inDto.TrialReadingCriterionId, + })).Item2; var index = 0; subjectTaskList.ForEach(x => diff --git a/IRaCIS.Core.Domain/Allocation/VisitTask.cs b/IRaCIS.Core.Domain/Allocation/VisitTask.cs index 35932d97..74f2b48a 100644 --- a/IRaCIS.Core.Domain/Allocation/VisitTask.cs +++ b/IRaCIS.Core.Domain/Allocation/VisitTask.cs @@ -251,7 +251,7 @@ namespace IRaCIS.Core.Domain.Models try { - return this.JudgeResultImagePath.Split(',').ToList(); + return this.JudgeResultImagePath.Trim().Split(',').ToList(); } catch (Exception) {