From e92979388c4860448bce7f8b2c50bc5104dee12c Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Tue, 7 Jun 2022 17:18: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 --- .../IRaCIS.Core.Application.xml | 34 +++++++++++- .../Service/Inspection/InspectionService.cs | 5 +- .../Reading/Dto/ReadingPeriodSetViewModel.cs | 44 +++++++++++++++- .../Reading/ReadingPeriodSetService.cs | 52 +++++++++++++------ 4 files changed, 113 insertions(+), 22 deletions(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 96111db8f..879cfce3d 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -822,11 +822,41 @@ 访视ID - + 阅片期ID + + + 中心ID + + + + + 项目ID + + + + + 截止日期 + + + + + 截止访视 + + + + + 访视计划ID + + + + + 阅片期名称 + + 获取影像阅片预览的Dto @@ -3145,7 +3175,7 @@ - + 获取选中的计划 diff --git a/IRaCIS.Core.Application/Service/Inspection/InspectionService.cs b/IRaCIS.Core.Application/Service/Inspection/InspectionService.cs index 3346ed0d4..7f1a01d0c 100644 --- a/IRaCIS.Core.Application/Service/Inspection/InspectionService.cs +++ b/IRaCIS.Core.Application/Service/Inspection/InspectionService.cs @@ -42,7 +42,10 @@ namespace IRaCIS.Core.Application.Service.Inspection join site in _repository.GetQueryable().IgnoreQueryFilters() on data.SiteId equals site.Id into sitetemp from leftsite in sitetemp.DefaultIfEmpty() - + // join trialSite in _repository.GetQueryable().IgnoreQueryFilters() on new { SiteId=data.SiteId,tria } equals new { SiteId= trialSite.SiteId }into sitetemp + // from leftsite in sitetemp.DefaultIfEmpty() + + join subject in _repository.GetQueryable().IgnoreQueryFilters() on data.SubjectId equals subject.Id into subtemp from leftsubject in subtemp.DefaultIfEmpty() join subjectVisit in _repository.GetQueryable().IgnoreQueryFilters() on data.SubjectVisitId equals subjectVisit.Id into subjectVisittemp diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingPeriodSetViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingPeriodSetViewModel.cs index 2ac247960..b6b111a70 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingPeriodSetViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingPeriodSetViewModel.cs @@ -51,6 +51,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public List SiteIds { get; set; } = new List(); + public List SubjectVisitIds { get; set; } = new List(); + } @@ -68,13 +70,50 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public List SubjectVisitIds { get; set; } } - public class PreviewTheReadingListInDto:PageInput + public class PreviewTheReadingListDto : PageInput { /// /// 阅片期ID /// public Guid ReadingPeriodSetId { get; set; } + } + + public class PreviewTheReadingListInDto : PageInput + { + + + /// + /// 中心ID + /// + public List SiteIds { get; set; } = new List(); + + /// + /// 项目ID + /// + public Guid TrialId { get; set; } + + /// + /// 截止日期 + /// + public DateTime? ExpirationDate { get; set; } + + /// + /// 截止访视 + /// + public decimal? ExpirationVisitNum { get; set; } + + /// + /// 访视计划ID + /// + public Guid? VisitStageId { get; set; } + + /// + /// 阅片期名称 + /// + public string ReadingPeriodName { get; set; } + + } /// @@ -123,7 +162,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// 阅片期ID /// - public Guid ReadingPeriodSetId { get; set; } + public Guid? ReadingPeriodSetId { get; set; } /// /// 阅片期名称 @@ -208,6 +247,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// 计划条数 /// public int PlanCount { get; set; } + } public class SetReadingPeriodSetEffect diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs index 477930cff..6c8866b23 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs @@ -58,19 +58,33 @@ namespace IRaCIS.Application.Services TrialId =entity.TrialId, SiteId = x, }).ToList(); + + entity.ReadingPeriodPlanList = addOrEditReadingPeriodSet.SubjectVisitIds.Select(x => new ReadingPeriodPlan + { + ReadingPeriodSetId = entity.Id, + SubjectVisitId=x, + }).ToList(); await _readingPeriodSetRepository.AddAsync(entity, true); return ResponseOutput.Ok(entity.Id); } else { - var entity = (await _readingPeriodSetRepository.Where(t => t.Id == addOrEditReadingPeriodSet.Id, true).Include(t => t.ReadingPeriodSites).FirstOrDefaultAsync()).IfNullThrowException(); + var entity = (await _readingPeriodSetRepository.Where(t => t.Id == addOrEditReadingPeriodSet.Id, true).Include(t => t.ReadingPeriodSites).Include(x=>x.ReadingPeriodPlanList).FirstOrDefaultAsync()).IfNullThrowException(); _mapper.Map(addOrEditReadingPeriodSet, entity); + entity.ReadingPeriodSites = addOrEditReadingPeriodSet.SiteIds.Select(x => new ReadingPeriodSite() { ReadingPeriodSetId = entity.Id, TrialId = entity.TrialId, SiteId = x, }).ToList(); + + entity.ReadingPeriodPlanList = addOrEditReadingPeriodSet.SubjectVisitIds.Select(x => new ReadingPeriodPlan + { + ReadingPeriodSetId = entity.Id, + SubjectVisitId = x, + }).ToList(); + var success = await _readingPeriodSetRepository.SaveChangesAsync(); return ResponseOutput.Ok(entity.Id); @@ -84,20 +98,24 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task> GetPreviewTheReadingList(PreviewTheReadingListInDto inDto) { - if (await _readingPeriodPlanRepository.AnyAsync(x => x.ReadingPeriodSetId == inDto.ReadingPeriodSetId)) + //if (await _readingPeriodPlanRepository.AnyAsync(x => x.ReadingPeriodSetId == inDto.ReadingPeriodSetId)) + //{ + // await _readingPeriodPlanRepository.DeleteFromQueryAsync(x => x.ReadingPeriodSetId == inDto.ReadingPeriodSetId); + // await _readingPeriodPlanRepository.SaveChangesAsync(); + //} + + + //var readSet = (await _readingPeriodSetRepository.Where(x => x.Id == inDto.ReadingPeriodSetId).Include(x => x.ReadingPeriodSites).FirstOrDefaultAsync()).IfNullThrowException(); + + + var visitQuery = _subjectVisitRepository.Where(x => x.TrialId == inDto.TrialId && x.InPlan&&x.LatestScanDate!=null); + if (inDto.SiteIds.Count!=0) { - await _readingPeriodPlanRepository.DeleteFromQueryAsync(x => x.ReadingPeriodSetId == inDto.ReadingPeriodSetId); - await _readingPeriodPlanRepository.SaveChangesAsync(); + + visitQuery = visitQuery.Where(x => inDto.SiteIds.Contains(x.SiteId)); } - var readSet = (await _readingPeriodSetRepository.Where(x => x.Id == inDto.ReadingPeriodSetId).Include(x => x.ReadingPeriodSites).FirstOrDefaultAsync()).IfNullThrowException(); - var visitQuery = _subjectVisitRepository.Where(x => x.TrialId == readSet.TrialId && x.InPlan&&x.LatestScanDate!=null); - if (readSet.ReadingScope == ReadingScopeEnum.Site) - { - var siteIds = readSet.ReadingPeriodSites.Select(x => x.SiteId); - visitQuery = visitQuery.Where(x => siteIds.Contains(x.SiteId)); - } - visitQuery = visitQuery.WhereIf(readSet.ExpirationDate != null, x => x.LatestScanDate <= readSet.ExpirationDate.Value) - .WhereIf(readSet.ExpirationVisitNum != null, x => x.VisitNum == readSet.ExpirationVisitNum); + visitQuery = visitQuery.WhereIf(inDto.ExpirationDate != null, x => x.LatestScanDate <= inDto.ExpirationDate.Value) + .WhereIf(inDto.ExpirationVisitNum != null, x => x.VisitNum == inDto.ExpirationVisitNum); var subjectIdlist = await visitQuery.OrderBy(x => x.SubjectId).Select(x => x.SubjectId).Distinct().Skip((inDto.PageIndex - 1) * inDto.PageSize).Take(inDto.PageSize).ToListAsync(); var totalCount = visitQuery.Select(x => x.SubjectId).Distinct().Count(); var visitlist= await visitQuery.Include(x=>x.Subject).Include(x=>x.TrialSite).Where(x => subjectIdlist.Contains(x.SubjectId)).ToListAsync(); @@ -134,12 +152,12 @@ namespace IRaCIS.Application.Services //Where(x => _readModuleRepository.Where(y => y.ReadingSetType == readSet.ReadingSetType && x.Id == y.SubjectVisitId).Count() == 0) .Select(x => new PreviewTheReadingListOutDto { - ExpirationDate = readSet.ExpirationDate, + ExpirationDate = inDto.ExpirationDate, SubjectVisitId = x.Id, TrialSiteCode = x.TrialSite.TrialSiteCode, LatestScanDate = x.LatestScanDate, - ReadingPeriodName = readSet.ReadingPeriodName, - ReadingPeriodSetId = readSet.Id, + ReadingPeriodName = inDto.ReadingPeriodName, + //ReadingPeriodSetId = readSet.Id, SubjectCode = x.Subject.Code, SubjectId = x.SubjectId, SubjectVisitName = x.VisitName, @@ -182,7 +200,7 @@ namespace IRaCIS.Application.Services /// /// [HttpPost] - public async Task> GetPreviewTheReadingPlanList(PreviewTheReadingListInDto inDto) + public async Task> GetPreviewTheReadingPlanList(PreviewTheReadingListDto inDto) { var plans = _readingPeriodPlanRepository.Where(x => x.ReadingPeriodSetId == inDto.ReadingPeriodSetId).Include(x => x.SubjectVisit).Include(x => x.SubjectVisit.TrialSite).Include(x => x.SubjectVisit.Subject) .Include(x => x.ReadingPeriodSet).Select(x => new PreviewTheReadingListOutDto