From 91951be107abc0bfa76f396b4f602e937b7bdace Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Tue, 6 May 2025 15:34:20 +0800 Subject: [PATCH] =?UTF-8?q?=E9=82=AE=E4=BB=B6=E5=8F=91=E9=80=81=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IRaCIS.Core.Application.xml | 50 ++++++++++++ .../MassTransit/Consumer/ImageConsumer.cs | 81 ++++++++++++------- 2 files changed, 103 insertions(+), 28 deletions(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index c150d2e5d..edbe776fa 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -14154,6 +14154,56 @@ 构造函数注入 + + + 影像重传和阅片人筛选相关邮件发送 + + + + + 影像重传和阅片人筛选相关邮件发送 + + + + + 处理直接申请流程的重传事件 + + + + + 处理一致性核查申请重传事件 + + + + + 处理质疑CRC申请重传事件 + + + + + 处理已阅任务重阅申请事件 + + + + + 发送影像重传相关邮件的通用方法 + + + + + 处理PM申请阅片人筛选事件 + + + + + 处理SPM审批阅片人筛选事件 + + + + + 发送阅片人筛选相关邮件的通用方法 + + 加急的医学反馈任务 通知MIM diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs index 411e85701..ee8171175 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs @@ -41,7 +41,7 @@ public class ImageConsumer( IRepository _visitTaskRepository, IRepository _readModuleRepository, IRepository _dictionaryRepository, - IRepository _trialEmailNoticeConfigrepository, + IRepository _emailNoticeConfigrepository, IOptionsMonitor systemEmailConfig) : IConsumer, IConsumer, @@ -88,7 +88,7 @@ public class ImageConsumer( } - var trialEmailConfig = _trialEmailNoticeConfigrepository.Where(t => t.TrialId == trialId && t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); + var trialEmailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable).FirstOrDefault(); if (trialEmailConfig != null) { @@ -122,7 +122,7 @@ public class ImageConsumer( return; // 其他状态不发送邮件 } - var trialEmailConfig = _trialEmailNoticeConfigrepository.Where(t => t.TrialId == trialId && t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); + var trialEmailConfig = _emailNoticeConfigrepository.Where(t =>t.BusinessScenarioEnum == scenario && t.IsEnable).FirstOrDefault(); if (trialEmailConfig != null) { @@ -156,7 +156,7 @@ public class ImageConsumer( return; // 其他状态不发送邮件 } - var trialEmailConfig = _trialEmailNoticeConfigrepository.Where(t => t.TrialId == trialId && t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); + var trialEmailConfig = _emailNoticeConfigrepository.Where(t =>t.BusinessScenarioEnum == scenario && t.IsEnable).FirstOrDefault(); if (trialEmailConfig != null) { @@ -203,7 +203,7 @@ public class ImageConsumer( return; // 其他状态不发送邮件 } - var trialEmailConfig = _trialEmailNoticeConfigrepository.Where(t => t.TrialId == trialId && t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); + var trialEmailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable).FirstOrDefault(); if (trialEmailConfig != null) { @@ -214,7 +214,7 @@ public class ImageConsumer( /// /// 发送影像重传相关邮件的通用方法 /// - private async Task SendImageReuploadEmail(TrialEmailNoticeConfig trialEmailConfig, EmailBusinessScenario scenario, SubjectVisit subjectVisit, Guid trialId) + private async Task SendImageReuploadEmail(EmailNoticeConfig trialEmailConfig, EmailBusinessScenario scenario, SubjectVisit subjectVisit, Guid trialId) { var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; @@ -295,26 +295,51 @@ public class ImageConsumer( messageToSend.Cc.Add(new MailboxAddress(String.Empty, ccUser.EMail)); } - // 格式化邮件内容 - Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input => + string isUrgent = string.Empty; + + if (isEn_US) { - var subjectCode = subjectVisit.Subject.Code; - var topicStr = string.Format(input.topicStr, trialInfo.ResearchProgramNo, subjectCode, subjectVisit.VisitName); - var htmlBodyStr = string.Format( - CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr), - userinfo.FullName, // 用户名 {0} - trialInfo.ExperimentName, // 项目 {1} - subjectCode, // 受试者 {2} - subjectVisit.VisitName, // 访视 {3} - "是", // 是否加急 {4} - 固定为"是" - "", // 预留 {5} - _systemEmailConfig.SiteUrl // 链接 {6} - ); + if (subjectVisit.IsUrgent) + { + isUrgent = "yes"; + } + else + { + isUrgent = "no"; + } + } + else + { + if (subjectVisit.IsUrgent) + { + isUrgent = "是"; + } + else + { + isUrgent = "否"; + } + } - return (topicStr, htmlBodyStr); - }; + // 格式化邮件内容 + Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input => + { + var subjectCode = subjectVisit.Subject.Code; + var topicStr = string.Format(input.topicStr, trialInfo.ResearchProgramNo, subjectCode, subjectVisit.VisitName); + var htmlBodyStr = string.Format( + CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr), + userinfo.FullName, // 用户名 {0} + trialInfo.ExperimentName, // 项目 {1} + subjectCode, // 受试者 {2} + subjectVisit.VisitName, // 访视 {3} + isUrgent, // 是否加急 {4} + "", // 预留 {5} + _systemEmailConfig.SiteUrl // 链接 {6} + ); - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); + return (topicStr, htmlBodyStr); + }; + + await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } @@ -343,7 +368,7 @@ public class ImageConsumer( // 设置邮件场景 var scenario = EmailBusinessScenario.ReviewerSelection_PMApplyApproving; // 69 - var trialEmailConfig = _trialEmailNoticeConfigrepository.Where(t => t.TrialId == trialId && t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); + var trialEmailConfig = _emailNoticeConfigrepository.Where(t =>t.BusinessScenarioEnum == scenario && t.IsEnable).FirstOrDefault(); if (trialEmailConfig != null) { @@ -374,7 +399,7 @@ public class ImageConsumer( // 设置邮件场景 var scenario = EmailBusinessScenario.ReviewerSelection_SPMCPMApproval; // 70 - var trialEmailConfig = _trialEmailNoticeConfigrepository.Where(t => t.TrialId == trialId && t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); + var trialEmailConfig = _emailNoticeConfigrepository.Where(t =>t.BusinessScenarioEnum == scenario && t.IsEnable).FirstOrDefault(); if (trialEmailConfig != null) { @@ -385,7 +410,7 @@ public class ImageConsumer( /// /// 发送阅片人筛选相关邮件的通用方法 /// - private async Task SendReviewerSelectionEmail(TrialEmailNoticeConfig trialEmailConfig, EmailBusinessScenario scenario, Guid trialId, List enrollIdList) + private async Task SendReviewerSelectionEmail(EmailNoticeConfig trialEmailConfig, EmailBusinessScenario scenario, Guid trialId, List enrollIdList) { var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; @@ -441,7 +466,7 @@ public class ImageConsumer( trialInfo.ExperimentName, // 项目 {1} "", // 受试者 {2} - 阅片人筛选不涉及受试者 "", // 访视 {3} - 阅片人筛选不涉及访视 - "是", // 是否加急 {4} - 固定为"是" + "", // 是否加急 {4} "", // 预留 {5} _systemEmailConfig.SiteUrl // 链接 {6} ); @@ -449,7 +474,7 @@ public class ImageConsumer( return (topicStr, htmlBodyStr); }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); }