From e17b26b41d39eff151876651b8a4aab34c63b32b Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Tue, 6 Jan 2026 14:14:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IRaCIS.Core.Application.xml | 7 ++ .../General/ReadingCalculateService.cs | 117 +++++++++++++++++- 2 files changed, 118 insertions(+), 6 deletions(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index fb95d88cd..6abd62171 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -3841,6 +3841,13 @@ + + + 获取报表数据 + + + + 获取阅片报告 diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs index f96cbb832..ba703b0eb 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs @@ -23,8 +23,20 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate IHttpContextAccessor httpContext, IOSSService oSSService, IRepository _readingQuestionCriterionTrialRepository, - IStringLocalizer _localizer, IUserInfo _userInfo + IStringLocalizer _localizer, IUserInfo _userInfo, + IRepository _readingTableQuestionAnswerRepository, + IRepository _readingTableQuestionTrialRepository, + IRepository _readingTableAnswerRowInfoRepository, + IRepository _readingQuestionTrialRepository, + IRepository _organInfoRepository, + IRepository _readingGlobalTaskInfoRepository, + IRepository _subjectVisitRepository, + IRepository _tumorAssessmentRepository, + IGeneralCalculateService _generalCalculateService, + IRepository _readingTaskQuestionAnswerRepository, + IVisitTaskHelpeService _visitTaskHelpeService, + IMapper _mapper ) : BaseService, IReadingCalculateService { private ICriterionCalculateService _useCriterion; @@ -469,7 +481,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate ).OrderByDescending(x => x.VisitTaskNum).FirstOrDefaultAsync(); if (task != null) { - data = await GetReadingReportEvaluation(new GetReadingReportEvaluationInDto() + data = await GetReportsChartData(new GetReadingReportEvaluationInDto() { TrialId = task.TrialId, VisitTaskId = task.Id, @@ -594,10 +606,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate }; if (negativeToString.Contains(item.QuestionType)) { - cd.Value.ForEach(item1 => - { - item1 = item1 == "-1" ? string.Empty : item1; - }); + cd.Value = cd.Value.Select(item => item == "-1" ? string.Empty : item).ToList(); } chartList.Add(cd); } @@ -666,6 +675,102 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate } + + /// + /// 获取报表数据 + /// + /// + /// + private async Task GetReportsChartData(GetReadingReportEvaluationInDto indto) + { + GetReadingReportEvaluationOutDto result = new GetReadingReportEvaluationOutDto(); + var isConvertTask = await _visitTaskRepository.Where(x => x.Id == indto.VisitTaskId).Select(x => x.IsConvertedTask).FirstNotNullAsync(); + var visitTaskInfo = await _visitTaskRepository.Where(x => x.Id == indto.VisitTaskId).FirstNotNullAsync(); + result.CalculateResult = await this.GetReportVerify(new GetReportVerifyInDto() + { + VisitTaskId = indto.VisitTaskId, + IsConvertTask = isConvertTask, + BeforeConvertedTaskId = visitTaskInfo.BeforeConvertedTaskId, + }); + + + + + + + + + result.ReadingTaskState = visitTaskInfo.ReadingTaskState; + var taskInfoList = await _generalCalculateService.GetReadingReportTaskList(indto.VisitTaskId); + + result.VisitTaskList = taskInfoList; + + var visitTaskIds = taskInfoList.Select(x => x.VisitTaskId).ToList(); + + var criterionId = visitTaskInfo.TrialReadingCriterionId; + var questionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == criterionId) + .ToListAsync(); + var tableQuestionList = await _readingTableQuestionTrialRepository.Where(x => x.TrialCriterionId == criterionId).OrderBy(x => x.ShowOrder).ToListAsync(); + var tableAnsweRowInfos = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == indto.VisitTaskId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + + result.LesionCountList = tableAnsweRowInfos.GroupBy(x => x.LesionType).Select(x => new LesionDto + { + LesionType = x.Key!.Value, + Count = x.ToList().Count() + }).ToList(); + + var lesionsIndexs = await _readingTableAnswerRowInfoRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId)).GroupBy(x => new { x.QuestionId }).Select(x => new lesionsIndexDto() + { + QuestionId = x.Key.QuestionId, + Rowindexs = x.Select(x => x.RowIndex).Distinct().OrderBy(x => x).ToList() + + }).ToListAsync(); + + var answers = await _readingTaskQuestionAnswerRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId)).ToListAsync(); + var tableAnswers = await _readingTableQuestionAnswerRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId)).ToListAsync(); + var globalanswerList = await _readingGlobalTaskInfoRepository.Where(x => visitTaskIds.Contains(x.TaskId) && x.GlobalVisitTask.TaskState == TaskState.Effect && x.Answer != string.Empty).Select(x => new Globalanswer() + { + TaskId = x.TaskId, + VisitTaskNum = x.GlobalVisitTask.VisitTaskNum, + QuestionId = x.QuestionId, + Answer = x.Answer + }).ToListAsync(); + var alltableAnsweRowInfos = await _readingTableAnswerRowInfoRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId)).ToListAsync(); + var organIds = alltableAnsweRowInfos.Where(x => x.OrganInfoId != null).Select(x => x.OrganInfoId).Distinct().ToList(); + var organInfos = await _organInfoRepository.Where(x => organIds.Contains(x.Id)).ToListAsync(); + + var needChangeType = new List() { + QuestionMark.Organ, + QuestionMark.Location, + QuestionMark.Part, + }; + + // 第一级 + + List questions = await _generalCalculateService.GetReadingReportQuestion + ( + questionList, + taskInfoList, + globalanswerList, + answers, + tableAnsweRowInfos, + tableQuestionList, + alltableAnsweRowInfos, + tableAnswers, + organInfos, + needChangeType + ); + + + + result.TaskQuestions = questions; + + + + return result; + + } + /// /// 获取阅片报告 ///