修改一版
							parent
							
								
									d1064cce02
								
							
						
					
					
						commit
						19f3c1fe5a
					
				| 
						 | 
				
			
			@ -107,7 +107,7 @@ namespace IRaCIS.Application.Services
 | 
			
		|||
        public async Task<IResponseOutput> 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()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -101,9 +101,6 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
 | 
			
		|||
    {
 | 
			
		||||
        public Guid Id { get; set; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 名称
 | 
			
		||||
        /// </summary>
 | 
			
		||||
| 
						 | 
				
			
			@ -120,9 +117,6 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
 | 
			
		|||
        /// </summary>
 | 
			
		||||
        public ClinicalUploadType ClinicalUploadType { get; set; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 创建时间
 | 
			
		||||
        /// </summary>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -109,67 +109,35 @@ namespace IRaCIS.Application.Services
 | 
			
		|||
        [HttpPost]
 | 
			
		||||
        public async Task<PageOutput<PreviewTheReadingListOutDto>> 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<SubjectVisit> visits = new List<SubjectVisit>();
 | 
			
		||||
            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<PreviewTheReadingListOutDto> result = new PageOutput<PreviewTheReadingListOutDto>()
 | 
			
		||||
            {
 | 
			
		||||
                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<ReadingPeriodSetView>(_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<ReadingPeriodSetView> GetReadingPeriodSet(Guid id)
 | 
			
		||||
        {
 | 
			
		||||
            var data = await _readingPeriodSetRepository.AsQueryable().Include(x => x.ReadingPeriodSites).Where(x => x.Id == id).ProjectTo<ReadingPeriodSetView>(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
 | 
			
		||||
            return data;
 | 
			
		||||
 | 
			
		||||
            return await _readingPeriodSetRepository.AsQueryable().Include(x => x.ReadingPeriodSites).Where(x => x.Id == id).ProjectTo<ReadingPeriodSetView>(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
| 
						 | 
				
			
			@ -288,19 +252,14 @@ namespace IRaCIS.Application.Services
 | 
			
		|||
        [HttpPost]
 | 
			
		||||
        public async Task<List<GetReadingVisitListOutDto>> 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 <GetReadingVisitListOutDto> 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 <GetReadingVisitListOutDto> 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<ReadModule> readModules = new List<ReadModule>();
 | 
			
		||||
                foreach (var item in plans)
 | 
			
		||||
                {
 | 
			
		||||
| 
						 | 
				
			
			@ -370,7 +327,6 @@ namespace IRaCIS.Application.Services
 | 
			
		|||
        [HttpDelete("{readingPeriodSetId:guid}")]
 | 
			
		||||
        public async Task<IResponseOutput> DeleteReadingPeriodSet(Guid readingPeriodSetId)
 | 
			
		||||
        {
 | 
			
		||||
 | 
			
		||||
            var success = await _repository.BatchDeleteAsync<ReadingPeriodSet>(t => t.Id == readingPeriodSetId);
 | 
			
		||||
            return ResponseOutput.Result(success);
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -274,12 +274,10 @@ namespace IRaCIS.Application.Services
 | 
			
		|||
            var list = _influnceRepository.Where(t => t.VisitPlanInfluenceStatId == visitPlanInfluenceStatId)
 | 
			
		||||
                .ProjectTo<VisitPlanInfluenceSubjectVisitDTO>(_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<SubjectVisit>(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.");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue