From f400453ae23a35f76442878a611eaa22b3c69b51 Mon Sep 17 00:00:00 2001 From: "DESKTOP-G961P6V\\Zhh" <839860190@qq.com> Date: Mon, 17 Jun 2024 02:42:47 +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 --- .../PersonDiseaseRiskLevelDto.cs | 62 +++++++++---------- .../RecommendMedicalPackageDto.cs | 11 ++++ .../AppointPatientRegisterAppService.cs | 55 ++++++++-------- .../AppointPatientRegisterAppServiceTest.cs | 11 +++- 4 files changed, 81 insertions(+), 58 deletions(-) diff --git a/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/PersonDiseaseRiskLevelDto.cs b/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/PersonDiseaseRiskLevelDto.cs index 251278b..b08a70b 100644 --- a/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/PersonDiseaseRiskLevelDto.cs +++ b/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/PersonDiseaseRiskLevelDto.cs @@ -32,44 +32,44 @@ namespace Shentun.WebPeis.AppointPatientRegisters public string DiseaseRiskLevelName { get; set; } - public List Asbitems { get; set; } = new List(); + public List Asbitems { get; set; } = new List(); } - public class PersonDiseaseRiskLevelAsbitem - { - /// - /// 编号 - /// - public Guid AsbitemId { get; set; } + //public class PersonDiseaseRiskLevelAsbitem + //{ + // /// + // /// 编号 + // /// + // public Guid AsbitemId { get; set; } - /// - /// 名称 - /// - public string AsbitemName { get; set; } = null!; + // /// + // /// 名称 + // /// + // public string AsbitemName { get; set; } = null!; - /// - /// 简称 - /// - public string? ShortName { get; set; } + // /// + // /// 简称 + // /// + // public string? ShortName { get; set; } - /// - /// 价格 - /// - public decimal Price { get; set; } - /// - /// 临床意义 - /// - public string? ClinicalMeaning { get; set; } + // /// + // /// 价格 + // /// + // public decimal Price { get; set; } + // /// + // /// 临床意义 + // /// + // public string? ClinicalMeaning { get; set; } - /// - /// 警告事项 - /// - public string? Warn { get; set; } + // /// + // /// 警告事项 + // /// + // public string? Warn { get; set; } - public char IsBelongMedicalPackage { get; set; } + // public char IsBelongMedicalPackage { get; set; } - public int AsbitemRecommendLevelId { get; set; } + // public int AsbitemRecommendLevelId { get; set; } - public int DisplayOrder { get; set; } - } + // public int DisplayOrder { get; set; } + //} } diff --git a/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/RecommendMedicalPackageDto.cs b/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/RecommendMedicalPackageDto.cs index febbcfe..709a2b5 100644 --- a/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/RecommendMedicalPackageDto.cs +++ b/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/RecommendMedicalPackageDto.cs @@ -80,8 +80,19 @@ namespace Shentun.WebPeis.AppointPatientRegisters /// public string? Warn { get; set; } + /// + /// 是否属于套餐 + /// public char IsBelongMedicalPackage { get; set; } + /// + /// 显示顺序 + /// public int DisplayOrder { get; set; } + /// + /// 组合项目推荐级别 + /// + + public int AsbitemRecommendLevelId { get; set; } } } diff --git a/src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs b/src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs index f9e20fd..fb23977 100644 --- a/src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs +++ b/src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs @@ -657,6 +657,8 @@ namespace Shentun.WebPeis.AppointPatientRegisters { MedicalPackageId = medicalPackage.MedicalPackageId, MedicalPackageName = medicalPackage.MedicalPackageName, + Price = medicalPackage.Price, + SumPrice = medicalPackage.Price, DisplayOrder = medicalPackage.DisplayOrder }; @@ -664,6 +666,8 @@ namespace Shentun.WebPeis.AppointPatientRegisters var medicalPackageAsbitems = (from medicalPackageDetail in await _medicalPackageDetailRepository.GetQueryableAsync() join asbitem in await _asbitemRepository.GetQueryableAsync() on medicalPackageDetail.AsbitemId equals asbitem.AsbitemId + join itemType in await _itemTypeRepository.GetQueryableAsync() + on asbitem.ItemTypeId equals itemType.ItemTypeId where medicalPackageDetail.MedicalPackageId == medicalPackage.MedicalPackageId select new RecommendMedicalPackageAsbitem() { @@ -674,7 +678,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters ClinicalMeaning = asbitem.ClinicalMeaning, Warn = asbitem.Warn, IsBelongMedicalPackage = 'Y', - DisplayOrder = asbitem.DisplayOrder + DisplayOrder = itemType.DisplayOrder * 100 + asbitem.DisplayOrder }).ToList(); recommendMedicalPackageDto.Asbitems.AddRange(medicalPackageAsbitems); @@ -690,14 +694,18 @@ namespace Shentun.WebPeis.AppointPatientRegisters } //----推荐组合项目 + var personDiseaseRiskLevelDtos = await GetDiseaseRiskListByPersonIdAsync(input.PersonId); + //去掉基本套餐中已经包含的组合项目 foreach (var personDiseaseRiskLevelDto in personDiseaseRiskLevelDtos) { - foreach (var personDiseaseRiskLevelAsbitem in personDiseaseRiskLevelDto.Asbitems) + for (var i = 0; i< personDiseaseRiskLevelDto.Asbitems.Count; i++ ) { + var personDiseaseRiskLevelAsbitem = personDiseaseRiskLevelDto.Asbitems[i]; if (medicalPackageAsbitems.Where(o => o.AsbitemId == personDiseaseRiskLevelAsbitem.AsbitemId).Any()) { - personDiseaseRiskLevelAsbitem.IsBelongMedicalPackage = 'Y'; + personDiseaseRiskLevelDto.Asbitems.Remove(personDiseaseRiskLevelAsbitem); + i --; } } } @@ -705,29 +713,25 @@ namespace Shentun.WebPeis.AppointPatientRegisters var personDiseaseRiskLevelResultDtos = new List(); foreach (var personDiseaseRiskLevelDto in personDiseaseRiskLevelDtos) { - var personDiseaseRiskLevelResultDto = new PersonDiseaseRiskLevelDto() + if(personDiseaseRiskLevelDto.Asbitems.Where(o=>o.AsbitemRecommendLevelId == input.RecommendId).Count() > 0) { - DiseaseRiskId = personDiseaseRiskLevelDto.DiseaseRiskId, - DiseaseRiskName = personDiseaseRiskLevelDto.DiseaseRiskName, - DisplayOrder = personDiseaseRiskLevelDto.DisplayOrder, - DiseaseRiskLevelId = personDiseaseRiskLevelDto.DiseaseRiskLevelId, - DiseaseRiskLevelName = personDiseaseRiskLevelDto.DiseaseRiskLevelName - }; - personDiseaseRiskLevelResultDtos.Add(personDiseaseRiskLevelResultDto); - } - //一级推荐组合项目 - foreach (var personDiseaseRiskLevelResultDto in personDiseaseRiskLevelResultDtos) - { - var personDiseaseRiskLevelDto = personDiseaseRiskLevelDtos.Where(o => - o.DiseaseRiskLevelId == personDiseaseRiskLevelResultDto.DiseaseRiskLevelId - ).First(); - var asbitems = personDiseaseRiskLevelDto.Asbitems.Where(o => o.AsbitemRecommendLevelId == input.RecommendId - || o.IsBelongMedicalPackage == 'Y') - .ToList(); - personDiseaseRiskLevelResultDto.Asbitems.AddRange(asbitems); + //只有有推荐的项目才进入推荐风险项目列表 + var personDiseaseRiskLevelResultDto = new PersonDiseaseRiskLevelDto() + { + DiseaseRiskId = personDiseaseRiskLevelDto.DiseaseRiskId, + DiseaseRiskName = personDiseaseRiskLevelDto.DiseaseRiskName, + DisplayOrder = personDiseaseRiskLevelDto.DisplayOrder, + DiseaseRiskLevelId = personDiseaseRiskLevelDto.DiseaseRiskLevelId, + DiseaseRiskLevelName = personDiseaseRiskLevelDto.DiseaseRiskLevelName + }; + personDiseaseRiskLevelResultDto.Asbitems = + personDiseaseRiskLevelDto.Asbitems.Where(o => o.AsbitemRecommendLevelId == input.RecommendId).ToList(); + recommendMedicalPackageDto.SumPrice += personDiseaseRiskLevelResultDto.Asbitems.Sum(o => o.Price); + personDiseaseRiskLevelResultDtos.Add(personDiseaseRiskLevelResultDto); + } + } - - recommendMedicalPackageDto.DiseaseRiskLevelAsbitems.AddRange(personDiseaseRiskLevelResultDtos); + recommendMedicalPackageDto.DiseaseRiskLevelAsbitems = personDiseaseRiskLevelResultDtos; return recommendMedicalPackageDto; } @@ -858,7 +862,8 @@ namespace Shentun.WebPeis.AppointPatientRegisters join asbitem in await _asbitemRepository.GetQueryableAsync() on diseaseRiskLevelAsbitem.AsbitemId equals asbitem.AsbitemId where diseaseRiskLevelAsbitem.DiseaseRiskLevelId == diseaseRisk.DiseaseRiskLevelId - select new PersonDiseaseRiskLevelAsbitem() + orderby asbitem.DisplayOrder + select new RecommendMedicalPackageAsbitem() { AsbitemId = asbitem.AsbitemId, AsbitemName = asbitem.AsbitemName, diff --git a/test/Shentun.WebPeis.Application.Tests/AppointPatientRegisterAppServiceTest.cs b/test/Shentun.WebPeis.Application.Tests/AppointPatientRegisterAppServiceTest.cs index 147de38..898d519 100644 --- a/test/Shentun.WebPeis.Application.Tests/AppointPatientRegisterAppServiceTest.cs +++ b/test/Shentun.WebPeis.Application.Tests/AppointPatientRegisterAppServiceTest.cs @@ -125,12 +125,19 @@ namespace Shentun.WebPeis var list = await _appService.GetRecommendMedicalPackageListByPersonIdAsync(entity); foreach (var item in list) { - _output.WriteLine(item.MedicalPackageName); + _output.WriteLine("---------------" + item.MedicalPackageName); foreach(var item2 in item.Asbitems) { _output.WriteLine(item2.AsbitemName + "-" + item2.IsBelongMedicalPackage); } - + foreach (var item2 in item.DiseaseRiskLevelAsbitems) + { + _output.WriteLine("---" + item2.DiseaseRiskName +"-" + item2.DiseaseRiskLevelName + "---"); + foreach(var item3 in item2.Asbitems) + { + _output.WriteLine(item3.AsbitemName ); + } + } } await unitOfWork.CompleteAsync(); }