diff --git a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs index 5d5f5843a..3f2aa475a 100644 --- a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs +++ b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs @@ -72,14 +72,15 @@ namespace IRaCIS.Core.Application.Service public async Task SetTrialEmail(SetTrialEmailInDto inDto) { - await TestEmailConfigAsync(new TrialEmailNoticeConfigAddOrEdit() { - - AuthorizationCode=inDto.EmailAuthorizationCode, - FromEmail=inDto.EmailFromEmail, - FromName=inDto.EmailFromName, - SMTPServerAddress=inDto.EmailSMTPServerAddress, - SMTPServerPort= inDto.EmailSMTPServerPort.Value, - TrialId=inDto.TrialId, + await TestEmailConfigAsync(new TrialEmailNoticeConfigAddOrEdit() + { + + AuthorizationCode = inDto.EmailAuthorizationCode, + FromEmail = inDto.EmailFromEmail, + FromName = inDto.EmailFromName, + SMTPServerAddress = inDto.EmailSMTPServerAddress, + SMTPServerPort = inDto.EmailSMTPServerPort.Value, + TrialId = inDto.TrialId, }); await _trialRepository.UpdatePartialFromQueryAsync(inDto.TrialId, x => new Trial() @@ -388,6 +389,17 @@ namespace IRaCIS.Core.Application.Service answer = "是"; } + + //把另外一个人的任务设置为不加急(如果项目加急是否 subject 加急是否) + var urgent = _repository.Where(t => t.Id == taskInfo.SourceSubjectVisitId).Select(t => new { IsSubjectUrgent = t.Subject.IsUrgent, t.Trial.IsUrgent }).FirstOrDefault(); + + if (urgent?.IsUrgent == false || urgent?.IsSubjectUrgent==false) + { + await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.SourceSubjectVisitId == taskInfo.SourceSubjectVisitId && t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && + t.Id != visitTaskId && t.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId, u => new VisitTask() { IsUrgent = false }); + } + + } @@ -711,20 +723,15 @@ namespace IRaCIS.Core.Application.Service } else if (readingCategory == ReadingCategory.Global) { - var questionAnsewerList = await _repository.Where(t => t.GlobalTaskId == visitTaskId && t.TrialReadingQuestion.QuestionType == QuestionType.Tumor).ToListAsync(); + var questionAnsewer = await _repository.Where(t => t.GlobalTaskId == visitTaskId && t.TrialReadingQuestion.QuestionType == QuestionType.Tumor).OrderByDescending(c => c.VisitTask.VisitTaskNum).FirstNotNullAsync(); - var answerEmptyTaskIdList=questionAnsewerList.Where(t=>string.IsNullOrEmpty(t.Answer)).Select(t=>t.TaskId).ToList(); - var answerList= await _repository.Where(t => answerEmptyTaskIdList.Contains(t.VisitTaskId) && t.ReadingQuestionTrial.QuestionType == QuestionType.Tumor) - .Select(t=>t.Answer).ToListAsync(); - - if (questionAnsewerList.Any(t => t.Answer == ((int)OverallAssessment.PD).ToString()) || answerList.Any(t => t == ((int)OverallAssessment.PD).ToString())) + answer = questionAnsewer.Answer; + if (string.IsNullOrEmpty(questionAnsewer.Answer)) { - answer = ((int)OverallAssessment.PD).ToString(); - + answer = await _repository.Where(t => questionAnsewer.TaskId == t.VisitTaskId && t.ReadingQuestionTrial.QuestionType == QuestionType.Tumor) + .Select(t => t.Answer).FirstOrDefaultAsync(); } - - } else if (readingCategory == ReadingCategory.Judge) @@ -847,7 +854,7 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task> GetTrialEmailNoticeConfigList(TrialEmailNoticeConfigQuery inQuery) { - + await SyncSystemEmainCofigDocListAsync(inQuery.TrialId); var trialEmailNoticeConfigQueryable = _trialEmailNoticeConfigRepository.Where(t => t.TrialId == inQuery.TrialId) .WhereIf(inQuery.IsDistinguishCriteria == false, t => t.TrialReadingCriterionId == null) diff --git a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs index 045589a8a..7b1a2767c 100644 --- a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs +++ b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs @@ -114,6 +114,8 @@ namespace IRaCIS.Core.Infra.EFCore.Common var entity = item.Entity as Trial; + var extraIdentification = string.Empty; + //阅片标准 var criterionNameList = await _dbContext.ReadingQuestionCriterionTrial.Where(t => t.TrialId == entity.Id && t.IsConfirm).OrderBy(t => t.ShowOrder).Select(t => t.CriterionName).ToListAsync(); @@ -134,9 +136,32 @@ namespace IRaCIS.Core.Infra.EFCore.Common //} //trialDics = await this._dbContext.Dictionary.Where(x => dictionaryIds.Contains(x.Id)).Select(x => x.ValueCN).ToListAsync(); + + + Guid id = entity.Id; + var oldentity = await _dbContext.Trial.Where(x => x.Id == id).Select(t => new { t.IsTrialBasicLogicConfirmed, t.IsTrialProcessConfirmed, + t.IsTrialUrgentConfirmed ,t.IsConfigureEmail}).FirstOrDefaultAsync(); + switch (_userInfo.RequestUrl) + { + case "configTrialBasicInfo/ConfigTrialBasicInfoConfirm": + extraIdentification= $"/{oldentity.IsTrialBasicLogicConfirmed.ToString()}"; + break; + + case "configTrialBasicInfo/ConfigTrialUrgentInfoConfirm": + extraIdentification = $"/{oldentity.IsTrialUrgentConfirmed.ToString()}"; + break; + + case "TrialEmailNoticeConfig/setTrialEmail": + + extraIdentification = oldentity.IsConfigureEmail? "/EmailUpdate" : "/EmailSave"; + break; + } + + await InsertInspection(item.Entity as Trial, type, x => new InspectionConvertDTO() { TrialId = x.Id, + ExtraIndentification= extraIdentification, }, new { //TrialDicList = string.Join(",", trialDics) @@ -145,6 +170,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common ClinicalDataSetNames = clinicalDataSetNameList.Count() > 0 ? string.Join(",", clinicalDataSetNameList) : String.Empty, + }); ; } @@ -2560,23 +2586,23 @@ namespace IRaCIS.Core.Infra.EFCore.Common type = type + (basicData.ParentId == null ? "/parent" : string.Empty); break; - case nameof(Trial): - var trial = entityObj as Trial; - Guid id = trial.Id; - var oldentity = await _dbContext.Trial.Where(x => x.Id == id).Select(t => new { t.IsTrialBasicLogicConfirmed, t.IsTrialProcessConfirmed, t.IsTrialUrgentConfirmed }).FirstOrDefaultAsync(); - switch (_userInfo.RequestUrl.ToLower()) - { - case "configtrialbasicinfo/configtrialbasicinfoconfirm": - type = type + "/" + oldentity.IsTrialBasicLogicConfirmed.ToString(); - break; - //case "configtrialbasicinfo/configtrialprocessinfoconfirm": - // type = type + "/" + oldentity.IsTrialProcessConfirmed.ToString(); - // break; - case "configtrialbasicinfo/configtrialurgentinfoconfirm": - type = type + "/" + oldentity.IsTrialUrgentConfirmed.ToString(); - break; - } - break; + //case nameof(Trial): + // var trial = entityObj as Trial; + // Guid id = trial.Id; + // var oldentity = await _dbContext.Trial.Where(x => x.Id == id).Select(t => new { t.IsTrialBasicLogicConfirmed, t.IsTrialProcessConfirmed, t.IsTrialUrgentConfirmed }).FirstOrDefaultAsync(); + // switch (_userInfo.RequestUrl.ToLower()) + // { + // case "configtrialbasicinfo/configtrialbasicinfoconfirm": + // type = type + "/" + oldentity.IsTrialBasicLogicConfirmed.ToString(); + // break; + // //case "configtrialbasicinfo/configtrialprocessinfoconfirm": + // // type = type + "/" + oldentity.IsTrialProcessConfirmed.ToString(); + // // break; + // case "configtrialbasicinfo/configtrialurgentinfoconfirm": + // type = type + "/" + oldentity.IsTrialUrgentConfirmed.ToString(); + // break; + // } + // break; //case nameof(ReadingQuestionTrial):