From cf2b3f59544a6ed582167a6475577c88376e7ede Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Mon, 19 Jan 2026 11:03:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9C=89=E5=BA=8F=E9=80=80?= =?UTF-8?q?=E5=9B=9E=EF=BC=8C=E5=BD=B1=E5=93=8D=E6=97=A0=E5=BA=8F=E9=80=80?= =?UTF-8?q?=E5=9B=9E=E4=BB=BB=E5=8A=A1bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Allocation/VisitTaskService.cs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index 2537cbd5e..e6e02aeb1 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -1173,7 +1173,7 @@ public class VisitTaskService(IRepository _visitTaskRepository, var visitQuery = _visitTaskRepository.Where(x => x.TrialId == trialId && x.DoctorUserId == _userInfo.UserRoleId && x.TaskState == TaskState.Effect) .WhereIf(inQuery.SubjectId != null, x => x.SubjectId == inQuery.SubjectId) .WhereIf(!string.IsNullOrEmpty(subjectCode), t => (t.Subject.Code.Contains(subjectCode!) && t.IsAnalysisCreate == false) || (t.BlindSubjectCode.Contains(subjectCode!) && t.IsAnalysisCreate)) - .WhereIf(critrion.CriterionType == CriterionType.OCT, t => t.ReadingCategory == ReadingCategory.Visit ? t.SourceSubjectVisit.NoneDicomStudyList.Where(t=>t.Modality=="OCT").SelectMany(t => t.ImageLabelNoneDicomFileList).Any() : true) + .WhereIf(critrion.CriterionType == CriterionType.OCT, t => t.ReadingCategory == ReadingCategory.Visit ? t.SourceSubjectVisit.NoneDicomStudyList.Where(t => t.Modality == "OCT").SelectMany(t => t.ImageLabelNoneDicomFileList).Any() : true) .WhereIf(critrion.CriterionType == CriterionType.IVUS, t => t.ReadingCategory == ReadingCategory.Visit ? t.SourceSubjectVisit.NoneDicomStudyList.Where(t => t.Modality == "IVUS").SelectMany(t => t.ImageLabelNoneDicomFileList).Any() : true); var visitGroupQuery = visitQuery.GroupBy(x => new { x.SubjectId, x.Subject.Code, x.BlindSubjectCode }); @@ -2293,12 +2293,12 @@ public class VisitTaskService(IRepository _visitTaskRepository, foreach (var item in readingTableAnswerRowInfoList) { - if (item.SplitRowId!=null&&lesionRelationship.ContainsKey(item.SplitRowId.Value)) + if (item.SplitRowId != null && lesionRelationship.ContainsKey(item.SplitRowId.Value)) { item.SplitRowId = lesionRelationship[item.SplitRowId.Value]; } - if (item.MergeRowId!=null&&lesionRelationship.ContainsKey(item.MergeRowId.Value)) + if (item.MergeRowId != null && lesionRelationship.ContainsKey(item.MergeRowId.Value)) { item.MergeRowId = lesionRelationship[item.MergeRowId.Value]; } @@ -2403,6 +2403,10 @@ public class VisitTaskService(IRepository _visitTaskRepository, //另一个阅片人的任务根据任务进度自动进入PM退回或PM申请重阅 filterExpression = filterExpression.And(t => t.VisitTaskNum >= task.VisitTaskNum); + //退回只影响有序的后续所有的,无序的当前访视 + filterExpression = filterExpression.And(t => (t.TrialReadingCriterion.IsReadingTaskViewInOrder == ReadingOrder.InOrder) || + (t.TrialReadingCriterion.IsReadingTaskViewInOrder != ReadingOrder.InOrder && t.SourceSubjectVisitId == task.SourceSubjectVisitId)); + var influenceTaskList = await _visitTaskRepository.Where(filterExpression, true).ToListAsync(); @@ -2564,7 +2568,7 @@ public class VisitTaskService(IRepository _visitTaskRepository, otherVisitIdList = otherVisitIdList.Where(t => t != task.SourceSubjectVisitId.Value).ToList(); } - + //BM后续访视 ,筛选状态不变,任务生成状态重置(实际该访视任务状态 可能是重阅重置了或者失效了,需要后续生成,或者取消分配了,需要后续重新分配) await _subjectCriteriaEvaluationVisitFilterRepository.UpdatePartialFromQueryAsync(t => t.TrialReadingCriterion.CriterionType == CriterionType.RECIST1Pointt1_MB && t.SubjectVisit.SubjectId == task.SubjectId && otherVisitIdList.Contains(t.SubjectVisitId), @@ -2727,6 +2731,13 @@ public class VisitTaskService(IRepository _visitTaskRepository, //默认影响的都是该标准的任务 filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == filterObj.TrialReadingCriterionId); } + + //退回只影响有序的后续所有的,无序的当前访视 + if (isReReading == false) + { + filterExpression = filterExpression.And(t => (t.TrialReadingCriterion.IsReadingTaskViewInOrder == ReadingOrder.InOrder) || + (t.TrialReadingCriterion.IsReadingTaskViewInOrder != ReadingOrder.InOrder && t.SourceSubjectVisitId == filterObj.SourceSubjectVisitId)); + } }