diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs index c3efedca0..a49e29b3c 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs @@ -10,6 +10,7 @@ using IRaCIS.Core.Application.Service.Reading.Dto; using IRaCIS.Core.Domain.Share.Reading; using MassTransit; using IRaCIS.Core.Infra.EFCore.Common; +using IRaCIS.Core.Infrastructure.Extention; namespace IRaCIS.Application.Services { @@ -27,12 +28,15 @@ namespace IRaCIS.Application.Services private readonly IRepository _readingPeriodPlanRepository; private readonly IRepository _siteSetRepository; + private readonly IRepository _subjectRepository; + public ReadingPeriodSetService(IRepository subjectVisitRepository, IRepository ReadingPeriodSetRepository, IRepository readModuleRepository, IRepository visitStageRepository, IRepository readingPeriodPlanRepository, - IRepository SiteSetRepository + IRepository SiteSetRepository, + IRepository subjectRepository ) { _subjectVisitRepository = subjectVisitRepository; @@ -41,6 +45,8 @@ namespace IRaCIS.Application.Services this._visitStageRepository = visitStageRepository; this._readingPeriodPlanRepository = readingPeriodPlanRepository; _siteSetRepository = SiteSetRepository; + + _subjectRepository = subjectRepository; } @@ -52,7 +58,7 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task AddOrUpdateReadingPeriodSet(ReadingPeriodSetAddOrEdit addOrEditReadingPeriodSet) { - if (await _readingPeriodSetRepository.AnyAsync(x => x.Id != addOrEditReadingPeriodSet.Id &&x.TrialId==addOrEditReadingPeriodSet.TrialId && x.ReadingPeriodName == addOrEditReadingPeriodSet.ReadingPeriodName)) + if (await _readingPeriodSetRepository.AnyAsync(x => x.Id != addOrEditReadingPeriodSet.Id && x.TrialId == addOrEditReadingPeriodSet.TrialId && x.ReadingPeriodName == addOrEditReadingPeriodSet.ReadingPeriodName)) { return ResponseOutput.NotOk("阅片期名称重复,操作失败"); } @@ -66,21 +72,21 @@ namespace IRaCIS.Application.Services entity.ReadingPeriodSites = addOrEditReadingPeriodSet.SiteIds.Select(x => new ReadingPeriodSite() { ReadingPeriodSetId = entity.Id, - TrialId =entity.TrialId, + TrialId = entity.TrialId, SiteId = x, }).ToList(); entity.ReadingPeriodPlanList = addOrEditReadingPeriodSet.SubjectVisitIds.Select(x => new ReadingPeriodPlan { ReadingPeriodSetId = entity.Id, - SubjectVisitId=x, + 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).Include(x=>x.ReadingPeriodPlanList).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() @@ -118,7 +124,7 @@ namespace IRaCIS.Application.Services 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 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, @@ -190,18 +196,18 @@ namespace IRaCIS.Application.Services { 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 - { - Id=x.Id, - ExpirationDate = x.ReadingPeriodSet.ExpirationDate, - SubjectVisitId = x.SubjectVisitId, - TrialSiteCode = x.SubjectVisit.TrialSite.TrialSiteCode, - LatestScanDate =x.SubjectVisit.LatestScanDate, - ReadingPeriodName = x.ReadingPeriodSet.ReadingPeriodName, - ReadingPeriodSetId = x.ReadingPeriodSetId, - SubjectCode = x.SubjectVisit.Subject.Code, - SubjectId = x.SubjectVisit.SubjectId, - SubjectVisitName = x.SubjectVisit.VisitName, - EffectOfTime=x.ReadingPeriodSet.EffectOfTime, + { + Id = x.Id, + ExpirationDate = x.ReadingPeriodSet.ExpirationDate, + SubjectVisitId = x.SubjectVisitId, + TrialSiteCode = x.SubjectVisit.TrialSite.TrialSiteCode, + LatestScanDate = x.SubjectVisit.LatestScanDate, + ReadingPeriodName = x.ReadingPeriodSet.ReadingPeriodName, + ReadingPeriodSetId = x.ReadingPeriodSetId, + SubjectCode = x.SubjectVisit.Subject.Code, + SubjectId = x.SubjectVisit.SubjectId, + SubjectVisitName = x.SubjectVisit.VisitName, + EffectOfTime = x.ReadingPeriodSet.EffectOfTime, }); return await plans.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField == null ? nameof(PreviewTheReadingListOutDto.SubjectId) : inDto.SortField, @@ -229,7 +235,7 @@ namespace IRaCIS.Application.Services x.SubjectVisitName = x.IsGlobal ? "末次访视" : x.SubjectVisitName; }); return pageList; - } + } @@ -273,9 +279,9 @@ namespace IRaCIS.Application.Services { if (indto.IsTakeEffect == ReadingPeriodStatus.TakeEffect) { - var readingPeriodSet =await _readingPeriodSetRepository.Where(x => x.Id == indto.Id).FirstOrDefaultAsync(); - var plans = _readingPeriodPlanRepository.Where(x => x.ReadingPeriodSetId == indto.Id).Include(x=>x.SubjectVisit) - .Include(x => x.ReadingPeriodSet).Include(x=>x.SubjectVisit).ToList(); + var readingPeriodSet = await _readingPeriodSetRepository.Where(x => x.Id == indto.Id).FirstOrDefaultAsync(); + var plans = _readingPeriodPlanRepository.Where(x => x.ReadingPeriodSetId == indto.Id).Include(x => x.SubjectVisit) + .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) @@ -294,23 +300,24 @@ namespace IRaCIS.Application.Services ModuleName = item.ReadingPeriodSet.ReadingPeriodName, SubjectVisitId = item.SubjectVisitId, ReadingSetType = item.ReadingPeriodSet.ReadingSetType, - ReadingPeriodSetId= item.ReadingPeriodSet.Id, + ReadingPeriodSetId = item.ReadingPeriodSet.Id, Status = ReadModuleEnum.TaskAllocation, TrialId = readingPeriodSet.TrialId, - VisitNum= item.SubjectVisit.VisitNum, + VisitNum = item.SubjectVisit.VisitNum, }); }; await _readModuleRepository.AddRangeAsync(readModules); - } - else + } + else { await _readModuleRepository.DeleteFromQueryAsync(x => x.ReadingPeriodSetId == indto.Id); } - var readQuery =await _readingPeriodSetRepository.UpdatePartialFromQueryAsync(indto.Id, x => new ReadingPeriodSet() { + var readQuery = await _readingPeriodSetRepository.UpdatePartialFromQueryAsync(indto.Id, x => new ReadingPeriodSet() + { IsTakeEffect = indto.IsTakeEffect, - EffectOfTime= indto.IsTakeEffect== ReadingPeriodStatus.TakeEffect?DateTime.Now:null, + EffectOfTime = indto.IsTakeEffect == ReadingPeriodStatus.TakeEffect ? DateTime.Now : null, }); var result = await _readingPeriodSetRepository.SaveChangesAsync();