From 4688cb388e7316eeba25636b4a02540bf8041a25 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Wed, 7 May 2025 13:51:32 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=A7=A6=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.Application/IRaCIS.Core.Application.xml | 10 +++++----- IRaCIS.Core.Infra.EFCore/Interceptor/AddDomainExt.cs | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 870d100f4..3e29f92ca 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -14251,12 +14251,12 @@ - 用户提交 发送邮件 通知SPM 或者PM + 用户提交 发送邮件 通知SPM 或者PM 项目默认邮件,不用添加到项目中,直接发送的 - + - 用户提交 发送邮件 通知SPM 或者PM + 用户提交 发送邮件 通知SPM 或者PM 项目默认邮件,不用添加到项目中,直接发送的 @@ -14264,7 +14264,7 @@ 调研表初审通过,进行复审发送邮件 - + 调研表初审通过,进行复审发送邮件 @@ -14274,7 +14274,7 @@ 调研表驳回发送邮件 之前已有,需要迁移过来 - + 调研表驳回发送邮件 之前已有,需要迁移过来 diff --git a/IRaCIS.Core.Infra.EFCore/Interceptor/AddDomainExt.cs b/IRaCIS.Core.Infra.EFCore/Interceptor/AddDomainExt.cs index b47f66f64..8273325f7 100644 --- a/IRaCIS.Core.Infra.EFCore/Interceptor/AddDomainExt.cs +++ b/IRaCIS.Core.Infra.EFCore/Interceptor/AddDomainExt.cs @@ -459,7 +459,7 @@ public static class DBContext_Ext } if (pmApplyEnrollIdList.Count > 0) { - lastEnroll.AddDomainEvent(new ReviewerPMApplyEvent() { TrialId = lastEnroll.TrialId, EnrollIdList = spmApproveEnrollIdList }); + lastEnroll.AddDomainEvent(new ReviewerPMApplyEvent() { TrialId = lastEnroll.TrialId, EnrollIdList = pmApplyEnrollIdList }); eventStoreList.AddRange(GetStoreEvents(lastEnroll.DomainEvents)); } From 7fff48b07ab89b8273dca8f8e9e3dcbc93624728 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Wed, 7 May 2025 14:17:16 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=82=AE=E4=BB=B6?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/QC/QCOperationService.cs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs index 8ed741ac5..d354f10ea 100644 --- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs @@ -589,7 +589,7 @@ namespace IRaCIS.Core.Application.Image.QA }); - if (sv.RequestBackState == RequestBackStateEnum.NotRequest || sv.RequestBackState == RequestBackStateEnum.PM_NotAgree) + if (sv.RequestBackState != RequestBackStateEnum.CRC_RequestBack) { sv.RequestBackState = RequestBackStateEnum.CRC_RequestBack; @@ -663,16 +663,14 @@ namespace IRaCIS.Core.Application.Image.QA return ResponseOutput.NotOk(_localizer["QCOperation_CannotRollback"]); } - //sv.CheckChallengeState = (int)CheckChanllengeTypeEnum.None; - //sv.CheckState = CheckStateEnum.None; - //sv.ChallengeState = (int)ChallengeStateEnum.No; + sv.RequestBackState = RequestBackStateEnum.PM_AgressBack; sv.AuditState = AuditStateEnum.None; sv.SubmitState = SubmitStateEnum.ToSubmit; sv.ReadingStatus = ReadingStatusEnum.ImageNotSubmit; //回退后,回退状态恢复 - sv.RequestBackState = RequestBackStateEnum.NotRequest; + sv.IsCheckBack = true; sv.CheckBackTime = DateTime.Now; sv.CheckState = CheckStateEnum.None; @@ -1013,7 +1011,7 @@ namespace IRaCIS.Core.Application.Image.QA { var studyId = updateModalityCommand.Id; - var study = (await _dicomStudyRepository.FirstOrDefaultAsync(t => t.Id == studyId,true)).IfNullThrowException(); + var study = (await _dicomStudyRepository.FirstOrDefaultAsync(t => t.Id == studyId, true)).IfNullThrowException(); study.BodyPartForEdit = updateModalityCommand.BodyPart; @@ -1085,7 +1083,7 @@ namespace IRaCIS.Core.Application.Image.QA //---CRC已经提交,不允许删除。 return ResponseOutput.NotOk(_localizer["QCOperation_CrcNoDelete"]); } - var waitDeleteStudyList = await _dicomStudyRepository.Where(x => ids.Contains(x.Id),false,true).ToListAsync(); + var waitDeleteStudyList = await _dicomStudyRepository.Where(x => ids.Contains(x.Id), false, true).ToListAsync(); foreach (var study in waitDeleteStudyList) { From ce47776f1916e345e30c8693c3188efa08f300ce Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Wed, 7 May 2025 14:47:22 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E7=BB=9F=E4=B8=80=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E9=82=AE=E4=BB=B6=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MassTransit/Consumer/CommonEmailHelper.cs | 51 +++++++++++++- .../Consumer/ReadingRelationEmailConsumer.cs | 8 +-- .../Consumer/SiteSurverEmailConsumer.cs | 6 +- .../SubjectVisitQCAndCheckConsumer.cs | 14 ++-- .../Recurring/IRRecurringConsumer.cs | 2 +- .../Recurring/SystemDocumentConsumer.cs | 44 +++++++----- .../Service/Doctor/DoctorService.cs | 68 +++++++++++-------- 7 files changed, 130 insertions(+), 63 deletions(-) diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs b/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs index b0485c8a1..276cd2eec 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs @@ -54,7 +54,56 @@ public static class CommonEmailHelper return configInfo; } - public static async Task GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(TrialEmailNoticeConfig configInfo, EmailBusinessScenario scenario, MimeMessage messageToSend, + /// + /// 系统默认邮件 + 项目默认邮件 (不用添加到项目邮件配置中,才发送) + /// + /// + /// + /// + /// + /// + public static async Task GetEmailSubejctAndHtmlInfoAndBuildAsync(EmailNoticeConfig configInfo, MimeMessage messageToSend, +Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailFunc) + { + var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; + + + + var (topicStr, htmlBodyStr) = isEn_US ? (configInfo.EmailTopic, configInfo.EmailHtmlContent) : (configInfo.EmailTopicCN, configInfo.EmailHtmlContentCN); + + try + { + //每个场景修改主题 和body的逻辑不一样 + (topicStr, htmlBodyStr) = emailFunc((topicStr, htmlBodyStr)); + } + catch (Exception ex) + { + //"邮件模板内容有误,填充内容出现问题,请联系运维人员核查" + + throw new BusinessValidationFailedException(I18n.T("CommonEmail_ConfigError")); + } + + + messageToSend.Subject = topicStr; + + var builder = new BodyBuilder(); + + builder.HtmlBody = htmlBodyStr; + + messageToSend.Body = builder.ToMessageBody(); + + return configInfo; + } + + /// + /// 项目手动邮件 (需要添加到项目邮件配置中,才发送) + /// + /// + /// + /// + /// + /// + public static async Task GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(TrialEmailNoticeConfig configInfo, MimeMessage messageToSend, Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailFunc) { var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/ReadingRelationEmailConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/ReadingRelationEmailConsumer.cs index c114a3620..54eac7243 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/ReadingRelationEmailConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/ReadingRelationEmailConsumer.cs @@ -126,7 +126,7 @@ public class UrgentMedicalReviewAddedEventConsumer( return (topicStr, htmlBodyStr); }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); @@ -234,7 +234,7 @@ public class UrgentIRRepliedMedicalReviewConsumer( return (topicStr, htmlBodyStr); }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } @@ -352,7 +352,7 @@ public class UrgentMIMRepliedMedicalReviewConsumer( return (topicStr, htmlBodyStr); }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } @@ -461,7 +461,7 @@ public class UrgentIRApplyedReReadingConsumer( return (topicStr, htmlBodyStr); }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs index 8fd86858f..837084a71 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs @@ -120,7 +120,7 @@ public class UserSiteSurveySubmitedEventConsumer( }; - await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(emailConfig, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } @@ -203,7 +203,7 @@ public class SiteSurveySPMSubmitedEventConsumer( return (topicStr, htmlBodyStr); }; - await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(emailConfig, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } @@ -316,7 +316,7 @@ public class SiteSurverRejectedEventConsumer( return (topicStr, htmlBodyStr); }; - await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(emailConfig, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/SubjectVisitQCAndCheckConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/SubjectVisitQCAndCheckConsumer.cs index dae599e60..8eacc9bdd 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/SubjectVisitQCAndCheckConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/SubjectVisitQCAndCheckConsumer.cs @@ -120,7 +120,7 @@ public class CRCSubmitedAndQCToAuditEventConsumer( return (topicStr, htmlBodyStr); }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } @@ -219,7 +219,7 @@ public class CRCRepliedQCChallengeEventConsumer( return (topicStr, htmlBodyStr); }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } @@ -337,7 +337,7 @@ public class QCRepliedQCChallengeEventConsumer( }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } @@ -437,7 +437,7 @@ public class CRCRepliedCheckChallengeEventConsumer( }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } @@ -547,7 +547,7 @@ public class PMRepliedCheckChallengeEventConsumer( }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } @@ -646,7 +646,7 @@ public class CheckStateChangedToAuditEventConsumer( }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } @@ -755,7 +755,7 @@ public class QCClaimTaskEventConsumer( }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } diff --git a/IRaCIS.Core.Application/MassTransit/Recurring/IRRecurringConsumer.cs b/IRaCIS.Core.Application/MassTransit/Recurring/IRRecurringConsumer.cs index d0f6d758e..6844e4f42 100644 --- a/IRaCIS.Core.Application/MassTransit/Recurring/IRRecurringConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Recurring/IRRecurringConsumer.cs @@ -159,7 +159,7 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring return (topicStr, htmlBodyStr); }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); diff --git a/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs b/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs index 117d11991..3516ec8ce 100644 --- a/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs @@ -71,14 +71,14 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring IsNeedSendEmial = identityUser.IsZhiZhun || (!identityUser.IsZhiZhun && sysDoc.DocUserSignType == DocUserSignType.InnerAndOuter), FullFilePath = sysDoc.Path }; - var datalist = await systemDocQuery.IgnoreQueryFilters().Where(t => t.IsDeleted==false && t.ConfirmTime == null) + var datalist = await systemDocQuery.IgnoreQueryFilters().Where(t => t.IsDeleted == false && t.ConfirmTime == null) .ToListAsync(); datalist = datalist.Where(x => x.SuggestFinishTime != null && x.SuggestFinishTime.Value.Date == DateTime.Now.Date) .Where(x => x.IsNeedSendEmial).ToList(); var confirmUserIdList = datalist.Select(t => t.ConfirmUserId).Distinct().ToList(); var userinfoList = await _identityUserRepository.Where(x => confirmUserIdList.Contains(x.Id)).ToListAsync(); - Console.WriteLine("发送定时过期提醒:人员数量"+ userinfoList.Count); + Console.WriteLine("发送定时过期提醒:人员数量" + userinfoList.Count); int index = 1; foreach (var userinfo in userinfoList) { @@ -107,19 +107,24 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring return (topicStr, htmlBodyStr); }; - await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, + var scenario = EmailBusinessScenario.GeneralTraining_ExpirationNotification; - EmailBusinessScenario.GeneralTraining_ExpirationNotification, + var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); + + if (emailConfig != null) + { + await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(emailConfig, messageToSend, emailConfigFunc); + + await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); + } - messageToSend, emailConfigFunc); - await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } catch (Exception) { } - + } @@ -149,7 +154,7 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; var systemDocQuery = from sysDoc in _systemDocumentRepository.AsQueryable(false).Where(x => context.Message.Ids.Contains(x.Id)) - from identityUser in _identityUserRepository.AsQueryable(false).Where(t => t.Status == UserStateEnum.Enable&& t.UserRoleList.Where(t => t.IsUserRoleDisabled == false).Any(t => sysDoc.NeedConfirmedUserTypeList.AsQueryable().Any(c => c.NeedConfirmUserTypeId == t.UserTypeId))) + from identityUser in _identityUserRepository.AsQueryable(false).Where(t => t.Status == UserStateEnum.Enable && t.UserRoleList.Where(t => t.IsUserRoleDisabled == false).Any(t => sysDoc.NeedConfirmedUserTypeList.AsQueryable().Any(c => c.NeedConfirmUserTypeId == t.UserTypeId))) select new UnionDocumentWithConfirmInfoView() { IsSystemDoc = true, @@ -165,23 +170,23 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring RealName = identityUser.FullName, UserName = identityUser.UserName, - IsNeedSendEmial= identityUser.IsZhiZhun || (!identityUser.IsZhiZhun&& sysDoc.DocUserSignType== DocUserSignType.InnerAndOuter), + IsNeedSendEmial = identityUser.IsZhiZhun || (!identityUser.IsZhiZhun && sysDoc.DocUserSignType == DocUserSignType.InnerAndOuter), FullFilePath = sysDoc.Path }; - var datalist = await systemDocQuery.IgnoreQueryFilters().Where(x=>x.IsNeedSendEmial).ToListAsync(); + var datalist = await systemDocQuery.IgnoreQueryFilters().Where(x => x.IsNeedSendEmial).ToListAsync(); var confirmUserIdList = datalist.Select(t => t.ConfirmUserId).Distinct().ToList(); var userinfoList = await _identityUserRepository.Where(x => confirmUserIdList.Contains(x.Id)).ToListAsync(); - int index= 1; + int index = 1; foreach (var userinfo in userinfoList) { string msg = $"{index}生效通知,邮箱:{userinfo.EMail},姓名{userinfo.UserName},"; index++; try { - + var messageToSend = new MimeMessage(); //发件地址 messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail)); @@ -203,14 +208,19 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring return (topicStr, htmlBodyStr); }; - await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, + var scenario = EmailBusinessScenario.GeneralTraining_EffectiveNotification; - EmailBusinessScenario.GeneralTraining_EffectiveNotification, + var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); + + if (emailConfig != null) + { + await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(emailConfig, messageToSend, emailConfigFunc); + + await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); + msg += "发送成功"; + } - messageToSend, emailConfigFunc); - await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); - msg += "发送成功"; } catch (Exception) { diff --git a/IRaCIS.Core.Application/Service/Doctor/DoctorService.cs b/IRaCIS.Core.Application/Service/Doctor/DoctorService.cs index 6cd828db9..57d7920b7 100644 --- a/IRaCIS.Core.Application/Service/Doctor/DoctorService.cs +++ b/IRaCIS.Core.Application/Service/Doctor/DoctorService.cs @@ -1,4 +1,5 @@ using DocumentFormat.OpenXml.Office2019.Excel.ThreadedComments; +using DocumentFormat.OpenXml.Spreadsheet; using IRaCIS.Application.Contracts; using IRaCIS.Application.Interfaces; using IRaCIS.Core.Application.Helper; @@ -231,9 +232,9 @@ namespace IRaCIS.Core.Application.Service /// /// [HttpPost] - public async Task<(DoctorSummarize,bool)> AddOrUpdateGneralSituation(SummarizeInfoDto inDto) + public async Task<(DoctorSummarize, bool)> AddOrUpdateGneralSituation(SummarizeInfoDto inDto) { - if (inDto.TrialId != null&&inDto.Id==null) + if (inDto.TrialId != null && inDto.Id == null) { var systemCount = await _doctorSummarizeRepository.Where(x => x.DoctorId == inDto.DoctorId && x.TrialId == null).CountAsync(); if (systemCount == 0) @@ -242,7 +243,7 @@ namespace IRaCIS.Core.Application.Service var dictionery = await _dictionaryRepository.Where(x => x.Parent.Code == "Indication" && x.Code == trialinfo.IndicationEnum.ToString()).FirstNotNullAsync(); inDto.IndicationEn = dictionery.Value; inDto.Indication = dictionery.ValueCN; - var system= inDto.Clone(); + var system = inDto.Clone(); system.TrialId = null; system.IsMain = true; await _doctorSummarizeRepository.InsertOrUpdateAsync(system, true); @@ -255,7 +256,7 @@ namespace IRaCIS.Core.Application.Service if (systemCount == 0) { inDto.IsMain = true; - + } if (inDto.Indication.IsNullOrEmpty() && inDto.IndicationEn.IsNullOrEmpty()) { @@ -263,19 +264,19 @@ namespace IRaCIS.Core.Application.Service inDto.IndicationEn = "Default"; } var exists = await _doctorSummarizeRepository - .Where(x=> x.IndicationEn!=string.Empty && x.Indication!=string.Empty) - .Where( x => x.IndicationEn == inDto.IndicationEn|| x.Indication == inDto.Indication) - - .AnyAsync(x => x.DoctorId == inDto.DoctorId && x.TrialId == null&&x.Id!=inDto.Id); + .Where(x => x.IndicationEn != string.Empty && x.Indication != string.Empty) + .Where(x => x.IndicationEn == inDto.IndicationEn || x.Indication == inDto.Indication) + + .AnyAsync(x => x.DoctorId == inDto.DoctorId && x.TrialId == null && x.Id != inDto.Id); if (exists) { throw new BusinessValidationFailedException(_localizer["DoctorSummarize_repeat"]); } } - - if (inDto.TrialId != null && inDto.SaveSummarizeInfoType!= SaveSummarizeInfo.SaveSelf) + + if (inDto.TrialId != null && inDto.SaveSummarizeInfoType != SaveSummarizeInfo.SaveSelf) { switch (inDto.SaveSummarizeInfoType) { @@ -313,16 +314,16 @@ namespace IRaCIS.Core.Application.Service if (inDto.TrialId == null && inDto.IsMain) { - await _doctorSummarizeRepository.BatchUpdateNoTrackingAsync(x => x.DoctorId == inDto.DoctorId && x.TrialId == null, + await _doctorSummarizeRepository.BatchUpdateNoTrackingAsync(x => x.DoctorId == inDto.DoctorId && x.TrialId == null, x => new DoctorSummarize() - { - IsMain = false - }); + { + IsMain = false + }); } - - + + var entity = await _doctorSummarizeRepository.InsertOrUpdateAsync(inDto, true); - return (entity,true); + return (entity, true); } /// @@ -333,7 +334,7 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task DeleteSummarizeInfo(DeleteSummarizeInfoInDto inDto) { - var result = await _doctorSummarizeRepository.DeleteFromQueryAsync(x=>x.Id==inDto.Id); + var result = await _doctorSummarizeRepository.DeleteFromQueryAsync(x => x.Id == inDto.Id); return await _doctorSummarizeRepository.SaveChangesAsync(); } @@ -345,7 +346,7 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task GetSummarizeInfo(GetSummarizeInfoInDto inDto) { - + if (inDto.TrialId != null) { var doctorInfo = await trialExperienceService.GetTrialDoctorInfo(new GetTrialDoctorInfoInDto() @@ -357,8 +358,9 @@ namespace IRaCIS.Core.Application.Service } var result = await _doctorSummarizeRepository.Where(t => t.DoctorId == inDto.DoctorId && t.TrialId == inDto.TrialId) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); - return new UpdateGneralSituationDto() { - SummarizeList= result + return new UpdateGneralSituationDto() + { + SummarizeList = result }; } @@ -378,30 +380,36 @@ namespace IRaCIS.Core.Application.Service messageToSend.To.Add(new MailboxAddress(String.Empty, item)); } - + Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input => { - ; - var topicStr = string.Format(input.topicStr,string.Empty); + ; + var topicStr = string.Format(input.topicStr, string.Empty); var htmlBodyStr = string.Format( CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr), - _systemEmailConfig.SiteUrl.Replace("login",string.Empty)+inDto.Url + _systemEmailConfig.SiteUrl.Replace("login", string.Empty) + inDto.Url ); return (topicStr, htmlBodyStr); }; - await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, - EmailBusinessScenario.Reviewer_CV_Collection, + var scenario = EmailBusinessScenario.Reviewer_CV_Collection; + + var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); + + if (emailConfig != null) + { + await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(emailConfig, messageToSend, emailConfigFunc); + + await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); + } - messageToSend, emailConfigFunc); - await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); return true; } @@ -491,7 +499,7 @@ namespace IRaCIS.Core.Application.Service var doctorBasicInfo = (await _doctorRepository.Where(t => t.Id == doctorId) .ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); - doctorBasicInfo.IsHaveAccount =await _userRoleRepository.AnyAsync(x => x.DoctorId == doctorId); + doctorBasicInfo.IsHaveAccount = await _userRoleRepository.AnyAsync(x => x.DoctorId == doctorId); return doctorBasicInfo; From 95f708da581cb6393c62189841c41b8f22c515af Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Wed, 7 May 2025 14:53:49 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=82=AE=E4=BB=B6?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MassTransit/Consumer/CommonEmailHelper.cs | 41 ------------- .../MassTransit/Consumer/ImageConsumer.cs | 58 +++++++++---------- 2 files changed, 29 insertions(+), 70 deletions(-) diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs b/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs index 276cd2eec..aa7f44b6b 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs @@ -14,45 +14,6 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer; public static class CommonEmailHelper { - public static async Task GetEmailSubejctAndHtmlInfoAndBuildAsync(IRepository _emailNoticeConfigrepository, EmailBusinessScenario scenario, MimeMessage messageToSend, - Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailFunc) - { - var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; - - var configInfo = await _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario).FirstOrDefaultAsync(); - - if (configInfo == null) - { - //"系统未找到当前场景邮件配置信息,请联系运维人员核查" - throw new BusinessValidationFailedException(I18n.T("CommonEmail_NotFoundConfig")); - } - - - var (topicStr, htmlBodyStr) = isEn_US ? (configInfo.EmailTopic, configInfo.EmailHtmlContent) : (configInfo.EmailTopicCN, configInfo.EmailHtmlContentCN); - - try - { - //每个场景修改主题 和body的逻辑不一样 - (topicStr, htmlBodyStr) = emailFunc((topicStr, htmlBodyStr)); - } - catch (Exception ex) - { - //"邮件模板内容有误,填充内容出现问题,请联系运维人员核查" - - throw new BusinessValidationFailedException(I18n.T("CommonEmail_ConfigError")); - } - - - messageToSend.Subject = topicStr; - - var builder = new BodyBuilder(); - - builder.HtmlBody = htmlBodyStr; - - messageToSend.Body = builder.ToMessageBody(); - - return configInfo; - } /// /// 系统默认邮件 + 项目默认邮件 (不用添加到项目邮件配置中,才发送) @@ -67,8 +28,6 @@ Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr { var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; - - var (topicStr, htmlBodyStr) = isEn_US ? (configInfo.EmailTopic, configInfo.EmailHtmlContent) : (configInfo.EmailTopicCN, configInfo.EmailHtmlContentCN); try diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs index 2c55411dd..8f4b9aa44 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs @@ -99,13 +99,13 @@ public class ImageConsumer( } - var trialEmailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable).FirstOrDefault(); + var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable && t.IsAutoSend).FirstOrDefault(); - if (trialEmailConfig != null) + if (emailConfig != null) { var inDto = new SendImageReuploadEmailInDto { - EmailNoticeConfig = trialEmailConfig, + EmailNoticeConfig = emailConfig, Scenario = scenario, SubjectVisit = subjectVisit, TrialId = trialId, @@ -143,17 +143,17 @@ public class ImageConsumer( return; // 其他状态不发送邮件 } - var trialEmailConfig = _emailNoticeConfigrepository.Where(t =>t.BusinessScenarioEnum == scenario && t.IsEnable).FirstOrDefault(); + var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable && t.IsAutoSend).FirstOrDefault(); - if (trialEmailConfig != null) + if (emailConfig != null) { var inDto = new SendImageReuploadEmailInDto { - EmailNoticeConfig = trialEmailConfig, + EmailNoticeConfig = emailConfig, Scenario = scenario, SubjectVisit = subjectVisit, TrialId = trialId, - RequestBackStateEnum= context.Message.RequestBackState, + RequestBackStateEnum = context.Message.RequestBackState, }; await SendImageReuploadEmail(inDto); } @@ -185,13 +185,13 @@ public class ImageConsumer( return; // 其他状态不发送邮件 } - var trialEmailConfig = _emailNoticeConfigrepository.Where(t =>t.BusinessScenarioEnum == scenario && t.IsEnable).FirstOrDefault(); + var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable && t.IsAutoSend).FirstOrDefault(); - if (trialEmailConfig != null) + if (emailConfig != null) { var inDto = new SendImageReuploadEmailInDto { - EmailNoticeConfig = trialEmailConfig, + EmailNoticeConfig = emailConfig, Scenario = scenario, SubjectVisit = subjectVisit, TrialId = trialId @@ -210,13 +210,13 @@ public class ImageConsumer( var visitTaskId = context.Message.VisitTaskId; // 获取VisitTask关联的SubjectVisit - var visitTask = await _visitTaskRepository.Where(x => x.Id == visitTaskId).Include(x => x.Subject).Include(x=>x.SourceSubjectVisit).FirstNotNullAsync(); + var visitTask = await _visitTaskRepository.Where(x => x.Id == visitTaskId).Include(x => x.Subject).Include(x => x.SourceSubjectVisit).FirstNotNullAsync(); var subjectVisit = new SubjectVisit() { }; if (visitTask.SourceSubjectVisitId != null) { subjectVisit = visitTask.SourceSubjectVisit; } - else if(visitTask.SouceReadModuleId!=null) + else if (visitTask.SouceReadModuleId != null) { var readModule = await _readModuleRepository.Where(x => x.Id == visitTask.SouceReadModuleId).Include(x => x.SubjectVisit).FirstOrDefaultAsync(); subjectVisit = readModule.SubjectVisit; @@ -239,13 +239,13 @@ public class ImageConsumer( return; // 其他状态不发送邮件 } - var trialEmailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable).FirstOrDefault(); + var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable && t.IsAutoSend).FirstOrDefault(); - if (trialEmailConfig != null) + if (emailConfig != null) { var inDto = new SendImageReuploadEmailInDto { - EmailNoticeConfig = trialEmailConfig, + EmailNoticeConfig = emailConfig, Scenario = scenario, SubjectVisit = subjectVisit, TrialId = trialId @@ -272,15 +272,15 @@ public class ImageConsumer( List ccUserList = new List(); var emailNoticeUserList = await _emailNoticeUserTypeRepository.Where(x => x.EmailNoticeConfigId == inDto.EmailNoticeConfig.Id).ToListAsync(); - var userTypeEnum= emailNoticeUserList.Select(x => x.UserType).ToList(); + var userTypeEnum = emailNoticeUserList.Select(x => x.UserType).ToList(); if (inDto.UserTypes != null) { userTypeEnum = inDto.UserTypes; } - var crcUserList =new List(){ }; + var crcUserList = new List() { }; if (userTypeEnum.Contains(UserTypeEnum.ClinicalResearchCoordinator)) { - crcUserList=await _trialSiteRepository.Where(x=>x.Id== inDto.SubjectVisit.TrialSiteId).SelectMany(x=>x.CRCUserList.Select(y => y.UserRole)).ToListAsync(); + crcUserList = await _trialSiteRepository.Where(x => x.Id == inDto.SubjectVisit.TrialSiteId).SelectMany(x => x.CRCUserList.Select(y => y.UserRole)).ToListAsync(); } if (inDto.UserTypes == null) @@ -307,7 +307,7 @@ public class ImageConsumer( } - var ccList = emailNoticeUserList.Where(x => x.EmailUserType == EmailUserType.Copy && x.UserType != UserTypeEnum.ClinicalResearchCoordinator).Select(x => x.UserType).ToList(); + var ccList = emailNoticeUserList.Where(x => x.EmailUserType == EmailUserType.Copy && x.UserType != UserTypeEnum.ClinicalResearchCoordinator).Select(x => x.UserType).ToList(); ccUserList = trialUser.Where(x => ccList.Contains(x.UserTypeEnum)).ToList(); @@ -375,7 +375,7 @@ public class ImageConsumer( return (topicStr, htmlBodyStr); }; - await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, inDto.Scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(inDto.EmailNoticeConfig, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } @@ -404,11 +404,11 @@ public class ImageConsumer( // 设置邮件场景 var scenario = EmailBusinessScenario.ReviewerSelection_PMApplyApproving; // 69 - var trialEmailConfig = _emailNoticeConfigrepository.Where(t =>t.BusinessScenarioEnum == scenario && t.IsEnable).FirstOrDefault(); + var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable && t.IsAutoSend).FirstOrDefault(); - if (trialEmailConfig != null) + if (emailConfig != null) { - await SendReviewerSelectionEmail(trialEmailConfig, scenario, trialId, enrollIdList); + await SendReviewerSelectionEmail(emailConfig, trialId, enrollIdList); } } @@ -435,18 +435,18 @@ public class ImageConsumer( // 设置邮件场景 var scenario = EmailBusinessScenario.ReviewerSelection_SPMCPMApproval; // 70 - var trialEmailConfig = _emailNoticeConfigrepository.Where(t =>t.BusinessScenarioEnum == scenario && t.IsEnable).FirstOrDefault(); + var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable && t.IsAutoSend).FirstOrDefault(); - if (trialEmailConfig != null) + if (emailConfig != null) { - await SendReviewerSelectionEmail(trialEmailConfig, scenario, trialId, enrollIdList); + await SendReviewerSelectionEmail(emailConfig, trialId, enrollIdList); } } /// /// 发送阅片人筛选相关邮件的通用方法 /// - private async Task SendReviewerSelectionEmail(EmailNoticeConfig emailNoticeConfig, EmailBusinessScenario scenario, Guid trialId, List enrollIdList) + private async Task SendReviewerSelectionEmail(EmailNoticeConfig emailNoticeConfig, Guid trialId, List enrollIdList) { var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; @@ -454,7 +454,7 @@ public class ImageConsumer( var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialId); // 根据不同场景获取不同角色的用户 - var trialUser = await _trialUseRoleRepository.Where(x => x.TrialId == trialId &&!x.TrialUser.IsDeleted).Include(x => x.UserRole).Select(x => x.UserRole).ToListAsync(); + var trialUser = await _trialUseRoleRepository.Where(x => x.TrialId == trialId && !x.TrialUser.IsDeleted).Include(x => x.UserRole).Select(x => x.UserRole).ToListAsync(); // 根据场景确定收件人 List toUserList = new List(); @@ -508,7 +508,7 @@ public class ImageConsumer( return (topicStr, htmlBodyStr); }; - await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(emailNoticeConfig, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } From 0cf7e5fdddf9d0acb2ad868acb0d4d94213a537c Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Wed, 7 May 2025 15:25:56 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=A4=87=E6=B3=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IRaCIS.Core.Application.xml | 22 ++++++++++++++- .../Consumer/SiteSurverEmailConsumer.cs | 27 ++++++++++--------- 2 files changed, 35 insertions(+), 14 deletions(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 3e29f92ca..30876d0b1 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -14087,6 +14087,26 @@ 接口请求参考文档:https://www.koudingke.cn/docs/zh-Hans/net-lib-docs/latest/RestSharp/Usage/Usage + + + 系统默认邮件 + 项目默认邮件 (不用添加到项目邮件配置中,才发送) + + + + + + + + + + 项目手动邮件 (需要添加到项目邮件配置中,才发送) + + + + + + + 翻译字典 @@ -14199,7 +14219,7 @@ 处理SPM审批阅片人筛选事件 - + 发送阅片人筛选相关邮件的通用方法 diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs index 837084a71..fe3ea9d4d 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs @@ -191,13 +191,13 @@ public class SiteSurveySPMSubmitedEventConsumer( var topicStr = string.Format(input.topicStr, trialInfo.ResearchProgramNo); var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr), toUserName, - siteInfo.TrialSiteCode, - siteInfo.TrialSiteAliasName, + siteInfo.TrialSiteCode, //中心编号 + siteInfo.TrialSiteAliasName,//中心名称 - siteSurveyInfo.UserName, - siteSurveyInfo.Email, - siteSurveyInfo.Phone, - _systemEmailConfig.SiteUrl + siteSurveyInfo.UserName, //联系人 + siteSurveyInfo.Email, //联系邮箱 + siteSurveyInfo.Phone, //联系电话 + _systemEmailConfig.SiteUrl ); return (topicStr, htmlBodyStr); @@ -234,7 +234,7 @@ public class SiteSurverRejectedEventConsumer( var trialSiteSurveyId = context.Message.TrialSiteSurveyId; - var siteSurveyInfo = _trialSiteSurveyRepository.Where(t => t.Id == trialSiteSurveyId).FirstOrDefault().IfNullThrowException(); + var siteSurveyInfo = _trialSiteSurveyRepository.Where(t => t.Id == trialSiteSurveyId ,ignoreQueryFilters:true).FirstOrDefault().IfNullThrowException(); var trialId = siteSurveyInfo.TrialId; @@ -304,12 +304,13 @@ public class SiteSurverRejectedEventConsumer( var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr), toUserName, trialInfo.TrialCode, - trialInfo.ResearchProgramNo, - trialInfo.ExperimentName, - siteInfo.TrialSiteCode, - siteInfo.TrialSiteAliasName, - siteSurveyInfo.LatestBackReason, - _systemEmailConfig.SiteUrl, + trialInfo.ResearchProgramNo, + trialInfo.ExperimentName, + + siteInfo.TrialSiteCode, //中心编号 + siteInfo.TrialSiteAliasName,//中心名称 + siteSurveyInfo.LatestBackReason, //驳回原因 + _systemEmailConfig.SiteUrl, //链接 (siteSurveyInfo.State == TrialSiteSurveyEnum.ToSubmit ? "inline - block" : "none") );