Uat_Study
			
			
		
		
							parent
							
								
									ea79b01d4c
								
							
						
					
					
						commit
						cb916d5ef1
					
				| 
						 | 
				
			
			@ -480,12 +480,28 @@ namespace IRaCIS.Application.Services
 | 
			
		|||
 | 
			
		||||
            var visitTask = await _visitTaskRepository.Where(x => x.Id == visitTaskId).AsNoTracking().FirstNotNullAsync();
 | 
			
		||||
 | 
			
		||||
            // 是否是组件一致性
 | 
			
		||||
            var isGroupAnalysis = false;
 | 
			
		||||
 | 
			
		||||
            // 判断是否是一致性核查产生
 | 
			
		||||
            if (visitTask.IsAnalysisCreate)
 | 
			
		||||
            {
 | 
			
		||||
                visitTaskids = await _visitTaskRepository.Where(x => x.ArmEnum == visitTask.ArmEnum && x.TaskState == TaskState.Effect && x.SourceSubjectVisitId == visitTask.SourceSubjectVisitId
 | 
			
		||||
                  &&x.TrialReadingCriterionId== visitTask.TrialReadingCriterionId
 | 
			
		||||
                  && x.SouceReadModuleId == visitTask.SouceReadModuleId && x.ReadingCategory != ReadingCategory.Judge && x.ReadingTaskState == ReadingTaskState.HaveSigned).Select(x => x.Id).ToListAsync();
 | 
			
		||||
                if (visitTask.IsSelfAnalysis == true)
 | 
			
		||||
                {
 | 
			
		||||
                    visitTaskids = await _visitTaskRepository.Where(x => x.ArmEnum == visitTask.ArmEnum && x.TaskState == TaskState.Effect && x.SourceSubjectVisitId == visitTask.SourceSubjectVisitId
 | 
			
		||||
                    && x.TrialReadingCriterionId == visitTask.TrialReadingCriterionId
 | 
			
		||||
                    && x.SouceReadModuleId == visitTask.SouceReadModuleId && x.ReadingCategory != ReadingCategory.Judge && x.ReadingTaskState == ReadingTaskState.HaveSigned).Select(x => x.Id).ToListAsync();
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    isGroupAnalysis = true;
 | 
			
		||||
                    visitTaskids = await _visitTaskRepository.Where(x =>  x.TaskState == TaskState.Effect && x.SourceSubjectVisitId == visitTask.SourceSubjectVisitId
 | 
			
		||||
                    && x.TrialReadingCriterionId == visitTask.TrialReadingCriterionId
 | 
			
		||||
                    && x.SouceReadModuleId == visitTask.SouceReadModuleId && x.ReadingCategory != ReadingCategory.Judge && x.ReadingTaskState == ReadingTaskState.HaveSigned).Select(x => x.Id).ToListAsync();
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
               
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
| 
						 | 
				
			
			@ -499,6 +515,28 @@ namespace IRaCIS.Application.Services
 | 
			
		|||
            }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            if (!isGroupAnalysis)
 | 
			
		||||
            {
 | 
			
		||||
                await VerifyJudgeResult(visitTask, visitTaskids);
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                foreach (var item in visitTaskids.Where(x=>x!=visitTask.Id))
 | 
			
		||||
                {
 | 
			
		||||
                    var armEnum = await _visitTaskRepository.Where(x => x.Id == item).Select(x=>x.ArmEnum).FirstNotNullAsync();
 | 
			
		||||
                    await VerifyJudgeResult(visitTask, new List<Guid>() { visitTask.Id, item }, armEnum);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
               
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        private async Task VerifyJudgeResult(VisitTask visitTask,List<Guid> visitTaskids,Arm? groupArm = null)
 | 
			
		||||
        {
 | 
			
		||||
            var criterionInfo = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == visitTask.TrialReadingCriterionId).Select(x => new
 | 
			
		||||
            {
 | 
			
		||||
                x.IsArbitrationReading,
 | 
			
		||||
| 
						 | 
				
			
			@ -522,7 +560,7 @@ namespace IRaCIS.Application.Services
 | 
			
		|||
 | 
			
		||||
                            // 判断是单访视裁判还是全局访视裁判
 | 
			
		||||
                            // 查找两个 访视的阅片答案
 | 
			
		||||
                            if (await VerifyIsGlobalVisitTask(visitTaskId))
 | 
			
		||||
                            if (await VerifyIsGlobalVisitTask(visitTask.Id))
 | 
			
		||||
                            {
 | 
			
		||||
                                // 找到所有的的任务
 | 
			
		||||
                                var GlobalVisitTaskIds = await _visitTaskRepository.Where(x => x.ReadingTaskState == ReadingTaskState.HaveSigned && x.ReadingCategory != ReadingCategory.Judge
 | 
			
		||||
| 
						 | 
				
			
			@ -536,7 +574,7 @@ namespace IRaCIS.Application.Services
 | 
			
		|||
                                                               join question in _readingQuestionTrialRepository.Where(x => x.IsJudgeQuestion) on new { ReadingQuestionTrialId = questionAnswer.ReadingQuestionTrialId } equals new { ReadingQuestionTrialId = question.Id }
 | 
			
		||||
                                                               select new TaskAnswerDto()
 | 
			
		||||
                                                               {
 | 
			
		||||
                                                                   VisitTaskNum=questionAnswer.VisitTask.VisitTaskNum,
 | 
			
		||||
                                                                   VisitTaskNum = questionAnswer.VisitTask.VisitTaskNum,
 | 
			
		||||
                                                                   Answer = questionAnswer.Answer,
 | 
			
		||||
                                                                   AnswerGroup = question.AnswerGroup,
 | 
			
		||||
                                                                   AnswerCombination = question.AnswerCombination,
 | 
			
		||||
| 
						 | 
				
			
			@ -550,7 +588,7 @@ namespace IRaCIS.Application.Services
 | 
			
		|||
 | 
			
		||||
                                foreach (var item in taskNums)
 | 
			
		||||
                                {
 | 
			
		||||
                                    List<GroupTaskAnswerDto> groupTasks = globalVisitAnswerlist.Where(x=>x.VisitTaskNum==item).GroupBy(x => new { x.QuestionId, x.AnswerGroup, x.JudgeType, x.AnswerCombination }).Select(x => new GroupTaskAnswerDto
 | 
			
		||||
                                    List<GroupTaskAnswerDto> groupTasks = globalVisitAnswerlist.Where(x => x.VisitTaskNum == item).GroupBy(x => new { x.QuestionId, x.AnswerGroup, x.JudgeType, x.AnswerCombination }).Select(x => new GroupTaskAnswerDto
 | 
			
		||||
                                    {
 | 
			
		||||
                                        QuestionId = x.Key.QuestionId,
 | 
			
		||||
                                        AnswerGroup = x.Key.AnswerGroup,
 | 
			
		||||
| 
						 | 
				
			
			@ -562,7 +600,7 @@ namespace IRaCIS.Application.Services
 | 
			
		|||
                                }
 | 
			
		||||
 | 
			
		||||
                            }
 | 
			
		||||
                            else if(!criterionInfo.IsReadingPeriod)
 | 
			
		||||
                            else if (!criterionInfo.IsReadingPeriod)
 | 
			
		||||
                            {
 | 
			
		||||
                                var query = from questionAnswet in _readingTaskQuestionAnswerRepository.Where(x => visitTaskids.Contains(x.VisitTaskId))
 | 
			
		||||
                                            join question in _readingQuestionTrialRepository.Where(x => x.IsJudgeQuestion) on new { ReadingQuestionTrialId = questionAnswet.ReadingQuestionTrialId } equals new { ReadingQuestionTrialId = question.Id }
 | 
			
		||||
| 
						 | 
				
			
			@ -588,7 +626,7 @@ namespace IRaCIS.Application.Services
 | 
			
		|||
                                }).ToList();
 | 
			
		||||
                                noteEqual = ComputeJudgeResult(groupTasks);
 | 
			
		||||
                            }
 | 
			
		||||
                            
 | 
			
		||||
 | 
			
		||||
                            break;
 | 
			
		||||
                        case ReadingCategory.Global:
 | 
			
		||||
                            var taskOneInfo = await this.GetGlobalReadingInfo(new GetGlobalReadingInfoInDto()
 | 
			
		||||
| 
						 | 
				
			
			@ -621,8 +659,8 @@ namespace IRaCIS.Application.Services
 | 
			
		|||
                                    }
 | 
			
		||||
                                    else
 | 
			
		||||
                                    {
 | 
			
		||||
                                        var newlist = item.AfterQuestionList.Where(x => x.QuestionId != null&&x.IsJudgeQuestion).ToList().Union(
 | 
			
		||||
                                            twoItem.AfterQuestionList.Where(x => x.QuestionId != null&&x.IsJudgeQuestion).ToList()
 | 
			
		||||
                                        var newlist = item.AfterQuestionList.Where(x => x.QuestionId != null && x.IsJudgeQuestion).ToList().Union(
 | 
			
		||||
                                            twoItem.AfterQuestionList.Where(x => x.QuestionId != null && x.IsJudgeQuestion).ToList()
 | 
			
		||||
                                            ).ToList();
 | 
			
		||||
 | 
			
		||||
                                        List<GroupTaskAnswerDto> globalGroupTasks = newlist.GroupBy(x => new { x.QuestionId, x.AnswerGroup, x.JudgeType, x.AnswerCombination }).Select(x => new GroupTaskAnswerDto
 | 
			
		||||
| 
						 | 
				
			
			@ -709,10 +747,30 @@ namespace IRaCIS.Application.Services
 | 
			
		|||
            {
 | 
			
		||||
                if (visitTask.IsAnalysisCreate)
 | 
			
		||||
                {
 | 
			
		||||
                    await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => x.Id == visitTaskId, x => new VisitTask()
 | 
			
		||||
                    if (groupArm == null)
 | 
			
		||||
                    {
 | 
			
		||||
                        IsAnalysisDiffToOriginalData = true
 | 
			
		||||
                    });
 | 
			
		||||
                        await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => x.Id == visitTask.Id, x => new VisitTask()
 | 
			
		||||
                        {
 | 
			
		||||
                            IsAnalysisDiffToOriginalData = true
 | 
			
		||||
                        });
 | 
			
		||||
                    }
 | 
			
		||||
                    else if (groupArm == Arm.SingleReadingArm || groupArm == Arm.DoubleReadingArm1)
 | 
			
		||||
                    {
 | 
			
		||||
                        await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => x.Id == visitTask.Id, x => new VisitTask()
 | 
			
		||||
                        {
 | 
			
		||||
                            IsAnalysisDiffToOriginalData = true,
 | 
			
		||||
                            IsGroupDiffArm1 = true
 | 
			
		||||
                        });
 | 
			
		||||
                    }
 | 
			
		||||
                    else if (groupArm == Arm.DoubleReadingArm2)
 | 
			
		||||
                    {
 | 
			
		||||
                        await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => x.Id == visitTask.Id, x => new VisitTask()
 | 
			
		||||
                        {
 | 
			
		||||
                            IsAnalysisDiffToOriginalData = true,
 | 
			
		||||
                            IsGroupDiffArm2 = true
 | 
			
		||||
                        });
 | 
			
		||||
                    }
 | 
			
		||||
                   
 | 
			
		||||
                    await _visitTaskRepository.SaveChangesAsync();
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
| 
						 | 
				
			
			@ -720,13 +778,13 @@ namespace IRaCIS.Application.Services
 | 
			
		|||
                {
 | 
			
		||||
 | 
			
		||||
                    if (
 | 
			
		||||
                        
 | 
			
		||||
                        (visitTask.SourceSubjectVisitId != null && criterionInfo.ArbitrationRule == ArbitrationRule.Visit)
 | 
			
		||||
                      ||(visitTask.SouceReadModuleId != null && criterionInfo.ArbitrationRule == ArbitrationRule.Reading)
 | 
			
		||||
                      // 全局访视任务仲裁
 | 
			
		||||
                      ||(visitTask.SourceSubjectVisitId != null && criterionInfo.ArbitrationRule == ArbitrationRule.Reading&& criterionInfo.IsReadingPeriod&&!criterionInfo.IsGlobalReading)
 | 
			
		||||
 | 
			
		||||
                      
 | 
			
		||||
                        (visitTask.SourceSubjectVisitId != null && criterionInfo.ArbitrationRule == ArbitrationRule.Visit)
 | 
			
		||||
                      || (visitTask.SouceReadModuleId != null && criterionInfo.ArbitrationRule == ArbitrationRule.Reading)
 | 
			
		||||
                      // 全局访视任务仲裁
 | 
			
		||||
                      || (visitTask.SourceSubjectVisitId != null && criterionInfo.ArbitrationRule == ArbitrationRule.Reading && criterionInfo.IsReadingPeriod && !criterionInfo.IsGlobalReading)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                      )
 | 
			
		||||
                    {
 | 
			
		||||
                        await this.SaveJudgeTask(new SaveJudgeTaskDto()
 | 
			
		||||
| 
						 | 
				
			
			@ -743,18 +801,38 @@ namespace IRaCIS.Application.Services
 | 
			
		|||
 | 
			
		||||
                if (visitTask.IsAnalysisCreate)
 | 
			
		||||
                {
 | 
			
		||||
                    await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => x.Id == visitTaskId, x => new VisitTask()
 | 
			
		||||
                   
 | 
			
		||||
 | 
			
		||||
                    if (groupArm == null)
 | 
			
		||||
                    {
 | 
			
		||||
                        IsAnalysisDiffToOriginalData = false
 | 
			
		||||
                    });
 | 
			
		||||
                        await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => x.Id == visitTask.Id, x => new VisitTask()
 | 
			
		||||
                        {
 | 
			
		||||
                            IsAnalysisDiffToOriginalData = false
 | 
			
		||||
                        });
 | 
			
		||||
                    }
 | 
			
		||||
                    else if (groupArm == Arm.SingleReadingArm || groupArm == Arm.DoubleReadingArm1)
 | 
			
		||||
                    {
 | 
			
		||||
                        await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => x.Id == visitTask.Id, x => new VisitTask()
 | 
			
		||||
                        {
 | 
			
		||||
                            IsAnalysisDiffToOriginalData = false,
 | 
			
		||||
                            IsGroupDiffArm1 = false
 | 
			
		||||
                        });
 | 
			
		||||
                    }
 | 
			
		||||
                    else if (groupArm == Arm.DoubleReadingArm2)
 | 
			
		||||
                    {
 | 
			
		||||
                        await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => x.Id == visitTask.Id, x => new VisitTask()
 | 
			
		||||
                        {
 | 
			
		||||
                            IsAnalysisDiffToOriginalData = false,
 | 
			
		||||
                            IsGroupDiffArm2 = false
 | 
			
		||||
                        });
 | 
			
		||||
                    }
 | 
			
		||||
                    await _visitTaskRepository.SaveChangesAsync();
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 计算返回的结果  为True表示不相等
 | 
			
		||||
        /// </summary>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue