From 276ad83080c11075009208e0e0cb18462da7b994 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Wed, 7 May 2025 10:21:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IRaCIS.Core.Application.xml | 2 +- .../MassTransit/Consumer/ImageConsumer.cs | 93 +++++++++++-------- 2 files changed, 56 insertions(+), 39 deletions(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index edbe776fa..eb371f66e 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -14159,7 +14159,7 @@ 影像重传和阅片人筛选相关邮件发送 - + 影像重传和阅片人筛选相关邮件发送 diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs index f66cd2f73..5da9c6ee5 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs @@ -65,7 +65,7 @@ public class ImageConsumer( var subjectVisitId = context.Message.SubjectVisitId; var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.Subject).FirstNotNullAsync(); var trialId = subjectVisit.TrialId; - + List userTypes = null; // 根据申请角色和状态确定邮件场景 EmailBusinessScenario scenario; if (context.Message.ImageBackState == ImageBackStateEnum.None) @@ -87,6 +87,14 @@ public class ImageConsumer( else { scenario = EmailBusinessScenario.ImageReUpload_PMApprovalRe_Uploading; // 66 + if (context.Message.ApplyUserRole == ImageBackApplyEnum.IQCRequestBack) + { + userTypes = new List() { UserTypeEnum.IQC }; + } + else if (context.Message.ApplyUserRole == ImageBackApplyEnum.CRCRequestBack) + { + userTypes = new List() { UserTypeEnum.ClinicalResearchCoordinator }; + } } @@ -94,7 +102,7 @@ public class ImageConsumer( if (trialEmailConfig != null) { - await SendImageReuploadEmail(trialEmailConfig, scenario, subjectVisit, trialId); + await SendImageReuploadEmail(trialEmailConfig, scenario, subjectVisit, trialId, userTypes, context.Message.ImageBackState); } } @@ -216,7 +224,7 @@ public class ImageConsumer( /// /// 发送影像重传相关邮件的通用方法 /// - private async Task SendImageReuploadEmail(EmailNoticeConfig emailNoticeConfig, EmailBusinessScenario scenario, SubjectVisit subjectVisit, Guid trialId) + private async Task SendImageReuploadEmail(EmailNoticeConfig emailNoticeConfig, EmailBusinessScenario scenario, SubjectVisit subjectVisit, Guid trialId,List userTypes=null, ImageBackStateEnum imageBackStateEnum= ImageBackStateEnum.None) { var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; @@ -231,23 +239,42 @@ public class ImageConsumer( List ccUserList = new List(); var emailNoticeUserList = await _emailNoticeUserTypeRepository.Where(x => x.EmailNoticeConfigId == emailNoticeConfig.Id).ToListAsync(); - + var userTypeEnum= emailNoticeUserList.Select(x => x.UserType).ToList(); + if (userTypes != null) + { + userTypeEnum = userTypes; + } var crcUserList =new List(){ }; - if (emailNoticeUserList.Select(x => x.UserType).Contains(UserTypeEnum.ClinicalResearchCoordinator)) + if (userTypeEnum.Contains(UserTypeEnum.ClinicalResearchCoordinator)) { crcUserList=await _trialSiteRepository.Where(x=>x.Id== subjectVisit.TrialSiteId).SelectMany(x=>x.CRCUserList.Select(y => y.UserRole)).ToListAsync(); } - var toList = emailNoticeUserList.Where(x => x.EmailUserType == EmailUserType.To&& x.UserType != UserTypeEnum.ClinicalResearchCoordinator).Select(x=>x.UserType).ToList(); - - toUserList = trialUser.Where(x => toList.Contains(x.UserTypeEnum) ).ToList(); - - if (emailNoticeUserList.Any(x => x.EmailUserType == EmailUserType.To && x.UserType == UserTypeEnum.ClinicalResearchCoordinator)) + if (userTypes == null) { - toUserList.AddRange(crcUserList); + var toList = emailNoticeUserList.Where(x => x.EmailUserType == EmailUserType.To && x.UserType != UserTypeEnum.ClinicalResearchCoordinator).Select(x => x.UserType).ToList(); + + toUserList = trialUser.Where(x => toList.Contains(x.UserTypeEnum)).ToList(); + + if (emailNoticeUserList.Any(x => x.EmailUserType == EmailUserType.To && x.UserType == UserTypeEnum.ClinicalResearchCoordinator)) + { + toUserList.AddRange(crcUserList); + } + } + else + { + var toList = userTypes.Where(x => x != UserTypeEnum.ClinicalResearchCoordinator).ToList(); + + toUserList = trialUser.Where(x => toList.Contains(x.UserTypeEnum)).ToList(); + + if (userTypes.Any(x => x == UserTypeEnum.ClinicalResearchCoordinator)) + { + toUserList.AddRange(crcUserList); + } } - 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(); @@ -275,33 +302,23 @@ public class ImageConsumer( messageToSend.Cc.Add(new MailboxAddress(String.Empty, ccUser.EMail)); } - string isUrgent = string.Empty; + - if (isEn_US) + var dictionValue = await CommonEmailHelper.TranslationDictionary(new TranslationDictionaryDto() { - if (subjectVisit.IsUrgent) - { - isUrgent = "yes"; - } - else - { - isUrgent = "no"; - } - } - else - { - if (subjectVisit.IsUrgent) - { - isUrgent = "是"; - } - else - { - isUrgent = "否"; - } - } - // 格式化邮件内容 - Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input => + DictionaryRepository = _dictionaryRepository, + IsEn_US = isEn_US, + DictionaryList = new List() + { + new DictionaryDto (){DictionaryCode= "YesOrNo",EnumValue=subjectVisit.IsUrgent.ToString(), }, //是否加急 + new DictionaryDto (){DictionaryCode= "ImageBackState",EnumValue=imageBackStateEnum.GetEnumInt(), }, //审批结果 + + } + }); + + // 格式化邮件内容 + 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); @@ -311,8 +328,8 @@ public class ImageConsumer( trialInfo.ExperimentName, // 项目 {1} subjectCode, // 受试者 {2} subjectVisit.VisitName, // 访视 {3} - isUrgent, // 是否加急 {4} - "", // 预留 {5} + dictionValue[0], // 是否加急 {4} + dictionValue[1], // 审批结果 {5} _systemEmailConfig.SiteUrl // 链接 {6} );