Merge branch 'Test_IRC_Net8' of https://gitea.frp.extimaging.com/XCKJ/irc-netcore-api into Test_IRC_Net8
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
commit
3fd299bb49
|
|
@ -15,12 +15,13 @@ using Hangfire.Storage;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using MassTransit.Mediator;
|
using MassTransit.Mediator;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
|
|
||||||
namespace IRaCIS.Core.API.HostService;
|
namespace IRaCIS.Core.API.HostService;
|
||||||
|
|
||||||
public class HangfireHostService(IRecurringMessageScheduler _recurringMessageScheduler,
|
public class HangfireHostService(IRecurringMessageScheduler _recurringMessageScheduler,
|
||||||
IRepository<TrialEmailNoticeConfig> _trialEmailNoticeConfigRepository,
|
IRepository<TrialEmailNoticeConfig> _trialEmailNoticeConfigRepository,
|
||||||
|
IConfiguration _config,
|
||||||
IRepository<EmailNoticeConfig> _emailNoticeConfigrepository,
|
IRepository<EmailNoticeConfig> _emailNoticeConfigrepository,
|
||||||
IMediator _mediator,
|
IMediator _mediator,
|
||||||
ILogger<HangfireHostService> _logger) : IHostedService
|
ILogger<HangfireHostService> _logger) : IHostedService
|
||||||
|
|
@ -56,6 +57,8 @@ public class HangfireHostService(IRecurringMessageScheduler _recurringMessageSch
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
string defaultCulture = _config.GetValue<string>("SystemEmailSendConfig:CronEmailDefaultCulture");
|
||||||
|
|
||||||
// 项目手动选择,周期性邮件
|
// 项目手动选择,周期性邮件
|
||||||
var taskInfoList = await _trialEmailNoticeConfigRepository.Where(t => t.Trial.TrialStatusStr == StaticData.TrialState.TrialOngoing && t.EmailCron != string.Empty && t.IsAutoSend)
|
var taskInfoList = await _trialEmailNoticeConfigRepository.Where(t => t.Trial.TrialStatusStr == StaticData.TrialState.TrialOngoing && t.EmailCron != string.Empty && t.IsAutoSend)
|
||||||
.Select(t => new { t.Id, t.Code, TrialCode = t.Trial.TrialCode, t.EmailCron, t.BusinessScenarioEnum, t.TrialId })
|
.Select(t => new { t.Id, t.Code, TrialCode = t.Trial.TrialCode, t.EmailCron, t.BusinessScenarioEnum, t.TrialId })
|
||||||
|
|
@ -68,11 +71,11 @@ public class HangfireHostService(IRecurringMessageScheduler _recurringMessageSch
|
||||||
|
|
||||||
var trialId = task.TrialId;
|
var trialId = task.TrialId;
|
||||||
|
|
||||||
HangfireJobHelper.AddOrUpdateTrialCronJob(jobId, trialId, task.BusinessScenarioEnum, task.EmailCron);
|
HangfireJobHelper.AddOrUpdateTrialCronJob(jobId, trialId, task.BusinessScenarioEnum, task.EmailCron, defaultCulture);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 系统邮件定时任务
|
// 系统邮件定时任务 要设置默认语言
|
||||||
var systemTaskInfoList = await _emailNoticeConfigrepository.Where(t => t.EmailCron != string.Empty && t.IsAutoSend)
|
var systemTaskInfoList = await _emailNoticeConfigrepository.Where(t => t.EmailCron != string.Empty && t.IsAutoSend)
|
||||||
.Select(t => new { t.Id, t.Code, t.EmailCron, t.BusinessScenarioEnum, })
|
.Select(t => new { t.Id, t.Code, t.EmailCron, t.BusinessScenarioEnum, })
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
@ -82,7 +85,7 @@ public class HangfireHostService(IRecurringMessageScheduler _recurringMessageSch
|
||||||
//利用主键作为任务Id
|
//利用主键作为任务Id
|
||||||
var jobId = $"{task.Id}_({task.BusinessScenarioEnum})";
|
var jobId = $"{task.Id}_({task.BusinessScenarioEnum})";
|
||||||
|
|
||||||
HangfireJobHelper.AddOrUpdateTimingCronJob(jobId, task.BusinessScenarioEnum, task.EmailCron);
|
HangfireJobHelper.AddOrUpdateTimingCronJob(jobId, task.BusinessScenarioEnum, task.EmailCron, defaultCulture);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ using Newtonsoft.Json;
|
||||||
using Serilog;
|
using Serilog;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
@ -29,6 +30,10 @@ using System.Runtime.InteropServices;
|
||||||
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
|
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
|
||||||
AppContext.SetSwitch("Npgsql.DisableDateTimeInfinityConversions", true);
|
AppContext.SetSwitch("Npgsql.DisableDateTimeInfinityConversions", true);
|
||||||
|
|
||||||
|
|
||||||
|
Console.WriteLine("Startup Culture: " + CultureInfo.CurrentCulture.Name);
|
||||||
|
Console.WriteLine("Startup UI Culture: " + CultureInfo.CurrentUICulture.Name);
|
||||||
|
|
||||||
#region 获取环境变量
|
#region 获取环境变量
|
||||||
//以配置文件为准,否则 从url中取环境值(服务以命令行传递参数启动,配置文件配置了就不需要传递环境参数)
|
//以配置文件为准,否则 从url中取环境值(服务以命令行传递参数启动,配置文件配置了就不需要传递环境参数)
|
||||||
var config = new ConfigurationBuilder()
|
var config = new ConfigurationBuilder()
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,12 @@
|
||||||
//"RemoteNew": "Server=prod_mssql_standard,1433;Database=Prod_IRC;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true",
|
//"RemoteNew": "Server=prod_mssql_standard,1433;Database=Prod_IRC;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true",
|
||||||
//"Hangfire": "Server=prod_mssql_standard,1433;Database=Prod_IRC_Hangfire;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true"
|
//"Hangfire": "Server=prod_mssql_standard,1433;Database=Prod_IRC_Hangfire;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true"
|
||||||
},
|
},
|
||||||
|
"WeComNoticeConfig": {
|
||||||
|
"IsOpenWeComNotice": true,
|
||||||
|
"WebhookUrl": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=4355b98e-1e72-4678-8dfb-2fc6ad0bf449", //4355b98e-1e72-4678-8dfb-2fc6ad0bf449 //cdd97aab-d256-4f07-9145-a0a2b1555322
|
||||||
|
"APINoticeUserList": [ "u", "wait..." ],
|
||||||
|
"VueNoticeUserList": [ "wangxiaoshuang", "6b7717a31647293621697b96f74e6f3d" ]
|
||||||
|
},
|
||||||
"ObjectStoreService": {
|
"ObjectStoreService": {
|
||||||
"ObjectStoreUse": "AliyunOSS",
|
"ObjectStoreUse": "AliyunOSS",
|
||||||
"AliyunOSS": {
|
"AliyunOSS": {
|
||||||
|
|
@ -81,6 +87,7 @@
|
||||||
"IsEnv_US": false,
|
"IsEnv_US": false,
|
||||||
"IsOpenErrorNoticeEmail": false,
|
"IsOpenErrorNoticeEmail": false,
|
||||||
"EmailRegexStr": "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",
|
"EmailRegexStr": "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",
|
||||||
|
"CronEmailDefaultCulture": "zh-CN",
|
||||||
"ErrorNoticeEmailList": [ "872297557@qq.com" ]
|
"ErrorNoticeEmailList": [ "872297557@qq.com" ]
|
||||||
},
|
},
|
||||||
"SystemPacsConfig": {
|
"SystemPacsConfig": {
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,12 @@
|
||||||
// Hangfire 定时任务数据库链接字符串
|
// Hangfire 定时任务数据库链接字符串
|
||||||
"Hangfire": "Server=106.14.89.110,1435;Database=Test_IRC_Hangfire;User ID=sa;Password=xc@123456;TrustServerCertificate=true"
|
"Hangfire": "Server=106.14.89.110,1435;Database=Test_IRC_Hangfire;User ID=sa;Password=xc@123456;TrustServerCertificate=true"
|
||||||
},
|
},
|
||||||
|
"WeComNoticeConfig": {
|
||||||
|
"IsOpenWeComNotice": true,
|
||||||
|
"WebhookUrl": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=4355b98e-1e72-4678-8dfb-2fc6ad0bf449", //4355b98e-1e72-4678-8dfb-2fc6ad0bf449 //cdd97aab-d256-4f07-9145-a0a2b1555322
|
||||||
|
"APINoticeUserList": [ "u", "wait..." ],
|
||||||
|
"VueNoticeUserList": [ "wangxiaoshuang", "6b7717a31647293621697b96f74e6f3d" ]
|
||||||
|
},
|
||||||
// 对象存储服务配置
|
// 对象存储服务配置
|
||||||
"ObjectStoreService": {
|
"ObjectStoreService": {
|
||||||
// 使用的对象存储服务类型
|
// 使用的对象存储服务类型
|
||||||
|
|
@ -162,6 +168,7 @@
|
||||||
"IsOpenErrorNoticeEmail": false,
|
"IsOpenErrorNoticeEmail": false,
|
||||||
// 邮箱格式校验正则表达式
|
// 邮箱格式校验正则表达式
|
||||||
"EmailRegexStr": "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",
|
"EmailRegexStr": "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",
|
||||||
|
"CronEmailDefaultCulture": "zh-CN",
|
||||||
// 接收系统异常报警的邮箱列表
|
// 接收系统异常报警的邮箱列表
|
||||||
"ErrorNoticeEmailList": [ "872297557@qq.com" ]
|
"ErrorNoticeEmailList": [ "872297557@qq.com" ]
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,12 @@
|
||||||
//"RemoteNew": "Server=44.210.231.169,1435;Database=US_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true",
|
//"RemoteNew": "Server=44.210.231.169,1435;Database=US_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true",
|
||||||
//"Hangfire": "Server=44.210.231.169,1435;Database=US_IRC_Hangfire;User ID=sa;Password=xc@123456;TrustServerCertificate=true",
|
//"Hangfire": "Server=44.210.231.169,1435;Database=US_IRC_Hangfire;User ID=sa;Password=xc@123456;TrustServerCertificate=true",
|
||||||
},
|
},
|
||||||
|
"WeComNoticeConfig": {
|
||||||
|
"IsOpenWeComNotice": true,
|
||||||
|
"WebhookUrl": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=4355b98e-1e72-4678-8dfb-2fc6ad0bf449", //4355b98e-1e72-4678-8dfb-2fc6ad0bf449 //cdd97aab-d256-4f07-9145-a0a2b1555322
|
||||||
|
"APINoticeUserList": [ "u", "wait..." ],
|
||||||
|
"VueNoticeUserList": [ "wangxiaoshuang", "6b7717a31647293621697b96f74e6f3d" ]
|
||||||
|
},
|
||||||
"ObjectStoreService": {
|
"ObjectStoreService": {
|
||||||
"ObjectStoreUse": "AWS",
|
"ObjectStoreUse": "AWS",
|
||||||
"MinIO": {
|
"MinIO": {
|
||||||
|
|
@ -87,6 +92,7 @@
|
||||||
"IsEnv_US": true,
|
"IsEnv_US": true,
|
||||||
"IsOpenErrorNoticeEmail": false,
|
"IsOpenErrorNoticeEmail": false,
|
||||||
"EmailRegexStr": "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",
|
"EmailRegexStr": "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",
|
||||||
|
"CronEmailDefaultCulture": "en-US",
|
||||||
"ErrorNoticeEmailList": [ "872297557@qq.com" ]
|
"ErrorNoticeEmailList": [ "872297557@qq.com" ]
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,12 @@
|
||||||
"RemoteNew": "Server=3.226.182.187,1435;Database=US_Uat_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true",
|
"RemoteNew": "Server=3.226.182.187,1435;Database=US_Uat_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true",
|
||||||
"Hangfire": "Server=3.226.182.187,1435;Database=US_Uat_IRC_Hangfire;User ID=sa;Password=xc@123456;TrustServerCertificate=true"
|
"Hangfire": "Server=3.226.182.187,1435;Database=US_Uat_IRC_Hangfire;User ID=sa;Password=xc@123456;TrustServerCertificate=true"
|
||||||
},
|
},
|
||||||
|
"WeComNoticeConfig": {
|
||||||
|
"IsOpenWeComNotice": true,
|
||||||
|
"WebhookUrl": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=4355b98e-1e72-4678-8dfb-2fc6ad0bf449", //4355b98e-1e72-4678-8dfb-2fc6ad0bf449 //cdd97aab-d256-4f07-9145-a0a2b1555322
|
||||||
|
"APINoticeUserList": [ "u", "wait..." ],
|
||||||
|
"VueNoticeUserList": [ "wangxiaoshuang", "6b7717a31647293621697b96f74e6f3d" ]
|
||||||
|
},
|
||||||
|
|
||||||
"ObjectStoreService": {
|
"ObjectStoreService": {
|
||||||
|
|
||||||
|
|
@ -93,6 +99,7 @@
|
||||||
"IsEnv_US": true,
|
"IsEnv_US": true,
|
||||||
"IsOpenErrorNoticeEmail": false,
|
"IsOpenErrorNoticeEmail": false,
|
||||||
"EmailRegexStr": "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",
|
"EmailRegexStr": "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",
|
||||||
|
"CronEmailDefaultCulture": "en-US",
|
||||||
"ErrorNoticeEmailList": [ "872297557@qq.com" ]
|
"ErrorNoticeEmailList": [ "872297557@qq.com" ]
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,12 @@
|
||||||
"RemoteNew": "Server=101.132.253.119,1435;Database=Uat_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true",
|
"RemoteNew": "Server=101.132.253.119,1435;Database=Uat_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true",
|
||||||
"Hangfire": "Server=101.132.253.119,1435;Database=Uat_IRC_Hangfire;User ID=sa;Password=xc@123456;TrustServerCertificate=true"
|
"Hangfire": "Server=101.132.253.119,1435;Database=Uat_IRC_Hangfire;User ID=sa;Password=xc@123456;TrustServerCertificate=true"
|
||||||
},
|
},
|
||||||
|
"WeComNoticeConfig": {
|
||||||
|
"IsOpenWeComNotice": true,
|
||||||
|
"WebhookUrl": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=4355b98e-1e72-4678-8dfb-2fc6ad0bf449", //4355b98e-1e72-4678-8dfb-2fc6ad0bf449 //cdd97aab-d256-4f07-9145-a0a2b1555322
|
||||||
|
"APINoticeUserList": [ "u", "wait..." ],
|
||||||
|
"VueNoticeUserList": [ "wangxiaoshuang", "6b7717a31647293621697b96f74e6f3d" ]
|
||||||
|
},
|
||||||
"ObjectStoreService": {
|
"ObjectStoreService": {
|
||||||
|
|
||||||
"ObjectStoreUse": "AliyunOSS",
|
"ObjectStoreUse": "AliyunOSS",
|
||||||
|
|
@ -100,6 +106,7 @@
|
||||||
"IsEnv_US": false,
|
"IsEnv_US": false,
|
||||||
"IsOpenErrorNoticeEmail": false,
|
"IsOpenErrorNoticeEmail": false,
|
||||||
"EmailRegexStr": "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",
|
"EmailRegexStr": "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",
|
||||||
|
"CronEmailDefaultCulture": "zh-CN",
|
||||||
"ErrorNoticeEmailList": [ "872297557@qq.com" ]
|
"ErrorNoticeEmailList": [ "872297557@qq.com" ]
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -43,12 +43,6 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"WeComNoticeConfig": {
|
|
||||||
"IsOpenWeComNotice": true,
|
|
||||||
"WebhookUrl": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=4355b98e-1e72-4678-8dfb-2fc6ad0bf449", //4355b98e-1e72-4678-8dfb-2fc6ad0bf449 //cdd97aab-d256-4f07-9145-a0a2b1555322
|
|
||||||
"APINoticeUserList": [ "ZhouHang" ],
|
|
||||||
"VueNoticeUserList": [ "wangxiaoshuang" ]
|
|
||||||
},
|
|
||||||
"IRaCISImageStore": {
|
"IRaCISImageStore": {
|
||||||
"SwitchingMode": "RemainingDiskCapacity",
|
"SwitchingMode": "RemainingDiskCapacity",
|
||||||
"SwitchingRatio": 80,
|
"SwitchingRatio": 80,
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
using IRaCIS.Core.Application.MassTransit.Consumer;
|
using IRaCIS.Core.Application.MassTransit.Consumer;
|
||||||
using IRaCIS.Core.Domain.Share;
|
using IRaCIS.Core.Domain.Share;
|
||||||
using MassTransit.Mediator;
|
using MassTransit.Mediator;
|
||||||
|
using System.Globalization;
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.Helper
|
namespace IRaCIS.Core.Application.Helper
|
||||||
{
|
{
|
||||||
|
|
@ -57,25 +58,29 @@ namespace IRaCIS.Core.Application.Helper
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void AddOrUpdateTrialCronJob(string jobId, Guid trialId, EmailBusinessScenario businessScenario, string emailCron)
|
public static void AddOrUpdateTrialCronJob(string jobId, Guid trialId, EmailBusinessScenario businessScenario, string emailCron,string defaultCulture="")
|
||||||
{
|
{
|
||||||
|
if (defaultCulture == "")
|
||||||
|
{
|
||||||
|
defaultCulture = CultureInfo.CurrentCulture.Name;
|
||||||
|
}
|
||||||
|
|
||||||
switch (businessScenario)
|
switch (businessScenario)
|
||||||
{
|
{
|
||||||
|
|
||||||
case EmailBusinessScenario.QCTask:
|
case EmailBusinessScenario.QCTask:
|
||||||
|
|
||||||
HangfireJobHelper.AddOrUpdateCronJob<IMediator>(jobId, t => t.Send(new ImageQCRecurringEvent() { TrialId = trialId }, default), emailCron);
|
HangfireJobHelper.AddOrUpdateCronJob<IMediator>(jobId, t => t.Send(new ImageQCRecurringEvent() { TrialId = trialId,CultureInfoName= defaultCulture }, default), emailCron);
|
||||||
break;
|
break;
|
||||||
case EmailBusinessScenario.CRCToQCQuestion:
|
case EmailBusinessScenario.CRCToQCQuestion:
|
||||||
HangfireJobHelper.AddOrUpdateCronJob<IMediator>(jobId, t => t.Send(new CRCImageQuestionRecurringEvent() { TrialId = trialId }, default), emailCron);
|
HangfireJobHelper.AddOrUpdateCronJob<IMediator>(jobId, t => t.Send(new CRCImageQuestionRecurringEvent() { TrialId = trialId, CultureInfoName = defaultCulture }, default), emailCron);
|
||||||
break;
|
break;
|
||||||
case EmailBusinessScenario.QCToCRCImageQuestion:
|
case EmailBusinessScenario.QCToCRCImageQuestion:
|
||||||
HangfireJobHelper.AddOrUpdateCronJob<IMediator>(jobId, t => t.Send(new QCImageQuestionRecurringEvent() { TrialId = trialId }, default), emailCron);
|
HangfireJobHelper.AddOrUpdateCronJob<IMediator>(jobId, t => t.Send(new QCImageQuestionRecurringEvent() { TrialId = trialId, CultureInfoName = defaultCulture }, default), emailCron);
|
||||||
break;
|
break;
|
||||||
//加急阅片 10分钟
|
//加急阅片 10分钟
|
||||||
case EmailBusinessScenario.ExpeditedReading:
|
case EmailBusinessScenario.ExpeditedReading:
|
||||||
HangfireJobHelper.AddOrUpdateCronJob<IMediator>(jobId, t => t.Send(new UrgentIRUnReadTaskRecurringEvent() { TrialId = trialId }, default), emailCron);
|
HangfireJobHelper.AddOrUpdateCronJob<IMediator>(jobId, t => t.Send(new UrgentIRUnReadTaskRecurringEvent() { TrialId = trialId, CultureInfoName = defaultCulture }, default), emailCron);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
@ -83,20 +88,25 @@ namespace IRaCIS.Core.Application.Helper
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void AddOrUpdateTimingCronJob(string jobId, EmailBusinessScenario businessScenario, string emailCron)
|
public static void AddOrUpdateTimingCronJob(string jobId, EmailBusinessScenario businessScenario, string emailCron, string defaultCulture="")
|
||||||
{
|
{
|
||||||
|
if (defaultCulture == "")
|
||||||
|
{
|
||||||
|
defaultCulture = CultureInfo.CurrentCulture.Name;
|
||||||
|
}
|
||||||
|
|
||||||
switch (businessScenario)
|
switch (businessScenario)
|
||||||
{
|
{
|
||||||
|
|
||||||
case EmailBusinessScenario.GeneralTraining_ExpirationNotification:
|
case EmailBusinessScenario.GeneralTraining_ExpirationNotification:
|
||||||
|
|
||||||
|
|
||||||
HangfireJobHelper.AddOrUpdateCronJob<IMediator>(jobId, t => t.Send(new SystemDocumentErverDayEvent() { }, default), emailCron);
|
HangfireJobHelper.AddOrUpdateCronJob<IMediator>(jobId, t => t.Send(new SystemDocumentErverDayEvent() { CultureInfoName = defaultCulture }, default), emailCron);
|
||||||
break;
|
break;
|
||||||
case EmailBusinessScenario.TrialTraining_ExpirationNotification:
|
case EmailBusinessScenario.TrialTraining_ExpirationNotification:
|
||||||
|
|
||||||
Console.WriteLine("更新项目到期job");
|
Console.WriteLine("更新项目到期job");
|
||||||
HangfireJobHelper.AddOrUpdateCronJob<IMediator>(jobId, t => t.Send(new TrialDocumentErverDayEvent() { }, default), emailCron);
|
HangfireJobHelper.AddOrUpdateCronJob<IMediator>(jobId, t => t.Send(new TrialDocumentErverDayEvent() { CultureInfoName = defaultCulture }, default), emailCron);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
||||||
|
|
@ -48,8 +48,8 @@ public static class WeComNotifier
|
||||||
if (!string.IsNullOrWhiteSpace(stack))
|
if (!string.IsNullOrWhiteSpace(stack))
|
||||||
{
|
{
|
||||||
stack = stack.Replace("\n", "\n> ");
|
stack = stack.Replace("\n", "\n> ");
|
||||||
if (stack.Length > 1200)
|
if (stack.Length > 600)
|
||||||
stack = stack[..1200] + "...(已截断)";
|
stack = stack[..600] + "...(已截断)";
|
||||||
}
|
}
|
||||||
|
|
||||||
var markdown = $@"## 🚨 系统告警
|
var markdown = $@"## 🚨 系统告警
|
||||||
|
|
|
||||||
|
|
@ -674,6 +674,276 @@
|
||||||
<param name="childCode"></param>
|
<param name="childCode"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.ResearchProgramNo">
|
||||||
|
<summary>
|
||||||
|
方案编号 STUDYID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.Domain">
|
||||||
|
<summary>
|
||||||
|
域 DOMAIN TU TR RS
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.ValueType">
|
||||||
|
<summary>
|
||||||
|
取值类型 TUSPID TRSPID RSSPID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.SubjectCode">
|
||||||
|
<summary>
|
||||||
|
受试者编号 USUBJID 实际展示TrialSiteSubjectCode
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.Vendor">
|
||||||
|
<summary>
|
||||||
|
供应商 TUNAM (Extensive Imaging)
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.UserName">
|
||||||
|
<summary>
|
||||||
|
阅片人 TUEVAL TREVAL RSEVAL
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.ArmEnum">
|
||||||
|
<summary>
|
||||||
|
阅片人标识 TUEVALID TREVALID RSEVALID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.VisitNum">
|
||||||
|
<summary>
|
||||||
|
访视编号 VISITNUM
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.VisitName">
|
||||||
|
<summary>
|
||||||
|
访视名称 VISIT
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.LatestScanDate">
|
||||||
|
<summary>
|
||||||
|
拍片日期 TUDTC TRDTC RSDTC
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.VisitTaskId">
|
||||||
|
<summary>
|
||||||
|
eCRF标识 TUREFID TRREFID RSREFID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.CriterionName">
|
||||||
|
<summary>
|
||||||
|
RSCAT 阅片标准
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.IsJudgeSelect">
|
||||||
|
<summary>
|
||||||
|
RSACPTFL 裁定标记 TUACPTFL
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_Export.No">
|
||||||
|
<summary>
|
||||||
|
序号 TUSEQ (同一个访视,所有阅片人选择病灶给个顺序号)
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_Export.ARM_TumorNo">
|
||||||
|
<summary>
|
||||||
|
链接ID TULNKID (阅片人角色_病灶编号)不同访视可以重复
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_Export.TumorIdentificationSimple">
|
||||||
|
<summary>
|
||||||
|
肿瘤识别简称 TUTESTCD
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_Export.TumorIdentificationFullName">
|
||||||
|
<summary>
|
||||||
|
肿瘤识别全称 TUTEST
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_Export.TumorIdentificationResult">
|
||||||
|
<summary>
|
||||||
|
肿瘤鉴定结果 TUORRES
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_Export.TumorIdentificationResultType">
|
||||||
|
<summary>
|
||||||
|
肿瘤识别结果类型 TUSTRESC
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_Export.BodyPart">
|
||||||
|
<summary>
|
||||||
|
部位 TULOC (对应病灶表的部位,需要国际化)
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_Export.IdentificationMethod">
|
||||||
|
<summary>
|
||||||
|
鉴定方法 TUMETHOD (Modality?)
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TU_Export.BodyPartDes">
|
||||||
|
<summary>
|
||||||
|
部位描述 LOCTEXT
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.TRSEQ">
|
||||||
|
<summary>
|
||||||
|
每个subject 按照顺序编号 TRSEQ
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.TRGRPID">
|
||||||
|
<summary>
|
||||||
|
TRGRPID 组ID 对应TU表肿瘤鉴定结果 TumorIdentificationResult
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.ARM_TumorNo">
|
||||||
|
<summary>
|
||||||
|
TRLNKID 链接ID 对应TU表的链接ID TumorNo(阅片人角色_病灶编号)
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.ARM_VisitName">
|
||||||
|
<summary>
|
||||||
|
TRLNKGRP 链接组 ARM-任务名(访视名) 对应RS的链接组
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.TumorAssessmentSimpleName">
|
||||||
|
<summary>
|
||||||
|
肿瘤评估简称 TRTESTCD
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.TumorAssessmentFullName">
|
||||||
|
<summary>
|
||||||
|
肿瘤评估全称 TRTEST
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.OriginalMeasurements">
|
||||||
|
<summary>
|
||||||
|
原始测量 TRORRES
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.OriginalUnit">
|
||||||
|
<summary>
|
||||||
|
原始单位 TRORRESU
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.StandardResult_Character">
|
||||||
|
<summary>
|
||||||
|
标准结果(字符) TRSTRESC
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.StandardResult_Numeric">
|
||||||
|
<summary>
|
||||||
|
标准结果(数值) TRORRESU
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.StandardUnit">
|
||||||
|
<summary>
|
||||||
|
标准单位 TRSTRESU
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.CompletionStatus">
|
||||||
|
<summary>
|
||||||
|
完成状态 TRSTAT
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.IdentificationMethod">
|
||||||
|
<summary>
|
||||||
|
完成状态 TRMETHOD
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.NotMeasuredReason">
|
||||||
|
<summary>
|
||||||
|
无法测量原因 TRREASND
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.RSSEQ">
|
||||||
|
<summary>
|
||||||
|
RSSEQ 按照subject 的数据顺序编号
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.ARM_VisitName">
|
||||||
|
<summary>
|
||||||
|
RSLNKGRP 链接组 ARM_任务名(访视名)
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.EfficacyEvaluationSimpleName">
|
||||||
|
<summary>
|
||||||
|
RSTESTCD 疗效评估简称
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.EfficacyEvaluationName">
|
||||||
|
<summary>
|
||||||
|
RSTEST 疗效评估全称
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.RespondEfficacyAssessment">
|
||||||
|
<summary>
|
||||||
|
RSORRES 响应评估原始结果
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.StandardEfficacyAssessment">
|
||||||
|
<summary>
|
||||||
|
RSSTRESC 标准疗效评估
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.CompletionStatus">
|
||||||
|
<summary>
|
||||||
|
RSSTAT 完成状态
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.NotAssessmentReason">
|
||||||
|
<summary>
|
||||||
|
RSREASND 无法评估原因
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.AssessmentReason">
|
||||||
|
<summary>
|
||||||
|
REASASM 评估原因
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.ReAssessmentReason">
|
||||||
|
<summary>
|
||||||
|
REASOVR 重新评估原因
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.UpdateAssessmentReason">
|
||||||
|
<summary>
|
||||||
|
REASUPD 更新评估原因
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.CO_Export.RDOMAIN">
|
||||||
|
<summary>
|
||||||
|
关联域 RS:(访视点备注) 空:裁判选择原因
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.CO_Export.COSEQ">
|
||||||
|
<summary>
|
||||||
|
COSEQ 序号
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.CO_Export.IdentificationVariable">
|
||||||
|
<summary>
|
||||||
|
IDVAR 标识变量 RSSEQ 空:裁判选择原因
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.CO_Export.Identification">
|
||||||
|
<summary>
|
||||||
|
标识 IDVARVAL RSSEQ具体的值 空:裁判选择原因
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.CO_Export.RemarksQuote">
|
||||||
|
<summary>
|
||||||
|
COREF 备注引用
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.CO_Export.Remarks">
|
||||||
|
<summary>
|
||||||
|
备注 COVAL
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Common.CO_Export.CODTC">
|
||||||
|
<summary>
|
||||||
|
裁决日期 CODTC
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetTrialQCQuestionAnserList_Export(IRaCIS.Core.Application.Contracts.GetQCQuestionAnswerQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialQCQuestionAnswer},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialQCQuestion},IRaCIS.Application.Interfaces.IDictionaryService)">
|
<member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetTrialQCQuestionAnserList_Export(IRaCIS.Core.Application.Contracts.GetQCQuestionAnswerQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialQCQuestionAnswer},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialQCQuestion},IRaCIS.Application.Interfaces.IDictionaryService)">
|
||||||
<summary>
|
<summary>
|
||||||
质控问题答案导出
|
质控问题答案导出
|
||||||
|
|
@ -989,276 +1259,6 @@
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
<exception cref="T:System.Exception"></exception>
|
<exception cref="T:System.Exception"></exception>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.ResearchProgramNo">
|
|
||||||
<summary>
|
|
||||||
方案编号 STUDYID
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.Domain">
|
|
||||||
<summary>
|
|
||||||
域 DOMAIN TU TR RS
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.ValueType">
|
|
||||||
<summary>
|
|
||||||
取值类型 TUSPID TRSPID RSSPID
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.SubjectCode">
|
|
||||||
<summary>
|
|
||||||
受试者编号 USUBJID 实际展示TrialSiteSubjectCode
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.Vendor">
|
|
||||||
<summary>
|
|
||||||
供应商 TUNAM (Extensive Imaging)
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.UserName">
|
|
||||||
<summary>
|
|
||||||
阅片人 TUEVAL TREVAL RSEVAL
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.ArmEnum">
|
|
||||||
<summary>
|
|
||||||
阅片人标识 TUEVALID TREVALID RSEVALID
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.VisitNum">
|
|
||||||
<summary>
|
|
||||||
访视编号 VISITNUM
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.VisitName">
|
|
||||||
<summary>
|
|
||||||
访视名称 VISIT
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.LatestScanDate">
|
|
||||||
<summary>
|
|
||||||
拍片日期 TUDTC TRDTC RSDTC
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.VisitTaskId">
|
|
||||||
<summary>
|
|
||||||
eCRF标识 TUREFID TRREFID RSREFID
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.CriterionName">
|
|
||||||
<summary>
|
|
||||||
RSCAT 阅片标准
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TU_TR_RSBaseModel.IsJudgeSelect">
|
|
||||||
<summary>
|
|
||||||
RSACPTFL 裁定标记 TUACPTFL
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TU_Export.No">
|
|
||||||
<summary>
|
|
||||||
序号 TUSEQ (同一个访视,所有阅片人选择病灶给个顺序号)
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TU_Export.ARM_TumorNo">
|
|
||||||
<summary>
|
|
||||||
链接ID TULNKID (阅片人角色_病灶编号)不同访视可以重复
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TU_Export.TumorIdentificationSimple">
|
|
||||||
<summary>
|
|
||||||
肿瘤识别简称 TUTESTCD
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TU_Export.TumorIdentificationFullName">
|
|
||||||
<summary>
|
|
||||||
肿瘤识别全称 TUTEST
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TU_Export.TumorIdentificationResult">
|
|
||||||
<summary>
|
|
||||||
肿瘤鉴定结果 TUORRES
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TU_Export.TumorIdentificationResultType">
|
|
||||||
<summary>
|
|
||||||
肿瘤识别结果类型 TUSTRESC
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TU_Export.BodyPart">
|
|
||||||
<summary>
|
|
||||||
部位 TULOC (对应病灶表的部位,需要国际化)
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TU_Export.IdentificationMethod">
|
|
||||||
<summary>
|
|
||||||
鉴定方法 TUMETHOD (Modality?)
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TU_Export.BodyPartDes">
|
|
||||||
<summary>
|
|
||||||
部位描述 LOCTEXT
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.TRSEQ">
|
|
||||||
<summary>
|
|
||||||
每个subject 按照顺序编号 TRSEQ
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.TRGRPID">
|
|
||||||
<summary>
|
|
||||||
TRGRPID 组ID 对应TU表肿瘤鉴定结果 TumorIdentificationResult
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.ARM_TumorNo">
|
|
||||||
<summary>
|
|
||||||
TRLNKID 链接ID 对应TU表的链接ID TumorNo(阅片人角色_病灶编号)
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.ARM_VisitName">
|
|
||||||
<summary>
|
|
||||||
TRLNKGRP 链接组 ARM-任务名(访视名) 对应RS的链接组
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.TumorAssessmentSimpleName">
|
|
||||||
<summary>
|
|
||||||
肿瘤评估简称 TRTESTCD
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.TumorAssessmentFullName">
|
|
||||||
<summary>
|
|
||||||
肿瘤评估全称 TRTEST
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.OriginalMeasurements">
|
|
||||||
<summary>
|
|
||||||
原始测量 TRORRES
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.OriginalUnit">
|
|
||||||
<summary>
|
|
||||||
原始单位 TRORRESU
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.StandardResult_Character">
|
|
||||||
<summary>
|
|
||||||
标准结果(字符) TRSTRESC
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.StandardResult_Numeric">
|
|
||||||
<summary>
|
|
||||||
标准结果(数值) TRORRESU
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.StandardUnit">
|
|
||||||
<summary>
|
|
||||||
标准单位 TRSTRESU
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.CompletionStatus">
|
|
||||||
<summary>
|
|
||||||
完成状态 TRSTAT
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.IdentificationMethod">
|
|
||||||
<summary>
|
|
||||||
完成状态 TRMETHOD
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.TR_Export.NotMeasuredReason">
|
|
||||||
<summary>
|
|
||||||
无法测量原因 TRREASND
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.RSSEQ">
|
|
||||||
<summary>
|
|
||||||
RSSEQ 按照subject 的数据顺序编号
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.ARM_VisitName">
|
|
||||||
<summary>
|
|
||||||
RSLNKGRP 链接组 ARM_任务名(访视名)
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.EfficacyEvaluationSimpleName">
|
|
||||||
<summary>
|
|
||||||
RSTESTCD 疗效评估简称
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.EfficacyEvaluationName">
|
|
||||||
<summary>
|
|
||||||
RSTEST 疗效评估全称
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.RespondEfficacyAssessment">
|
|
||||||
<summary>
|
|
||||||
RSORRES 响应评估原始结果
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.StandardEfficacyAssessment">
|
|
||||||
<summary>
|
|
||||||
RSSTRESC 标准疗效评估
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.CompletionStatus">
|
|
||||||
<summary>
|
|
||||||
RSSTAT 完成状态
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.NotAssessmentReason">
|
|
||||||
<summary>
|
|
||||||
RSREASND 无法评估原因
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.AssessmentReason">
|
|
||||||
<summary>
|
|
||||||
REASASM 评估原因
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.ReAssessmentReason">
|
|
||||||
<summary>
|
|
||||||
REASOVR 重新评估原因
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.RS_Export.UpdateAssessmentReason">
|
|
||||||
<summary>
|
|
||||||
REASUPD 更新评估原因
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.CO_Export.RDOMAIN">
|
|
||||||
<summary>
|
|
||||||
关联域 RS:(访视点备注) 空:裁判选择原因
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.CO_Export.COSEQ">
|
|
||||||
<summary>
|
|
||||||
COSEQ 序号
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.CO_Export.IdentificationVariable">
|
|
||||||
<summary>
|
|
||||||
IDVAR 标识变量 RSSEQ 空:裁判选择原因
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.CO_Export.Identification">
|
|
||||||
<summary>
|
|
||||||
标识 IDVARVAL RSSEQ具体的值 空:裁判选择原因
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.CO_Export.RemarksQuote">
|
|
||||||
<summary>
|
|
||||||
COREF 备注引用
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.CO_Export.Remarks">
|
|
||||||
<summary>
|
|
||||||
备注 COVAL
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Common.CO_Export.CODTC">
|
|
||||||
<summary>
|
|
||||||
裁决日期 CODTC
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="T:IRaCIS.Core.Application.Service.Common.IVUS_OCTBaseDto">
|
<member name="T:IRaCIS.Core.Application.Service.Common.IVUS_OCTBaseDto">
|
||||||
<summary>
|
<summary>
|
||||||
公共影像导表基类(IVUS / OCT 通用)
|
公共影像导表基类(IVUS / OCT 通用)
|
||||||
|
|
@ -16790,17 +16790,17 @@
|
||||||
</member>
|
</member>
|
||||||
<member name="F:IRaCIS.Core.Application.ViewModel.AccessToDialogueEnum.Question">
|
<member name="F:IRaCIS.Core.Application.ViewModel.AccessToDialogueEnum.Question">
|
||||||
<summary>
|
<summary>
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
质疑
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:IRaCIS.Core.Application.ViewModel.AccessToDialogueEnum.Consistency">
|
<member name="F:IRaCIS.Core.Application.ViewModel.AccessToDialogueEnum.Consistency">
|
||||||
<summary>
|
<summary>
|
||||||
һ<EFBFBD><EFBFBD><EFBFBD>Ժ˲<EFBFBD>
|
一致性核查
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:IRaCIS.Core.Application.ViewModel.CopyFrontAuditConfigItemDto">
|
<member name="T:IRaCIS.Core.Application.ViewModel.CopyFrontAuditConfigItemDto">
|
||||||
<summary>
|
<summary>
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
复制
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:IRaCIS.Core.Application.ViewModel.SystemNoticeView">
|
<member name="T:IRaCIS.Core.Application.ViewModel.SystemNoticeView">
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,16 @@
|
||||||
using System;
|
using IRaCIS.Core.Application.Helper.OtherTool;
|
||||||
using System.Globalization;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using IRaCIS.Core.Domain.BaseModel;
|
using IRaCIS.Core.Domain.BaseModel;
|
||||||
using IRaCIS.Core.Domain.Share;
|
using IRaCIS.Core.Domain.Share;
|
||||||
using MassTransit;
|
using MassTransit;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using NPOI.SS.Formula.Functions;
|
using Newtonsoft.Json;
|
||||||
|
using System;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
public class ConsumeExceptionFilter<T>(ILogger<ConsumeExceptionFilter<T>> _logger) : IFilter<ConsumeContext<T>> where T : DomainEvent
|
public class ConsumeExceptionFilter<T>(ILogger<ConsumeExceptionFilter<T>> _logger, IConfiguration _config) : IFilter<ConsumeContext<T>> where T : DomainEvent
|
||||||
{
|
{
|
||||||
|
|
||||||
public async Task Send(ConsumeContext<T> context, IPipe<ConsumeContext<T>> next)
|
public async Task Send(ConsumeContext<T> context, IPipe<ConsumeContext<T>> next)
|
||||||
|
|
@ -23,6 +25,44 @@ public class ConsumeExceptionFilter<T>(ILogger<ConsumeExceptionFilter<T>> _logge
|
||||||
{
|
{
|
||||||
var errorInfo = $"Exception: {exception.Message}[{exception.StackTrace}]" + (exception.InnerException != null ? $" InnerException: {exception.InnerException.Message}[{exception.InnerException.StackTrace}]" : "");
|
var errorInfo = $"Exception: {exception.Message}[{exception.StackTrace}]" + (exception.InnerException != null ? $" InnerException: {exception.InnerException.Message}[{exception.InnerException.StackTrace}]" : "");
|
||||||
_logger.LogError(errorInfo);
|
_logger.LogError(errorInfo);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
bool isOpenWeComNotice = _config.GetValue<bool>("WeComNoticeConfig:IsOpenWeComNotice");
|
||||||
|
|
||||||
|
if (isOpenWeComNotice)
|
||||||
|
{
|
||||||
|
string webhook = _config["WeComNoticeConfig:WebhookUrl"] ?? string.Empty;
|
||||||
|
|
||||||
|
var uri = new Uri(_config["SystemEmailSendConfig:SiteUrl"]);
|
||||||
|
var baseUrl = uri.GetLeftPart(UriPartial.Authority);
|
||||||
|
|
||||||
|
var userList = _config.GetSection("WeComNoticeConfig:APINoticeUserList").Get<string[]>();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 🔔 异步告警(不要阻塞请求)
|
||||||
|
_ = WeComNotifier.SendAlertAsync(
|
||||||
|
webhook: webhook,
|
||||||
|
alert: new WeComAlert
|
||||||
|
{
|
||||||
|
Env = baseUrl,
|
||||||
|
UserName = "MassTransit 自动触发邮件",
|
||||||
|
Api = "",
|
||||||
|
Message = $"异常信息:{exception.Message} ",
|
||||||
|
Stack = exception.StackTrace,
|
||||||
|
AtUsers = userList ?? []
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Log.Logger.Error($"MassTransit里发送企业微信出现错误:{ex.Message}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,12 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
|
||||||
|
|
||||||
public async Task Consume(ConsumeContext<UrgentIRUnReadTaskRecurringEvent> context)
|
public async Task Consume(ConsumeContext<UrgentIRUnReadTaskRecurringEvent> context)
|
||||||
{
|
{
|
||||||
var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US;
|
var isEn_US = context.Message.CultureInfoName == StaticData.CultureInfo.en_US;
|
||||||
|
|
||||||
|
//设置当前事件传递过来的语言
|
||||||
|
var culture = context.Message.CultureInfoName;
|
||||||
|
CultureInfo.CurrentCulture = new CultureInfo(culture);
|
||||||
|
|
||||||
var trialId = context.Message.TrialId;
|
var trialId = context.Message.TrialId;
|
||||||
|
|
||||||
var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialId);
|
var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialId);
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ using MassTransit.Scheduling;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
@ -34,7 +35,11 @@ public class QCImageQuestionRecurringEventConsumer(IRepository<Trial> _trialRepo
|
||||||
{
|
{
|
||||||
var trialId = context.Message.TrialId;
|
var trialId = context.Message.TrialId;
|
||||||
|
|
||||||
var isEn_us = false;
|
var isEn_us = context.Message.CultureInfoName == StaticData.CultureInfo.en_US;
|
||||||
|
|
||||||
|
//设置当前事件传递过来的语言
|
||||||
|
var culture = context.Message.CultureInfoName;
|
||||||
|
CultureInfo.CurrentCulture = new CultureInfo(culture);
|
||||||
|
|
||||||
var trialInfo = await _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr }).FirstNotNullAsync();
|
var trialInfo = await _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr }).FirstNotNullAsync();
|
||||||
|
|
||||||
|
|
@ -102,7 +107,12 @@ public class CRCImageQuestionRecurringEventConsumer(IRepository<Trial> _trialRep
|
||||||
{
|
{
|
||||||
var trialId = context.Message.TrialId;
|
var trialId = context.Message.TrialId;
|
||||||
|
|
||||||
var isEn_us = false;
|
var isEn_us = context.Message.CultureInfoName == StaticData.CultureInfo.en_US;
|
||||||
|
|
||||||
|
//设置当前事件传递过来的语言
|
||||||
|
var culture = context.Message.CultureInfoName;
|
||||||
|
CultureInfo.CurrentCulture = new CultureInfo(culture);
|
||||||
|
|
||||||
var trialInfo = await _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr, t.DeclarationTypeEnumList }).FirstNotNullAsync();
|
var trialInfo = await _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr, t.DeclarationTypeEnumList }).FirstNotNullAsync();
|
||||||
|
|
||||||
//找到 该项目的IQC 用户Id
|
//找到 该项目的IQC 用户Id
|
||||||
|
|
@ -173,7 +183,11 @@ public class ImageQCRecurringEventConsumer(IRepository<Trial> _trialRepository,
|
||||||
{
|
{
|
||||||
var trialId=context.Message.TrialId;
|
var trialId=context.Message.TrialId;
|
||||||
|
|
||||||
var isEn_us = false;
|
var isEn_us = context.Message.CultureInfoName == StaticData.CultureInfo.en_US;
|
||||||
|
|
||||||
|
//设置当前事件传递过来的语言
|
||||||
|
var culture = context.Message.CultureInfoName;
|
||||||
|
CultureInfo.CurrentCulture = new CultureInfo(culture);
|
||||||
|
|
||||||
var trialInfo = await _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr }).FirstNotNullAsync();
|
var trialInfo = await _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr }).FirstNotNullAsync();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,12 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
|
||||||
|
|
||||||
DateTime now = DateTime.Now;
|
DateTime now = DateTime.Now;
|
||||||
Console.WriteLine("发送定时过期提醒");
|
Console.WriteLine("发送定时过期提醒");
|
||||||
var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US;
|
var isEn_US = context.Message.CultureInfoName == StaticData.CultureInfo.en_US;
|
||||||
|
|
||||||
|
//设置当前事件传递过来的语言
|
||||||
|
var culture = context.Message.CultureInfoName;
|
||||||
|
CultureInfo.CurrentCulture = new CultureInfo(culture);
|
||||||
|
|
||||||
var systemDocQuery =
|
var systemDocQuery =
|
||||||
from sysDoc in _systemDocumentRepository.AsQueryable(false)
|
from sysDoc in _systemDocumentRepository.AsQueryable(false)
|
||||||
from identityUser in _identityUserRepository.AsQueryable(false).Where(t => 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.UserRoleList.Where(t => t.IsUserRoleDisabled == false).Any(t => sysDoc.NeedConfirmedUserTypeList.AsQueryable().Any(c => c.NeedConfirmUserTypeId == t.UserTypeId)))
|
||||||
|
|
@ -150,7 +155,11 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
|
||||||
|
|
||||||
public async Task Consume(ConsumeContext<SystemDocumentPublishEvent> context)
|
public async Task Consume(ConsumeContext<SystemDocumentPublishEvent> context)
|
||||||
{
|
{
|
||||||
var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US;
|
var isEn_US = context.Message.CultureInfoName == StaticData.CultureInfo.en_US;
|
||||||
|
|
||||||
|
//设置当前事件传递过来的语言
|
||||||
|
var culture = context.Message.CultureInfoName;
|
||||||
|
CultureInfo.CurrentCulture = new CultureInfo(culture);
|
||||||
|
|
||||||
// 记录是否只发送给新增角色的日志
|
// 记录是否只发送给新增角色的日志
|
||||||
if (context.Message.NewUserTypeIds != null && context.Message.NewUserTypeIds.Any())
|
if (context.Message.NewUserTypeIds != null && context.Message.NewUserTypeIds.Any())
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,11 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
|
||||||
|
|
||||||
DateTime now = DateTime.Now;
|
DateTime now = DateTime.Now;
|
||||||
Console.WriteLine("发送定时项目过期提醒");
|
Console.WriteLine("发送定时项目过期提醒");
|
||||||
var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US;
|
var isEn_US = context.Message.CultureInfoName == StaticData.CultureInfo.en_US;
|
||||||
|
//设置当前事件传递过来的语言
|
||||||
|
var culture = context.Message.CultureInfoName;
|
||||||
|
CultureInfo.CurrentCulture = new CultureInfo(culture);
|
||||||
|
|
||||||
var trialDocQuery =
|
var trialDocQuery =
|
||||||
from trialDoc in _trialDocumentRepository.AsQueryable(true)
|
from trialDoc in _trialDocumentRepository.AsQueryable(true)
|
||||||
|
|
||||||
|
|
@ -177,7 +181,11 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
|
||||||
|
|
||||||
public async Task Consume(ConsumeContext<TrialDocumentPublishEvent> context)
|
public async Task Consume(ConsumeContext<TrialDocumentPublishEvent> context)
|
||||||
{
|
{
|
||||||
var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US;
|
var isEn_US = context.Message.CultureInfoName == StaticData.CultureInfo.en_US;
|
||||||
|
|
||||||
|
//设置当前事件传递过来的语言
|
||||||
|
var culture = context.Message.CultureInfoName;
|
||||||
|
CultureInfo.CurrentCulture = new CultureInfo(culture);
|
||||||
|
|
||||||
// 记录是否只发送给新增角色的日志
|
// 记录是否只发送给新增角色的日志
|
||||||
if (context.Message.NewUserTypeIds != null && context.Message.NewUserTypeIds.Any())
|
if (context.Message.NewUserTypeIds != null && context.Message.NewUserTypeIds.Any())
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,16 @@
|
||||||
using DocumentFormat.OpenXml.Office2010.ExcelAc;
|
using DocumentFormat.OpenXml.Office2010.ExcelAc;
|
||||||
using IRaCIS.Application.Contracts;
|
using IRaCIS.Application.Contracts;
|
||||||
using IRaCIS.Application.Interfaces;
|
using IRaCIS.Application.Interfaces;
|
||||||
|
using IRaCIS.Core.API._ServiceExtensions.NewtonsoftJson;
|
||||||
using IRaCIS.Core.Application.Filter;
|
using IRaCIS.Core.Application.Filter;
|
||||||
|
using IRaCIS.Core.Application.ViewModel;
|
||||||
using IRaCIS.Core.Domain.Share;
|
using IRaCIS.Core.Domain.Share;
|
||||||
using IRaCIS.Core.Infrastructure;
|
using IRaCIS.Core.Infrastructure;
|
||||||
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
using MiniExcelLibs;
|
using MiniExcelLibs;
|
||||||
|
using System.ComponentModel.Design;
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.Service
|
namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
|
|
@ -485,22 +490,21 @@ namespace IRaCIS.Core.Application.Service
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("{visitPlanInfluenceStatId:guid}")]
|
[HttpGet("{visitPlanInfluenceStatId:guid}")]
|
||||||
public async Task<IActionResult> DownloadInflunceStudyList(Guid visitPlanInfluenceStatId)
|
public async Task<IActionResult> DownloadInflunceStudyList(Guid visitPlanInfluenceStatId,
|
||||||
|
[FromServices] IRepository<CommonDocument> _commonDocumentRepository, [FromServices] IWebHostEnvironment _hostEnvironment, [FromServices] IRaCIS.Application.Interfaces.IDictionaryService _dictionaryService)
|
||||||
{
|
{
|
||||||
var list = _influnceRepository.Where(t => t.VisitPlanInfluenceStatId == visitPlanInfluenceStatId)
|
var list = _influnceRepository.Where(t => t.VisitPlanInfluenceStatId == visitPlanInfluenceStatId)
|
||||||
.ProjectTo<VisitPlanInfluenceSubjectVisitDTO>(_mapper.ConfigurationProvider).ToList();
|
.ProjectTo<VisitPlanInfluenceSubjectVisitDTO>(_mapper.ConfigurationProvider).ToList();
|
||||||
|
|
||||||
var memoryStream = new MemoryStream();
|
|
||||||
memoryStream.SaveAs(list);
|
|
||||||
memoryStream.Seek(0, SeekOrigin.Begin);
|
|
||||||
return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
|
|
||||||
{
|
|
||||||
FileDownloadName = _localizer["VisitPlan_CheckExport", DateTime.Now.ToString("yyyy-MM-dd:hh:mm:ss")]
|
|
||||||
};
|
|
||||||
|
|
||||||
|
var exportInfo = new ExcelExportInfo();
|
||||||
|
|
||||||
|
exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId);
|
||||||
|
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
|
||||||
|
|
||||||
|
return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialVisit_InfluenceStudys_Export, exportInfo, exportInfo.TrialCode, _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(VisitPlanInfluenceSubjectVisitDTO));
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -316,6 +316,11 @@ public static class StaticData
|
||||||
|
|
||||||
public const string OCT_CDISC_Export = "OCT_CDISC_Export";
|
public const string OCT_CDISC_Export = "OCT_CDISC_Export";
|
||||||
|
|
||||||
|
public const string TrialVisit_InfluenceStudys_Export = "TrialVisit_InfluenceStudys_Export";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue