项目邮件配置修改--016
parent
e05f43b0b8
commit
4338481f9f
|
@ -36,17 +36,20 @@ namespace IRaCIS.Core.Application.Service
|
|||
_trialRepository = trialRepository;
|
||||
}
|
||||
|
||||
|
||||
public async Task TrialImageQCTaskEmail(Guid trialId)
|
||||
/// <summary>
|
||||
/// 影像质控
|
||||
/// </summary>
|
||||
/// <param name="trialId"></param>
|
||||
/// <returns></returns>
|
||||
public async Task SendTrialImageQCTaskEmail(Guid trialId)
|
||||
{
|
||||
var trialInfo = _repository.Where<Trial>(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr }).FirstOrDefault();
|
||||
|
||||
|
||||
|
||||
//找到 该项目的IQC 用户Id
|
||||
var userList = await _repository.Where<TrialUser>(t => t.TrialId == trialId).Where(t => t.User.UserTypeEnum == UserTypeEnum.IQC).Select(t => new { t.UserId, t.User.FullName }).ToListAsync();
|
||||
|
||||
//判断是否任务可以领取 ,可以的话 发送邮件
|
||||
var userIdList=userList.Select(t=>t.UserId).ToList();
|
||||
|
||||
foreach (var user in userList)
|
||||
{
|
||||
|
@ -54,7 +57,6 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
//过滤项目 并且 将 _userInfo.Id 换位 当前发送邮件的Id
|
||||
var query = _trialRepository.Where(t => t.Id == trialId)
|
||||
.Where(t => t.TrialUserList.Any(t => t.UserId == userId))
|
||||
.Where(t => t.QCProcessEnum != TrialQCProcess.NotAudit)
|
||||
.Select(t => new
|
||||
{
|
||||
|
@ -84,7 +86,105 @@ namespace IRaCIS.Core.Application.Service
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// QC质疑
|
||||
/// </summary>
|
||||
/// <param name="trialId"></param>
|
||||
/// <returns></returns>
|
||||
public async Task SendTrialQCQuestionEmail(Guid trialId)
|
||||
{
|
||||
var trialInfo = _repository.Where<Trial>(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr }).FirstOrDefault();
|
||||
|
||||
//找到 该项目的IQC 用户Id
|
||||
var userList = await _repository.Where<TrialUser>(t => t.TrialId == trialId).Where(t => t.User.UserTypeEnum == UserTypeEnum.IQC).Select(t => new { t.UserId, t.User.FullName }).ToListAsync();
|
||||
|
||||
//判断是否任务可以领取 ,可以的话 发送邮件
|
||||
|
||||
foreach (var user in userList)
|
||||
{
|
||||
var userId = user.UserId;
|
||||
|
||||
//过滤项目 并且 将 _userInfo.Id 换位 当前发送邮件的Id
|
||||
var query = _trialRepository
|
||||
.Select(t => new
|
||||
{
|
||||
ReUploadTobeDealedCount= t.SubjectVisitList.SelectMany(c => c.QCChallengeList)
|
||||
.Where(u => u.CreateUserId == userId && u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator && u.ReuploadEnum==QCChanllengeReuploadEnum.CRCRequestReupload).Count(),
|
||||
|
||||
//质疑待处理
|
||||
ToBeDealedCount = t.SubjectVisitList.SelectMany(c => c.QCChallengeList)
|
||||
.Where(u => u.CreateUserId == userId && u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Count(),
|
||||
});
|
||||
|
||||
var sendStat = await query.FirstOrDefaultAsync();
|
||||
|
||||
//当前人
|
||||
if (sendStat != null && (sendStat.ToBeDealedCount > 0 || sendStat.ReUploadTobeDealedCount > 0))
|
||||
{
|
||||
|
||||
Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr)> topicAndHtmlFunc = trialEmailConfig =>
|
||||
{
|
||||
var topicStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailTopic : trialEmailConfig.EmailTopicCN, trialInfo.ResearchProgramNo);
|
||||
var htmlBodyStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN, user.FullName, DateTime.Now, sendStat.ToBeDealedCount, sendStat.ReUploadTobeDealedCount);
|
||||
return (topicStr, htmlBodyStr);
|
||||
};
|
||||
|
||||
await SendTrialEmailAsync(trialId, CommonDocumentBusinessScenario.QCQuestion, topicAndHtmlFunc);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 影像质疑
|
||||
/// </summary>
|
||||
/// <param name="trialId"></param>
|
||||
/// <returns></returns>
|
||||
public async Task SendTrialImageQuestino(Guid trialId)
|
||||
{
|
||||
var trialInfo = _repository.Where<Trial>(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr }).FirstOrDefault();
|
||||
|
||||
//找到 该项目的CRC 用户Id
|
||||
var userList = await _repository.Where<TrialUser>(t => t.TrialId == trialId).Where(t => t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Select(t => new { t.UserId, t.User.FullName }).ToListAsync();
|
||||
|
||||
//判断是否任务可以领取 ,可以的话 发送邮件
|
||||
|
||||
foreach (var user in userList)
|
||||
{
|
||||
var userId = user.UserId;
|
||||
//过滤项目 并且 将 _userInfo.Id 换位 当前发送邮件的Id
|
||||
var query = _trialRepository
|
||||
.Select(t => new
|
||||
{
|
||||
//质疑待处理
|
||||
ToBeDealedCount = t.SubjectVisitList.SelectMany(c => c.QCChallengeList)
|
||||
.Where(u => u.CreateUserId == userId && u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.IQC).Count(),
|
||||
|
||||
});
|
||||
|
||||
var sendStat = await query.FirstOrDefaultAsync();
|
||||
|
||||
//当前人
|
||||
if (sendStat != null && (sendStat.ToBeDealedCount > 0 ))
|
||||
{
|
||||
|
||||
Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr)> topicAndHtmlFunc = trialEmailConfig =>
|
||||
{
|
||||
var topicStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailTopic : trialEmailConfig.EmailTopicCN, trialInfo.ResearchProgramNo);
|
||||
var htmlBodyStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN, user.FullName, DateTime.Now, sendStat.ToBeDealedCount);
|
||||
return (topicStr, htmlBodyStr);
|
||||
};
|
||||
|
||||
await SendTrialEmailAsync(trialId, CommonDocumentBusinessScenario.QCQuestion, topicAndHtmlFunc);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//临床数据质询
|
||||
public async Task SendClinicalDataQuestion(Guid trialId,Guid visitTaskId,string content)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
public async Task SendTrialEmailAsync(Guid trialId, CommonDocumentBusinessScenario businessScenario, Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr)> topicAndHtmlFunc, Guid? trialReadingCriterionId = null, Guid? subjectId = null)
|
||||
|
|
|
@ -77,7 +77,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
[HttpPost]
|
||||
public async Task<GetTrialEmailSetOutDto> GetTrialEmail(GetTrialEmailSetInDto inDto)
|
||||
{
|
||||
return await _trialRepository.Where(x => x.Id == inDto.TrialId).Select(x => new GetTrialEmailSetOutDto()
|
||||
return await _trialRepository.Where(x => x.Id == inDto.TrialId,ignoreQueryFilters:true).Select(x => new GetTrialEmailSetOutDto()
|
||||
{
|
||||
TrialId = inDto.TrialId,
|
||||
EmailAuthorizationCode = x.EmailAuthorizationCode,
|
||||
|
@ -87,7 +87,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
IsConfigureEmail = x.IsConfigureEmail,
|
||||
EmailSMTPServerPort = x.EmailSMTPServerPort
|
||||
|
||||
}).FirstNotNullAsync();
|
||||
}).FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
<#+
|
||||
public class config
|
||||
{
|
||||
public static readonly string ConnectionString = "Server=123.56.94.154,1433\\MSSQLSERVER;Database=IRaCIS_New_Tet;User ID=sa;Password=dev123456DEV;TrustServerCertificate=true";
|
||||
public static readonly string DbDatabase = "CenterImage_Test";
|
||||
public static readonly string ConnectionString = "Server=123.56.94.154,1433\\MSSQLSERVER;Database=Test.Study;User ID=sa;Password=dev123456DEV;TrustServerCertificate=true";
|
||||
public static readonly string DbDatabase = "Test.Study";
|
||||
//表名称用字符串,拼接
|
||||
public static readonly string TableName = "PIAudit";
|
||||
public static readonly string TableName = "SubjectVisitClinicalDialog";
|
||||
//具体文件里面 例如service 可以配置是否分页
|
||||
}
|
||||
#>
|
||||
|
@ -21,10 +21,10 @@
|
|||
}
|
||||
string sql = string.Format(@"SELECT
|
||||
obj.name tablename
|
||||
from {0}.sys.objects obj
|
||||
inner join {0}.dbo.sysindexes idx on obj.object_id=idx.id and idx.indid<=1
|
||||
INNER JOIN {0}.sys.schemas schem ON obj.schema_id=schem.schema_id
|
||||
left join {0}.sys.extended_properties g ON (obj.object_id = g.major_id AND g.minor_id = 0 AND g.name= 'MS_Description')
|
||||
from sys.objects obj
|
||||
inner join dbo.sysindexes idx on obj.object_id=idx.id and idx.indid<=1
|
||||
INNER JOIN sys.schemas schem ON obj.schema_id=schem.schema_id
|
||||
left join sys.extended_properties g ON (obj.object_id = g.major_id AND g.minor_id = 0 AND g.name= 'MS_Description')
|
||||
where type='U' {1}
|
||||
order by obj.name", database,tables);
|
||||
DataTable dt = GetDataTable(connectionString, sql);
|
||||
|
@ -50,9 +50,9 @@
|
|||
ELSE 0
|
||||
END
|
||||
AS BIT) HasPrimaryKey
|
||||
from {0}.sys.objects obj
|
||||
inner join {0}.dbo.sysindexes idx on obj.object_id=idx.id and idx.indid<=1
|
||||
INNER JOIN {0}.sys.schemas schem ON obj.schema_id=schem.schema_id
|
||||
from sys.objects obj
|
||||
inner join dbo.sysindexes idx on obj.object_id=idx.id and idx.indid<=1
|
||||
INNER JOIN sys.schemas schem ON obj.schema_id=schem.schema_id
|
||||
where type='U' {1}
|
||||
order by obj.name", database, tables);
|
||||
#endregion
|
||||
|
@ -79,8 +79,8 @@
|
|||
ic.column_id,
|
||||
ic.index_column_id,
|
||||
ic.object_id
|
||||
FROM {0}.sys.indexes idx
|
||||
INNER JOIN {0}.sys.index_columns ic ON idx.index_id = ic.index_id AND idx.object_id = ic.object_id
|
||||
FROM sys.indexes idx
|
||||
INNER JOIN sys.index_columns ic ON idx.index_id = ic.index_id AND idx.object_id = ic.object_id
|
||||
WHERE idx.object_id =OBJECT_ID(@tableName) AND idx.is_primary_key=1
|
||||
)
|
||||
select
|
||||
|
@ -102,14 +102,14 @@
|
|||
cast(colm.precision as int) Precision,
|
||||
cast(colm.scale as int) Scale,
|
||||
prop.value Remark
|
||||
from {0}.sys.columns colm
|
||||
inner join {0}.sys.types systype on colm.system_type_id=systype.system_type_id and colm.user_type_id=systype.user_type_id
|
||||
left join {0}.sys.extended_properties prop on colm.object_id=prop.major_id and colm.column_id=prop.minor_id
|
||||
from sys.columns colm
|
||||
inner join sys.types systype on colm.system_type_id=systype.system_type_id and colm.user_type_id=systype.user_type_id
|
||||
left join sys.extended_properties prop on colm.object_id=prop.major_id and colm.column_id=prop.minor_id
|
||||
LEFT JOIN indexCTE ON colm.column_id=indexCTE.column_id AND colm.object_id=indexCTE.object_id
|
||||
where colm.object_id=OBJECT_ID(@tableName)
|
||||
order by colm.column_id", database);
|
||||
#endregion
|
||||
SqlParameter param = new SqlParameter("@tableName", SqlDbType.NVarChar, 100) { Value = string.Format("{0}.{1}.{2}", database, schema, tableName) };
|
||||
SqlParameter param = new SqlParameter("@tableName", SqlDbType.NVarChar, 100) { Value = string.Format("{1}.{2}", database, schema, tableName) };
|
||||
DataTable dt = GetDataTable(connectionString, sql, param);
|
||||
return dt.Rows.Cast<DataRow>().Select(row => new DbColumn()
|
||||
{
|
||||
|
|
|
@ -14,7 +14,7 @@ steps:
|
|||
commands:
|
||||
- date +%H:%M:%S
|
||||
- pwd
|
||||
- docker build -t Test.Study .
|
||||
- docker build -t Test_Study .
|
||||
- date +%H:%M:%S
|
||||
|
||||
- name: docker-deploy
|
||||
|
@ -28,13 +28,13 @@ steps:
|
|||
commands:
|
||||
- date +%H:%M:%S
|
||||
- docker rm -f test-study-container
|
||||
- docker run -itd -e TZ=Asia/Shanghai -e ASPNETCORE_ENVIRONMENT=Test_Study --restart=always --name test-study-container -p 8030:80 Test.Study
|
||||
- docker run -itd -e TZ=Asia/Shanghai -e ASPNETCORE_ENVIRONMENT=Test_Study --restart=always --name test-study-container -p 8030:80 Test_Study
|
||||
- date +%H:%M:%S
|
||||
|
||||
volumes:
|
||||
- name: cached_nuget_packages
|
||||
host:
|
||||
path: /mnt/f/docker_publish/nuget_packages
|
||||
path: /mnt/d/docker_publish/nuget_packages
|
||||
- name: dockersock
|
||||
host:
|
||||
path: /var/run/docker.sock
|
||||
|
|
Loading…
Reference in New Issue