Merge branch 'master' of http://192.168.1.2:8033/IRaCIS_Core_Api
						commit
						0e6055881a
					
				| 
						 | 
				
			
			@ -33,6 +33,7 @@ public static class SendEmailHelper
 | 
			
		|||
 | 
			
		||||
                await smtp.AuthenticateAsync(_systemEmailConfig.FromEmail, _systemEmailConfig.AuthorizationCode);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                await smtp.SendAsync(messageToSend);
 | 
			
		||||
 | 
			
		||||
                await smtp.DisconnectAsync(true);
 | 
			
		||||
| 
						 | 
				
			
			@ -42,13 +43,28 @@ public static class SendEmailHelper
 | 
			
		|||
        catch (Exception ex)
 | 
			
		||||
        {
 | 
			
		||||
 | 
			
		||||
                //---邮件发送失败,您进行的操作未能成功,请检查邮箱或联系维护人员
 | 
			
		||||
            //---邮件发送失败,您进行的操作未能成功,请检查邮箱或联系维护人员
 | 
			
		||||
            throw new Exception(StaticData.International("SendEmail_SendFail"));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static async Task<bool> TestEmailConfigAsync(SystemEmailSendConfig _systemEmailConfig)
 | 
			
		||||
    {
 | 
			
		||||
        using (var client = new MailKit.Net.Smtp.SmtpClient())
 | 
			
		||||
        {
 | 
			
		||||
 | 
			
		||||
            await client.ConnectAsync(_systemEmailConfig.Host, _systemEmailConfig.Port, SecureSocketOptions.SslOnConnect);
 | 
			
		||||
 | 
			
		||||
            await client.AuthenticateAsync(_systemEmailConfig.FromEmail, _systemEmailConfig.AuthorizationCode);
 | 
			
		||||
 | 
			
		||||
            await client.DisconnectAsync(true);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static async Task SendEmailAsync(SMTPEmailConfig sMTPEmailConfig, EventHandler<MessageSentEventArgs>? messageSentSuccess = null)
 | 
			
		||||
    {
 | 
			
		||||
        var messageToSend = new MimeMessage();
 | 
			
		||||
| 
						 | 
				
			
			@ -63,7 +79,7 @@ public static class SendEmailHelper
 | 
			
		|||
 | 
			
		||||
        if (sMTPEmailConfig.ToMailAddressList.Count == 0)
 | 
			
		||||
        {
 | 
			
		||||
                //---没有收件人
 | 
			
		||||
            //---没有收件人
 | 
			
		||||
            throw new ArgumentException(StaticData.International("SendEmail_NoRecipient"));
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1384,8 +1384,6 @@ namespace IRaCIS.Core.Application.Service
 | 
			
		|||
 | 
			
		||||
                return ResponseOutput.Ok(entity.Id.ToString());
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
| 
						 | 
				
			
			@ -1424,9 +1422,6 @@ namespace IRaCIS.Core.Application.Service
 | 
			
		|||
 | 
			
		||||
        private async Task TestEmailConfigAsync(TrialEmailNoticeConfigAddOrEdit config)
 | 
			
		||||
        {
 | 
			
		||||
            var toUserList = await _repository.Where<TrialUser>(t => t.TrialId == config.TrialId)
 | 
			
		||||
                .WhereIf(config.ToUserTypeList != null, t => config.ToUserTypeList.Contains(t.User.UserTypeEnum))
 | 
			
		||||
                .Select(t => new { t.User.EMail, t.User.FullName }).ToListAsync();
 | 
			
		||||
           
 | 
			
		||||
 | 
			
		||||
            if (!config.FromEmail.Contains("@") || string.IsNullOrEmpty(config.FromEmail))
 | 
			
		||||
| 
						 | 
				
			
			@ -1435,52 +1430,16 @@ namespace IRaCIS.Core.Application.Service
 | 
			
		|||
                throw new BusinessValidationFailedException(_localizer["TrialEmailN_InvalidEmailConfig"]);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            if (toUserList.Count() == 0 || toUserList.Where(t => t.EMail.Contains("@")).Count() == 0)
 | 
			
		||||
            {
 | 
			
		||||
                //---项目没有有效的收件人,无法发送邮件
 | 
			
		||||
                throw new BusinessValidationFailedException(_localizer["TrialEmailN_InvalidRecipient"]);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var sendEmailConfig = new SMTPEmailConfig();
 | 
			
		||||
 | 
			
		||||
            sendEmailConfig.FromEmailAddress = new MimeKit.MailboxAddress(config.FromName, config.FromEmail);
 | 
			
		||||
            sendEmailConfig.AuthorizationCode = config.AuthorizationCode;
 | 
			
		||||
            sendEmailConfig.UserName = config.FromEmail;
 | 
			
		||||
 | 
			
		||||
            sendEmailConfig.Host = config.SMTPServerAddress;
 | 
			
		||||
            sendEmailConfig.Port = config.SMTPServerPort;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            sendEmailConfig.ToMailAddressList.Add(new MimeKit.MailboxAddress(config.FromName, config.FromEmail));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            var pathToFile = _hostEnvironment.WebRootPath
 | 
			
		||||
                      + Path.DirectorySeparatorChar.ToString()
 | 
			
		||||
                      + "EmailTemplate"
 | 
			
		||||
                      + Path.DirectorySeparatorChar.ToString()
 | 
			
		||||
                     //+ "EmailConfigTest.html";
 | 
			
		||||
 | 
			
		||||
                     + (_userInfo.IsEn_Us ? "EmailConfigTest_US.html" : "EmailConfigTest.html");
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                //---项目邮件测试
 | 
			
		||||
            sendEmailConfig.TopicDescription = _localizer["TrialEmailN_EmailTestMessage"];
 | 
			
		||||
 | 
			
		||||
            using (StreamReader SourceReader = System.IO.File.OpenText(pathToFile))
 | 
			
		||||
            {
 | 
			
		||||
                var templateInfo = SourceReader.ReadToEnd();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                sendEmailConfig.HtmlBodyStr = string.Format(templateInfo,
 | 
			
		||||
                //--- 收到此邮件,代表邮件配置正确
 | 
			
		||||
                    _localizer["TrialEmailN_ConfigurationCorrect"]
 | 
			
		||||
                    );
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                await SendEmailHelper.SendEmailAsync(sendEmailConfig);
 | 
			
		||||
                await SendEmailHelper.TestEmailConfigAsync(new SystemEmailSendConfig()
 | 
			
		||||
                {
 | 
			
		||||
                    AuthorizationCode = config.AuthorizationCode,
 | 
			
		||||
                    FromEmail = config.FromEmail,
 | 
			
		||||
                    FromName = config.FromName,
 | 
			
		||||
                    Host = config.SMTPServerAddress,
 | 
			
		||||
                    Port = config.SMTPServerPort
 | 
			
		||||
                });
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception ex)
 | 
			
		||||
| 
						 | 
				
			
			@ -1491,6 +1450,72 @@ namespace IRaCIS.Core.Application.Service
 | 
			
		|||
            }
 | 
			
		||||
 | 
			
		||||
          
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            #region 人员还未加入,可以先配置邮件  历史废弃
 | 
			
		||||
 | 
			
		||||
            //var toUserList = await _repository.Where<TrialUser>(t => t.TrialId == config.TrialId)
 | 
			
		||||
            //   .WhereIf(config.ToUserTypeList != null, t => config.ToUserTypeList.Contains(t.User.UserTypeEnum))
 | 
			
		||||
            //   .Select(t => new { t.User.EMail, t.User.FullName }).ToListAsync();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            //if (toUserList.Count() == 0 || toUserList.Where(t => t.EMail.Contains("@")).Count() == 0)
 | 
			
		||||
            //{
 | 
			
		||||
            //    //---项目没有有效的收件人,无法发送邮件
 | 
			
		||||
            //    throw new BusinessValidationFailedException(_localizer["TrialEmailN_InvalidRecipient"]);
 | 
			
		||||
            //}
 | 
			
		||||
 | 
			
		||||
            //var sendEmailConfig = new SMTPEmailConfig();
 | 
			
		||||
 | 
			
		||||
            //sendEmailConfig.FromEmailAddress = new MimeKit.MailboxAddress(config.FromName, config.FromEmail);
 | 
			
		||||
            //sendEmailConfig.AuthorizationCode = config.AuthorizationCode;
 | 
			
		||||
            //sendEmailConfig.UserName = config.FromEmail;
 | 
			
		||||
 | 
			
		||||
            //sendEmailConfig.Host = config.SMTPServerAddress;
 | 
			
		||||
            //sendEmailConfig.Port = config.SMTPServerPort;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            //sendEmailConfig.ToMailAddressList.Add(new MimeKit.MailboxAddress(config.FromName, config.FromEmail));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            //var pathToFile = _hostEnvironment.WebRootPath
 | 
			
		||||
            //          + Path.DirectorySeparatorChar.ToString()
 | 
			
		||||
            //          + "EmailTemplate"
 | 
			
		||||
            //          + Path.DirectorySeparatorChar.ToString()
 | 
			
		||||
            //         //+ "EmailConfigTest.html";
 | 
			
		||||
 | 
			
		||||
            //         + (_userInfo.IsEn_Us ? "EmailConfigTest_US.html" : "EmailConfigTest.html");
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            ////---项目邮件测试
 | 
			
		||||
            //sendEmailConfig.TopicDescription = _localizer["TrialEmailN_EmailTestMessage"];
 | 
			
		||||
 | 
			
		||||
            //using (StreamReader SourceReader = System.IO.File.OpenText(pathToFile))
 | 
			
		||||
            //{
 | 
			
		||||
            //    var templateInfo = SourceReader.ReadToEnd();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            //    sendEmailConfig.HtmlBodyStr = string.Format(templateInfo,
 | 
			
		||||
            //    //--- 收到此邮件,代表邮件配置正确
 | 
			
		||||
            //        _localizer["TrialEmailN_ConfigurationCorrect"]
 | 
			
		||||
            //        );
 | 
			
		||||
            //}
 | 
			
		||||
 | 
			
		||||
            //try
 | 
			
		||||
            //{
 | 
			
		||||
            //    await SendEmailHelper.SendEmailAsync(sendEmailConfig);
 | 
			
		||||
 | 
			
		||||
            //}
 | 
			
		||||
            //catch (Exception ex)
 | 
			
		||||
            //{
 | 
			
		||||
 | 
			
		||||
            //    //---发件人配置错误,请核对服务器地址或者授权码是否填写有误
 | 
			
		||||
            //    throw new BusinessValidationFailedException(_localizer["TrialEmailN_InvalidSenderEmailConfig"] + ex.Message);
 | 
			
		||||
            //}
 | 
			
		||||
 | 
			
		||||
            #endregion
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -754,7 +754,7 @@ namespace IRaCIS.Core.Application.Service
 | 
			
		|||
                    {
 | 
			
		||||
                        JArray arrays = (JArray)value;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                        //动态配置表翻译
 | 
			
		||||
                        if (item.DataType == "Table")
 | 
			
		||||
                        {
 | 
			
		||||
                            var tableConfigList = JsonConvert.DeserializeObject<List<TableConfig>>(item.TableConfigJsonStr) ?? new List<TableConfig>();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -716,9 +716,10 @@ namespace IRaCIS.Core.Application.Image.QA
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
                study.BodyPartForEdit = updateModalityCommand.BodyPart;
 | 
			
		||||
                //study.Modalities = updateModalityCommand.Modality;
 | 
			
		||||
              
 | 
			
		||||
                study.ModalityForEdit = updateModalityCommand.Modality;
 | 
			
		||||
                await _repository.BatchUpdateAsync<DicomSeries>(t => t.StudyId == studyId, r => new DicomSeries() { BodyPartForEdit = updateModalityCommand.BodyPart, Modality = updateModalityCommand.Modality });
 | 
			
		||||
 | 
			
		||||
                await _repository.BatchUpdateAsync<DicomSeries>(t => t.StudyId == studyId, r => new DicomSeries() { BodyPartForEdit = updateModalityCommand.BodyPart });
 | 
			
		||||
            }
 | 
			
		||||
            else if (updateModalityCommand.Type == 2)
 | 
			
		||||
            {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -72,7 +72,7 @@ namespace IRaCIS.Core.Application.Service
 | 
			
		|||
        /// <param name="inQuery"></param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [HttpPost]
 | 
			
		||||
        public async Task<(PageOutput<SubjectCriteriaEvaluationView>, object)> GetSubjectCriteriaEvaluationList(SubjectCriteriaEvaluationQuery inQuery)
 | 
			
		||||
        public async Task<IResponseOutput<PageOutput<SubjectCriteriaEvaluationView>> > GetSubjectCriteriaEvaluationList(SubjectCriteriaEvaluationQuery inQuery)
 | 
			
		||||
        {
 | 
			
		||||
 | 
			
		||||
            var trialReadingCritionList = _trialReadingCriterionRepository.Where(t => t.TrialId == inQuery.TrialId).ToList();
 | 
			
		||||
| 
						 | 
				
			
			@ -235,7 +235,7 @@ namespace IRaCIS.Core.Application.Service
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            return (pageList, addtionalQustionInfoList);
 | 
			
		||||
            return ResponseOutput.Ok (pageList, addtionalQustionInfoList);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -257,18 +257,25 @@ namespace IRaCIS.Core.Application.Service
 | 
			
		|||
                {
 | 
			
		||||
                    var entity = await _subjectCriteriaEvaluationRepository.InsertFromDTOAsync(addOrEditSubjectCriteriaEvaluation);
 | 
			
		||||
 | 
			
		||||
                    //找到一致性核查通过的访视  并且没有 自动影像筛选的数据
 | 
			
		||||
                    var subjectVisitIdList = await _subjectVisitRepository.Where(t => t.SubjectId == addOrEditSubjectCriteriaEvaluation.SubjectId && t.CheckState == CheckStateEnum.CVPassed
 | 
			
		||||
                    && !t.SubjectCriteriaEvaluationVisitFilterList.Any(t => t.TrialReadingCriterionId == addOrEditSubjectCriteriaEvaluation.TrialReadingCriterionId && t.SubjectId == addOrEditSubjectCriteriaEvaluation.SubjectId)).Select(t => t.Id)
 | 
			
		||||
                    .ToListAsync();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                    foreach (var subjectVisitId in subjectVisitIdList)
 | 
			
		||||
                    if (addOrEditSubjectCriteriaEvaluation.IsJoinEvaluation)
 | 
			
		||||
                    {
 | 
			
		||||
                        await AutoSubjectCriteriaEvaluationVisitFilter(addOrEditSubjectCriteriaEvaluation.SubjectId, subjectVisitId, addOrEditSubjectCriteriaEvaluation.TrialReadingCriterionId);
 | 
			
		||||
 | 
			
		||||
                        //找到一致性核查通过的访视  并且没有 自动影像筛选的数据
 | 
			
		||||
                        var subjectVisitIdList = await _subjectVisitRepository.Where(t => t.SubjectId == addOrEditSubjectCriteriaEvaluation.SubjectId && t.CheckState == CheckStateEnum.CVPassed
 | 
			
		||||
                        && !t.SubjectCriteriaEvaluationVisitFilterList.Any(t => t.TrialReadingCriterionId == addOrEditSubjectCriteriaEvaluation.TrialReadingCriterionId && t.SubjectId == addOrEditSubjectCriteriaEvaluation.SubjectId)).Select(t => t.Id)
 | 
			
		||||
                        .ToListAsync();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                        foreach (var subjectVisitId in subjectVisitIdList)
 | 
			
		||||
                        {
 | 
			
		||||
                            await AutoSubjectCriteriaEvaluationVisitFilter(addOrEditSubjectCriteriaEvaluation.SubjectId, subjectVisitId, addOrEditSubjectCriteriaEvaluation.TrialReadingCriterionId);
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
                //编辑
 | 
			
		||||
                else
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -39,8 +39,8 @@ namespace IRaCIS.Core.Application
 | 
			
		|||
        private readonly IOrganInfoService _iOrganInfoService;
 | 
			
		||||
        private readonly IRepository<TaskAllocationRule> _taskAllocationRuleRepository;
 | 
			
		||||
        private readonly IRepository<ReadingSystemCriterionDictionary> _readingCriterionDictionaryRepository;
 | 
			
		||||
		private readonly IRepository<ReadingTrialCriterionDictionary> _readingTrialCriterionDictionaryRepository;
 | 
			
		||||
		private readonly IReadingQuestionService iReadingQuestionService;
 | 
			
		||||
        private readonly IRepository<ReadingTrialCriterionDictionary> _readingTrialCriterionDictionaryRepository;
 | 
			
		||||
        private readonly IReadingQuestionService iReadingQuestionService;
 | 
			
		||||
        private readonly IRepository<TrialCriterionAdditionalAssessmentType> _trialCriterionAdditionalAssessmentTypeRepository;
 | 
			
		||||
 | 
			
		||||
        private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswer;
 | 
			
		||||
| 
						 | 
				
			
			@ -62,8 +62,8 @@ namespace IRaCIS.Core.Application
 | 
			
		|||
            IRepository<ReadingCriterionPage> readingCriterionPageRepository,
 | 
			
		||||
            IRepository<TaskAllocationRule> taskAllocationRuleRepository,
 | 
			
		||||
            IRepository<ReadingSystemCriterionDictionary> readingCriterionDictionaryRepository,
 | 
			
		||||
			  IRepository<ReadingTrialCriterionDictionary> readingTrialCriterionDictionaryRepository,
 | 
			
		||||
			IReadingQuestionService iReadingQuestionService,
 | 
			
		||||
              IRepository<ReadingTrialCriterionDictionary> readingTrialCriterionDictionaryRepository,
 | 
			
		||||
            IReadingQuestionService iReadingQuestionService,
 | 
			
		||||
            IEasyCachingProvider provider,
 | 
			
		||||
            IOrganInfoService iOrganInfoService,
 | 
			
		||||
            IRepository<TrialCriterionAdditionalAssessmentType> trialCriterionAdditionalAssessmentTypeRepository,
 | 
			
		||||
| 
						 | 
				
			
			@ -79,8 +79,8 @@ namespace IRaCIS.Core.Application
 | 
			
		|||
            _trialRepository = trialRepository;
 | 
			
		||||
            _taskAllocationRuleRepository = taskAllocationRuleRepository;
 | 
			
		||||
            this._readingCriterionDictionaryRepository = readingCriterionDictionaryRepository;
 | 
			
		||||
			this._readingTrialCriterionDictionaryRepository = readingTrialCriterionDictionaryRepository;
 | 
			
		||||
			this.iReadingQuestionService = iReadingQuestionService;
 | 
			
		||||
            this._readingTrialCriterionDictionaryRepository = readingTrialCriterionDictionaryRepository;
 | 
			
		||||
            this.iReadingQuestionService = iReadingQuestionService;
 | 
			
		||||
            this._trialQCQuestionRepository = trialQCQuestionRepository;
 | 
			
		||||
            this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository;
 | 
			
		||||
            this._readingQuestionTrialRepository = readingQuestionTrialRepository;
 | 
			
		||||
| 
						 | 
				
			
			@ -269,15 +269,16 @@ namespace IRaCIS.Core.Application
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
                    var criterionDictionaryList = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == trialCriterion.ReadingQuestionCriterionSystemId.Value)
 | 
			
		||||
                        .Select(x=>new ReadingTrialCriterionDictionary() {
 | 
			
		||||
                        .Select(x => new ReadingTrialCriterionDictionary()
 | 
			
		||||
                        {
 | 
			
		||||
 | 
			
		||||
					        CriterionId = inDto.TrialReadingCriterionId,
 | 
			
		||||
                            CrterionDictionaryGroup=x.CrterionDictionaryGroup,
 | 
			
		||||
                            IsBaseLineUse=x.IsBaseLineUse,
 | 
			
		||||
                            IsFollowVisitUse=x.IsFollowVisitUse,
 | 
			
		||||
                            DictionaryId=x.DictionaryId,
 | 
			
		||||
                            ParentCode=x.ParentCode,
 | 
			
		||||
				       })
 | 
			
		||||
                            CriterionId = inDto.TrialReadingCriterionId,
 | 
			
		||||
                            CrterionDictionaryGroup = x.CrterionDictionaryGroup,
 | 
			
		||||
                            IsBaseLineUse = x.IsBaseLineUse,
 | 
			
		||||
                            IsFollowVisitUse = x.IsFollowVisitUse,
 | 
			
		||||
                            DictionaryId = x.DictionaryId,
 | 
			
		||||
                            ParentCode = x.ParentCode,
 | 
			
		||||
                        })
 | 
			
		||||
                       .ToListAsync();
 | 
			
		||||
 | 
			
		||||
                    criterionDictionaryList.ForEach(x =>
 | 
			
		||||
| 
						 | 
				
			
			@ -287,7 +288,7 @@ namespace IRaCIS.Core.Application
 | 
			
		|||
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
					await _readingTrialCriterionDictionaryRepository.AddRangeAsync(criterionDictionaryList);
 | 
			
		||||
                    await _readingTrialCriterionDictionaryRepository.AddRangeAsync(criterionDictionaryList);
 | 
			
		||||
 | 
			
		||||
                    await _trialCriterionDictionaryCode.AddRangeAsync(criterionDictionaryCodeList);
 | 
			
		||||
                    #endregion
 | 
			
		||||
| 
						 | 
				
			
			@ -624,7 +625,7 @@ namespace IRaCIS.Core.Application
 | 
			
		|||
 | 
			
		||||
                if (inDto.TrialCriterionAdditionalAssessmentTypeList.All(t => t.IsSelected != true))
 | 
			
		||||
                {
 | 
			
		||||
                //---选择了附加评估,必须勾选附加评估类型
 | 
			
		||||
                    //---选择了附加评估,必须勾选附加评估类型
 | 
			
		||||
                    throw new BusinessValidationFailedException(_localizer["TrialConfig_AddEvalReq"]);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -641,7 +642,7 @@ namespace IRaCIS.Core.Application
 | 
			
		|||
                            AdditionalAssessment additional = new AdditionalAssessment();
 | 
			
		||||
                            var addTypeList = additional.GetSystemDefeaultAdditionalAssessmentList(updateItem.CriterionType, updateItem.AdditionalAssessmentType);
 | 
			
		||||
 | 
			
		||||
                            if(!await _readingQuestionTrialRepository.AsQueryable().IgnoreQueryFilters().AnyAsync(t => t.ReadingQuestionCriterionTrialId == updateItem.TrialReadingCriterionId && t.IsAdditional==true))
 | 
			
		||||
                            if (!await _readingQuestionTrialRepository.AsQueryable().IgnoreQueryFilters().AnyAsync(t => t.ReadingQuestionCriterionTrialId == updateItem.TrialReadingCriterionId && t.IsAdditional == true))
 | 
			
		||||
                            {
 | 
			
		||||
                                foreach (var addType in addTypeList)
 | 
			
		||||
                                {
 | 
			
		||||
| 
						 | 
				
			
			@ -953,6 +954,47 @@ namespace IRaCIS.Core.Application
 | 
			
		|||
 | 
			
		||||
            _mapper.Map(trialConfig, trialInfo);
 | 
			
		||||
 | 
			
		||||
            //不管是否修改,一定要记录稽查
 | 
			
		||||
            trialInfo.UpdateTime=DateTime.Now;
 | 
			
		||||
 | 
			
		||||
            //// 修改临床数据
 | 
			
		||||
 | 
			
		||||
            var clinicalDataTrialSetList = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == trialConfig.TrialId, true).ToListAsync();
 | 
			
		||||
 | 
			
		||||
            foreach (var item in clinicalDataTrialSetList)
 | 
			
		||||
            {
 | 
			
		||||
 | 
			
		||||
                if(trialConfig.ClinicalDataTrialSetIds.Contains(item.Id))
 | 
			
		||||
                {
 | 
			
		||||
                    item.IsConfirm = true;
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    item.IsConfirm = false;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            //// 修改阅片标准
 | 
			
		||||
 | 
			
		||||
            var readingQuestionCriterionTrialList = await _readingQuestionCriterionTrialRepository.Where(x => x.TrialId == trialConfig.TrialId, true).ToListAsync();
 | 
			
		||||
 | 
			
		||||
            foreach (var item in readingQuestionCriterionTrialList)
 | 
			
		||||
            {
 | 
			
		||||
 | 
			
		||||
                if (trialConfig.TrialCriterionIds.Contains(item.Id))
 | 
			
		||||
                {
 | 
			
		||||
                    item.IsConfirm = true;
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    item.IsConfirm = false;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            #region 废弃
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            #endregion
 | 
			
		||||
 | 
			
		||||
            //if (trialInfo.IsGlobalReading && (trialInfo.IsArbitrationReading ?? false))
 | 
			
		||||
            //{
 | 
			
		||||
            //    trialInfo.ArbitrationRule = ArbitrationRule.Reading;
 | 
			
		||||
| 
						 | 
				
			
			@ -962,40 +1004,40 @@ namespace IRaCIS.Core.Application
 | 
			
		|||
            //{
 | 
			
		||||
            //    trialInfo.ArbitrationRule = ArbitrationRule.Visit;
 | 
			
		||||
            //}
 | 
			
		||||
            trialInfo.UpdateTime = DateTime.Now;
 | 
			
		||||
            //trialInfo.UpdateTime = DateTime.Now;
 | 
			
		||||
 | 
			
		||||
            // 修改临床数据
 | 
			
		||||
            var noconfirmids = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == trialConfig.TrialId && !trialConfig.ClinicalDataTrialSetIds.Contains(x.Id)).Select(x => x.Id).ToListAsync();
 | 
			
		||||
            foreach (var item in trialConfig.ClinicalDataTrialSetIds)
 | 
			
		||||
            {
 | 
			
		||||
                await _clinicalDataTrialSetRepository.UpdatePartialFromQueryAsync(item, x => new ClinicalDataTrialSet()
 | 
			
		||||
                {
 | 
			
		||||
            //// 修改临床数据
 | 
			
		||||
            //var noconfirmids = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == trialConfig.TrialId && !trialConfig.ClinicalDataTrialSetIds.Contains(x.Id)).Select(x => x.Id).ToListAsync();
 | 
			
		||||
            //foreach (var item in trialConfig.ClinicalDataTrialSetIds)
 | 
			
		||||
            //{
 | 
			
		||||
            //    await _clinicalDataTrialSetRepository.UpdatePartialFromQueryAsync(item, x => new ClinicalDataTrialSet()
 | 
			
		||||
            //    {
 | 
			
		||||
 | 
			
		||||
                    IsConfirm = true
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
            //        IsConfirm = true
 | 
			
		||||
            //    });
 | 
			
		||||
            //}
 | 
			
		||||
 | 
			
		||||
            foreach (var item in noconfirmids)
 | 
			
		||||
            {
 | 
			
		||||
                await _clinicalDataTrialSetRepository.UpdatePartialFromQueryAsync(item, x => new ClinicalDataTrialSet()
 | 
			
		||||
                {
 | 
			
		||||
            //foreach (var item in noconfirmids)
 | 
			
		||||
            //{
 | 
			
		||||
            //    await _clinicalDataTrialSetRepository.UpdatePartialFromQueryAsync(item, x => new ClinicalDataTrialSet()
 | 
			
		||||
            //    {
 | 
			
		||||
 | 
			
		||||
                    IsConfirm = false
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
            //        IsConfirm = false
 | 
			
		||||
            //    });
 | 
			
		||||
            //}
 | 
			
		||||
 | 
			
		||||
            // 修改阅片标准
 | 
			
		||||
            var cancelConfirmCriterionIds = await _readingQuestionCriterionTrialRepository.Where(x => x.TrialId == trialConfig.TrialId && x.IsConfirm && !trialConfig.TrialCriterionIds.Contains(x.Id)).Select(x => x.Id).ToListAsync();
 | 
			
		||||
            //// 修改阅片标准
 | 
			
		||||
            //var cancelConfirmCriterionIds = await _readingQuestionCriterionTrialRepository.Where(x => x.TrialId == trialConfig.TrialId && x.IsConfirm && !trialConfig.TrialCriterionIds.Contains(x.Id)).Select(x => x.Id).ToListAsync();
 | 
			
		||||
 | 
			
		||||
            await _readingQuestionCriterionTrialRepository.UpdatePartialFromQueryAsync(x => cancelConfirmCriterionIds.Contains(x.Id), x => new ReadingQuestionCriterionTrial()
 | 
			
		||||
            {
 | 
			
		||||
                IsConfirm = false
 | 
			
		||||
            });
 | 
			
		||||
            //await _readingQuestionCriterionTrialRepository.UpdatePartialFromQueryAsync(x => cancelConfirmCriterionIds.Contains(x.Id), x => new ReadingQuestionCriterionTrial()
 | 
			
		||||
            //{
 | 
			
		||||
            //    IsConfirm = false
 | 
			
		||||
            //});
 | 
			
		||||
 | 
			
		||||
            await _readingQuestionCriterionTrialRepository.UpdatePartialFromQueryAsync(x => trialConfig.TrialCriterionIds.Contains(x.Id), x => new ReadingQuestionCriterionTrial()
 | 
			
		||||
            {
 | 
			
		||||
                IsConfirm = true
 | 
			
		||||
            }); ;
 | 
			
		||||
            //await _readingQuestionCriterionTrialRepository.UpdatePartialFromQueryAsync(x => trialConfig.TrialCriterionIds.Contains(x.Id), x => new ReadingQuestionCriterionTrial()
 | 
			
		||||
            //{
 | 
			
		||||
            //    IsConfirm = true
 | 
			
		||||
            //}); ;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1159,11 +1201,11 @@ namespace IRaCIS.Core.Application
 | 
			
		|||
        public async Task<TrialConfigDTO> GetTrialConfigInfo(Guid trialId)
 | 
			
		||||
        {
 | 
			
		||||
            return await _trialRepository.Where(t => t.Id == trialId).ProjectTo<TrialConfigDTO>(_mapper.ConfigurationProvider, new
 | 
			
		||||
			{
 | 
			
		||||
				isEn_Us = _userInfo.IsEn_Us
 | 
			
		||||
            {
 | 
			
		||||
                isEn_Us = _userInfo.IsEn_Us
 | 
			
		||||
 | 
			
		||||
			})
 | 
			
		||||
		.FirstOrDefaultAsync().IfNullThrowException();
 | 
			
		||||
            })
 | 
			
		||||
        .FirstOrDefaultAsync().IfNullThrowException();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
				
			
			@ -150,6 +150,8 @@ namespace IRaCIS.Core.Infra.EFCore.Common.Dto
 | 
			
		|||
        //标识操作  是否区分接口
 | 
			
		||||
        public bool IsDistinctionInterface=true;
 | 
			
		||||
 | 
			
		||||
        public bool IsSelfDefine = false;
 | 
			
		||||
 | 
			
		||||
        public string ExtraIndentification = string.Empty;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue