diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index 14457fbe..8de62b24 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -440,6 +440,13 @@
TrialEmailNoticeConfigService
+
+
+ 设置项目邮箱
+
+
+
+
同步系统配置的文档到想项目中
@@ -5982,6 +5989,31 @@
TrialEmailNoticeConfigView 列表视图模型
+
+
+ 发件箱账号
+
+
+
+
+ 发件人
+
+
+
+
+ 密码/授权码
+
+
+
+
+ SMTP服务器
+
+
+
+
+ SMTP端口
+
+
TrialEmailNoticeConfigQuery 列表查询参数模型
diff --git a/IRaCIS.Core.Application/Service/Document/DTO/TrialEmailNoticeConfigViewModel.cs b/IRaCIS.Core.Application/Service/Document/DTO/TrialEmailNoticeConfigViewModel.cs
index 5da355aa..0f8fd191 100644
--- a/IRaCIS.Core.Application/Service/Document/DTO/TrialEmailNoticeConfigViewModel.cs
+++ b/IRaCIS.Core.Application/Service/Document/DTO/TrialEmailNoticeConfigViewModel.cs
@@ -48,7 +48,44 @@ namespace IRaCIS.Core.Application.ViewModel
}
+ public class GetTrialEmailSetOutDto
+ {
+ public Guid TrialId { get; set; }
+ ///
+ /// 发件箱账号
+ ///
+ public string EmailFromEmail { get; set; } = string.Empty;
+
+ ///
+ /// 发件人
+ ///
+ public string EmailFromName { get; set; } = string.Empty;
+
+ ///
+ /// 密码/授权码
+ ///
+ public string EmailAuthorizationCode { get; set; } = string.Empty;
+
+ ///
+ /// SMTP服务器
+ ///
+ public string EmailSMTPServerAddress { get; set; } = string.Empty;
+
+ ///
+ /// SMTP端口
+ ///
+ public int? EmailSMTPServerPort { get; set; }
+ }
+
+ public class SetTrialEmailInDto : GetTrialEmailSetOutDto
+ {
+
+ }
+ public class GetTrialEmailSetInDto
+ {
+ public Guid TrialId { get; set; }
+ }
///TrialEmailNoticeConfigQuery 列表查询参数模型
public class TrialEmailNoticeConfigQuery
diff --git a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs
index ce2b4e40..a0f03810 100644
--- a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs
+++ b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs
@@ -26,17 +26,79 @@ namespace IRaCIS.Core.Application.Service
{
private readonly IRepository _trialEmailNoticeConfigRepository;
+ private readonly IRepository _trialRepository;
public IRepository _visitTaskRepository { get; }
public IRepository _trialUserRepository { get; }
- public TrialEmailNoticeConfigService(IRepository trialEmailNoticeConfigRepository, IRepository visitTaskRepository, IRepository trialUserRepository)
+ public TrialEmailNoticeConfigService(IRepository trialEmailNoticeConfigRepository, IRepository visitTaskRepository,
+ IRepository trialRepository,
+ IRepository trialUserRepository)
{
_trialEmailNoticeConfigRepository = trialEmailNoticeConfigRepository;
_visitTaskRepository = visitTaskRepository;
+ this._trialRepository = trialRepository;
_trialUserRepository = trialUserRepository;
}
+ ///
+ /// 设置项目邮箱
+ ///
+ ///
+ ///
+ [HttpPost]
+ public async Task GetTrialEmailSet(GetTrialEmailSetInDto inDto)
+ {
+ return await _trialRepository.Where(x => x.Id == inDto.TrialId).Select(x => new GetTrialEmailSetOutDto()
+ {
+ TrialId = inDto.TrialId,
+ EmailAuthorizationCode = x.EmailAuthorizationCode,
+ EmailSMTPServerAddress = x.EmailSMTPServerAddress,
+ EmailFromEmail = x.EmailFromEmail,
+ EmailFromName = x.EmailFromEmail,
+ EmailSMTPServerPort = x.EmailSMTPServerPort
+
+ }).FirstNotNullAsync();
+ }
+
+
+ public async Task SetTrialEmail(SetTrialEmailInDto inDto)
+ {
+
+ await TestEmailConfigAsync(new TrialEmailNoticeConfigAddOrEdit() {
+
+ AuthorizationCode=inDto.EmailAuthorizationCode,
+ FromEmail=inDto.EmailFromEmail,
+ FileName=inDto.EmailFromName,
+ SMTPServerAddress=inDto.EmailSMTPServerAddress,
+ SMTPServerPort= inDto.EmailSMTPServerPort.Value,
+
+ });
+
+ await _trialRepository.UpdatePartialFromQueryAsync(inDto.TrialId, x => new Trial()
+ {
+
+ EmailFromEmail = inDto.EmailFromEmail,
+ EmailFromName = inDto.EmailFromName,
+ EmailAuthorizationCode = inDto.EmailAuthorizationCode,
+ EmailSMTPServerAddress = inDto.EmailSMTPServerAddress,
+ EmailSMTPServerPort = inDto.EmailSMTPServerPort
+ });
+
+
+
+ await _trialEmailNoticeConfigRepository.BatchUpdateNoTrackingAsync(x => x.TrialId == inDto.TrialId, x => new TrialEmailNoticeConfig()
+ {
+ AuthorizationCode = inDto.EmailAuthorizationCode,
+ FromEmail = inDto.EmailFromEmail,
+ FileName = inDto.EmailFromName,
+ SMTPServerAddress = inDto.EmailSMTPServerAddress,
+ SMTPServerPort = inDto.EmailSMTPServerPort.Value,
+ });
+
+ await _trialRepository.SaveChangesAsync();
+ return ResponseOutput.Ok();
+ }
///
/// 同步系统配置的文档到想项目中
@@ -750,6 +812,7 @@ namespace IRaCIS.Core.Application.Service
var trialEmailNoticeConfigQueryable = _trialEmailNoticeConfigRepository.Where(t => t.TrialId == inQuery.TrialId)
.WhereIf(inQuery.CriterionTypeEnum != null, t => t.CriterionTypeEnum == inQuery.CriterionTypeEnum)
+ .WhereIf(inQuery.CriterionTypeEnum == null, t => t.CriterionTypeEnum == null)
.WhereIf(inQuery.BusinessScenarioEnum != null, t => t.BusinessScenarioEnum == inQuery.BusinessScenarioEnum)
.ProjectTo(_mapper.ConfigurationProvider);
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs
index a3eca9eb..1568499f 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs
@@ -135,7 +135,16 @@ namespace IRaCIS.Application.Services
x.TaskBlindName,
} ).ToListAsync();
-
+ var globalVisitTwoTaskIds = await _visitTaskRepository.Where(x => x.Id == taskList[1].Id).Select(x => x.RelatedVisitTaskIdList).FirstNotNullAsync();
+
+ // 找到所有的的任务
+ var globalVisitTwoTasks = await _visitTaskRepository.Where(x => globalVisitTwoTaskIds.Contains(x.Id)).Select(x => new {
+ x.Id,
+ x.ArmEnum,
+ x.VisitTaskNum,
+ x.SourceSubjectVisitId,
+ x.TaskBlindName,
+ }).ToListAsync();
var taskNum = globalVisitTasks.Select(x => x.VisitTaskNum).Distinct().OrderBy(x=>x).ToList();
@@ -153,6 +162,19 @@ namespace IRaCIS.Application.Services
}).ToListAsync();
+ var judgeQuestionTwoAnswer = await _readingTaskQuestionAnswerRepository.Where(x => globalVisitTwoTaskIds.Contains(x.VisitTaskId) && x.ReadingQuestionTrial.IsJudgeQuestion).OrderBy(x => x.ReadingQuestionTrial.ShowOrder)
+ .Select(x => new GlobalVisitJudgeQuestion()
+ {
+ Answer = x.Answer,
+ ShowOrder = x.ReadingQuestionTrial.ShowOrder,
+ VisitTaskId = x.VisitTaskId,
+ QuestionId = x.ReadingQuestionTrial.Id,
+ QuestionName = x.ReadingQuestionTrial.QuestionName.LanguageName(x.ReadingQuestionTrial.QuestionEnName, _userInfo.IsEn_Us),
+ QuestionGenre = x.ReadingQuestionTrial.QuestionGenre,
+ DictionaryCode = x.ReadingQuestionTrial.DictionaryCode,
+
+ }).ToListAsync();
+
foreach (var item in taskNum)
{
var globalTaskInfos = globalVisitTasks.Where(x => x.VisitTaskNum == item).OrderBy(x => x.ArmEnum).ToList();
@@ -181,6 +203,25 @@ namespace IRaCIS.Application.Services
}).ToList(),
});
+
+
+ var towtask = globalVisitTwoTasks.Where(x => x.VisitTaskNum == globalitem.VisitTaskNum).FirstOrDefault();
+
+ judgeReadingInfoDto.VisitTaskInfoList.Add(new JudgeReadingQuestion()
+ {
+ ArmEnum = towtask.ArmEnum,
+ VisitTaskId = towtask.Id,
+ JudgeQuestionList = judgeQuestionTwoAnswer.Where(x => x.VisitTaskId == towtask.Id).OrderBy(x => x.ShowOrder)
+ .Select(x => new JudgeQuestion()
+ {
+ Answer = x.Answer,
+ QuestionId = x.QuestionId,
+ QuestionName = x.QuestionName,
+ QuestionGenre = x.QuestionGenre,
+ DictionaryCode = x.DictionaryCode,
+
+ }).ToList(),
+ });
}
judgeInfo.VisitInfoList.Add(judgeReadingInfoDto);
}
@@ -521,7 +562,7 @@ namespace IRaCIS.Application.Services
}
}
- else
+ else if(!criterionInfo.IsReadingPeriod)
{
var query = from questionAnswet in _readingTaskQuestionAnswerRepository.Where(x => visitTaskids.Contains(x.VisitTaskId))
join question in _readingQuestionTrialRepository.Where(x => x.IsJudgeQuestion) on new { ReadingQuestionTrialId = questionAnswet.ReadingQuestionTrialId } equals new { ReadingQuestionTrialId = question.Id }
diff --git a/IRaCIS.Core.Domain/Document/TrialEmailNoticeConfig.cs b/IRaCIS.Core.Domain/Document/TrialEmailNoticeConfig.cs
index b527fc35..a4b6029a 100644
--- a/IRaCIS.Core.Domain/Document/TrialEmailNoticeConfig.cs
+++ b/IRaCIS.Core.Domain/Document/TrialEmailNoticeConfig.cs
@@ -71,7 +71,7 @@ namespace IRaCIS.Core.Domain.Models
public CommonDocumentBusinessScenario BusinessScenarioEnum { get; set; }
- public CriterionType CriterionTypeEnum { get; set; }
+ public CriterionType? CriterionTypeEnum { get; set; }
[Required]
public string FilePath { get; set; } = string.Empty;
diff --git a/IRaCIS.Core.Domain/Trial/Trial.cs b/IRaCIS.Core.Domain/Trial/Trial.cs
index e9711fb7..e0d5c880 100644
--- a/IRaCIS.Core.Domain/Trial/Trial.cs
+++ b/IRaCIS.Core.Domain/Trial/Trial.cs
@@ -325,6 +325,33 @@ namespace IRaCIS.Core.Domain.Models
public string BlindFollowUpPrefix { get; set; } = "Follow-up";
+ #region ʼ
+ ///
+ /// ˺
+ ///
+ public string EmailFromEmail { get; set; } = string.Empty;
+
+ ///
+ ///
+ ///
+ public string EmailFromName { get; set; } = string.Empty;
+
+ ///
+ /// /Ȩ
+ ///
+ public string EmailAuthorizationCode { get; set; } = string.Empty;
+
+ ///
+ /// SMTP
+ ///
+ public string EmailSMTPServerAddress { get; set; } = string.Empty;
+
+ ///
+ /// SMTP˿
+ ///
+ public int? EmailSMTPServerPort { get; set; }
+ #endregion
+
/////
///// ͼǷбע
/////