diff --git a/IRaCIS.Core.Application/Service/QC/TrialQCQuestionService.cs b/IRaCIS.Core.Application/Service/QC/TrialQCQuestionService.cs index 4bc56471c..360577f5b 100644 --- a/IRaCIS.Core.Application/Service/QC/TrialQCQuestionService.cs +++ b/IRaCIS.Core.Application/Service/QC/TrialQCQuestionService.cs @@ -158,7 +158,6 @@ namespace IRaCIS.Core.Application.Contracts return ResponseOutput.NotOk("请先清除子问题 再删除父问题"); } - if (await _repository.AnyAsync(t => t.TrialQCQuestionConfigureId == trialQCQuestionConfigureId)) { return ResponseOutput.NotOk("已有QC审核记录,不允许删除该问题项"); diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs index 60a77d0c1..6ffd03189 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs @@ -51,6 +51,16 @@ namespace IRaCIS.Core.Application } + //验证 仅仅在 Initializing/Ongoing 才可以操作 + private async Task VerifyOnlyInOngoingOrInitialIzingOptAsync(Guid trialId) + { + if (!await _trialRepository.AnyAsync(t => t.Id == signConfirmDTO.TrialId && (t.TrialStatusStr == StaticData.TrialInitializing || t.TrialStatusStr == StaticData.TrialOngoing))) + { + throw new BusinessValidationFailedException("项目不在Initializing/Ongoing,不允许确认配置"); + } + } + + @@ -60,11 +70,9 @@ namespace IRaCIS.Core.Application /// public async Task TrialConfigSignatureConfirm(SignConfirmDTO signConfirmDTO) { + await VerifyOnlyInOngoingOrInitialIzingOptAsync(signConfirmDTO.TrialId); + - if (!await _trialRepository.AnyAsync(t => t.Id == signConfirmDTO.TrialId && (t.TrialStatusStr == StaticData.TrialInitializing|| t.TrialStatusStr == StaticData.TrialOngoing))) - { - throw new BusinessValidationFailedException("项目不在Initializing/Ongoing,不允许确认配置"); - } if (signConfirmDTO.SignCode == ((int)SignEnum.TrialLogicConfim).ToString()) { @@ -87,9 +95,9 @@ namespace IRaCIS.Core.Application .FirstOrDefaultAsync(t => t.TrialId == signConfirmDTO.TrialId)) .IfNullThrowException(); - - var showOrderList = await _repository.Where(t => t.TrialId == signConfirmDTO.TrialId).Select(t => - new { t.ShowOrder , ParentShowOrder=(int?) t.ParentQCQuestion.ShowOrder} ).ToListAsync(); + + var showOrderList = await _repository.Where(t => t.TrialId == signConfirmDTO.TrialId).Select(t => + new { t.ShowOrder, ParentShowOrder = (int?)t.ParentQCQuestion.ShowOrder }).ToListAsync(); if (trialConfig.QCProcessEnum == TrialQCProcess.DoubleAudit || trialConfig.QCProcessEnum == TrialQCProcess.SingleAudit) @@ -100,17 +108,17 @@ namespace IRaCIS.Core.Application } } - if (showOrderList.Count() != showOrderList.Select(t=>t.ShowOrder).Distinct().Count()) + if (showOrderList.Count() != showOrderList.Select(t => t.ShowOrder).Distinct().Count()) { throw new BusinessValidationFailedException("QC问题显示序号不允许重复"); } - if (showOrderList.Where(t=>t.ParentShowOrder != null).Any(t => t.ParentShowOrder > t.ShowOrder)) + if (showOrderList.Where(t => t.ParentShowOrder != null).Any(t => t.ParentShowOrder > t.ShowOrder)) { throw new BusinessValidationFailedException("父问题的序号要比子问题序号小,请确认"); } - if( await _trialRepository.AnyAsync(t =>t.Id== signConfirmDTO.TrialId && t.QCQuestionConfirmedUserId != null && t.QCQuestionConfirmedUserId!= _userInfo.Id)) + if (await _trialRepository.AnyAsync(t => t.Id == signConfirmDTO.TrialId && t.QCQuestionConfirmedUserId != null && t.QCQuestionConfirmedUserId != _userInfo.Id)) { throw new BusinessValidationFailedException("QC审核问题已被其他QC确认,不允许再次确认"); } @@ -123,7 +131,7 @@ namespace IRaCIS.Core.Application await _trialRepository.SaveChangesAsync(); } - + return ResponseOutput.Ok(); } @@ -138,15 +146,11 @@ namespace IRaCIS.Core.Application [HttpPut] public async Task ConfigTrialBasicInfo(BasicTrialConfig trialConfig) { - if (!await _trialRepository.Where(t => t.Id == trialConfig.TrialId).IgnoreQueryFilters().AnyAsync(t => t.TrialStatusStr == StaticData.TrialOngoing || t.TrialStatusStr == StaticData.TrialInitializing)) - { - return ResponseOutput.NotOk(" only in Initializing or Ongoing State can operate "); - } + await VerifyOnlyInOngoingOrInitialIzingOptAsync(signConfirmDTO.TrialId); + + var trialInfo = (await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialConfig.TrialId)).IfNullThrowException(); - var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialConfig.TrialId); - if (trialInfo == null) return Null404NotFound(trialInfo); - _mapper.Map(trialConfig, trialInfo); trialInfo.UpdateTime = DateTime.Now; @@ -159,7 +163,7 @@ namespace IRaCIS.Core.Application var canOPt = await _trialRepository.AnyAsync(trial => trial.Id == trialId && trial.IsTrialBasicLogicConfirmed && trial.IsTrialProcessConfirmed && trial.IsTrialUrgentConfirmed && trial.VisitPlanConfirmed); - return ResponseOutput.Ok(canOPt, msg: canOPt?"": "项目 基础配置、流程配置、加急配置 、访视计划,有未确认项"); + return ResponseOutput.Ok(canOPt, msg: canOPt ? "" : "项目 基础配置、流程配置、加急配置 、访视计划,有未确认项"); } /// @@ -171,7 +175,7 @@ namespace IRaCIS.Core.Application /// [HttpPut("{trialId:guid}/{trialStatusStr}/{reason?}")] [UnitOfWork] - public async Task UpdateTrialState(Guid trialId, string trialStatusStr, string? reason) + public async Task UpdateTrialState(Guid trialId, string trialStatusStr, string? reason) { var trial = (await _trialRepository.Where(t => t.Id == trialId, true).IgnoreQueryFilters().FirstOrDefaultAsync()).IfNullThrowException(); @@ -187,7 +191,7 @@ namespace IRaCIS.Core.Application return ResponseOutput.NotOk("项目 基础配置、流程配置、加急配置 、访视计划,有未确认项"); } } - + if (trialStatusStr != "Ongoing") { trial.TrialFinishTime = DateTime.Now; @@ -243,13 +247,14 @@ namespace IRaCIS.Core.Application [HttpPut("{trialId:guid}/{isAbandon:bool}")] public async Task AbandonTrial(Guid trialId, /*Guid? signId,*/ bool isAbandon) { - - await _trialRepository.UpdatePartialFromQueryAsync(trialId, u => new Trial() { - IsDeleted = isAbandon, - TrialFinishTime= isAbandon?DateTime.Now:null - },true); - + await _trialRepository.UpdatePartialFromQueryAsync(trialId, u => new Trial() + { + IsDeleted = isAbandon, + TrialFinishTime = isAbandon ? DateTime.Now : null + }, true); + + return ResponseOutput.Ok(); } @@ -269,7 +274,7 @@ namespace IRaCIS.Core.Application } - + /// /// 配置流程 @@ -279,7 +284,7 @@ namespace IRaCIS.Core.Application [HttpPut] public async Task ConfigTrialProcessInfo(TrialProcessConfig trialConfig) { - if (!await _trialRepository.Where(t => t.Id == trialConfig.TrialId).IgnoreQueryFilters().AnyAsync(t => t.TrialStatusStr == StaticData.TrialInitializing)) + if (!await _trialRepository.Where(t => t.Id == trialConfig.TrialId).IgnoreQueryFilters().AnyAsync(t => t.TrialStatusStr == StaticData.TrialInitializing)) { return ResponseOutput.NotOk(" only in Initializing State can operate "); } @@ -304,18 +309,13 @@ namespace IRaCIS.Core.Application public async Task ConfigTrialUrgentInfo(TrialUrgentConfig trialConfig) { - if (!await _repository.Where(t => t.Id == trialConfig.TrialId).IgnoreQueryFilters().AnyAsync(t => t.TrialStatusStr == StaticData.TrialOngoing || t.TrialStatusStr == StaticData.TrialInitializing)) - { - return ResponseOutput.NotOk(" only in Initializing or Ongoing State can operate "); - } + await VerifyOnlyInOngoingOrInitialIzingOptAsync(trialConfig.TrialId); + var trialInfo = (await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialConfig.TrialId)).IfNullThrowException(); - var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialConfig.TrialId); - if (trialInfo == null) return Null404NotFound(trialInfo); - - //项目紧急 当前所有已提交,但未完成的访视,设置为加急。后续提交的访视也设置为加急 , + //项目紧急 当前所有已提交,但未完成的访视,设置为加急。后续提交的访视也设置为加急 (在提交的时候,回去判断 项目加急,Subject加急,是否入组确认,是否Pd,从而设置访视是否加急) if (trialConfig.IsUrgent) { diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialExternalUserService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialExternalUserService.cs index b344ec5f2..e53d3474b 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialExternalUserService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialExternalUserService.cs @@ -268,7 +268,7 @@ namespace IRaCIS.Core.Application.Service var trialId = sendEmail.TrialId; var userId = sysUserInfo.Id; - //判断TrialUser中是否存在 不存在就插入 + //判断TrialUser中是否存在 不存在就插入 注意退出了,也不能再加进来 if (!await _trialUserRepository.AnyAsync(t => t.TrialId == trialId && t.UserId == userId,true)) {