From 64caf06abc456bab7ab013389d0282a4f32317ad Mon Sep 17 00:00:00 2001 From: "DESKTOP-G961P6V\\Zhh" <839860190@qq.com> Date: Sun, 16 Jun 2024 02:15:57 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E7=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../QuestionRegisterAppService.cs | 39 +++++++++++++++---- .../QuestionRegisterAppServiceTest.cs | 19 +++++++++ 2 files changed, 51 insertions(+), 7 deletions(-) diff --git a/src/Shentun.WebPeis.Application/QuestionRegisters/QuestionRegisterAppService.cs b/src/Shentun.WebPeis.Application/QuestionRegisters/QuestionRegisterAppService.cs index 428157e..c23b52d 100644 --- a/src/Shentun.WebPeis.Application/QuestionRegisters/QuestionRegisterAppService.cs +++ b/src/Shentun.WebPeis.Application/QuestionRegisters/QuestionRegisterAppService.cs @@ -359,20 +359,45 @@ namespace Shentun.WebPeis.QuestionRegisters .Select(o => new QuestionRegisterDiseaseRiskDto() { DiseaseRiskId = o.Key.DiseaseRiskId, - DiseaseRiskLevelName = o.Key.DiseaseRiskName, + DiseaseRiskName = o.Key.DiseaseRiskName, DisplayOrder = o.Key.DisplayOrder }).ToList(); foreach (var diseaseRisk in questionRegisterDiseaseRiskDtos) { - var diseaseRiskLevels = diseaseRisks.Where(o=>o.diseaseRisk.DiseaseRiskId == diseaseRisk.DiseaseRiskId) - .OrderBy(o=>o.haveDiseaseRiskLevel.DisplayOrder).ToList(); - foreach(var diseaseRiskLevel in diseaseRiskLevels) + //疾病级别必须按优先级别排序,取顺序最高的作为最高风险级 + var diseaseRiskLevels = diseaseRisks.Where(o=>o.diseaseRisk.DiseaseRiskId == diseaseRisk.DiseaseRiskId + && o.haveDiseaseRiskLevel != null) + .OrderByDescending(o=> o.haveDiseaseRiskLevel==null?1:o.haveDiseaseRiskLevel.DisplayOrder).ToList(); + DiseaseRiskLevel matchDiseaseRiskLevel = null; + foreach (var diseaseRiskLevel in diseaseRiskLevels) { - var cnt = questionRegisterItems.Where(o => o.questionRegisterAnswer.QuestionAnswerId == - diseaseRiskLevel.haveDiseaseRiskLevelAnswer.QuestionAnswerId).Count(); - + if(questionRegisterItems.Where(o => diseaseRiskLevel.haveDiseaseRiskLevelAnswer!= null && + o.questionRegisterAnswer.QuestionAnswerId == + diseaseRiskLevel.haveDiseaseRiskLevelAnswer.QuestionAnswerId).Any()) + { + if(diseaseRiskLevel.haveDiseaseRiskLevel != null) + { + matchDiseaseRiskLevel = diseaseRiskLevel.haveDiseaseRiskLevel; + break; + } + + } + } + if(matchDiseaseRiskLevel == null) + { + matchDiseaseRiskLevel = diseaseRiskLevels.LastOrDefault()==null?null: diseaseRiskLevels.LastOrDefault().haveDiseaseRiskLevel; } + if (matchDiseaseRiskLevel == null) + { + diseaseRisk.DiseaseRiskLevelName = "低危"; + } + else + { + diseaseRisk.DiseaseRiskLevelName = matchDiseaseRiskLevel.DiseaseRiskLevelName; + } + + } return questionRegisterDiseaseRiskDtos; diff --git a/test/Shentun.WebPeis.Application.Tests/QuestionRegisterAppServiceTest.cs b/test/Shentun.WebPeis.Application.Tests/QuestionRegisterAppServiceTest.cs index 196e200..36027c8 100644 --- a/test/Shentun.WebPeis.Application.Tests/QuestionRegisterAppServiceTest.cs +++ b/test/Shentun.WebPeis.Application.Tests/QuestionRegisterAppServiceTest.cs @@ -119,5 +119,24 @@ namespace Shentun.WebPeis await unitOfWork.CompleteAsync(); } } + + [Fact] + public async Task GetDiseaseRiskListByPersonIdAsync() + { + using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true)) + { + + var entity = await _appService.GetDiseaseRiskListByPersonIdAsync(new PersonIdInputDto() + { + PersonId = new Guid("3a12d72c-19d9-e8b2-71f6-cf283103e191") // 3a12d7fa-63f1-d549-c2f8-01123e5b7a8a + }); + foreach (var item in entity) + { + _output.WriteLine(item.DiseaseRiskName + item.DiseaseRiskLevelName); + + } + await unitOfWork.CompleteAsync(); + } + } } }