From c62e7b13a906adfae978d59e7059962ebd9c4e94 Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Fri, 20 Jun 2025 14:25:38 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=90=9C=E7=B4=A2=E6=9F=A5?=
=?UTF-8?q?=E8=AF=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../IRaCIS.Core.Application.xml | 12 +-
.../DTO/TrialEmailNoticeConfigViewModel.cs | 4 +-
.../Document/TrialEmailNoticeConfigService.cs | 464 +++++++++++++-----
3 files changed, 365 insertions(+), 115 deletions(-)
diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index 2259a73af..c6ce61664 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -1577,9 +1577,19 @@
+
+
+ 获取入组结果
+
+
+
+
+
+
+
-
+ 获取PD 结果
任务Id
任务类型
diff --git a/IRaCIS.Core.Application/Service/Document/DTO/TrialEmailNoticeConfigViewModel.cs b/IRaCIS.Core.Application/Service/Document/DTO/TrialEmailNoticeConfigViewModel.cs
index c1915fd5a..8eecea96b 100644
--- a/IRaCIS.Core.Application/Service/Document/DTO/TrialEmailNoticeConfigViewModel.cs
+++ b/IRaCIS.Core.Application/Service/Document/DTO/TrialEmailNoticeConfigViewModel.cs
@@ -99,7 +99,7 @@ namespace IRaCIS.Core.Application.ViewModel
public EmailBusinessScenario? BusinessScenarioEnum { get; set; }
- //public CriterionType? CriterionTypeEnum { get; set; }
+ public CriterionType? CriterionTypeEnum { get; set; }
public Guid? TrialReadingCriterionId { get; set; }
@@ -197,6 +197,8 @@ namespace IRaCIS.Core.Application.ViewModel
[Comment("邮件配置的多个标准")]
public List? CriterionTypeList { get; set; }
+ public bool IsDistinguishCriteria { get; set; }
+
}
diff --git a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs
index 60a1de26e..dacd08e01 100644
--- a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs
+++ b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs
@@ -4,11 +4,13 @@
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//--------------------------------------------------------------------
+using Amazon.Runtime;
using IRaCIS.Core.Application.Contracts;
using IRaCIS.Core.Application.Filter;
using IRaCIS.Core.Application.Helper;
using IRaCIS.Core.Application.Interfaces;
using IRaCIS.Core.Application.MassTransit.Consumer;
+using IRaCIS.Core.Application.Service.Reading.Dto;
using IRaCIS.Core.Application.ViewModel;
using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Domain.Share.Common;
@@ -125,20 +127,20 @@ namespace IRaCIS.Core.Application.Service
///
///
///
- private async Task DealMedicalReviewTasKGenerateAndIsSendAsync(Guid trialId, bool? isHandSend, string pdAnswer, List taskIdList, List minUserIdList)
+ private async Task DealMedicalReviewTasKGenerateAndIsSendAsync(Guid trialId, bool? isHandSend, string answer, List taskIdList, List minUserIdList)
{
var isNeedSend = true;
//手动发送的时候,也有可能答案是是 此时是 这里不发送,发送已经生成的文件
- if (pdAnswer == "是" && isHandSend == null)
+ if (answer == "是" && isHandSend == null)
{
isNeedSend = true;
}
else
{
- //正常阅片为否的
+ //正常阅片自动发送,阅片为否的产生医学审核
if (isHandSend == null)
{
isNeedSend = false;
@@ -161,12 +163,12 @@ namespace IRaCIS.Core.Application.Service
}
else if (isHandSend == true)
{
- //手动发送
+ //医学审核手动发送
isNeedSend = false;
}
else
{
- // 医学审核确认未否了 才发
+ // 医学审核自动发送
isNeedSend = true;
}
}
@@ -175,6 +177,8 @@ namespace IRaCIS.Core.Application.Service
}
+
+
///
/// 测试邮件 带附件 填充word
///
@@ -306,7 +310,7 @@ namespace IRaCIS.Core.Application.Service
{
#region 不同标准 不同项目配置 发送邮件的时机 处理具体逻辑
- var answer = _userInfo.IsEn_Us ? "No" : "否";
+ var answer = string.Empty;
var isNeedSend = true;
var minUserIdList = _trialUserRoleRepository.Where(t => t.UserRole.UserTypeEnum == Domain.Share.UserTypeEnum.MIM && t.TrialId == taskInfo.TrialId).Select(t => t.UserId).ToList();
@@ -315,11 +319,7 @@ namespace IRaCIS.Core.Application.Service
//入组确认 根据每个标准配置的是否自动发送,发送邮件与否
if (businessScenarioEnum == EmailBusinessScenario.EnrollConfirmed)
{
- if (await _readingTableQuestionAnswerRepository.Where().AnyAsync(x => x.VisitTaskId == visitTaskId && x.Answer == TargetState.Exist.GetEnumInt() &&
- x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.State && x.ReadingQuestionTrial.LesionType == LesionType.TargetLesion))
- {
- answer = _userInfo.IsEn_Us ? "Yes" : "是";
- }
+
//如果其他阅片人已经做了,说明发送了入组确认报告,第二个人做完就不发送了
@@ -336,22 +336,11 @@ namespace IRaCIS.Core.Application.Service
}
else
{
+ bool isEnroll = false;
+
+ (answer, isEnroll) = await DealEnrollAnswer(visitTaskId, (Guid)taskInfo.SourceSubjectVisitId, taskInfo.CriterionType, taskInfo.TrialReadingCriterionId);
+
isNeedSend = await DealMedicalReviewTasKGenerateAndIsSendAsync(taskInfo.TrialId, isHandSend, answer, new List() { visitTaskId }, minUserIdList);
-
-
- if (answer == "是" || answer == "Yes")
- {
- //把另外一个人的任务设置为不加急(如果项目加急是否 subject 加急是否)
- var urgent = _subjectVisitRepository.Where(t => t.Id == taskInfo.SourceSubjectVisitId).Select(t => new { IsSubjectUrgent = t.Subject.IsUrgent, t.Trial.IsUrgent }).FirstOrDefault();
-
- if (urgent?.IsUrgent == false || urgent?.IsSubjectUrgent == false)
- {
- await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.SourceSubjectVisitId == taskInfo.SourceSubjectVisitId && t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false &&
- t.Id != visitTaskId && t.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId, u => new VisitTask() { IsUrgent = false });
- }
- }
-
-
}
}
else if (businessScenarioEnum == EmailBusinessScenario.PDConfirmed)
@@ -1052,7 +1041,96 @@ namespace IRaCIS.Core.Application.Service
}
///
- ///
+ /// 获取入组结果
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ private async Task<(string enrollAnswer, bool isEnroll)> DealEnrollAnswer(Guid visitTaskId, Guid subjectVisitId, CriterionType criterionType, Guid trialReadingCriterionId)
+ {
+
+ var enrollAnswer = string.Empty;
+ var isEnroll = false;
+
+ switch (criterionType)
+ {
+
+ case CriterionType.RECIST1Point1:
+ case CriterionType.RECIST1Pointt1_MB:
+ case CriterionType.IRECIST1Point1:
+ case CriterionType.mRECISTHCC:
+
+ case CriterionType.Lugano2014:
+ case CriterionType.Lugano2014WithoutPET:
+
+ if (await _readingTableQuestionAnswerRepository.Where().AnyAsync(x => x.VisitTaskId == visitTaskId && x.Answer == TargetState.Exist.GetEnumInt() &&
+ x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.State && x.ReadingQuestionTrial.LesionType == LesionType.TargetLesion))
+ {
+ enrollAnswer = _userInfo.IsEn_Us ? "Yes" : "是";
+ }
+
+ break;
+
+ case CriterionType.PCWG3:
+ break;
+
+ case CriterionType.RANO_BM:
+ break;
+ case CriterionType.RANO:
+ break;
+ case CriterionType.IWCLL2018:
+ break;
+
+ case CriterionType.Cheson2007:
+ break;
+ case CriterionType.IMWG2016:
+ break;
+
+ case CriterionType.mRECISTMesothelioma:
+ break;
+ case CriterionType.RECIL:
+ break;
+ case CriterionType.RECIST1Point0:
+ break;
+ case CriterionType.WHO:
+ break;
+ case CriterionType.PERCIST:
+ break;
+ case CriterionType.Forrest:
+ break;
+
+ case CriterionType.IVUS:
+ break;
+ case CriterionType.OCT:
+ break;
+ case CriterionType.MRIPDFF:
+ break;
+ case CriterionType.NoCriterion:
+ break;
+ case CriterionType.SelfDefine:
+ break;
+ default:
+ break;
+ }
+
+ if (enrollAnswer == "是" || enrollAnswer == "Yes")
+ {
+ //把另外一个人的任务设置为不加急(如果项目加急是否 subject 加急是否)
+ var urgent = _subjectVisitRepository.Where(t => t.Id == subjectVisitId).Select(t => new { IsSubjectUrgent = t.Subject.IsUrgent, t.Trial.IsUrgent }).FirstOrDefault();
+
+ if (urgent?.IsUrgent == false || urgent?.IsSubjectUrgent == false)
+ {
+ await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.SourceSubjectVisitId == subjectVisitId && t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false &&
+ t.Id != visitTaskId && t.TrialReadingCriterionId == trialReadingCriterionId, u => new VisitTask() { IsUrgent = false });
+ }
+ }
+ return (enrollAnswer, isEnroll);
+ }
+
+ ///
+ /// 获取PD 结果
///
/// 任务Id
/// 任务类型
@@ -1067,95 +1145,237 @@ namespace IRaCIS.Core.Application.Service
ReadingTaskQuestionAnswer visitQuestionAnswer = null;
- ReadingTaskQuestionAnswer globalQuestionAnswer = null;
+ ReadingGlobalTaskInfo readingGlobalTaskInfo = null;
+ if (readingCategory == ReadingCategory.Visit)
+ {
+
+
+ switch (criterionType)
+ {
+
+
+ case CriterionType.RECIST1Point1:
+ case CriterionType.RECIST1Pointt1_MB:
+ case CriterionType.IRECIST1Point1:
+ case CriterionType.mRECISTHCC:
+
+ visitQuestionAnswer = await _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == visitTaskId && t.ReadingQuestionTrial.QuestionType == QuestionType.Tumor).FirstNotNullAsync();
+
+ answer = visitQuestionAnswer.Answer;
+
+ break;
+
+ case CriterionType.Lugano2014:
+
+ visitQuestionAnswer = await _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == visitTaskId && t.ReadingQuestionTrial.QuestionType == QuestionType.ImgOncology).FirstNotNullAsync();
+
+ answer = visitQuestionAnswer.Answer;
+
+ break;
+
+ case CriterionType.Lugano2014WithoutPET:
+
+ visitQuestionAnswer = await _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == visitTaskId && t.ReadingQuestionTrial.QuestionType == QuestionType.CTandMRI).FirstNotNullAsync();
+
+ answer = visitQuestionAnswer.Answer;
+
+ break;
+
+ case CriterionType.PCWG3:
+
+ visitQuestionAnswer = await _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == visitTaskId && t.ReadingQuestionTrial.QuestionType == QuestionType.SiteVisitForTumorEvaluation).FirstNotNullAsync();
+
+ answer = visitQuestionAnswer.Answer;
+
+ break;
+
+ case CriterionType.SelfDefine:
+ case CriterionType.mRECISTMesothelioma:
+ case CriterionType.RECIL:
+ case CriterionType.RECIST1Point0:
+ case CriterionType.WHO:
+ case CriterionType.PERCIST:
+ case CriterionType.Forrest:
+
+ case CriterionType.RANO_BM:
+ case CriterionType.RANO:
+ case CriterionType.IWCLL2018:
+ case CriterionType.Cheson2007:
+ case CriterionType.IMWG2016:
+ default:
+
+ //---该标准任务还未定义PD获取逻辑,联系业务和后台开发协商后补充
+ throw new BusinessValidationFailedException(_localizer["TrialEmailN_PDLogicNotDefined"]);
+ }
+
+
+
+ }
+ else if (readingCategory == ReadingCategory.Global)
+ {
+ switch (criterionType)
+ {
+
+ case CriterionType.RECIST1Point1:
+ case CriterionType.RECIST1Pointt1_MB:
+ case CriterionType.IRECIST1Point1:
+ case CriterionType.mRECISTHCC:
+
+ readingGlobalTaskInfo = await _readingGlobalTaskInfoRepository.Where(t => t.GlobalTaskId == visitTaskId && t.TrialReadingQuestion.QuestionType == QuestionType.Tumor).OrderByDescending(c => c.VisitTask.VisitTaskNum).FirstNotNullAsync();
+
+ answer = readingGlobalTaskInfo.Answer;
+ if (string.IsNullOrEmpty(readingGlobalTaskInfo.Answer))
+ {
+ answer = await _readingTaskQuestionAnswerRepository.Where(t => readingGlobalTaskInfo.TaskId == t.VisitTaskId && t.ReadingQuestionTrial.QuestionType == QuestionType.Tumor)
+ .Select(t => t.Answer).FirstOrDefaultAsync();
+ }
+
+ break;
+
+ case CriterionType.Lugano2014:
+
+ readingGlobalTaskInfo = await _readingGlobalTaskInfoRepository.Where(t => t.GlobalTaskId == visitTaskId && t.TrialReadingQuestion.QuestionType == QuestionType.ImgOncology).OrderByDescending(c => c.VisitTask.VisitTaskNum).FirstNotNullAsync();
+
+ answer = readingGlobalTaskInfo.Answer;
+ if (string.IsNullOrEmpty(readingGlobalTaskInfo.Answer))
+ {
+ answer = await _readingTaskQuestionAnswerRepository.Where(t => readingGlobalTaskInfo.TaskId == t.VisitTaskId && t.ReadingQuestionTrial.QuestionType == QuestionType.ImgOncology)
+ .Select(t => t.Answer).FirstOrDefaultAsync();
+ }
+
+ break;
+ case CriterionType.Lugano2014WithoutPET:
+
+ readingGlobalTaskInfo = await _readingGlobalTaskInfoRepository.Where(t => t.GlobalTaskId == visitTaskId && t.TrialReadingQuestion.QuestionType == QuestionType.CTandMRI).OrderByDescending(c => c.VisitTask.VisitTaskNum).FirstNotNullAsync();
+
+ answer = readingGlobalTaskInfo.Answer;
+ if (string.IsNullOrEmpty(readingGlobalTaskInfo.Answer))
+ {
+ answer = await _readingTaskQuestionAnswerRepository.Where(t => readingGlobalTaskInfo.TaskId == t.VisitTaskId && t.ReadingQuestionTrial.QuestionType == QuestionType.CTandMRI)
+ .Select(t => t.Answer).FirstOrDefaultAsync();
+ }
+
+ break;
+
+ case CriterionType.PCWG3:
+ var questionAnsewer = await _readingGlobalTaskInfoRepository.Where(t => t.TaskId == visitTaskId && t.TrialReadingQuestion.QuestionType == QuestionType.SiteVisitForTumorEvaluation).FirstNotNullAsync();
+
+ answer = questionAnsewer.Answer;
+
+ break;
+
+
+
+ case CriterionType.RANO_BM:
+ break;
+ case CriterionType.RANO:
+ break;
+ case CriterionType.IWCLL2018:
+ break;
+ case CriterionType.Cheson2007:
+ break;
+ case CriterionType.IMWG2016:
+ break;
+
+ case CriterionType.mRECISTMesothelioma:
+ break;
+ case CriterionType.RECIL:
+ break;
+ case CriterionType.RECIST1Point0:
+ break;
+ case CriterionType.WHO:
+ break;
+ case CriterionType.PERCIST:
+ break;
+ case CriterionType.Forrest:
+ break;
+
+ case CriterionType.IVUS:
+ break;
+ case CriterionType.OCT:
+ break;
+ case CriterionType.MRIPDFF:
+ break;
+ case CriterionType.NoCriterion:
+ break;
+ case CriterionType.SelfDefine:
+ break;
+ default:
+ break;
+ }
+
+ }
+ else
+ {
+ //---不应有 除访视、裁判、全局其他类型的任务进行发送邮件,请核查业务逻辑
+ throw new BusinessValidationFailedException(_localizer["TrialEmailN_InvalidTaskTypeForEmailSending"]);
+ }
+
+
switch (criterionType)
{
-
case CriterionType.RECIST1Point1:
+ case CriterionType.RECIST1Pointt1_MB:
+ case CriterionType.mRECISTHCC:
- if (readingCategory == ReadingCategory.Visit)
- {
-
- visitQuestionAnswer = await _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == visitTaskId && t.ReadingQuestionTrial.QuestionType == QuestionType.Tumor).FirstNotNullAsync();
-
-
- answer = visitQuestionAnswer.Answer;
- }
- else if (readingCategory == ReadingCategory.Global)
- {
- var questionAnsewer = await _readingGlobalTaskInfoRepository.Where(t => t.GlobalTaskId == visitTaskId && t.TrialReadingQuestion.QuestionType == QuestionType.Tumor).OrderByDescending(c => c.VisitTask.VisitTaskNum).FirstNotNullAsync();
-
-
- answer = questionAnsewer.Answer;
- if (string.IsNullOrEmpty(questionAnsewer.Answer))
- {
- answer = await _readingTaskQuestionAnswerRepository.Where(t => questionAnsewer.TaskId == t.VisitTaskId && t.ReadingQuestionTrial.QuestionType == QuestionType.Tumor)
- .Select(t => t.Answer).FirstOrDefaultAsync();
- }
-
- }
- //else if (readingCategory == ReadingCategory.Judge)
- //{
- // var judgeResultTaskId = await _visitTaskRepository.Where(t => t.Id == visitTaskId).Select(t => t.JudgeResultTaskId).FirstNotNullAsync();
-
- // var questionAnsewer = await _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == judgeResultTaskId && t.ReadingQuestionTrial.QuestionType == QuestionType.Tumor).FirstNotNullAsync();
-
-
- // answer = questionAnsewer.Answer;
- //}
- else
- {
- //---不应有 除访视、裁判、全局其他类型的任务进行发送邮件,请核查业务逻辑
- throw new BusinessValidationFailedException(_localizer["TrialEmailN_InvalidTaskTypeForEmailSending"]);
- }
if (answer == OverallAssessment.PD.GetEnumInt())
{
- answer = "是";
+ answer = _userInfo.IsEn_Us ? "Yes" : "是";
}
else
{
- answer = "否";
+ answer = _userInfo.IsEn_Us ? "No" : "否";
+ }
+
+ break;
+ case CriterionType.IRECIST1Point1:
+
+ if (answer == OverallAssessment.iCPD.GetEnumInt())
+ {
+ answer = _userInfo.IsEn_Us ? "Yes" : "是";
+ }
+ else
+ {
+ answer = _userInfo.IsEn_Us ? "No" : "否";
+ }
+
+ break;
+ case CriterionType.Lugano2014:
+
+ if (answer == ImagingOverallAssessment_Lugano.PMDPD.GetEnumInt())
+ {
+ answer = _userInfo.IsEn_Us ? "Yes" : "是";
+ }
+ else
+ {
+ answer = _userInfo.IsEn_Us ? "No" : "否";
+ }
+
+ break;
+
+ case CriterionType.Lugano2014WithoutPET:
+
+ if (answer == CTMRIOverallAssessment.PD.GetEnumInt())
+ {
+ answer = _userInfo.IsEn_Us ? "Yes" : "是";
+ }
+ else
+ {
+ answer = _userInfo.IsEn_Us ? "No" : "否";
}
break;
case CriterionType.PCWG3:
- if (readingCategory == ReadingCategory.Visit)
- {
-
- visitQuestionAnswer = await _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == visitTaskId && t.ReadingQuestionTrial.QuestionType == QuestionType.SiteVisitForTumorEvaluation).FirstNotNullAsync();
-
-
- answer = visitQuestionAnswer.Answer;
- }
- else if (readingCategory == ReadingCategory.Global)
- {
- var questionAnsewer = await _readingGlobalTaskInfoRepository.Where(t => t.TaskId == visitTaskId && t.TrialReadingQuestion.QuestionType == QuestionType.SiteVisitForTumorEvaluation).FirstNotNullAsync();
-
- answer = questionAnsewer.Answer;
- }
- //else if (readingCategory == ReadingCategory.Judge)
- //{
- // //var judgeResultTaskId = await _visitTaskRepository.Where(t => t.Id == visitTaskId).Select(t => t.JudgeResultTaskId).FirstNotNullAsync();
-
- // var questionAnsewer = await _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == visitTaskId && t.ReadingQuestionTrial.QuestionType == QuestionType.SiteVisitForTumorEvaluation).FirstNotNullAsync();
-
- // answer = questionAnsewer.Answer;
- //}
- else
- {
- //---不应有 除访视、裁判、全局其他类型的任务进行发送邮件,请核查业务逻辑
- throw new BusinessValidationFailedException(_localizer["TrialEmailN_InvalidTaskTypeForEmailSending"]);
- }
if (answer == VisitTumorEvaluation.PD.GetEnumInt())
{
- answer = "是";
+ answer = _userInfo.IsEn_Us ? "Yes" : "是";
}
if (answer == VisitTumorEvaluation.ND.GetEnumInt())
{
@@ -1167,32 +1387,50 @@ namespace IRaCIS.Core.Application.Service
}
else
{
- answer = "否";
+ answer = _userInfo.IsEn_Us ? "No" : "否";
}
break;
- case CriterionType.SelfDefine:
- case CriterionType.mRECISTMesothelioma:
- case CriterionType.RECIL:
- case CriterionType.RECIST1Point0:
- case CriterionType.WHO:
- case CriterionType.PERCIST:
- case CriterionType.Forrest:
- case CriterionType.Lugano2014:
- case CriterionType.IRECIST1Point1:
+
+
case CriterionType.RANO_BM:
+ break;
case CriterionType.RANO:
+ break;
case CriterionType.IWCLL2018:
- case CriterionType.mRECISTHCC:
+ break;
+
case CriterionType.Cheson2007:
+ break;
case CriterionType.IMWG2016:
+ break;
+
+ case CriterionType.mRECISTMesothelioma:
+ break;
+ case CriterionType.RECIL:
+ break;
+ case CriterionType.RECIST1Point0:
+ break;
+ case CriterionType.WHO:
+ break;
+ case CriterionType.PERCIST:
+ break;
+ case CriterionType.Forrest:
+ break;
+
+ case CriterionType.IVUS:
+ break;
+ case CriterionType.OCT:
+ break;
+ case CriterionType.MRIPDFF:
+ break;
+ case CriterionType.NoCriterion:
+ break;
+ case CriterionType.SelfDefine:
+ break;
default:
-
- //---该标准任务还未定义PD获取逻辑,联系业务和后台开发协商后补充
- throw new BusinessValidationFailedException(_localizer["TrialEmailN_PDLogicNotDefined"]);
+ break;
}
-
-
return answer;
@@ -1386,9 +1624,9 @@ namespace IRaCIS.Core.Application.Service
var trialConfig = _trialRepository.Where(t => t.Id == inQuery.TrialId).Select(t => new { t.IsEnrollementQualificationConfirm, t.IsPDProgressView }).First();
var trialEmailNoticeConfigQueryable = _trialEmailNoticeConfigRepository.Where(t => t.TrialId == inQuery.TrialId)
- .WhereIf(inQuery.IsDistinguishCriteria == false, t => t.TrialReadingCriterionId == null)
- .WhereIf(inQuery.IsDistinguishCriteria == true, t => t.CriterionTypeEnum != null)
- .WhereIf(inQuery.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)
+ .WhereIf(inQuery.IsDistinguishCriteria == false, t => t.IsDistinguishCriteria == false)
+ .WhereIf(inQuery.IsDistinguishCriteria == true, t => t.IsDistinguishCriteria == true)
+ .WhereIf(inQuery.CriterionTypeEnum != null, t => t.CriterionTypeList.Any(c=>c==inQuery.CriterionTypeEnum))
.WhereIf(inQuery.BusinessScenarioEnum != null, t => t.BusinessScenarioEnum == inQuery.BusinessScenarioEnum)
.WhereIf(inQuery.EmailUrgentEnum != null, t => t.EmailUrgentEnum == inQuery.EmailUrgentEnum)
.WhereIf(inQuery.IsEnable != null, t => t.IsEnable == inQuery.IsEnable)