diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/SubjectVisitQCAndCheckConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/SubjectVisitQCAndCheckConsumer.cs index 848030e8d..d443aea0a 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/SubjectVisitQCAndCheckConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/SubjectVisitQCAndCheckConsumer.cs @@ -739,113 +739,102 @@ public class QCClaimTaskEventConsumer( private readonly SystemEmailSendConfig _systemEmailConfig = systemEmailConfig.CurrentValue; public async Task Consume(ConsumeContext context) { - try + Log.Logger.Warning("发送(Code007,008) 【QC 领取了质控任务】邮件!!!" + context.Message.SubjectVisitId.ToString()); + Log.Logger.Warning("ID:" + context.Message.SubjectVisitId.ToString()+"完成"); + var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; + + + + var subjectVisitId = context.Message.SubjectVisitId; + + var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.Subject).Include(x => x.CurrentActionUser).FirstNotNullAsync(); + + var trialId = subjectVisit.TrialId; + + var scenario = context.Message.IsPd ? EmailBusinessScenario.PDVerification_PendingImageQC : EmailBusinessScenario.EligibilityVerification_PendingImageQC; + + var trialEmailConfig = _trialEmailNoticeConfigrepository.Where(t => t.TrialId == trialId && t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); + + if (trialEmailConfig != null) { - Log.Logger.Warning("发送(Code007,008) 【QC 领取了质控任务】邮件!!!" + context.Message.SubjectVisitId.ToString()); - Log.Logger.Warning("ID:" + context.Message.SubjectVisitId.ToString() + "完成"); - var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; + var subjectVisitList = await _subjectVisitRepository.Where(x => x.CurrentActionUserId == context.Message.CurrentActionUserId && x.TrialId == subjectVisit.TrialId).Include(x => x.Subject).ToListAsync(); - var subjectVisitId = context.Message.SubjectVisitId; - var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.Subject).Include(x => x.CurrentActionUser).FirstNotNullAsync(); + var trialUserList = await _trialUseRoleRepository.Where(x => x.TrialId == subjectVisit.TrialId && x.TrialUser.IsDeleted == false).Include(x => x.UserRole).Select(x => x.UserRole).ToListAsync(); - var trialId = subjectVisit.TrialId; - var scenario = context.Message.IsPd ? EmailBusinessScenario.PDVerification_PendingImageQC : EmailBusinessScenario.EligibilityVerification_PendingImageQC; + var pmandAPm = trialUserList.Where(x => x.UserTypeEnum == UserTypeEnum.APM || x.UserTypeEnum == UserTypeEnum.ProjectManager).ToList(); - var trialEmailConfig = _trialEmailNoticeConfigrepository.Where(t => t.TrialId == trialId && t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); - if (trialEmailConfig != null) + var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == subjectVisit.TrialId); + + + var userinfo = subjectVisit.CurrentActionUser; + if (userinfo == null) { + return; + } + //重新设置当前发送邮件的语言 + var workLanguage = _userRoleRepository.Where(t => t.Id == userinfo.Id).Select(t => t.IdentityUser.UserWorkLanguage).First(); + isEn_US = workLanguage == UserWorkLanguage.US; - var subjectVisitList = await _subjectVisitRepository.Where(x => x.CurrentActionUserId == context.Message.CurrentActionUserId && x.TrialId == subjectVisit.TrialId).Include(x => x.Subject).ToListAsync(); + var messageToSend = new MimeMessage(); + //发件地址 + messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail)); + messageToSend.To.Add(new MailboxAddress(userinfo.FullName, userinfo.EMail)); + foreach (var pm in pmandAPm) + { + messageToSend.Cc.Add(new MailboxAddress(pm.FullName, pm.EMail)); + } + var companyName = isEn_US ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN; - var trialUserList = await _trialUseRoleRepository.Where(x => x.TrialId == subjectVisit.TrialId && x.TrialUser.IsDeleted == false).Include(x => x.UserRole).Select(x => x.UserRole).ToListAsync(); + var auditStateCode = "AuditStatePE"; + if (trialInfo.QCProcessEnum == TrialQCProcess.DoubleAudit) + { + auditStateCode = "AuditStateRC"; + } - var pmandAPm = trialUserList.Where(x => x.UserTypeEnum == UserTypeEnum.APM || x.UserTypeEnum == UserTypeEnum.ProjectManager).ToList(); - - - var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == subjectVisit.TrialId); - - - var userinfo = subjectVisit.CurrentActionUser; - if (userinfo == null) - { - return; - } - - //重新设置当前发送邮件的语言 - var workLanguage = _userRoleRepository.Where(t => t.Id == userinfo.Id).Select(t => t.IdentityUser.UserWorkLanguage).First(); - isEn_US = workLanguage == UserWorkLanguage.US; - - var messageToSend = new MimeMessage(); - //发件地址 - messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail)); - messageToSend.To.Add(new MailboxAddress(userinfo.FullName, userinfo.EMail)); - - foreach (var pm in pmandAPm) - { - messageToSend.Cc.Add(new MailboxAddress(pm.FullName, pm.EMail)); - } - var companyName = isEn_US ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN; - - var auditStateCode = "AuditStatePE"; - - if (trialInfo.QCProcessEnum == TrialQCProcess.DoubleAudit) - { - auditStateCode = "AuditStateRC"; - } - - var dictionValue = await CommonEmailHelper.TranslationDictionary(new TranslationDictionaryDto() - { - DictionaryRepository = _dictionaryRepository, - IsEn_US = isEn_US, - DictionaryList = new List() + var dictionValue = await CommonEmailHelper.TranslationDictionary(new TranslationDictionaryDto() + { + DictionaryRepository = _dictionaryRepository, + IsEn_US = isEn_US, + DictionaryList = new List() { new DictionaryDto (){DictionaryCode= auditStateCode,EnumValue=subjectVisit.AuditState.GetEnumInt(), }, //审核状态 } - }); + }); - var subjectcodes = subjectVisitList.Select(x => x.Subject.Code).Distinct().ToList(); - var visitnames = subjectVisitList.Select(x => x.VisitName).Distinct().ToList(); + var subjectcodes = subjectVisitList.Select(x => x.Subject.Code).Distinct().ToList(); + var visitnames = subjectVisitList.Select(x => x.VisitName).Distinct().ToList(); - 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, workLanguage), - userinfo.FullName, // 用户名 {0} - trialInfo.ExperimentName, // 项目 {1} - string.Join(',', subjectcodes), // 受试者 {2} - string.Join(',', visitnames), // 访视 {3} - dictionValue[0], // 审核状态 {4} + 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, workLanguage), + userinfo.FullName, // 用户名 {0} + trialInfo.ExperimentName, // 项目 {1} + string.Join(',', subjectcodes), // 受试者 {2} + string.Join(',', visitnames), // 访视 {3} + dictionValue[0], // 审核状态 {4} - _systemEmailConfig.SiteUrl // 链接 {5} - ); + _systemEmailConfig.SiteUrl // 链接 {5} + ); - return (topicStr, htmlBodyStr); - }; + return (topicStr, htmlBodyStr); + }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, messageToSend, emailConfigFunc, workLanguage); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, messageToSend, emailConfigFunc, workLanguage); - await SendEmailHelper.SendTrialEmailAsync(messageToSend, trialInfo); - } + await SendEmailHelper.SendTrialEmailAsync(messageToSend, trialInfo); } - catch (Exception ex) - { - Console.WriteLine("发送邮件错误"); - Console.WriteLine(context.Message.ToString()); - Console.WriteLine(ex.ToString()); - throw; - } - } } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index b02d7d393..6e45e99d9 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -85,11 +85,6 @@ namespace IRaCIS.Core.Application.Service IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer, IFusionCache _fusionCache) : BaseService, IReadingImageTaskService { - public async Task Test() - { - var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == Guid.Parse("01000000-ac12-0242-dcb8-08dec6bda60c")).Include(x => x.Subject).Include(x => x.CurrentActionUser).FirstNotNullAsync(); - } - /// /// 获取报告图表数据 ///