Uat_Study
hang 2022-06-09 14:43:45 +08:00
parent c423fb1047
commit 92274e954d
1 changed files with 35 additions and 28 deletions

View File

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