From a88ef531042579753a8102d1564f4e8ff261a6b4 Mon Sep 17 00:00:00 2001
From: he <109787524@qq.com>
Date: Mon, 14 Oct 2024 15:31:13 +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
---
.../MassTransit/Consumer/CommonEmailHelper.cs | 76 +++++++++++++++++--
.../Consumer/ReadingRelationEmailConsumer.cs | 55 +++++++++-----
2 files changed, 107 insertions(+), 24 deletions(-)
diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs b/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs
index 1c96a3b31..449fea5a4 100644
--- a/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs
+++ b/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs
@@ -1,4 +1,5 @@
-using DocumentFormat.OpenXml;
+using Amazon.Runtime.Internal.Util;
+using DocumentFormat.OpenXml;
using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Infrastructure;
using MimeKit;
@@ -65,11 +66,36 @@ public static class CommonEmailHelper
///
///
///
- public static string TranslationDictionary(TranslationDictionaryDto inDto)
+ public static async Task> TranslationDictionary(TranslationDictionaryDto inDto)
{
- var dic = inDto.DictionaryRepository.Where(x => x.Parent.Code == inDto.DictionaryCode && x.Code == inDto.EnumValue).FirstOrDefault();
- return dic == null ? string.Empty : (inDto.IsEn_US ? dic.Value : dic.ValueCN);
+ var dictionaryCodelist = inDto.DictionaryList.Select(x => x.DictionaryCode).ToList();
+
+ var enumValueList = inDto.DictionaryList.Select(x => x.EnumValue).ToList();
+
+
+ var dicList =await inDto.DictionaryRepository.Where(x => dictionaryCodelist.Contains(x.Parent.Code) && enumValueList.Contains(x.Code)).Select(x=>new DictionaryData() {
+
+ DictionaryCode=x.Parent.Code,
+ EnumValue=x.Code,
+ Value=x.Value,
+ ValueCN=x.ValueCN
+ }).ToListAsync();
+
+
+ List result = new List();
+
+ inDto.DictionaryList.ForEach(x =>
+ {
+
+ var dic = dicList.Where(y => y.EnumValue == x.EnumValue && y.DictionaryCode == x.DictionaryCode).FirstOrDefault();
+ result.Add(dic == null ? string.Empty : (inDto.IsEn_US ? dic.Value : dic.ValueCN));
+ });
+
+ return result;
+
+
+
}
}
@@ -84,6 +110,39 @@ public class TranslationDictionaryDto
///
public IRepository DictionaryRepository { get; set; }
+ ///
+ /// 是否是英文
+ ///
+ public bool IsEn_US { get; set; }
+
+ ///
+ /// 字典
+ ///
+ public List DictionaryList { get; set; } = new List();
+
+
+
+}
+
+///
+/// 字典对象
+///
+public class DictionaryDto
+{
+ ///
+ /// 字典Code
+ ///
+ public string DictionaryCode { get; set; }
+
+ ///
+ /// 枚举值
+ ///
+ public string EnumValue { get; set; }
+}
+
+
+public class DictionaryData
+{
///
/// 字典Code
///
@@ -95,8 +154,13 @@ public class TranslationDictionaryDto
public string EnumValue { get; set; }
///
- /// 是否是英文
+ /// 值
///
- public bool IsEn_US { get; set; }
+ public string Value { get; set; }
+
+ ///
+ /// 返回
+ ///
+ public string ValueCN { get; set; }
}
diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/ReadingRelationEmailConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/ReadingRelationEmailConsumer.cs
index 4dab467c4..57eb6a0ba 100644
--- a/IRaCIS.Core.Application/MassTransit/Consumer/ReadingRelationEmailConsumer.cs
+++ b/IRaCIS.Core.Application/MassTransit/Consumer/ReadingRelationEmailConsumer.cs
@@ -4,6 +4,7 @@ using IRaCIS.Core.Domain;
using IRaCIS.Core.Domain.BaseModel;
using IRaCIS.Core.Domain.Models;
using IRaCIS.Core.Domain.Share;
+using IRaCIS.Core.Infra.EFCore.Common;
using MassTransit;
using Microsoft.Extensions.Options;
using MimeKit;
@@ -24,7 +25,8 @@ public class UrgentMedicalReviewAddedEventConsumer(
IRepository _taskMedicalReviewRepository,
IRepository _trialRepository,
IRepository _readingQuestionCriterionTrialRepository,
- IRepository _trialSiteSurveyRepository,
+ IRepository _visitTaskRepository,
+ IRepository _dictionaryRepository,
IRepository _emailNoticeConfigrepository,
IOptionsMonitor systemEmailConfig
) : IConsumer
@@ -39,6 +41,7 @@ public class UrgentMedicalReviewAddedEventConsumer(
///
public async Task Consume(ConsumeContext context)
{
+ Console.WriteLine("发送【加急的医学反馈任务 通知MIM】邮件!!!");
var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US;
var medicalReviewId = context.Message.MedicalReviewId;
@@ -55,6 +58,7 @@ public class UrgentMedicalReviewAddedEventConsumer(
var criterion = await _readingQuestionCriterionTrialRepository.FirstOrDefaultAsync(x => x.Id == medicalReview.VisitTask.TrialReadingCriterionId);
var userinfo = await _userRepository.Where(x => x.Id == medicalReview.MedicalManagerUserId).FirstOrDefaultAsync();
+ var taskInfo = await _visitTaskRepository.Where(x => x.Id == medicalReview.VisitTaskId).Include(x=>x.SourceSubjectVisit).Include(x => x.ReadModule).Include(x => x.Subject).FirstNotNullAsync();
var messageToSend = new MimeMessage();
@@ -62,29 +66,44 @@ public class UrgentMedicalReviewAddedEventConsumer(
messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail));
messageToSend.To.Add(new MailboxAddress(String.Empty, userinfo.EMail));
-
-
var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == medicalReview.TrialId);
var companyName = isEn_US ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN;
- Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input =>
+
+ var dictionValue = await CommonEmailHelper.TranslationDictionary(new TranslationDictionaryDto()
{
- var topicStr = string.Format(input.topicStr, companyName, trialInfo.ResearchProgramNo);
- var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr),
- userinfo.FullName, // 用户名
- trialInfo.ExperimentName , // 项目
- criterion.CriterionName // 阅片标准
- // 受试者
- // 访视
- // 任务类型
- // 阅片人是否同意
- // 审核状态
- // 是否加急
- );
+ DictionaryRepository = _dictionaryRepository,
+ IsEn_US = isEn_US,
- return (topicStr, htmlBodyStr);
- };
+
+ DictionaryList = new List()
+ {
+ new DictionaryDto (){DictionaryCode= "ReadingCategory",EnumValue=taskInfo.ReadingCategory.GetEnumInt(), },
+ new DictionaryDto (){DictionaryCode= "MedicalReviewDoctorUserIdea",EnumValue=medicalReview.DoctorUserIdeaEnum.GetEnumInt(), },
+ new DictionaryDto (){DictionaryCode= "MedicalReviewAuditState",EnumValue=medicalReview.AuditState.GetEnumInt(), },
+ new DictionaryDto (){DictionaryCode= "YesOrNo",EnumValue=taskInfo.IsUrgent.ToString(), }
+ }
+ }) ;
+
+ Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input =>
+ {
+ var topicStr = string.Format(input.topicStr, companyName, trialInfo.ResearchProgramNo);
+ var htmlBodyStr = string.Format(
+ CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr),
+ userinfo.FullName, // 用户名
+ trialInfo.ExperimentName, // 项目
+ criterion.CriterionName, // 阅片标准
+ taskInfo.BlindSubjectCode.IsNullOrEmpty() ? taskInfo.Subject.Code : taskInfo.BlindSubjectCode, // 受试者
+ taskInfo.TaskBlindName, // 访视
+ dictionValue[0], // 任务类型
+ dictionValue[1], // 阅片人是否同意
+ dictionValue[2], // 审核状态
+ dictionValue[3] // 是否加急
+ );
+
+ return (topicStr, htmlBodyStr);
+ };
await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, EmailBusinessScenario.SiteSurveyReject, messageToSend, emailConfigFunc);