修改加急发送邮件
continuous-integration/drone/push Build is passing Details

IRC_NewDev
hang 2024-11-01 14:18:16 +08:00
parent ebe597a575
commit dc1cea6b5a
6 changed files with 18158 additions and 55 deletions

View File

@ -16,12 +16,12 @@ namespace IRaCIS.Core.API
services.AddHangfire(hangFireConfig => services.AddHangfire(hangFireConfig =>
{ {
//本地window 调试 使用内存,服务器部署使用数据库,防止服务器任务调度到本地 //本地window 调试 使用内存,服务器部署使用数据库,防止服务器任务调度到本地
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) //if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{ //{
hangFireConfig.UseInMemoryStorage(); // hangFireConfig.UseInMemoryStorage();
} //}
else //else
{ {
//指定存储介质 //指定存储介质
hangFireConfig.UseSqlServerStorage(hangFireConnStr, new SqlServerStorageOptions() hangFireConfig.UseSqlServerStorage(hangFireConnStr, new SqlServerStorageOptions()

View File

@ -1,4 +1,5 @@
using IRaCIS.Application.Contracts; using DocumentFormat.OpenXml;
using IRaCIS.Application.Contracts;
using IRaCIS.Core.Application.Contracts; using IRaCIS.Core.Application.Contracts;
using IRaCIS.Core.Application.Helper; using IRaCIS.Core.Application.Helper;
using IRaCIS.Core.Application.MassTransit.Consumer; using IRaCIS.Core.Application.MassTransit.Consumer;
@ -43,7 +44,7 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
IsEn_US = isEn_US, IsEn_US = isEn_US,
DictionaryList = new List<DictionaryDto>() DictionaryList = new List<DictionaryDto>()
{ {
new DictionaryDto (){DictionaryCode= "YesOrNo",EnumValue="1" } new DictionaryDto (){DictionaryCode= "YesOrNo",EnumValue="true" }
} }
}); });
@ -68,14 +69,14 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
var userId = trialUser.UserId; var userId = trialUser.UserId;
var doctorCriterionList = await _trialReadingCriterionRepository.Where(t => t.IsSigned && t.IsConfirm && t.Trial.TrialUserList.Any(t => t.UserId == userId)) var doctorCriterionList = await _trialReadingCriterionRepository.Where(t => t.IsSigned && t.IsConfirm && t.TrialId == trialId && t.Trial.TrialUserList.Any(t => t.UserId == userId))
.Select(c => new .Select(c => new
{ {
TrialReadingCriterionId = c.Id, TrialReadingCriterionId = c.Id,
CriterionName = c.CriterionName, CriterionName = c.CriterionName,
UnReadList = c.VisitTaskList UnReadList = c.VisitTaskList.Where(t => t.ExpetidEmailNoticeTime == null) //没有被通知
.Where(t => t.DoctorUserId == userId && t.ReadingTaskState != ReadingTaskState.HaveSigned && t.TaskState == TaskState.Effect) .Where(t => t.DoctorUserId == userId && t.ReadingTaskState != ReadingTaskState.HaveSigned && t.TaskState == TaskState.Effect)
// 前序 不存在 未一致性核查未通过的 // 前序 不存在 未一致性核查未通过的
.Where(t => !t.Subject.SubjectVisitList.Any(sv => sv.CheckState != CheckStateEnum.CVPassed && t.VisitTaskNum > sv.VisitNum)) .Where(t => !t.Subject.SubjectVisitList.Any(sv => sv.CheckState != CheckStateEnum.CVPassed && t.VisitTaskNum > sv.VisitNum))
@ -90,7 +91,8 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
{ {
SubejctCode = c.IsAnalysisCreate ? c.BlindSubjectCode : c.Subject.Code, SubejctCode = c.IsAnalysisCreate ? c.BlindSubjectCode : c.Subject.Code,
c.TaskBlindName, c.TaskBlindName,
c.TaskName c.TaskName,
VisitTaskId = c.Id
}).ToList() }).ToList()
}).ToListAsync(); }).ToListAsync();
@ -98,7 +100,8 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
var toTalUnreadCount = doctorCriterionList.SelectMany(t => t.UnReadList).Count(); var toTalUnreadCount = doctorCriterionList.SelectMany(t => t.UnReadList).Count();
if (toTalUnreadCount > 0)
{
var messageToSend = new MimeMessage(); var messageToSend = new MimeMessage();
//发件地址 //发件地址
@ -122,15 +125,20 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
// 构建循环内容 // 构建循环内容
string criteriaDetails = ""; string criteriaDetails = "";
foreach (var criteria in doctorCriterionList) foreach (var criteria in doctorCriterionList)
{
if (criteria.UnReadList.Count() > 0)
{ {
criteriaDetails += string.Format(criteriaTemplate, criteria.CriterionName, criteria.UnReadList.Select(t => t.SubejctCode).Distinct().Count(), criteria.UnReadList.Count()); criteriaDetails += string.Format(criteriaTemplate, criteria.CriterionName, criteria.UnReadList.Select(t => t.SubejctCode).Distinct().Count(), criteria.UnReadList.Count());
}
} }
// 用循环内容替换原始模板中的循环部分 // 用循环内容替换原始模板中的循环部分
string emailContent = Regex.Replace(template, pattern, criteriaDetails); string emailContent = template.Replace(criteriaTemplate, criteriaDetails).Replace("{%for%}", "").Replace("{%end for%}", "");
var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr),
var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, emailContent),
trialUser.FullName, trialUser.FullName,
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
@ -148,6 +156,14 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
//处理标记已通知的任务
var visitTaskIdList = doctorCriterionList.Where(t => t.UnReadList.Count() > 0).SelectMany(t => t.UnReadList.Select(u => u.VisitTaskId)).ToList();
await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => visitTaskIdList.Contains(t.Id), u => new VisitTask() { ExpetidEmailNoticeTime = DateTime.Now });
}
} }

View File

@ -278,4 +278,7 @@ public class VisitTask : BaseFullAuditEntity
[Comment("前序任务需要签名 但是未签名")] [Comment("前序任务需要签名 但是未签名")]
public bool IsFrontTaskNeedSignButNotSign { get; set; } public bool IsFrontTaskNeedSignButNotSign { get; set; }
public int ImageStudyState { get; set; } public int ImageStudyState { get; set; }
[Comment("通知IR加急阅片时间")]
public DateTime? ExpetidEmailNoticeTime { get; set; }
} }

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,30 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace IRaCIS.Core.Infra.EFCore.Migrations
{
/// <inheritdoc />
public partial class VisitTaskExpetiedTime : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<DateTime>(
name: "ExpetidEmailNoticeTime",
table: "VisitTask",
type: "datetime2",
nullable: true,
comment: "通知IR加急阅片时间");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "ExpetidEmailNoticeTime",
table: "VisitTask");
}
}
}

View File

@ -13301,6 +13301,10 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
b.Property<Guid?>("DoctorUserId") b.Property<Guid?>("DoctorUserId")
.HasColumnType("uniqueidentifier"); .HasColumnType("uniqueidentifier");
b.Property<DateTime?>("ExpetidEmailNoticeTime")
.HasColumnType("datetime2")
.HasComment("通知IR加急阅片时间");
b.Property<DateTime?>("FirstReadingTime") b.Property<DateTime?>("FirstReadingTime")
.HasColumnType("datetime2") .HasColumnType("datetime2")
.HasComment("首次阅片时间"); .HasComment("首次阅片时间");