diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalDataSetService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalDataSetService.cs index 2d3852321..fec872293 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalDataSetService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalDataSetService.cs @@ -107,7 +107,7 @@ namespace IRaCIS.Application.Services public async Task SetClinicalDataCheckd(SetClinicalDataCheckdIndto setClinicalData) { // 为了后面稽查这样写 - var nocheckids =await _clinicalDataTrialSetRepository.Where(x => x.TrialId == setClinicalData.TrialId && setClinicalData.ClinicalDataTrialIds.Contains(x.Id)).Select(x => x.Id).ToListAsync(); + var nocheckids =await _clinicalDataTrialSetRepository.Where(x => x.TrialId == setClinicalData.TrialId && !setClinicalData.ClinicalDataTrialIds.Contains(x.Id)).Select(x => x.Id).ToListAsync(); foreach (var item in setClinicalData.ClinicalDataTrialIds) { await _clinicalDataTrialSetRepository.UpdatePartialFromQueryAsync(item, x => new ClinicalDataTrialSet() @@ -116,8 +116,6 @@ namespace IRaCIS.Application.Services }); } - - foreach (var item in nocheckids) { await _clinicalDataTrialSetRepository.UpdatePartialFromQueryAsync(item, x => new ClinicalDataTrialSet() diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs index aab53210f..8d1ea27e1 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs @@ -101,9 +101,6 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto { public Guid Id { get; set; } - - - /// /// 名称 /// @@ -120,9 +117,6 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// public ClinicalUploadType ClinicalUploadType { get; set; } - - - /// /// 创建时间 /// diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs index 7cec8a29b..d2f779689 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs @@ -109,67 +109,35 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task> GetPreviewTheReadingList(PreviewTheReadingListInDto inDto) { - //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) - { - - visitQuery = visitQuery.Where(x => inDto.SiteIds.Contains(x.SiteId)); - - } - - //var - var existsBubjectVisits = await _readModuleRepository.Where(y => y.ReadingSetType == inDto.ReadingSetType && y.TrialId == inDto.TrialId).Select(x => x.SubjectVisitId).ToListAsync(); - visitQuery = visitQuery.Where(x => !existsBubjectVisits.Contains(x.Id)) + var visitQuery = _subjectVisitRepository.Where(x => x.TrialId == inDto.TrialId && x.InPlan&&x.LatestScanDate!=null) + .WhereIf(inDto.SiteIds.Count != 0, x => inDto.SiteIds.Contains(x.SiteId)); + var existsBubjectVisitsQuery= _readModuleRepository.Where(y => y.ReadingSetType == inDto.ReadingSetType && y.TrialId == inDto.TrialId).Select(x => x.SubjectVisitId); + visitQuery = visitQuery.Where(x => !existsBubjectVisitsQuery.Contains(x.Id)) .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(); var subjectVisits = visitlist.GroupBy(x => x.SubjectId).Select(x => new { SubjectId = x.Key, - Visit = x.ToList() + Visits = x.ToList() }); - - // 这地方用分页报错 - //var visitListQuery = visitQuery.GroupBy(x => x.SubjectId).Select(x => new - //{ - // SubjectId = x.Key, - // Visit = x.ToList() - //}); - // var subjectVisits = await visitListQuery.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField == null ? "SubjectId" : inDto.SortField, - // inDto.Asc); - List visits = new List(); subjectVisits.ForEach(x => { - var visit = x.Visit.OrderByDescending(x => x.VisitNum).FirstOrDefault(); + var visit = x.Visits.OrderByDescending(x => x.VisitNum).FirstOrDefault(); if (visit != null) { visits.Add(visit); } }); - PageOutput result = new PageOutput() { CurrentPageData = visits - //Where(x => _readModuleRepository.Where(y => y.ReadingSetType == readSet.ReadingSetType && x.Id == y.SubjectVisitId).Count() == 0) .Select(x => new PreviewTheReadingListOutDto { ExpirationDate = inDto.ExpirationDate, @@ -177,11 +145,9 @@ namespace IRaCIS.Application.Services TrialSiteCode = x.TrialSite.TrialSiteCode, LatestScanDate = x.LatestScanDate, ReadingPeriodName = inDto.ReadingPeriodName, - //ReadingPeriodSetId = readSet.Id, SubjectCode = x.Subject.Code, SubjectId = x.SubjectId, SubjectVisitName = x.VisitName, - //Remark= readset.Remark }).ToList(), PageSize = inDto.PageSize, PageIndex = inDto.PageIndex, @@ -238,7 +204,7 @@ namespace IRaCIS.Application.Services EffectOfTime=x.ReadingPeriodSet.EffectOfTime, }); - return await plans.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField == null ? "SubjectId" : inDto.SortField, + return await plans.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField == null ? nameof(PreviewTheReadingListOutDto.SubjectId) : inDto.SortField, inDto.Asc); } @@ -255,7 +221,7 @@ namespace IRaCIS.Application.Services .WhereIf(query.TrialId!=null,x=>x.TrialId==query.TrialId) .WhereIf(query.ReadingPeriodName != null, x => x.ReadingPeriodName.Contains(query.ReadingPeriodName)) .ProjectTo(_mapper.ConfigurationProvider); - var pageList= await readQuery.ToPagedListAsync(query.PageIndex, query.PageSize, query.SortField == null ? "CreateTime" : query.SortField, + var pageList= await readQuery.ToPagedListAsync(query.PageIndex, query.PageSize, query.SortField == null ? nameof(ReadingPeriodSetView.CreateTime) : query.SortField, query.Asc); pageList.CurrentPageData.ForEach(x => @@ -275,9 +241,7 @@ namespace IRaCIS.Application.Services [HttpPost("{id:guid}")] public async Task GetReadingPeriodSet(Guid id) { - var data = await _readingPeriodSetRepository.AsQueryable().Include(x => x.ReadingPeriodSites).Where(x => x.Id == id).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync(); - return data; - + return await _readingPeriodSetRepository.AsQueryable().Include(x => x.ReadingPeriodSites).Where(x => x.Id == id).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync(); } /// @@ -288,19 +252,14 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task> GetReadingVisitList(GetReadingVisitListInDto inDto) { - var maxVisitnum = await _readingPeriodSetRepository.Where(x => x.TrialId == inDto.TrialId && x.ReadingSetType == inDto.ReadingSetType&&(x.IsTakeEffect== ReadingPeriodStatus.TakeEffect||x.IsTakeEffect==ReadingPeriodStatus.Revocation)).MaxAsync(x => x.ExpirationVisitNum)??0; - - var thisVisitnum = await _readingPeriodSetRepository.Where(x => x.Id == inDto.ReadingPeriodSetId).Select(x => x.ExpirationVisitNum).FirstOrDefaultAsync() ?? -1; - - //var visitStageIdList = await _readingPeriodSetRepository.Where(x => x.TrialId == inDto.TrialId && x.Id != inDto.ReadingPeriodSetId&&x.VisitStageId!=null&&x.ReadingSetType==inDto.ReadingSetType).Select(x => x.VisitStageId).ToListAsync(); - List result = await _visitStageRepository.Where(x => x.TrialId == inDto.TrialId ).Where(x=>x.VisitNum== thisVisitnum|| x.VisitNum >= maxVisitnum).Select(x => new GetReadingVisitListOutDto() + var maxVisitNum = await _readingPeriodSetRepository.Where(x => x.TrialId == inDto.TrialId && x.ReadingSetType == inDto.ReadingSetType&&(x.IsTakeEffect== ReadingPeriodStatus.TakeEffect||x.IsTakeEffect==ReadingPeriodStatus.Revocation)).MaxAsync(x => x.ExpirationVisitNum)??0; + var thisVisitNum = await _readingPeriodSetRepository.Where(x => x.Id == inDto.ReadingPeriodSetId).Select(x => x.ExpirationVisitNum).FirstOrDefaultAsync() ?? -1; + List result = await _visitStageRepository.Where(x => x.TrialId == inDto.TrialId ).Where(x=>x.VisitNum== thisVisitNum || x.VisitNum >= maxVisitNum).Select(x => new GetReadingVisitListOutDto() { - VisitName = x.VisitName, VisitNum = x.VisitNum, VisitStageId = x.Id, }).ToListAsync(); - return result; } @@ -319,12 +278,10 @@ namespace IRaCIS.Application.Services .Include(x => x.ReadingPeriodSet).Include(x=>x.SubjectVisit).ToList(); var needAddVisitIds = plans.Select(x => x.SubjectVisitId).ToList(); var repeatVisitNames = _readModuleRepository.Where(x => x.ReadingSetType == ReadingSetType.ImageReading && needAddVisitIds.Contains(x.SubjectVisitId)).Select(x =>x.Subject.Code+"的"+ x.SubjectVisit.VisitName).ToList(); - if(repeatVisitNames.Count!=0) { return ResponseOutput.NotOk($"{string.Join(",", repeatVisitNames)}已经添加过阅片期,无法设置生效"); } - List readModules = new List(); foreach (var item in plans) { @@ -370,7 +327,6 @@ namespace IRaCIS.Application.Services [HttpDelete("{readingPeriodSetId:guid}")] public async Task DeleteReadingPeriodSet(Guid readingPeriodSetId) { - var success = await _repository.BatchDeleteAsync(t => t.Id == readingPeriodSetId); return ResponseOutput.Result(success); } diff --git a/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs b/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs index eb4d2e5f7..933b96207 100644 --- a/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs +++ b/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs @@ -274,12 +274,10 @@ namespace IRaCIS.Application.Services var list = _influnceRepository.Where(t => t.VisitPlanInfluenceStatId == visitPlanInfluenceStatId) .ProjectTo(_mapper.ConfigurationProvider).ToList(); - IExporter exporter = new ExcelExporter(); var result = await exporter.ExportAsByteArray(list); - return new XlsxFileResult(bytes: result, fileDownloadName: $"检查导出_{DateTime.Now.ToString("yyyy-MM-dd:hh:mm:ss")}.xlsx"); @@ -297,9 +295,7 @@ namespace IRaCIS.Application.Services { var visitPlan = await _visitStageRepository.FirstOrDefaultAsync(t => t.Id == id); - if (visitPlan == null) return Null404NotFound(visitPlan); - if (await _repository.AnyAsync(t => t.VisitName == visitPlan.VisitName && t.TrialId == visitPlan.TrialId && t.VisitExecuted == VisitExecutedEnum.Executed)) { return ResponseOutput.NotOk("The visit plan has been assigned to the subjects and executed.");