修改删除检查文件

master
hang 2024-11-06 10:51:18 +08:00
parent 083595cdea
commit d22c6f8702
1 changed files with 60 additions and 28 deletions

View File

@ -68,7 +68,7 @@ namespace IRaCIS.Core.Application.Image.QA
[HttpGet("{trialId:guid}/{subjectVisitId:guid}/{currentQCType:int}")]
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
// [Authorize(Policy = IRaCISPolicy.IQC)]
// [Authorize(Policy = IRaCISPolicy.IQC)]
public async Task<IResponseOutput> VerifyQCCanAddChallenge(Guid subjectVisitId, [FromRoute] CurrentQC currentQCType)
{
await VerifyIsCanQCAsync(null, subjectVisitId);
@ -91,7 +91,7 @@ namespace IRaCIS.Core.Application.Image.QA
/// <returns></returns>
[HttpPost("{trialId:guid}/{trialQCProcess:int}/{currentQCType:int}")]
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
// [Authorize(Policy = IRaCISPolicy.IQC)]
// [Authorize(Policy = IRaCISPolicy.IQC)]
public async Task<IResponseOutput> AddOrUpdateQCChallenge(QCChallengeCommand qaQuestionCommand, Guid trialId, [FromRoute] TrialQCProcess trialQCProcess, [FromRoute] CurrentQC currentQCType)
{
await VerifyIsCanQCAsync(null, qaQuestionCommand.SubjectVisitId);
@ -150,7 +150,7 @@ namespace IRaCIS.Core.Application.Image.QA
[HttpPut]
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
[UnitOfWork]
// [Authorize(Policy = IRaCISPolicy.IQC)]
// [Authorize(Policy = IRaCISPolicy.IQC)]
public async Task<IResponseOutput> CloseQCChallenge(CloseQCChallengeInDto input)
{
@ -202,7 +202,7 @@ namespace IRaCIS.Core.Application.Image.QA
/// <returns></returns>
[HttpDelete("{trialId:guid}/{subjectVisitId:guid}/{qcChallengeId:guid}")]
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
// [Authorize(Policy = IRaCISPolicy.IQC)]
// [Authorize(Policy = IRaCISPolicy.IQC)]
public async Task<IResponseOutput> DeleteQCChallenge(Guid qcChallengeId)
{
@ -229,7 +229,7 @@ namespace IRaCIS.Core.Application.Image.QA
/// <returns></returns>
[HttpPost("{trialId:guid}")]
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
//[Authorize(Policy = IRaCISPolicy.CRC_IQC)]
//[Authorize(Policy = IRaCISPolicy.CRC_IQC)]
public async Task<IResponseOutput> AddQCChallengeReply(QADialogCommand qaDialogCommand)
{
var qaReply = _mapper.Map<QCChallengeDialog>(qaDialogCommand);
@ -779,7 +779,6 @@ namespace IRaCIS.Core.Application.Image.QA
//}).ToListAsync();
var succeess2 = await _repository.BatchDeleteAsync<DicomInstance>(t => t.StudyId == id);
var success3 = await _dicomSeriesrepository.BatchDeleteNoTrackingAsync(t => t.StudyId == id);
//var success3 = await _dicomSeriesrepository.DeleteFromQueryAsync(t => t.StudyId == id, true);
@ -787,19 +786,52 @@ namespace IRaCIS.Core.Application.Image.QA
//删除 物理文件
var instancePathList = await _repository.Where<DicomInstance>(t => t.StudyId == id)
.Select(t => t.Path).ToListAsync();
//var instancePathList = await _repository.Where<DicomInstance>(t => t.StudyId == id)
// .Select(t => t.Path).ToListAsync();
instancePathList.ForEach(path =>
var instancePath= await _repository.Where<DicomInstance>(t => t.StudyId == id).Select(t => t.Path).FirstOrDefaultAsync();
//instancePathList.ForEach(path =>
//{
// var physicalPath = FileStoreHelper.GetPhysicalFilePath(_hostEnvironment, path);
// Console.WriteLine(physicalPath);
// if (System.IO.File.Exists(physicalPath))
// {
// Console.WriteLine("存在:" + physicalPath);
// File.Delete(physicalPath);
// }
// else
// {
// Console.WriteLine("不存在:" + physicalPath);
// }
//});
var parentDirectory = Directory.GetParent(FileStoreHelper.GetPhysicalFilePath(_hostEnvironment, instancePath ?? string.Empty))?.FullName;
if (parentDirectory != null)
{
Console.WriteLine("删除目录: " + parentDirectory);
var physicalPath = FileStoreHelper.GetPhysicalFilePath(_hostEnvironment, path);
if (System.IO.File.Exists(physicalPath))
// 递归删除目录
if (Directory.Exists(parentDirectory))
{
File.Delete(physicalPath);
Directory.Delete(parentDirectory, recursive: true);
Console.WriteLine("目录已删除。");
}
});
}
else
{
Console.WriteLine("无法找到父目录。");
}
var succeess2 = await _repository.BatchDeleteAsync<DicomInstance>(t => t.StudyId == id);
//var instanceIdList = await _repository.Where<DicomInstance>(t => t.StudyId == id)
// .Select(t => new { InstanceId = t.Id, t.SeriesId, t.StudyId, t.SubjectId, t.SiteId }).ToListAsync();
@ -1064,7 +1096,7 @@ namespace IRaCIS.Core.Application.Image.QA
{
if (nameList.Count() > 0)
{
{
return ResponseOutput.NotOk($"当前检查批次要求进行疾病进展确认。请在提交当前检查批次前,先处理未提交的前序检查批次:{string.Join('、', nameList)}。", 1, ApiResponseCodeEnum.NeedTips);
}
}
@ -1076,15 +1108,15 @@ namespace IRaCIS.Core.Application.Image.QA
var thisname = dbSubjectVisitList.Select(x => x.VisitName).ToList();
return ResponseOutput.NotOk($"After submitting images of the current study batch({string.Join('、', thisname)}), please submit unsubmitted images of antecedent study batches({string.Join('、', nameList)}) as soon as possible.", 0, ApiResponseCodeEnum.NeedTips);
//return ResponseOutput.NotOk($"After submitting the curent batch, please submit unsubmitted earlier batches as soon as possible: {string.Join('、', nameList)}.", 0, ApiResponseCodeEnum.NeedTips);
//return ResponseOutput.NotOk($"After submitting the curent batch, please submit unsubmitted earlier batches as soon as possible: {string.Join('、', nameList)}.", 0, ApiResponseCodeEnum.NeedTips);
}
}
}
//同时要根据项目有没有配置Subject 级别临床数据
if (dbSubjectVisitList.Any(t => t.IsBaseLine && !t.IsHaveClinicalData) && await _repository.AnyAsync<ClinicalDataTrialSet>(t=>t.TrialId== cRCRequestToQCCommand.TrialId && t.ClinicalDataLevel==ClinicalLevel.Subject))
if (dbSubjectVisitList.Any(t => t.IsBaseLine && !t.IsHaveClinicalData) && await _repository.AnyAsync<ClinicalDataTrialSet>(t => t.TrialId == cRCRequestToQCCommand.TrialId && t.ClinicalDataLevel == ClinicalLevel.Subject))
{
return ResponseOutput.NotOk($"基线没有临床数据,确认提交?", 0, ApiResponseCodeEnum.NeedTips);
}
@ -1187,7 +1219,7 @@ namespace IRaCIS.Core.Application.Image.QA
// IC 上传的基线数据签名
await _readingClinicalDataRepository.UpdatePartialFromQueryAsync(x => x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ReadingId == dbSubjectVisit.Id && x.IsSign==false, x => new ReadingClinicalData()
await _readingClinicalDataRepository.UpdatePartialFromQueryAsync(x => x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ReadingId == dbSubjectVisit.Id && x.IsSign == false, x => new ReadingClinicalData()
{
IsSign = true,
ReadingClinicalDataState = ReadingClinicalDataStatus.HaveSigned
@ -1237,14 +1269,14 @@ namespace IRaCIS.Core.Application.Image.QA
await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => trialInOrderCriterionIdList.Contains(x.TrialReadingCriterionId)&& x.SubjectId == dbSubjectVisit.SubjectId&&
dbSubjectVisit.VisitNum<= x.VisitTaskNum && x.VisitTaskNum < Math.Ceiling(dbSubjectVisit.VisitNum+0.01m) // 当前的检查批次 全局 裁判 及之前 全都加急
await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => trialInOrderCriterionIdList.Contains(x.TrialReadingCriterionId) && x.SubjectId == dbSubjectVisit.SubjectId &&
dbSubjectVisit.VisitNum <= x.VisitTaskNum && x.VisitTaskNum < Math.Ceiling(dbSubjectVisit.VisitNum + 0.01m) // 当前的检查批次 全局 裁判 及之前 全都加急
&& x.ReadingTaskState != ReadingTaskState.HaveSigned && x.TaskState == TaskState.Effect, x => new VisitTask()
{
IsUrgent = true,
TaskUrgentType = TaskUrgentType.PDProgress,
IsCanEditUrgentState=false,
IsCanEditUrgentState = false,
});
await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => trialInOrderCriterionIdList.Contains(x.TrialReadingCriterionId) && x.SubjectId == dbSubjectVisit.SubjectId
@ -1254,7 +1286,7 @@ namespace IRaCIS.Core.Application.Image.QA
IsUrgent = true,
TaskUrgentType = TaskUrgentType.Other,
TaskUrgentRemake= "后续检查批次设为pd",
TaskUrgentRemake = "后续检查批次设为pd",
IsCanEditUrgentState = false,
});
}
@ -1266,7 +1298,7 @@ namespace IRaCIS.Core.Application.Image.QA
});
await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => trialInOrderCriterionIdList.Contains(x.TrialReadingCriterionId) &&
x.VisitTaskNum>= dbSubjectVisit.VisitNum && x.VisitTaskNum < Math.Ceiling(dbSubjectVisit.VisitNum + 0.01m) // 当前的检查批次 全局 裁判 全都加急
x.VisitTaskNum >= dbSubjectVisit.VisitNum && x.VisitTaskNum < Math.Ceiling(dbSubjectVisit.VisitNum + 0.01m) // 当前的检查批次 全局 裁判 全都加急
&& x.ReadingTaskState != ReadingTaskState.HaveSigned && x.TaskState == TaskState.Effect, x => new VisitTask()
{
@ -1348,7 +1380,7 @@ namespace IRaCIS.Core.Application.Image.QA
}
//非基线设置为PD的话 或者设置为末次检查批次 根据配置自动生成阅片期
if (!dbSubjectVisit.IsBaseLine && (dbSubjectVisit.PDState == PDStateEnum.PDProgress || dbSubjectVisit.IsFinalVisit) )
if (!dbSubjectVisit.IsBaseLine && (dbSubjectVisit.PDState == PDStateEnum.PDProgress || dbSubjectVisit.IsFinalVisit))
{
//该标准需要添加阅片期
@ -1594,7 +1626,7 @@ namespace IRaCIS.Core.Application.Image.QA
}
await _qcChallengeRepository.UpdatePartialFromQueryAsync(t => t.IsClosed == false&& t.SubjectVisitId==dbSubjectVisit.Id, u => new QCChallenge() { IsClosed = true, ClosedTime=DateTime.Now, CloseResonEnum = QCChallengeCloseEnum.Unresolvable });
await _qcChallengeRepository.UpdatePartialFromQueryAsync(t => t.IsClosed == false && t.SubjectVisitId == dbSubjectVisit.Id, u => new QCChallenge() { IsClosed = true, ClosedTime = DateTime.Now, CloseResonEnum = QCChallengeCloseEnum.Unresolvable });
}
@ -1623,7 +1655,7 @@ namespace IRaCIS.Core.Application.Image.QA
/// <returns></returns>
[HttpPut("{trialId:guid}/{subjectVisitId:guid}/{setOrCancel:bool}")]
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
// [Authorize(Policy = IRaCISPolicy.IQC)]
// [Authorize(Policy = IRaCISPolicy.IQC)]
public async Task<IResponseOutput> SetVisitUrgent(Guid trialId, Guid subjectVisitId, bool setOrCancel)
{
var sv = (await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == subjectVisitId)).IfNullThrowException();
@ -1909,6 +1941,6 @@ namespace IRaCIS.Core.Application.Image.QA
}
}