修改排序
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
98acb5ea70
commit
7c0c9b986d
|
@ -2,6 +2,7 @@
|
|||
using IRaCIS.Core.Application.Contracts;
|
||||
using IRaCIS.Core.Application.Helper;
|
||||
using IRaCIS.Core.Application.MassTransit.Consumer;
|
||||
using IRaCIS.Core.Application.Service.Reading.Dto;
|
||||
using MassTransit;
|
||||
using Microsoft.Extensions.Options;
|
||||
using MimeKit;
|
||||
|
@ -9,7 +10,9 @@ using System;
|
|||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Reactive.Joins;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace IRaCIS.Core.Application.MassTransit.Recurring
|
||||
|
@ -20,7 +23,8 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
|
|||
/// </summary>
|
||||
public class UrgentIRUnReadTaskRecurringEventConsumer(
|
||||
IRepository<ReadingQuestionCriterionTrial> _trialReadingCriterionRepository,
|
||||
IRepository<VisitTask> _visitTaskRepository,
|
||||
IRepository<VisitTask> _visitTaskRepository,
|
||||
IRepository<Dictionary> _dictionaryRepository,
|
||||
IRepository<TrialUser> _trialUserRepository,
|
||||
IRepository<EmailNoticeConfig> _emailNoticeConfigrepository,
|
||||
IOptionsMonitor<SystemEmailSendConfig> systemEmailConfig) : IConsumer<UrgentIRUnReadTaskRecurringEvent>
|
||||
|
@ -33,6 +37,14 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
|
|||
|
||||
var trialId = context.Message.TrialId;
|
||||
|
||||
var dictionValue = await CommonEmailHelper.TranslationDictionary(new TranslationDictionaryDto()
|
||||
{
|
||||
DictionaryRepository = _dictionaryRepository,
|
||||
IsEn_US = isEn_US,
|
||||
DictionaryList = new List<DictionaryDto>()
|
||||
{new DictionaryDto (){DictionaryCode= "YesOrNo",EnumValue="1", }, //是否加急}
|
||||
});
|
||||
|
||||
//找到该项目所有的IR 并且有加急 和Pd 未读的任务
|
||||
|
||||
Expression<Func<VisitTask, bool>> comonTaskFilter = t => t.TrialId == trialId && t.TaskState == TaskState.Effect && t.ReadingTaskState != ReadingTaskState.HaveSigned && t.TaskAllocationState == TaskAllocationState.Allocated;
|
||||
|
@ -41,10 +53,11 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
|
|||
{
|
||||
t.UserId,
|
||||
t.User.FullName,
|
||||
t.User.EMail,
|
||||
t.User.UserName,
|
||||
t.Trial.TrialCode,
|
||||
t.Trial.ResearchProgramNo,
|
||||
TrialReadingCriterionList = t.Trial.TrialReadingCriterionList.Select(t => new { t.CriterionName, TrialReadingCriterionId = t.Id }).ToList()
|
||||
t.Trial.ResearchProgramNo
|
||||
//TrialReadingCriterionList = t.Trial.TrialReadingCriterionList.Select(t => new { t.CriterionName, TrialReadingCriterionId = t.Id }).ToList()
|
||||
});
|
||||
|
||||
|
||||
|
@ -58,6 +71,7 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
|
|||
{
|
||||
|
||||
TrialReadingCriterionId = c.Id,
|
||||
CriterionName=c.CriterionName,
|
||||
|
||||
UnReadList = c.VisitTaskList
|
||||
.Where(t => t.DoctorUserId == userId && t.ReadingTaskState != ReadingTaskState.HaveSigned && t.TaskState == TaskState.Effect)
|
||||
|
@ -85,11 +99,35 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
|
|||
|
||||
var messageToSend = new MimeMessage();
|
||||
|
||||
//发件地址
|
||||
messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail));
|
||||
messageToSend.To.Add(new MailboxAddress(trialUser.FullName, trialUser.EMail));
|
||||
|
||||
var companyName = isEn_US ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN;
|
||||
|
||||
Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input =>
|
||||
{
|
||||
var topicStr = string.Format(input.topicStr, trialUser.ResearchProgramNo);
|
||||
|
||||
var template = input.htmlBodyStr;
|
||||
|
||||
//正则提取循环的部分 {%for%}(.*?){%end for%}
|
||||
string pattern = @"{%for%}(.*?){%end for%}";
|
||||
var match = Regex.Match(template, pattern, RegexOptions.Singleline);
|
||||
|
||||
string criteriaTemplate = match.Groups[1].Value; // 提取循环模板
|
||||
|
||||
// 构建循环内容
|
||||
string criteriaDetails = "";
|
||||
foreach (var criteria in doctorCriterionList)
|
||||
{
|
||||
criteriaDetails += string.Format(criteriaTemplate, criteria.CriterionName, criteria.UnReadList.Select(t=>t.SubejctCode).Distinct().Count(), criteria.UnReadList.Count());
|
||||
}
|
||||
|
||||
// 用循环内容替换原始模板中的循环部分
|
||||
string emailContent = Regex.Replace(template, pattern, criteriaDetails);
|
||||
|
||||
|
||||
var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr),
|
||||
trialUser.FullName,
|
||||
|
||||
|
@ -97,15 +135,14 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
|
|||
toTalUnreadCount,
|
||||
|
||||
trialUser.ResearchProgramNo,
|
||||
trialUser.TrialReadingCriterionList,
|
||||
//siteSurveyInfo.Phone,
|
||||
dictionValue[0],
|
||||
_systemEmailConfig.SiteUrl
|
||||
);
|
||||
|
||||
return (topicStr, htmlBodyStr);
|
||||
};
|
||||
|
||||
await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, EmailBusinessScenario.Approval_SubmitSiteSurvey, messageToSend, emailConfigFunc);
|
||||
await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, EmailBusinessScenario.ExpeditedReading, messageToSend, emailConfigFunc);
|
||||
|
||||
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ public class EventStoreRecordService(IRepository<EventStoreRecord> _eventStoreRe
|
|||
var eventStoreRecordQueryable = _eventStoreRecordRepository.WhereIf(inQuery.EventTypeName.IsNotNullOrEmpty(),t=>t.EventTypeName.Contains(inQuery.EventTypeName))
|
||||
.ProjectTo<EventStoreRecordView>(_mapper.ConfigurationProvider);
|
||||
|
||||
var pageList = await eventStoreRecordQueryable.ToPagedListAsync(inQuery);
|
||||
var pageList = await eventStoreRecordQueryable.ToPagedListAsync(inQuery,nameof(EventStoreRecordView.CreateTime));
|
||||
|
||||
return pageList;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue