From 30bcfcc675c0564ee9d9d44c63f57e25c9939993 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Wed, 7 May 2025 13:34:49 +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 +- .../Consumer/Dto/SendImageReuploadEmailDto.cs | 2 +- .../MassTransit/Consumer/ImageConsumer.cs | 99 +++++++++++++------ .../Interceptor/AddDomainExt.cs | 2 +- 4 files changed, 70 insertions(+), 35 deletions(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 08ba71b3c..870d100f4 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -14184,7 +14184,7 @@ 处理已阅任务重阅申请事件 - + 发送影像重传相关邮件的通用方法 diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/Dto/SendImageReuploadEmailDto.cs b/IRaCIS.Core.Application/MassTransit/Consumer/Dto/SendImageReuploadEmailDto.cs index 36ac5aa0a..539d06827 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/Dto/SendImageReuploadEmailDto.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/Dto/SendImageReuploadEmailDto.cs @@ -14,7 +14,7 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer.Dto public SubjectVisit SubjectVisit { get; set; } - public Guid trialId { get; set; } + public Guid TrialId { get; set; } public List UserTypes { get; set; } = null; public ImageBackStateEnum ImageBackStateEnum { get; set; } = ImageBackStateEnum.None; diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs index dda36fa80..f3203c663 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs @@ -103,7 +103,16 @@ public class ImageConsumer( if (trialEmailConfig != null) { - await SendImageReuploadEmail(trialEmailConfig, scenario, subjectVisit, trialId, userTypes, context.Message.ImageBackState); + var inDto = new SendImageReuploadEmailInDto + { + EmailNoticeConfig = trialEmailConfig, + Scenario = scenario, + SubjectVisit = subjectVisit, + TrialId = trialId, + UserTypes = userTypes, + ImageBackStateEnum = context.Message.ImageBackState + }; + await SendImageReuploadEmail(inDto); } } @@ -138,7 +147,15 @@ public class ImageConsumer( if (trialEmailConfig != null) { - await SendImageReuploadEmail(trialEmailConfig, scenario, subjectVisit, trialId); + var inDto = new SendImageReuploadEmailInDto + { + EmailNoticeConfig = trialEmailConfig, + Scenario = scenario, + SubjectVisit = subjectVisit, + TrialId = trialId, + RequestBackStateEnum= context.Message.RequestBackState, + }; + await SendImageReuploadEmail(inDto); } } @@ -172,7 +189,14 @@ public class ImageConsumer( if (trialEmailConfig != null) { - await SendImageReuploadEmail(trialEmailConfig, scenario, subjectVisit, trialId); + var inDto = new SendImageReuploadEmailInDto + { + EmailNoticeConfig = trialEmailConfig, + Scenario = scenario, + SubjectVisit = subjectVisit, + TrialId = trialId + }; + await SendImageReuploadEmail(inDto); } } @@ -219,42 +243,47 @@ public class ImageConsumer( if (trialEmailConfig != null) { - await SendImageReuploadEmail(trialEmailConfig, scenario, subjectVisit, trialId); + var inDto = new SendImageReuploadEmailInDto + { + EmailNoticeConfig = trialEmailConfig, + Scenario = scenario, + SubjectVisit = subjectVisit, + TrialId = trialId + }; + await SendImageReuploadEmail(inDto); } } /// /// 发送影像重传相关邮件的通用方法 /// - private async Task SendImageReuploadEmail(EmailNoticeConfig emailNoticeConfig, EmailBusinessScenario scenario, SubjectVisit subjectVisit, Guid trialId,List userTypes=null, ImageBackStateEnum imageBackStateEnum= ImageBackStateEnum.None) + private async Task SendImageReuploadEmail(SendImageReuploadEmailInDto inDto) { - - SendImageReuploadEmailInDto inDto = new SendImageReuploadEmailInDto() { }; var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; // 获取项目信息 - var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialId); + var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == inDto.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 == inDto.TrialId && !x.TrialUser.IsDeleted).Include(x => x.UserRole).Select(x => x.UserRole).ToListAsync(); // 根据场景确定收件人 List toUserList = new List(); List ccUserList = new List(); - var emailNoticeUserList = await _emailNoticeUserTypeRepository.Where(x => x.EmailNoticeConfigId == emailNoticeConfig.Id).ToListAsync(); + var emailNoticeUserList = await _emailNoticeUserTypeRepository.Where(x => x.EmailNoticeConfigId == inDto.EmailNoticeConfig.Id).ToListAsync(); var userTypeEnum= emailNoticeUserList.Select(x => x.UserType).ToList(); - if (userTypes != null) + if (inDto.UserTypes != null) { - userTypeEnum = userTypes; + userTypeEnum = inDto.UserTypes; } var crcUserList =new List(){ }; if (userTypeEnum.Contains(UserTypeEnum.ClinicalResearchCoordinator)) { - crcUserList=await _trialSiteRepository.Where(x=>x.Id== 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 (userTypes == null) + if (inDto.UserTypes == null) { var toList = emailNoticeUserList.Where(x => x.EmailUserType == EmailUserType.To && x.UserType != UserTypeEnum.ClinicalResearchCoordinator).Select(x => x.UserType).ToList(); @@ -267,11 +296,11 @@ public class ImageConsumer( } else { - var toList = userTypes.Where(x => x != UserTypeEnum.ClinicalResearchCoordinator).ToList(); + var toList = inDto.UserTypes.Where(x => x != UserTypeEnum.ClinicalResearchCoordinator).ToList(); toUserList = trialUser.Where(x => toList.Contains(x.UserTypeEnum)).ToList(); - if (userTypes.Any(x => x == UserTypeEnum.ClinicalResearchCoordinator)) + if (inDto.UserTypes.Any(x => x == UserTypeEnum.ClinicalResearchCoordinator)) { toUserList.AddRange(crcUserList); } @@ -306,32 +335,38 @@ public class ImageConsumer( messageToSend.Cc.Add(new MailboxAddress(String.Empty, ccUser.EMail)); } - - - var dictionValue = await CommonEmailHelper.TranslationDictionary(new TranslationDictionaryDto() + List dictionaryDtos = new List() { + new DictionaryDto (){DictionaryCode= "YesOrNo",EnumValue=inDto.SubjectVisit.IsUrgent.ToString(), }, //是否加急 + }; + if (inDto.Scenario == EmailBusinessScenario.DataReconciliation_PMApprovalRe_Uploading) { - - DictionaryRepository = _dictionaryRepository, - IsEn_US = isEn_US, - DictionaryList = new List() - { - new DictionaryDto (){DictionaryCode= "YesOrNo",EnumValue=subjectVisit.IsUrgent.ToString(), }, //是否加急 - new DictionaryDto (){DictionaryCode= "ImageBackState",EnumValue=imageBackStateEnum.GetEnumInt(), }, //审批结果 - + dictionaryDtos.Add(new DictionaryDto() { DictionaryCode = "RequestBackState", EnumValue = inDto.RequestBackStateEnum.GetEnumInt(), }); } - }); + else + { + dictionaryDtos.Add(new DictionaryDto() { DictionaryCode = "ImageBackState", EnumValue = inDto.ImageBackStateEnum.GetEnumInt(), });//审批结果 + } + + + var dictionValue = await CommonEmailHelper.TranslationDictionary(new TranslationDictionaryDto() + { + + DictionaryRepository = _dictionaryRepository, + IsEn_US = isEn_US, + DictionaryList = dictionaryDtos + }); // 格式化邮件内容 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 subjectCode = inDto.SubjectVisit.Subject.Code; + var topicStr = string.Format(input.topicStr, trialInfo.ResearchProgramNo, subjectCode, inDto.SubjectVisit.VisitName); var htmlBodyStr = string.Format( CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr), userinfo.FullName, // 用户名 {0} trialInfo.ExperimentName, // 项目 {1} subjectCode, // 受试者 {2} - subjectVisit.VisitName, // 访视 {3} + inDto.SubjectVisit.VisitName, // 访视 {3} dictionValue[0], // 是否加急 {4} dictionValue[1], // 审批结果 {5} _systemEmailConfig.SiteUrl // 链接 {6} @@ -340,7 +375,7 @@ public class ImageConsumer( return (topicStr, htmlBodyStr); }; - await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, inDto.Scenario, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } diff --git a/IRaCIS.Core.Infra.EFCore/Interceptor/AddDomainExt.cs b/IRaCIS.Core.Infra.EFCore/Interceptor/AddDomainExt.cs index bfed6d4e2..b47f66f64 100644 --- a/IRaCIS.Core.Infra.EFCore/Interceptor/AddDomainExt.cs +++ b/IRaCIS.Core.Infra.EFCore/Interceptor/AddDomainExt.cs @@ -117,7 +117,7 @@ public static class DBContext_Ext // 重传影像 //CRC 申请 || PM审批的时候 if ((originRequestBackState == RequestBackStateEnum.NotRequest && subjectVisit.RequestBackState == RequestBackStateEnum.CRC_RequestBack) || - (originRequestBackState == RequestBackStateEnum.CRC_RequestBack && subjectVisit.RequestBackState != RequestBackStateEnum.CRC_RequestBack)) + (originRequestBackState == RequestBackStateEnum.CRC_RequestBack && (subjectVisit.RequestBackState == RequestBackStateEnum.PM_AgressBack || subjectVisit.RequestBackState == RequestBackStateEnum.PM_NotAgree ))) { subjectVisit.AddDomainEvent(new CheckReuploadEvent() { RequestBackState = subjectVisit.RequestBackState, SubjectVisitId = subjectVisit.Id }); }