修改仓储信息

This commit is contained in:
2022-04-22 08:58:56 +08:00
parent 746d0ebc58
commit ab4847b510
14 changed files with 165 additions and 149 deletions
@@ -85,27 +85,7 @@ namespace IRaCIS.Core.Application.Contracts
await _noneDicomStudyRepository.SaveChangesAsync();
}
var svTime = _repository.Where<SubjectVisit>(t => t.Id == addOrEditNoneDicomStudy.SubjectVisitId).Select(t => new
{
DicomStudyMinStudyTime = t.StudyList.Min(t => (DateTime?)t.StudyTime),
DicomStudyMaxStudyTime = t.StudyList.Max(t => (DateTime?)t.StudyTime),
NoneDicomStudyMinStudyTime = t.NoneDicomStudyList.Min(t => (DateTime?)t.ImageDate),
NoneDicomStudyMaxStudyTime = t.NoneDicomStudyList.Max(t => (DateTime?)t.ImageDate)
}).FirstOrDefault().IfNullThrowException();
var minArray = new DateTime?[] { svTime.DicomStudyMinStudyTime, svTime.NoneDicomStudyMinStudyTime, addOrEditNoneDicomStudy.ImageDate };
var maxArray = new DateTime?[] { svTime.DicomStudyMaxStudyTime, svTime.NoneDicomStudyMaxStudyTime, addOrEditNoneDicomStudy.ImageDate };
await _repository.BatchUpdateAsync<SubjectVisit>(t => t.Id == addOrEditNoneDicomStudy.SubjectVisitId, u => new SubjectVisit()
{
VisitExecuted = VisitExecutedEnum.Executed,
EarliestScanDate = minArray.Min(),
LatestScanDate = maxArray.Max()
});
await _repository.SaveChangesAsync();
NoneDicomStudyAddReturnDto noneDicom = new NoneDicomStudyAddReturnDto()
{
@@ -130,34 +110,12 @@ namespace IRaCIS.Core.Application.Contracts
if (noneDicomStudy == null) return Null404NotFound(noneDicomStudy);
await _noneDicomStudyRepository.BatchDeleteAsync(t => t.Id == noneDicomStudyId);
await _noneDicomStudyRepository.DeleteAsync(noneDicomStudy);
await _noneDicomStudyFileRepository.BatchDeleteAsync(t => t.NoneDicomStudyId == noneDicomStudyId);
await _repository.BatchDeleteAsync<StudyMonitor>(t => t.StudyId == noneDicomStudyId);
var svTime = await _repository.Where<SubjectVisit>(t => t.Id == noneDicomStudy.SubjectVisitId).Select(t => new
{
DicomStudyMinStudyTime = t.StudyList.Min(t => (DateTime?)t.StudyTime),
DicomStudyMaxStudyTime = t.StudyList.Max(t => (DateTime?)t.StudyTime),
NoneDicomStudyMinStudyTime = t.NoneDicomStudyList.Min(t => (DateTime?)t.ImageDate),
NoneDicomStudyMaxStudyTime = t.NoneDicomStudyList.Max(t => (DateTime?)t.ImageDate)
}).FirstOrDefaultAsync().IfNullThrowException();
var minArray = new DateTime?[] { svTime.DicomStudyMinStudyTime, svTime.NoneDicomStudyMinStudyTime };
var maxArray = new DateTime?[] { svTime.DicomStudyMaxStudyTime, svTime.NoneDicomStudyMaxStudyTime };
await _repository.BatchUpdateAsync<SubjectVisit>(t => t.Id == noneDicomStudy.SubjectVisitId, u => new SubjectVisit()
{
EarliestScanDate = minArray.Min(),
LatestScanDate = maxArray.Max()
});
//如果既没有 dicom数据 也没有非dicom 文件 那么提交状态变更回去
if (await _repository.CountAsync<DicomStudy>(t => t.SubjectVisitId == noneDicomStudy.SubjectVisitId) == 0 && await _repository.CountAsync<NoneDicomStudyFile>(t => t.NoneDicomStudy.SubjectVisitId == noneDicomStudy.SubjectVisitId) == 0)
{
await _repository.BatchUpdateAsync<SubjectVisit>(t => t.Id == noneDicomStudy.SubjectVisitId && t.SubmitState == SubmitStateEnum.ToSubmit, u => new SubjectVisit() { VisitExecuted = 0, SubmitState = SubmitStateEnum.None });
}
return ResponseOutput.Ok();
}
@@ -13,13 +13,10 @@ using MiniExcelLibs;
using ExcelDataReader;
using System.Text;
using System.Data;
using IRaCIS.Core.Infra.EFCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Authorization;
using WinSCP;
using Magicodes.ExporterAndImporter.Excel;
using Newtonsoft.Json;
using Magicodes.ExporterAndImporter.Csv;
using IRaCIS.Core.Application.Service.Inspection.Interface;
using IRaCIS.Core.Infrastructure;
using IRaCIS.Core.Application.Service.Inspection.DTO;
@@ -32,26 +29,24 @@ namespace IRaCIS.Core.Application.Image.QA
private readonly DicomFileStoreHelper _dicomFileStoreHelper;
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
private readonly IRepository<DicomStudy> _dicomStudyRepository;
private readonly IRepository<Trial> _trialRepository;
private readonly IServiceProvider serviceProvider;
private readonly IMediator _mediator;
private readonly IInspectionService _inspectionService;
private object _locker = new object();
public QCOperationService(DicomFileStoreHelper dicomFileStoreHelper, IRepository<SubjectVisit> subjectVisitRepository,
IRepository<Trial> trialRepository,
IServiceProvider serviceProvider,
IMediator mediator,
IInspectionService sinspectionService,
IRepository<DicomStudy> _trialRepository
IInspectionService inspectionService,
IRepository<DicomStudy> dicomStudyRepository
)
{
_dicomFileStoreHelper = dicomFileStoreHelper;
_subjectVisitRepository = subjectVisitRepository;
this._trialRepository = trialRepository;
this.serviceProvider = serviceProvider;
_dicomStudyRepository = dicomStudyRepository;
_mediator = mediator;
this._inspectionService = sinspectionService;
this._inspectionService = inspectionService;
}
#region QC质疑
@@ -1015,20 +1010,23 @@ namespace IRaCIS.Core.Application.Image.QA
/// <returns></returns>SeriesCount
[HttpPost, Route("{trialId:guid}/{subjectVisitId:guid}")]
[TypeFilter(typeof(TrialResourceFilter))]
[UnitOfWork]
public async Task<IResponseOutput> DeleteStudyList(Guid[] ids, Guid subjectVisitId, Guid trialId)
{
//提交了 但是IQC同意的时候 是可以删除的
if (await _repository.AnyAsync<SubjectVisit>(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.Submitted &&
if (await _subjectVisitRepository.AnyAsync(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.Submitted &&
(!t.QCChallengeList.Any(u => u.ReuploadEnum == QCChanllengeReuploadEnum.QCAgreeUpload))))
{
return ResponseOutput.NotOk("CRC Has Submited Imagecan not delete");
}
var DicomStudys = await _repository.GetQueryable<DicomStudy>().Where(x => ids.Contains(x.Id)).ToListAsync();
var waitDeleteStudyList= await _dicomStudyRepository.Where(x => ids.Contains(x.Id)).ToListAsync();
List<DataInspection> datas = new List<DataInspection>();
DicomStudys.ForEach(x =>
waitDeleteStudyList.ForEach(x =>
{
datas.Add(new DataInspection()
{
@@ -1054,22 +1052,13 @@ namespace IRaCIS.Core.Application.Image.QA
#region will calls error wried
//ids.ToList().ForEach(async id =>
//{
// var success1 = await _repository.DeleteFromQueryAsync<DicomStudy>(t => t.Id == id);
// var succeess2 = await _repository.DeleteFromQueryAsync<DicomInstance>(t => t.StudyId == id);
// var success3 = await _repository.DeleteFromQueryAsync<DicomSeries>(t => t.StudyId == id);
//});
#endregion
var createtime = DateTime.Now.AddMilliseconds(200);
foreach (var id in ids)
foreach (var study in waitDeleteStudyList)
{
var success1 = await _repository.BatchDeleteAsync<DicomStudy>(t => t.Id == id);
var id = study.Id;
await _dicomStudyRepository.DeleteAsync(study,true);
var succeess2 = await _repository.BatchDeleteAsync<DicomInstance>(t => t.StudyId == id);
var DicomSeriess = await _repository.GetQueryable<DicomSeries>().Where(t => t.StudyId == id).Select(x => new {
@@ -1135,39 +1124,6 @@ namespace IRaCIS.Core.Application.Image.QA
//一个访视下面有多个检查,所以需要检测 没有的时候才清空 非dicom 是检查文件 不是表记录
if (await _repository.CountAsync<DicomStudy>(t => t.SubjectVisitId == subjectVisitId) == 0 && await _repository.CountAsync<NoneDicomStudyFile>(t => t.NoneDicomStudy.SubjectVisitId == subjectVisitId) == 0)
{
await _repository.BatchUpdateAsync<SubjectVisit>(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.ToSubmit,
u => new SubjectVisit() { VisitExecuted = 0, SVENDTC = null, SVSTDTC = null, SubmitState = SubmitStateEnum.None });
//_qaNoticeRepository.Delete(t => t.SubjectVisitId == subjectVisitId);
//_qaNoticeUserRepository.Delete(t => t.SubjectVisitId == subjectVisitId);
//_qcChallengeRepository.Delete(t => t.SubjectVisitId == subjectVisitId);
//_qcChallengeDialogRepository.Delete(t => t.SubjectVisitId == subjectVisitId);
//_trialQCQuestionAnswerRepository.Delete(t => t.SubjectVisitId == subjectVisitId);
//_checkChallengeDialogRepository.Delete(t => t.SubjectVisitId == subjectVisitId);
}
var svTime = await _repository.Where<SubjectVisit>(t => t.Id == subjectVisitId).Select(t => new
{
DicomStudyMinStudyTime = t.StudyList.Min(t => (DateTime?)t.StudyTime),
DicomStudyMaxStudyTime = t.StudyList.Max(t => (DateTime?)t.StudyTime),
NoneDicomStudyMinStudyTime = t.NoneDicomStudyList.Min(t => (DateTime?)t.ImageDate),
NoneDicomStudyMaxStudyTime = t.NoneDicomStudyList.Max(t => (DateTime?)t.ImageDate)
}).FirstOrDefaultAsync().IfNullThrowException();
var minArray = new DateTime?[] { svTime.DicomStudyMinStudyTime, svTime.NoneDicomStudyMinStudyTime };
var maxArray = new DateTime?[] { svTime.DicomStudyMaxStudyTime, svTime.NoneDicomStudyMaxStudyTime };
await _repository.BatchUpdateAsync<SubjectVisit>(t => t.Id == subjectVisitId, u => new SubjectVisit()
{
EarliestScanDate = minArray.Min(),
LatestScanDate = maxArray.Max()
});
var subvisit = await _repository.GetQueryable<SubjectVisit>().FirstOrDefaultAsync(x => x.Id == subjectVisitId);