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 running Details

Test_IRC_Net8
he 2025-12-18 17:42:12 +08:00
commit 943dbb28a6
2 changed files with 45 additions and 11 deletions

View File

@ -34,10 +34,11 @@ namespace IRaCIS.Core.Application.Service
IRepository<TrialDictionary> _trialDictionaryRepository, IRepository<TrialDictionary> _trialDictionaryRepository,
IRepository<TrialBodyPart> _trialBodyPartRepository, IRepository<TrialBodyPart> _trialBodyPartRepository,
IOptionsMonitor<ServiceVerifyConfigOption> _verifyConfig, IOptionsMonitor<ServiceVerifyConfigOption> _verifyConfig,
IOptionsMonitor<SystemEmailSendConfig> systemEmailConfig,
IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer, IFusionCache _fusionCache) : BaseService, ITrialService IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer, IFusionCache _fusionCache) : BaseService, ITrialService
{ {
private readonly SystemEmailSendConfig _systemEmailConfig = systemEmailConfig.CurrentValue;
public bool TrialExpeditedChange { get; set; } = false; public bool TrialExpeditedChange { get; set; } = false;
@ -330,6 +331,14 @@ namespace IRaCIS.Core.Application.Service
trial.UpdateTime = DateTime.Now; trial.UpdateTime = DateTime.Now;
#region 邮件默认值
trial.EmailAuthorizationCode = _systemEmailConfig.AuthorizationCode;
trial.EmailFromEmail = _systemEmailConfig.FromEmail;
trial.EmailFromName = $"{_systemEmailConfig.FromName}-{trial.TrialCode}";
trial.EmailSMTPServerAddress = _systemEmailConfig.Host;
trial.EmailSMTPServerPort = _systemEmailConfig.Port;
#endregion
var success = await _trialRepository.SaveChangesAsync(); var success = await _trialRepository.SaveChangesAsync();
//维护CRO Sponsor //维护CRO Sponsor

View File

@ -21,6 +21,7 @@ public class TrialStatService(
IRepository<SystemDocument> _systemDocumentRepository, IRepository<SystemDocument> _systemDocumentRepository,
IRepository<SystemNotice> _systemNoticeRepository, IRepository<SystemNotice> _systemNoticeRepository,
IRepository<VisitTask> _visitTaskRepository, IRepository<VisitTask> _visitTaskRepository,
IRepository<Dictionary> _dictionaryRepository,
IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository, IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository,
IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService
{ {
@ -144,6 +145,7 @@ public class TrialStatService(
} }
var query = _visitTaskRepository.WhereIf(inQuery.TrialSiteId != null, t => t.Subject.TrialSiteId == inQuery.TrialSiteId) var query = _visitTaskRepository.WhereIf(inQuery.TrialSiteId != null, t => t.Subject.TrialSiteId == inQuery.TrialSiteId)
.Where(t => t.TrialId == inQuery.TrialId && t.TrialReadingCriterionId == trialReadingCriterionId && t.IsAnalysisCreate == false && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze)) .Where(t => t.TrialId == inQuery.TrialId && t.TrialReadingCriterionId == trialReadingCriterionId && t.IsAnalysisCreate == false && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze))
@ -179,6 +181,8 @@ public class TrialStatService(
var list = await query.ToListAsync(); var list = await query.ToListAsync();
var dicName = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == trialReadingCriterionId).SelectMany(t => t.ReadingQuestionTrialList.Where(t => t.QuestionType == questionType))
.Select(t => t.DictionaryCode).FirstOrDefaultAsync();
if (criterion.IsArbitrationReading) if (criterion.IsArbitrationReading)
@ -197,8 +201,9 @@ public class TrialStatService(
list = DealJudgeMark(criterion.ArbitrationRule, criterion.IsGlobalReading, list); list = DealJudgeMark(criterion.ArbitrationRule, criterion.IsGlobalReading, list);
//判断subject的逻辑需要确认这么多次访视任务有的符合有的不符合准则是什么 //判断subject的逻辑需要确认这么多次访视任务有的符合有的不符合准则是什么
return list.GroupBy(t => t.OverallTumorEvaluation).Select(g => new EfficacyEvaluationStatViewModel() var resultList = list.GroupBy(t => t.OverallTumorEvaluation).Select(g => new EfficacyEvaluationStatViewModel()
{ {
DictionaryCode = g.FirstOrDefault()?.DictionaryCode, DictionaryCode = g.FirstOrDefault()?.DictionaryCode,
OverallTumorEvaluation = g.Key, OverallTumorEvaluation = g.Key,
@ -206,6 +211,26 @@ public class TrialStatService(
}).ToList(); }).ToList();
// 先把 resultList 转成内存字典
var resultDict = resultList.ToDictionary(r => r.OverallTumorEvaluation, r => r.SubjectCount);
// 查询字典表,先把数据拉出来到内存,再合并
var dicList = _dictionaryRepository
.Where(t => t.Parent.Code == dicName)
.Select(t => new
{
t.Code
})
.ToList()
.Select(t => new EfficacyEvaluationStatViewModel
{
DictionaryCode = dicName,
OverallTumorEvaluation = t.Code,
SubjectCount = resultDict.ContainsKey(t.Code) ? resultDict[t.Code] : 0
})
.ToList();
return dicList;
} }