修改提示
parent
e395e105cb
commit
0ca89786fd
|
@ -32,6 +32,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
|
|
||||||
private readonly DicomFileStoreHelper _dicomFileStoreHelper;
|
private readonly DicomFileStoreHelper _dicomFileStoreHelper;
|
||||||
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
|
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
|
||||||
|
private readonly IRepository<QCChallenge> _qcChallengeRepository;
|
||||||
private readonly IRepository<DicomStudy> _dicomStudyRepository;
|
private readonly IRepository<DicomStudy> _dicomStudyRepository;
|
||||||
private readonly IRepository<Dictionary> _dictionaryrepository;
|
private readonly IRepository<Dictionary> _dictionaryrepository;
|
||||||
private readonly IRepository<Trial> _trialRepository;
|
private readonly IRepository<Trial> _trialRepository;
|
||||||
|
@ -43,6 +44,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
private readonly AsyncLock _mutex = new AsyncLock();
|
private readonly AsyncLock _mutex = new AsyncLock();
|
||||||
|
|
||||||
public QCOperationService(DicomFileStoreHelper dicomFileStoreHelper, IRepository<SubjectVisit> subjectVisitRepository,
|
public QCOperationService(DicomFileStoreHelper dicomFileStoreHelper, IRepository<SubjectVisit> subjectVisitRepository,
|
||||||
|
IRepository<QCChallenge> qcChallengeRepository,
|
||||||
IRepository<Trial> trialRepository,
|
IRepository<Trial> trialRepository,
|
||||||
IMediator mediator,
|
IMediator mediator,
|
||||||
IInspectionService inspectionService,
|
IInspectionService inspectionService,
|
||||||
|
@ -53,6 +55,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
{
|
{
|
||||||
_dicomFileStoreHelper = dicomFileStoreHelper;
|
_dicomFileStoreHelper = dicomFileStoreHelper;
|
||||||
_subjectVisitRepository = subjectVisitRepository;
|
_subjectVisitRepository = subjectVisitRepository;
|
||||||
|
_qcChallengeRepository = qcChallengeRepository;
|
||||||
_dicomStudyRepository = dicomStudyRepository;
|
_dicomStudyRepository = dicomStudyRepository;
|
||||||
this._dictionaryrepository = dictionaryrepository;
|
this._dictionaryrepository = dictionaryrepository;
|
||||||
_mediator = mediator;
|
_mediator = mediator;
|
||||||
|
@ -69,7 +72,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
{
|
{
|
||||||
if (!await _repository.AnyAsync<TrialQCQuestionAnswer>(t => t.SubjectVisitId == subjectVisitId && t.CurrentQCEnum == currentQCType))
|
if (!await _repository.AnyAsync<TrialQCQuestionAnswer>(t => t.SubjectVisitId == subjectVisitId && t.CurrentQCEnum == currentQCType))
|
||||||
{
|
{
|
||||||
return ResponseOutput.NotOk("必须填写审核问题,并保存,否则不允许添加质疑");
|
return ResponseOutput.NotOk("请先核查图像,保存审核问题后,再发质疑。");
|
||||||
}
|
}
|
||||||
return ResponseOutput.Ok();
|
return ResponseOutput.Ok();
|
||||||
|
|
||||||
|
@ -91,23 +94,21 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
|
|
||||||
if (qaQuestionCommand.Id == null)
|
if (qaQuestionCommand.Id == null)
|
||||||
{
|
{
|
||||||
if (await _repository.AnyAsync<QCChallenge>(t => t.IsClosed == false && t.SubjectVisitId == qaQuestionCommand.SubjectVisitId && t.ReuploadEnum == QCChanllengeReuploadEnum.QCAgreeUpload))
|
if (await _qcChallengeRepository.AnyAsync(t => t.IsClosed == false && t.SubjectVisitId == qaQuestionCommand.SubjectVisitId && t.ReuploadEnum == QCChanllengeReuploadEnum.QCAgreeUpload))
|
||||||
{
|
{
|
||||||
throw new BusinessValidationFailedException("当前访视有未关闭的 同意CRC上传的质疑,不允许再次添加质疑");
|
throw new BusinessValidationFailedException("当前访视有未关闭的 同意CRC上传的质疑,不允许再次添加质疑");
|
||||||
|
|
||||||
}
|
}
|
||||||
var trialConfig = _repository.Where<Trial>(t => t.Id == trialId).Select(t => new { TrialId = t.Id, t.QCProcessEnum, t.IsImageConsistencyVerification }).FirstOrDefault();
|
|
||||||
|
var trialConfig = (await _trialRepository.Where(t => t.Id == trialId).Select(t => new { TrialId = t.Id, t.QCProcessEnum, t.IsImageConsistencyVerification }).FirstOrDefaultAsync()).IfNullThrowException();
|
||||||
|
|
||||||
|
|
||||||
//获取编号
|
|
||||||
var code = _repository.Where<QCChallenge>(t => t.TrialId == trialId).Select(t => t.ChallengeCode).DefaultIfEmpty().Max();
|
|
||||||
if (trialConfig == null)
|
|
||||||
{
|
|
||||||
throw new BusinessValidationFailedException("项目不存在");
|
|
||||||
}
|
|
||||||
|
|
||||||
using (await _mutex.LockAsync())
|
using (await _mutex.LockAsync())
|
||||||
{
|
{
|
||||||
|
//获取编号
|
||||||
|
var code = _qcChallengeRepository.Where(t => t.TrialId == trialId).Select(t => t.ChallengeCode).DefaultIfEmpty().Max();
|
||||||
|
|
||||||
var qcChallenge = _mapper.Map<QCChallenge>(qaQuestionCommand);
|
var qcChallenge = _mapper.Map<QCChallenge>(qaQuestionCommand);
|
||||||
|
|
||||||
qcChallenge.QCProcessEnum = trialConfig.QCProcessEnum;
|
qcChallenge.QCProcessEnum = trialConfig.QCProcessEnum;
|
||||||
|
@ -117,7 +118,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
qcChallenge.ChallengeCode = code + 1;
|
qcChallenge.ChallengeCode = code + 1;
|
||||||
qcChallenge.UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt;
|
qcChallenge.UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt;
|
||||||
|
|
||||||
qcChallenge = await _repository.AddAsync(qcChallenge, true);
|
qcChallenge = await _qcChallengeRepository.AddAsync(qcChallenge, true);
|
||||||
|
|
||||||
return qcChallenge;
|
return qcChallenge;
|
||||||
}
|
}
|
||||||
|
@ -144,19 +145,22 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost("{trialId:guid}/{qcChallengeId:guid}/{subjectVisitId:guid}/{closeEnum}/{closeReason}")]
|
[HttpPost("{trialId:guid}/{qcChallengeId:guid}/{subjectVisitId:guid}/{closeEnum}/{closeReason}")]
|
||||||
[TypeFilter(typeof(TrialResourceFilter))]
|
[TypeFilter(typeof(TrialResourceFilter))]
|
||||||
|
[UnitOfWork]
|
||||||
//[Authorize(Policy = "ImageQCPolicy")]
|
//[Authorize(Policy = "ImageQCPolicy")]
|
||||||
public async Task<IResponseOutput> CloseQCChallenge(Guid qcChallengeId, Guid subjectVisitId, [FromRoute] QCChallengeCloseEnum closeEnum, [FromRoute] string closeReason)
|
public async Task<IResponseOutput> CloseQCChallenge(Guid qcChallengeId, Guid subjectVisitId, [FromRoute] QCChallengeCloseEnum closeEnum, [FromRoute] string closeReason)
|
||||||
{
|
{
|
||||||
|
|
||||||
var dbQCChallenge = await _repository.FirstOrDefaultAsync<QCChallenge>(t => t.Id == qcChallengeId);
|
var dbQCChallenge = (await _qcChallengeRepository.FirstOrDefaultAsync(t => t.Id == qcChallengeId)).IfNullThrowException();
|
||||||
|
|
||||||
if (dbQCChallenge == null) return Null404NotFound(dbQCChallenge);
|
|
||||||
|
|
||||||
if (dbQCChallenge.ReuploadEnum == QCChanllengeReuploadEnum.CRCRequestReupload || dbQCChallenge.ReuploadEnum == QCChanllengeReuploadEnum.QCAgreeUpload)
|
if (dbQCChallenge.ReuploadEnum == QCChanllengeReuploadEnum.CRCRequestReupload || dbQCChallenge.ReuploadEnum == QCChanllengeReuploadEnum.QCAgreeUpload)
|
||||||
{
|
{
|
||||||
return ResponseOutput.NotOk("CRC申请重传的/QC同意重传的质疑,在CRC设置重传完成前不允许关闭质疑");
|
throw new BusinessValidationFailedException("CRC申请重传的/QC同意重传的质疑,在CRC设置重传完成前不允许关闭质疑");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#region 之前
|
||||||
|
|
||||||
dbQCChallenge.CloseResonEnum = closeEnum;
|
dbQCChallenge.CloseResonEnum = closeEnum;
|
||||||
|
|
||||||
dbQCChallenge.IsClosed = true;
|
dbQCChallenge.IsClosed = true;
|
||||||
|
@ -172,10 +176,36 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
TalkContent = "关闭原因: " + closeReason
|
TalkContent = "关闭原因: " + closeReason
|
||||||
});
|
});
|
||||||
|
|
||||||
var success = await _repository.SaveChangesAsync();
|
var success = await _qcChallengeRepository.SaveChangesAsync();
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
return ResponseOutput.Result(success);
|
return ResponseOutput.Result(success);
|
||||||
|
|
||||||
|
#region 对话实体不会加入
|
||||||
|
|
||||||
|
//dbQCChallenge.DialogList.Add(new QCChallengeDialog()
|
||||||
|
//{
|
||||||
|
// SubjectVisitId = dbQCChallenge.SubjectVisitId,
|
||||||
|
// UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt,
|
||||||
|
// QCChallengeId = dbQCChallenge.Id,
|
||||||
|
// TalkContent = "关闭原因: " + closeReason
|
||||||
|
//});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//var success = await _qcChallengeRepository.PartialUpdateAsync(dbQCChallenge, u => new QCChallenge()
|
||||||
|
//{
|
||||||
|
// CloseResonEnum = closeEnum,
|
||||||
|
|
||||||
|
// IsClosed = true,
|
||||||
|
|
||||||
|
// ClosedTime = DateTime.Now,
|
||||||
|
|
||||||
|
//}, true);
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -198,11 +228,11 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
ResponseOutput.NotOk("this QC Challenge Has been replied ");
|
ResponseOutput.NotOk("this QC Challenge Has been replied ");
|
||||||
}
|
}
|
||||||
|
|
||||||
var qaRecord = await _repository.FirstOrDefaultAsync<QCChallenge>(t => t.Id == qcChallengeId);
|
var qaRecord = await _qcChallengeRepository.FirstOrDefaultAsync(t => t.Id == qcChallengeId);
|
||||||
|
|
||||||
if (qaRecord == null) return Null404NotFound(qaRecord);
|
if (qaRecord == null) return Null404NotFound(qaRecord);
|
||||||
|
|
||||||
await _repository.DeleteAsync(qaRecord);
|
await _qcChallengeRepository.DeleteAsync(qaRecord);
|
||||||
|
|
||||||
|
|
||||||
var success1 = await _repository.SaveChangesAsync();
|
var success1 = await _repository.SaveChangesAsync();
|
||||||
|
|
|
@ -312,15 +312,8 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
_dbSet.Remove(entity);
|
_dbSet.Remove(entity);
|
||||||
|
|
||||||
|
|
||||||
|
return await SaveChangesAsync(autoSave);
|
||||||
|
|
||||||
if (autoSave)
|
|
||||||
{
|
|
||||||
return await SaveChangesAsync(cancellationToken);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue