diff --git a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs index cd5714e50..99c96453c 100644 --- a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs @@ -339,6 +339,16 @@ namespace IRaCIS.Core.Application.ViewModel public int UrgentCount { get; set; } + /// + /// 是否存在未处理的反馈 + /// + public bool IsExistUnprocessedFeedback + { + get + { + return UnReadCanReadTaskList.Any(t => t.IsExistUnprocessedFeedback); + } + } public List UnReadCanReadTaskList { get; set; } = new List(); @@ -355,6 +365,11 @@ namespace IRaCIS.Core.Application.ViewModel /// 是否是一致性分析产生 /// public bool IsAnalysisCreate { get; set; } + + /// + /// 是否存在未处理的反馈 + /// + public bool IsExistUnprocessedFeedback { get; set; } public bool IsUrgent { get; set; } diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index c0e69dffc..a3696e131 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -1055,6 +1055,7 @@ public class VisitTaskService(IRepository _visitTaskRepository, ReadingCategory = u.ReadingCategory, IsAnalysisCreate = u.IsAnalysisCreate, ArmEnum = u.ArmEnum, + IsExistUnprocessedFeedback=u.UserFeedBackList.Any(t => t.State ==0), TrialReadingCriterionId = u.TrialReadingCriterionId, IsNeedClinicalDataSign = u.IsNeedClinicalDataSign, IsClinicalDataSign = u.IsClinicalDataSign, @@ -1085,6 +1086,7 @@ public class VisitTaskService(IRepository _visitTaskRepository, ReadingCategory = u.ReadingCategory, IsAnalysisCreate = u.IsAnalysisCreate, ArmEnum = u.ArmEnum, + IsExistUnprocessedFeedback = u.UserFeedBackList.Any(t => t.State == 0), TrialReadingCriterionId = u.TrialReadingCriterionId, IsNeedClinicalDataSign = u.IsNeedClinicalDataSign, IsClinicalDataSign = u.IsClinicalDataSign, @@ -1194,6 +1196,7 @@ public class VisitTaskService(IRepository _visitTaskRepository, ReadingCategory = u.ReadingCategory, IsAnalysisCreate = u.IsAnalysisCreate, ArmEnum = u.ArmEnum, + IsExistUnprocessedFeedback = u.UserFeedBackList.Any(t => t.State == 0), TrialReadingCriterionId = u.TrialReadingCriterionId, IsNeedClinicalDataSign = u.IsNeedClinicalDataSign, IsClinicalDataSign = u.IsClinicalDataSign, diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index c1dfd44dc..7e8cab3bd 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -1864,6 +1864,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public ReadingTaskState ReadingTaskState { get; set; } + /// + /// 是否存在未处理的反馈 + /// + public bool IsExistUnprocessedFeedback { get; set; } + /// /// 是否是转变的任务(转为IRECIST) /// diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index e83bcef85..a07f27201 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -41,6 +41,7 @@ namespace IRaCIS.Core.Application.Service IReadingCalculateService _readingCalculateService, IRepository _subjectVisitRepository, IRepository _subjectRepository, + IRepository _userFeedBackRepository, IOptionsMonitor _verifyConfig, IRepository _readingGlobalTaskInfoRepository, IRepository _readingCriterionPageRepository, @@ -3166,6 +3167,7 @@ namespace IRaCIS.Core.Application.Service task.SubjectCode = blindSubjectCode.IsNullOrEmpty() ? task.SubjectCode : blindSubjectCode; task.ExistsManual = (await GetManualList(new GetManualListInDto() { TrialId = visitTaskInfo.TrialId })).Count > 0; task.ReadingTaskState = visitTaskInfo.ReadingTaskState; + task.IsExistUnprocessedFeedback = await _userFeedBackRepository.AnyAsync(x => x.VisitTaskId == task.VisitTaskId && x.State == 0); // 添加默认答案 if (inDto.VisitTaskId == null && visitTaskInfo.ReadingTaskState != ReadingTaskState.HaveSigned) { diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs index ce4d083dc..46ead0b40 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs @@ -1393,6 +1393,7 @@ namespace IRaCIS.Core.Application .WhereIf(_userInfo.UserTypeEnumInt != (int)UserTypeEnum.SuperAdmin && _userInfo.UserTypeEnumInt != (int)UserTypeEnum.Admin && _userInfo.UserTypeEnumInt != (int)UserTypeEnum.OP, t => t.TrialIdentityUserList.Any(t => t.IdentityUserId == _userInfo.IdentityUserId && t.IsDeleted == false && t.TrialUserRoleList.Any(t => t.UserId == _userInfo.UserRoleId && t.IsDeleted == false)) + && t.TrialStatusStr != StaticData.TrialState.TrialStopped && t.IsDeleted == false) .WhereIf(inQuery.CriterionType != null, o => o.TrialReadingCriterionList.Any(t => t.CriterionType == inQuery.CriterionType && t.IsSigned && t.IsConfirm)) .WhereIf(!string.IsNullOrEmpty(inQuery.PM_EMail), o => o.TrialIdentityUserList.Any(t => t.IdentityUser.EMail.Contains(inQuery.PM_EMail))) diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs index 0d54e1a29..281969f8e 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs @@ -105,7 +105,9 @@ namespace IRaCIS.Core.Application.Service { return await _trialRepository.AsQueryable() .WhereIf(_userInfo.UserTypeEnumInt != (int)UserTypeEnum.SuperAdmin && _userInfo.UserTypeEnumInt != (int)UserTypeEnum.Admin && _userInfo.UserTypeEnumInt != (int)UserTypeEnum.OP, - t => t.TrialIdentityUserList.Any(t => t.IdentityUserId == _userInfo.IdentityUserId && t.TrialUserRoleList.Any(t => t.UserRole.UserTypeId == _userInfo.UserTypeId)) && t.IsDeleted == false) + t => t.TrialIdentityUserList.Any(t => t.IdentityUserId == _userInfo.IdentityUserId && t.TrialUserRoleList.Any(t => t.UserRole.UserTypeId == _userInfo.UserTypeId)) + && t.TrialStatusStr!= StaticData.TrialState.TrialStopped + && t.IsDeleted == false) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); }