From 4688cb388e7316eeba25636b4a02540bf8041a25 Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Wed, 7 May 2025 13:51:32 +0800
Subject: [PATCH 1/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=A7=A6=E5=8F=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
IRaCIS.Core.Application/IRaCIS.Core.Application.xml | 10 +++++-----
IRaCIS.Core.Infra.EFCore/Interceptor/AddDomainExt.cs | 2 +-
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index 870d100f4..3e29f92ca 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -14251,12 +14251,12 @@
- 用户提交 发送邮件 通知SPM 或者PM
+ 用户提交 发送邮件 通知SPM 或者PM 项目默认邮件,不用添加到项目中,直接发送的
-
+
- 用户提交 发送邮件 通知SPM 或者PM
+ 用户提交 发送邮件 通知SPM 或者PM 项目默认邮件,不用添加到项目中,直接发送的
@@ -14264,7 +14264,7 @@
调研表初审通过,进行复审发送邮件
-
+
调研表初审通过,进行复审发送邮件
@@ -14274,7 +14274,7 @@
调研表驳回发送邮件 之前已有,需要迁移过来
-
+
调研表驳回发送邮件 之前已有,需要迁移过来
diff --git a/IRaCIS.Core.Infra.EFCore/Interceptor/AddDomainExt.cs b/IRaCIS.Core.Infra.EFCore/Interceptor/AddDomainExt.cs
index b47f66f64..8273325f7 100644
--- a/IRaCIS.Core.Infra.EFCore/Interceptor/AddDomainExt.cs
+++ b/IRaCIS.Core.Infra.EFCore/Interceptor/AddDomainExt.cs
@@ -459,7 +459,7 @@ public static class DBContext_Ext
}
if (pmApplyEnrollIdList.Count > 0)
{
- lastEnroll.AddDomainEvent(new ReviewerPMApplyEvent() { TrialId = lastEnroll.TrialId, EnrollIdList = spmApproveEnrollIdList });
+ lastEnroll.AddDomainEvent(new ReviewerPMApplyEvent() { TrialId = lastEnroll.TrialId, EnrollIdList = pmApplyEnrollIdList });
eventStoreList.AddRange(GetStoreEvents(lastEnroll.DomainEvents));
}
From 7fff48b07ab89b8273dca8f8e9e3dcbc93624728 Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Wed, 7 May 2025 14:17:16 +0800
Subject: [PATCH 2/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=82=AE=E4=BB=B6?=
=?UTF-8?q?=E9=85=8D=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Service/QC/QCOperationService.cs | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs
index 8ed741ac5..d354f10ea 100644
--- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs
+++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs
@@ -589,7 +589,7 @@ namespace IRaCIS.Core.Application.Image.QA
});
- if (sv.RequestBackState == RequestBackStateEnum.NotRequest || sv.RequestBackState == RequestBackStateEnum.PM_NotAgree)
+ if (sv.RequestBackState != RequestBackStateEnum.CRC_RequestBack)
{
sv.RequestBackState = RequestBackStateEnum.CRC_RequestBack;
@@ -663,16 +663,14 @@ namespace IRaCIS.Core.Application.Image.QA
return ResponseOutput.NotOk(_localizer["QCOperation_CannotRollback"]);
}
- //sv.CheckChallengeState = (int)CheckChanllengeTypeEnum.None;
- //sv.CheckState = CheckStateEnum.None;
- //sv.ChallengeState = (int)ChallengeStateEnum.No;
+ sv.RequestBackState = RequestBackStateEnum.PM_AgressBack;
sv.AuditState = AuditStateEnum.None;
sv.SubmitState = SubmitStateEnum.ToSubmit;
sv.ReadingStatus = ReadingStatusEnum.ImageNotSubmit;
//回退后,回退状态恢复
- sv.RequestBackState = RequestBackStateEnum.NotRequest;
+
sv.IsCheckBack = true;
sv.CheckBackTime = DateTime.Now;
sv.CheckState = CheckStateEnum.None;
@@ -1013,7 +1011,7 @@ namespace IRaCIS.Core.Application.Image.QA
{
var studyId = updateModalityCommand.Id;
- var study = (await _dicomStudyRepository.FirstOrDefaultAsync(t => t.Id == studyId,true)).IfNullThrowException();
+ var study = (await _dicomStudyRepository.FirstOrDefaultAsync(t => t.Id == studyId, true)).IfNullThrowException();
study.BodyPartForEdit = updateModalityCommand.BodyPart;
@@ -1085,7 +1083,7 @@ namespace IRaCIS.Core.Application.Image.QA
//---CRC已经提交,不允许删除。
return ResponseOutput.NotOk(_localizer["QCOperation_CrcNoDelete"]);
}
- var waitDeleteStudyList = await _dicomStudyRepository.Where(x => ids.Contains(x.Id),false,true).ToListAsync();
+ var waitDeleteStudyList = await _dicomStudyRepository.Where(x => ids.Contains(x.Id), false, true).ToListAsync();
foreach (var study in waitDeleteStudyList)
{
From ce47776f1916e345e30c8693c3188efa08f300ce Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Wed, 7 May 2025 14:47:22 +0800
Subject: [PATCH 3/5] =?UTF-8?q?=E7=BB=9F=E4=B8=80=E4=BF=AE=E6=94=B9?=
=?UTF-8?q?=E9=82=AE=E4=BB=B6=E9=85=8D=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../MassTransit/Consumer/CommonEmailHelper.cs | 51 +++++++++++++-
.../Consumer/ReadingRelationEmailConsumer.cs | 8 +--
.../Consumer/SiteSurverEmailConsumer.cs | 6 +-
.../SubjectVisitQCAndCheckConsumer.cs | 14 ++--
.../Recurring/IRRecurringConsumer.cs | 2 +-
.../Recurring/SystemDocumentConsumer.cs | 44 +++++++-----
.../Service/Doctor/DoctorService.cs | 68 +++++++++++--------
7 files changed, 130 insertions(+), 63 deletions(-)
diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs b/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs
index b0485c8a1..276cd2eec 100644
--- a/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs
+++ b/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs
@@ -54,7 +54,56 @@ public static class CommonEmailHelper
return configInfo;
}
- public static async Task GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(TrialEmailNoticeConfig configInfo, EmailBusinessScenario scenario, MimeMessage messageToSend,
+ ///
+ /// 系统默认邮件 + 项目默认邮件 (不用添加到项目邮件配置中,才发送)
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task GetEmailSubejctAndHtmlInfoAndBuildAsync(EmailNoticeConfig configInfo, MimeMessage messageToSend,
+Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailFunc)
+ {
+ var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US;
+
+
+
+ var (topicStr, htmlBodyStr) = isEn_US ? (configInfo.EmailTopic, configInfo.EmailHtmlContent) : (configInfo.EmailTopicCN, configInfo.EmailHtmlContentCN);
+
+ try
+ {
+ //每个场景修改主题 和body的逻辑不一样
+ (topicStr, htmlBodyStr) = emailFunc((topicStr, htmlBodyStr));
+ }
+ catch (Exception ex)
+ {
+ //"邮件模板内容有误,填充内容出现问题,请联系运维人员核查"
+
+ throw new BusinessValidationFailedException(I18n.T("CommonEmail_ConfigError"));
+ }
+
+
+ messageToSend.Subject = topicStr;
+
+ var builder = new BodyBuilder();
+
+ builder.HtmlBody = htmlBodyStr;
+
+ messageToSend.Body = builder.ToMessageBody();
+
+ return configInfo;
+ }
+
+ ///
+ /// 项目手动邮件 (需要添加到项目邮件配置中,才发送)
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(TrialEmailNoticeConfig configInfo, MimeMessage messageToSend,
Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailFunc)
{
var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US;
diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/ReadingRelationEmailConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/ReadingRelationEmailConsumer.cs
index c114a3620..54eac7243 100644
--- a/IRaCIS.Core.Application/MassTransit/Consumer/ReadingRelationEmailConsumer.cs
+++ b/IRaCIS.Core.Application/MassTransit/Consumer/ReadingRelationEmailConsumer.cs
@@ -126,7 +126,7 @@ public class UrgentMedicalReviewAddedEventConsumer(
return (topicStr, htmlBodyStr);
};
- await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc);
+ await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, messageToSend, emailConfigFunc);
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
@@ -234,7 +234,7 @@ public class UrgentIRRepliedMedicalReviewConsumer(
return (topicStr, htmlBodyStr);
};
- await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc);
+ await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, messageToSend, emailConfigFunc);
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
}
@@ -352,7 +352,7 @@ public class UrgentMIMRepliedMedicalReviewConsumer(
return (topicStr, htmlBodyStr);
};
- await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc);
+ await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, messageToSend, emailConfigFunc);
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
}
@@ -461,7 +461,7 @@ public class UrgentIRApplyedReReadingConsumer(
return (topicStr, htmlBodyStr);
};
- await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc);
+ await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, messageToSend, emailConfigFunc);
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
}
diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs
index 8fd86858f..837084a71 100644
--- a/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs
+++ b/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs
@@ -120,7 +120,7 @@ public class UserSiteSurveySubmitedEventConsumer(
};
- await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc);
+ await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(emailConfig, messageToSend, emailConfigFunc);
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
}
@@ -203,7 +203,7 @@ public class SiteSurveySPMSubmitedEventConsumer(
return (topicStr, htmlBodyStr);
};
- await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc);
+ await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(emailConfig, messageToSend, emailConfigFunc);
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
}
@@ -316,7 +316,7 @@ public class SiteSurverRejectedEventConsumer(
return (topicStr, htmlBodyStr);
};
- await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc);
+ await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(emailConfig, messageToSend, emailConfigFunc);
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
}
diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/SubjectVisitQCAndCheckConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/SubjectVisitQCAndCheckConsumer.cs
index dae599e60..8eacc9bdd 100644
--- a/IRaCIS.Core.Application/MassTransit/Consumer/SubjectVisitQCAndCheckConsumer.cs
+++ b/IRaCIS.Core.Application/MassTransit/Consumer/SubjectVisitQCAndCheckConsumer.cs
@@ -120,7 +120,7 @@ public class CRCSubmitedAndQCToAuditEventConsumer(
return (topicStr, htmlBodyStr);
};
- await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc);
+ await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, messageToSend, emailConfigFunc);
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
}
@@ -219,7 +219,7 @@ public class CRCRepliedQCChallengeEventConsumer(
return (topicStr, htmlBodyStr);
};
- await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc);
+ await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, messageToSend, emailConfigFunc);
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
}
@@ -337,7 +337,7 @@ public class QCRepliedQCChallengeEventConsumer(
};
- await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc);
+ await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, messageToSend, emailConfigFunc);
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
}
@@ -437,7 +437,7 @@ public class CRCRepliedCheckChallengeEventConsumer(
};
- await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc);
+ await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, messageToSend, emailConfigFunc);
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
}
@@ -547,7 +547,7 @@ public class PMRepliedCheckChallengeEventConsumer(
};
- await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc);
+ await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, messageToSend, emailConfigFunc);
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
}
@@ -646,7 +646,7 @@ public class CheckStateChangedToAuditEventConsumer(
};
- await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc);
+ await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, messageToSend, emailConfigFunc);
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
}
@@ -755,7 +755,7 @@ public class QCClaimTaskEventConsumer(
};
- await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc);
+ await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, messageToSend, emailConfigFunc);
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
}
diff --git a/IRaCIS.Core.Application/MassTransit/Recurring/IRRecurringConsumer.cs b/IRaCIS.Core.Application/MassTransit/Recurring/IRRecurringConsumer.cs
index d0f6d758e..6844e4f42 100644
--- a/IRaCIS.Core.Application/MassTransit/Recurring/IRRecurringConsumer.cs
+++ b/IRaCIS.Core.Application/MassTransit/Recurring/IRRecurringConsumer.cs
@@ -159,7 +159,7 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
return (topicStr, htmlBodyStr);
};
- await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc);
+ await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, messageToSend, emailConfigFunc);
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
diff --git a/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs b/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs
index 117d11991..3516ec8ce 100644
--- a/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs
+++ b/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs
@@ -71,14 +71,14 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
IsNeedSendEmial = identityUser.IsZhiZhun || (!identityUser.IsZhiZhun && sysDoc.DocUserSignType == DocUserSignType.InnerAndOuter),
FullFilePath = sysDoc.Path
};
- var datalist = await systemDocQuery.IgnoreQueryFilters().Where(t => t.IsDeleted==false && t.ConfirmTime == null)
+ var datalist = await systemDocQuery.IgnoreQueryFilters().Where(t => t.IsDeleted == false && t.ConfirmTime == null)
.ToListAsync();
datalist = datalist.Where(x => x.SuggestFinishTime != null && x.SuggestFinishTime.Value.Date == DateTime.Now.Date)
.Where(x => x.IsNeedSendEmial).ToList();
var confirmUserIdList = datalist.Select(t => t.ConfirmUserId).Distinct().ToList();
var userinfoList = await _identityUserRepository.Where(x => confirmUserIdList.Contains(x.Id)).ToListAsync();
- Console.WriteLine("发送定时过期提醒:人员数量"+ userinfoList.Count);
+ Console.WriteLine("发送定时过期提醒:人员数量" + userinfoList.Count);
int index = 1;
foreach (var userinfo in userinfoList)
{
@@ -107,19 +107,24 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
return (topicStr, htmlBodyStr);
};
- await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository,
+ var scenario = EmailBusinessScenario.GeneralTraining_ExpirationNotification;
- EmailBusinessScenario.GeneralTraining_ExpirationNotification,
+ var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault();
+
+ if (emailConfig != null)
+ {
+ await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(emailConfig, messageToSend, emailConfigFunc);
+
+ await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
+ }
- messageToSend, emailConfigFunc);
- await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
}
catch (Exception)
{
}
-
+
}
@@ -149,7 +154,7 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US;
var systemDocQuery =
from sysDoc in _systemDocumentRepository.AsQueryable(false).Where(x => context.Message.Ids.Contains(x.Id))
- from identityUser in _identityUserRepository.AsQueryable(false).Where(t => t.Status == UserStateEnum.Enable&& t.UserRoleList.Where(t => t.IsUserRoleDisabled == false).Any(t => sysDoc.NeedConfirmedUserTypeList.AsQueryable().Any(c => c.NeedConfirmUserTypeId == t.UserTypeId)))
+ from identityUser in _identityUserRepository.AsQueryable(false).Where(t => t.Status == UserStateEnum.Enable && t.UserRoleList.Where(t => t.IsUserRoleDisabled == false).Any(t => sysDoc.NeedConfirmedUserTypeList.AsQueryable().Any(c => c.NeedConfirmUserTypeId == t.UserTypeId)))
select new UnionDocumentWithConfirmInfoView()
{
IsSystemDoc = true,
@@ -165,23 +170,23 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
RealName = identityUser.FullName,
UserName = identityUser.UserName,
- IsNeedSendEmial= identityUser.IsZhiZhun || (!identityUser.IsZhiZhun&& sysDoc.DocUserSignType== DocUserSignType.InnerAndOuter),
+ IsNeedSendEmial = identityUser.IsZhiZhun || (!identityUser.IsZhiZhun && sysDoc.DocUserSignType == DocUserSignType.InnerAndOuter),
FullFilePath = sysDoc.Path
};
- var datalist = await systemDocQuery.IgnoreQueryFilters().Where(x=>x.IsNeedSendEmial).ToListAsync();
+ var datalist = await systemDocQuery.IgnoreQueryFilters().Where(x => x.IsNeedSendEmial).ToListAsync();
var confirmUserIdList = datalist.Select(t => t.ConfirmUserId).Distinct().ToList();
var userinfoList = await _identityUserRepository.Where(x => confirmUserIdList.Contains(x.Id)).ToListAsync();
- int index= 1;
+ int index = 1;
foreach (var userinfo in userinfoList)
{
string msg = $"{index}生效通知,邮箱:{userinfo.EMail},姓名{userinfo.UserName},";
index++;
try
{
-
+
var messageToSend = new MimeMessage();
//发件地址
messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail));
@@ -203,14 +208,19 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
return (topicStr, htmlBodyStr);
};
- await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository,
+ var scenario = EmailBusinessScenario.GeneralTraining_EffectiveNotification;
- EmailBusinessScenario.GeneralTraining_EffectiveNotification,
+ var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault();
+
+ if (emailConfig != null)
+ {
+ await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(emailConfig, messageToSend, emailConfigFunc);
+
+ await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
+ msg += "发送成功";
+ }
- messageToSend, emailConfigFunc);
- await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
- msg += "发送成功";
}
catch (Exception)
{
diff --git a/IRaCIS.Core.Application/Service/Doctor/DoctorService.cs b/IRaCIS.Core.Application/Service/Doctor/DoctorService.cs
index 6cd828db9..57d7920b7 100644
--- a/IRaCIS.Core.Application/Service/Doctor/DoctorService.cs
+++ b/IRaCIS.Core.Application/Service/Doctor/DoctorService.cs
@@ -1,4 +1,5 @@
using DocumentFormat.OpenXml.Office2019.Excel.ThreadedComments;
+using DocumentFormat.OpenXml.Spreadsheet;
using IRaCIS.Application.Contracts;
using IRaCIS.Application.Interfaces;
using IRaCIS.Core.Application.Helper;
@@ -231,9 +232,9 @@ namespace IRaCIS.Core.Application.Service
///
///
[HttpPost]
- public async Task<(DoctorSummarize,bool)> AddOrUpdateGneralSituation(SummarizeInfoDto inDto)
+ public async Task<(DoctorSummarize, bool)> AddOrUpdateGneralSituation(SummarizeInfoDto inDto)
{
- if (inDto.TrialId != null&&inDto.Id==null)
+ if (inDto.TrialId != null && inDto.Id == null)
{
var systemCount = await _doctorSummarizeRepository.Where(x => x.DoctorId == inDto.DoctorId && x.TrialId == null).CountAsync();
if (systemCount == 0)
@@ -242,7 +243,7 @@ namespace IRaCIS.Core.Application.Service
var dictionery = await _dictionaryRepository.Where(x => x.Parent.Code == "Indication" && x.Code == trialinfo.IndicationEnum.ToString()).FirstNotNullAsync();
inDto.IndicationEn = dictionery.Value;
inDto.Indication = dictionery.ValueCN;
- var system= inDto.Clone();
+ var system = inDto.Clone();
system.TrialId = null;
system.IsMain = true;
await _doctorSummarizeRepository.InsertOrUpdateAsync(system, true);
@@ -255,7 +256,7 @@ namespace IRaCIS.Core.Application.Service
if (systemCount == 0)
{
inDto.IsMain = true;
-
+
}
if (inDto.Indication.IsNullOrEmpty() && inDto.IndicationEn.IsNullOrEmpty())
{
@@ -263,19 +264,19 @@ namespace IRaCIS.Core.Application.Service
inDto.IndicationEn = "Default";
}
var exists = await _doctorSummarizeRepository
- .Where(x=> x.IndicationEn!=string.Empty && x.Indication!=string.Empty)
- .Where( x => x.IndicationEn == inDto.IndicationEn|| x.Indication == inDto.Indication)
-
- .AnyAsync(x => x.DoctorId == inDto.DoctorId && x.TrialId == null&&x.Id!=inDto.Id);
+ .Where(x => x.IndicationEn != string.Empty && x.Indication != string.Empty)
+ .Where(x => x.IndicationEn == inDto.IndicationEn || x.Indication == inDto.Indication)
+
+ .AnyAsync(x => x.DoctorId == inDto.DoctorId && x.TrialId == null && x.Id != inDto.Id);
if (exists)
{
throw new BusinessValidationFailedException(_localizer["DoctorSummarize_repeat"]);
}
}
-
- if (inDto.TrialId != null && inDto.SaveSummarizeInfoType!= SaveSummarizeInfo.SaveSelf)
+
+ if (inDto.TrialId != null && inDto.SaveSummarizeInfoType != SaveSummarizeInfo.SaveSelf)
{
switch (inDto.SaveSummarizeInfoType)
{
@@ -313,16 +314,16 @@ namespace IRaCIS.Core.Application.Service
if (inDto.TrialId == null && inDto.IsMain)
{
- await _doctorSummarizeRepository.BatchUpdateNoTrackingAsync(x => x.DoctorId == inDto.DoctorId && x.TrialId == null,
+ await _doctorSummarizeRepository.BatchUpdateNoTrackingAsync(x => x.DoctorId == inDto.DoctorId && x.TrialId == null,
x => new DoctorSummarize()
- {
- IsMain = false
- });
+ {
+ IsMain = false
+ });
}
-
-
+
+
var entity = await _doctorSummarizeRepository.InsertOrUpdateAsync(inDto, true);
- return (entity,true);
+ return (entity, true);
}
///
@@ -333,7 +334,7 @@ namespace IRaCIS.Core.Application.Service
[HttpPost]
public async Task DeleteSummarizeInfo(DeleteSummarizeInfoInDto inDto)
{
- var result = await _doctorSummarizeRepository.DeleteFromQueryAsync(x=>x.Id==inDto.Id);
+ var result = await _doctorSummarizeRepository.DeleteFromQueryAsync(x => x.Id == inDto.Id);
return await _doctorSummarizeRepository.SaveChangesAsync();
}
@@ -345,7 +346,7 @@ namespace IRaCIS.Core.Application.Service
[HttpPost]
public async Task GetSummarizeInfo(GetSummarizeInfoInDto inDto)
{
-
+
if (inDto.TrialId != null)
{
var doctorInfo = await trialExperienceService.GetTrialDoctorInfo(new GetTrialDoctorInfoInDto()
@@ -357,8 +358,9 @@ namespace IRaCIS.Core.Application.Service
}
var result = await _doctorSummarizeRepository.Where(t => t.DoctorId == inDto.DoctorId && t.TrialId == inDto.TrialId)
.ProjectTo(_mapper.ConfigurationProvider).ToListAsync();
- return new UpdateGneralSituationDto() {
- SummarizeList= result
+ return new UpdateGneralSituationDto()
+ {
+ SummarizeList = result
};
}
@@ -378,30 +380,36 @@ namespace IRaCIS.Core.Application.Service
messageToSend.To.Add(new MailboxAddress(String.Empty, item));
}
-
+
Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input =>
{
- ;
- var topicStr = string.Format(input.topicStr,string.Empty);
+ ;
+ var topicStr = string.Format(input.topicStr, string.Empty);
var htmlBodyStr = string.Format(
CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr),
- _systemEmailConfig.SiteUrl.Replace("login",string.Empty)+inDto.Url
+ _systemEmailConfig.SiteUrl.Replace("login", string.Empty) + inDto.Url
);
return (topicStr, htmlBodyStr);
};
- await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository,
- EmailBusinessScenario.Reviewer_CV_Collection,
+ var scenario = EmailBusinessScenario.Reviewer_CV_Collection;
+
+ var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault();
+
+ if (emailConfig != null)
+ {
+ await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(emailConfig, messageToSend, emailConfigFunc);
+
+ await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
+ }
- messageToSend, emailConfigFunc);
- await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
return true;
}
@@ -491,7 +499,7 @@ namespace IRaCIS.Core.Application.Service
var doctorBasicInfo = (await _doctorRepository.Where(t => t.Id == doctorId)
.ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
- doctorBasicInfo.IsHaveAccount =await _userRoleRepository.AnyAsync(x => x.DoctorId == doctorId);
+ doctorBasicInfo.IsHaveAccount = await _userRoleRepository.AnyAsync(x => x.DoctorId == doctorId);
return doctorBasicInfo;
From 95f708da581cb6393c62189841c41b8f22c515af Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Wed, 7 May 2025 14:53:49 +0800
Subject: [PATCH 4/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=82=AE=E4=BB=B6?=
=?UTF-8?q?=E9=85=8D=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../MassTransit/Consumer/CommonEmailHelper.cs | 41 -------------
.../MassTransit/Consumer/ImageConsumer.cs | 58 +++++++++----------
2 files changed, 29 insertions(+), 70 deletions(-)
diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs b/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs
index 276cd2eec..aa7f44b6b 100644
--- a/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs
+++ b/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs
@@ -14,45 +14,6 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer;
public static class CommonEmailHelper
{
- public static async Task GetEmailSubejctAndHtmlInfoAndBuildAsync(IRepository _emailNoticeConfigrepository, EmailBusinessScenario scenario, MimeMessage messageToSend,
- Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailFunc)
- {
- var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US;
-
- var configInfo = await _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario).FirstOrDefaultAsync();
-
- if (configInfo == null)
- {
- //"系统未找到当前场景邮件配置信息,请联系运维人员核查"
- throw new BusinessValidationFailedException(I18n.T("CommonEmail_NotFoundConfig"));
- }
-
-
- var (topicStr, htmlBodyStr) = isEn_US ? (configInfo.EmailTopic, configInfo.EmailHtmlContent) : (configInfo.EmailTopicCN, configInfo.EmailHtmlContentCN);
-
- try
- {
- //每个场景修改主题 和body的逻辑不一样
- (topicStr, htmlBodyStr) = emailFunc((topicStr, htmlBodyStr));
- }
- catch (Exception ex)
- {
- //"邮件模板内容有误,填充内容出现问题,请联系运维人员核查"
-
- throw new BusinessValidationFailedException(I18n.T("CommonEmail_ConfigError"));
- }
-
-
- messageToSend.Subject = topicStr;
-
- var builder = new BodyBuilder();
-
- builder.HtmlBody = htmlBodyStr;
-
- messageToSend.Body = builder.ToMessageBody();
-
- return configInfo;
- }
///
/// 系统默认邮件 + 项目默认邮件 (不用添加到项目邮件配置中,才发送)
@@ -67,8 +28,6 @@ Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr
{
var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US;
-
-
var (topicStr, htmlBodyStr) = isEn_US ? (configInfo.EmailTopic, configInfo.EmailHtmlContent) : (configInfo.EmailTopicCN, configInfo.EmailHtmlContentCN);
try
diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs
index 2c55411dd..8f4b9aa44 100644
--- a/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs
+++ b/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs
@@ -99,13 +99,13 @@ public class ImageConsumer(
}
- var trialEmailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable).FirstOrDefault();
+ var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable && t.IsAutoSend).FirstOrDefault();
- if (trialEmailConfig != null)
+ if (emailConfig != null)
{
var inDto = new SendImageReuploadEmailInDto
{
- EmailNoticeConfig = trialEmailConfig,
+ EmailNoticeConfig = emailConfig,
Scenario = scenario,
SubjectVisit = subjectVisit,
TrialId = trialId,
@@ -143,17 +143,17 @@ public class ImageConsumer(
return; // 其他状态不发送邮件
}
- var trialEmailConfig = _emailNoticeConfigrepository.Where(t =>t.BusinessScenarioEnum == scenario && t.IsEnable).FirstOrDefault();
+ var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable && t.IsAutoSend).FirstOrDefault();
- if (trialEmailConfig != null)
+ if (emailConfig != null)
{
var inDto = new SendImageReuploadEmailInDto
{
- EmailNoticeConfig = trialEmailConfig,
+ EmailNoticeConfig = emailConfig,
Scenario = scenario,
SubjectVisit = subjectVisit,
TrialId = trialId,
- RequestBackStateEnum= context.Message.RequestBackState,
+ RequestBackStateEnum = context.Message.RequestBackState,
};
await SendImageReuploadEmail(inDto);
}
@@ -185,13 +185,13 @@ public class ImageConsumer(
return; // 其他状态不发送邮件
}
- var trialEmailConfig = _emailNoticeConfigrepository.Where(t =>t.BusinessScenarioEnum == scenario && t.IsEnable).FirstOrDefault();
+ var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable && t.IsAutoSend).FirstOrDefault();
- if (trialEmailConfig != null)
+ if (emailConfig != null)
{
var inDto = new SendImageReuploadEmailInDto
{
- EmailNoticeConfig = trialEmailConfig,
+ EmailNoticeConfig = emailConfig,
Scenario = scenario,
SubjectVisit = subjectVisit,
TrialId = trialId
@@ -210,13 +210,13 @@ public class ImageConsumer(
var visitTaskId = context.Message.VisitTaskId;
// 获取VisitTask关联的SubjectVisit
- var visitTask = await _visitTaskRepository.Where(x => x.Id == visitTaskId).Include(x => x.Subject).Include(x=>x.SourceSubjectVisit).FirstNotNullAsync();
+ var visitTask = await _visitTaskRepository.Where(x => x.Id == visitTaskId).Include(x => x.Subject).Include(x => x.SourceSubjectVisit).FirstNotNullAsync();
var subjectVisit = new SubjectVisit() { };
if (visitTask.SourceSubjectVisitId != null)
{
subjectVisit = visitTask.SourceSubjectVisit;
}
- else if(visitTask.SouceReadModuleId!=null)
+ else if (visitTask.SouceReadModuleId != null)
{
var readModule = await _readModuleRepository.Where(x => x.Id == visitTask.SouceReadModuleId).Include(x => x.SubjectVisit).FirstOrDefaultAsync();
subjectVisit = readModule.SubjectVisit;
@@ -239,13 +239,13 @@ public class ImageConsumer(
return; // 其他状态不发送邮件
}
- var trialEmailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable).FirstOrDefault();
+ var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable && t.IsAutoSend).FirstOrDefault();
- if (trialEmailConfig != null)
+ if (emailConfig != null)
{
var inDto = new SendImageReuploadEmailInDto
{
- EmailNoticeConfig = trialEmailConfig,
+ EmailNoticeConfig = emailConfig,
Scenario = scenario,
SubjectVisit = subjectVisit,
TrialId = trialId
@@ -272,15 +272,15 @@ public class ImageConsumer(
List ccUserList = new List();
var emailNoticeUserList = await _emailNoticeUserTypeRepository.Where(x => x.EmailNoticeConfigId == inDto.EmailNoticeConfig.Id).ToListAsync();
- var userTypeEnum= emailNoticeUserList.Select(x => x.UserType).ToList();
+ var userTypeEnum = emailNoticeUserList.Select(x => x.UserType).ToList();
if (inDto.UserTypes != null)
{
userTypeEnum = inDto.UserTypes;
}
- var crcUserList =new List(){ };
+ var crcUserList = new List() { };
if (userTypeEnum.Contains(UserTypeEnum.ClinicalResearchCoordinator))
{
- crcUserList=await _trialSiteRepository.Where(x=>x.Id== inDto.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 (inDto.UserTypes == null)
@@ -307,7 +307,7 @@ public class ImageConsumer(
}
- 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();
@@ -375,7 +375,7 @@ public class ImageConsumer(
return (topicStr, htmlBodyStr);
};
- await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, inDto.Scenario, messageToSend, emailConfigFunc);
+ await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(inDto.EmailNoticeConfig, messageToSend, emailConfigFunc);
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
}
@@ -404,11 +404,11 @@ public class ImageConsumer(
// 设置邮件场景
var scenario = EmailBusinessScenario.ReviewerSelection_PMApplyApproving; // 69
- var trialEmailConfig = _emailNoticeConfigrepository.Where(t =>t.BusinessScenarioEnum == scenario && t.IsEnable).FirstOrDefault();
+ var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable && t.IsAutoSend).FirstOrDefault();
- if (trialEmailConfig != null)
+ if (emailConfig != null)
{
- await SendReviewerSelectionEmail(trialEmailConfig, scenario, trialId, enrollIdList);
+ await SendReviewerSelectionEmail(emailConfig, trialId, enrollIdList);
}
}
@@ -435,18 +435,18 @@ public class ImageConsumer(
// 设置邮件场景
var scenario = EmailBusinessScenario.ReviewerSelection_SPMCPMApproval; // 70
- var trialEmailConfig = _emailNoticeConfigrepository.Where(t =>t.BusinessScenarioEnum == scenario && t.IsEnable).FirstOrDefault();
+ var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsEnable && t.IsAutoSend).FirstOrDefault();
- if (trialEmailConfig != null)
+ if (emailConfig != null)
{
- await SendReviewerSelectionEmail(trialEmailConfig, scenario, trialId, enrollIdList);
+ await SendReviewerSelectionEmail(emailConfig, trialId, enrollIdList);
}
}
///
/// 发送阅片人筛选相关邮件的通用方法
///
- private async Task SendReviewerSelectionEmail(EmailNoticeConfig emailNoticeConfig, EmailBusinessScenario scenario, Guid trialId, List enrollIdList)
+ private async Task SendReviewerSelectionEmail(EmailNoticeConfig emailNoticeConfig, Guid trialId, List enrollIdList)
{
var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US;
@@ -454,7 +454,7 @@ public class ImageConsumer(
var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == 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 == trialId && !x.TrialUser.IsDeleted).Include(x => x.UserRole).Select(x => x.UserRole).ToListAsync();
// 根据场景确定收件人
List toUserList = new List();
@@ -508,7 +508,7 @@ public class ImageConsumer(
return (topicStr, htmlBodyStr);
};
- await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc);
+ await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(emailNoticeConfig, messageToSend, emailConfigFunc);
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
}
From 0cf7e5fdddf9d0acb2ad868acb0d4d94213a537c Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Wed, 7 May 2025 15:25:56 +0800
Subject: [PATCH 5/5] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=A4=87=E6=B3=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../IRaCIS.Core.Application.xml | 22 ++++++++++++++-
.../Consumer/SiteSurverEmailConsumer.cs | 27 ++++++++++---------
2 files changed, 35 insertions(+), 14 deletions(-)
diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index 3e29f92ca..30876d0b1 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -14087,6 +14087,26 @@
接口请求参考文档:https://www.koudingke.cn/docs/zh-Hans/net-lib-docs/latest/RestSharp/Usage/Usage
+
+
+ 系统默认邮件 + 项目默认邮件 (不用添加到项目邮件配置中,才发送)
+
+
+
+
+
+
+
+
+
+ 项目手动邮件 (需要添加到项目邮件配置中,才发送)
+
+
+
+
+
+
+
翻译字典
@@ -14199,7 +14219,7 @@
处理SPM审批阅片人筛选事件
-
+
发送阅片人筛选相关邮件的通用方法
diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs
index 837084a71..fe3ea9d4d 100644
--- a/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs
+++ b/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs
@@ -191,13 +191,13 @@ public class SiteSurveySPMSubmitedEventConsumer(
var topicStr = string.Format(input.topicStr, trialInfo.ResearchProgramNo);
var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr),
toUserName,
- siteInfo.TrialSiteCode,
- siteInfo.TrialSiteAliasName,
+ siteInfo.TrialSiteCode, //中心编号
+ siteInfo.TrialSiteAliasName,//中心名称
- siteSurveyInfo.UserName,
- siteSurveyInfo.Email,
- siteSurveyInfo.Phone,
- _systemEmailConfig.SiteUrl
+ siteSurveyInfo.UserName, //联系人
+ siteSurveyInfo.Email, //联系邮箱
+ siteSurveyInfo.Phone, //联系电话
+ _systemEmailConfig.SiteUrl
);
return (topicStr, htmlBodyStr);
@@ -234,7 +234,7 @@ public class SiteSurverRejectedEventConsumer(
var trialSiteSurveyId = context.Message.TrialSiteSurveyId;
- var siteSurveyInfo = _trialSiteSurveyRepository.Where(t => t.Id == trialSiteSurveyId).FirstOrDefault().IfNullThrowException();
+ var siteSurveyInfo = _trialSiteSurveyRepository.Where(t => t.Id == trialSiteSurveyId ,ignoreQueryFilters:true).FirstOrDefault().IfNullThrowException();
var trialId = siteSurveyInfo.TrialId;
@@ -304,12 +304,13 @@ public class SiteSurverRejectedEventConsumer(
var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr),
toUserName,
trialInfo.TrialCode,
- trialInfo.ResearchProgramNo,
- trialInfo.ExperimentName,
- siteInfo.TrialSiteCode,
- siteInfo.TrialSiteAliasName,
- siteSurveyInfo.LatestBackReason,
- _systemEmailConfig.SiteUrl,
+ trialInfo.ResearchProgramNo,
+ trialInfo.ExperimentName,
+
+ siteInfo.TrialSiteCode, //中心编号
+ siteInfo.TrialSiteAliasName,//中心名称
+ siteSurveyInfo.LatestBackReason, //驳回原因
+ _systemEmailConfig.SiteUrl, //链接
(siteSurveyInfo.State == TrialSiteSurveyEnum.ToSubmit ? "inline - block" : "none")
);