From d03e9ba40079a4fb035f0111af6f02d720c19a4f Mon Sep 17 00:00:00 2001 From: "DESKTOP-G961P6V\\Zhh" <839860190@qq.com> Date: Mon, 17 Jun 2024 23:15:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A5=97=E9=A4=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AppointPatientRegisterAppService.cs | 4 +- .../MedicalPackageAppservice.cs | 103 ++++++++++++++++-- .../MedicalPackageAppServiceTest.cs | 24 +++- .../appsettings.json | 4 + 4 files changed, 125 insertions(+), 10 deletions(-) diff --git a/src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs b/src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs index fb23977..71fd0e7 100644 --- a/src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs +++ b/src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs @@ -615,9 +615,11 @@ namespace Shentun.WebPeis.AppointPatientRegisters public async Task GetRecommendMedicalPackageByPersonAndRecommendIdAsync(RecommendMedicalPackagePersonAndRecommendIdInputDto input) { var person = await _personRepository.GetAsync(o => o.PersonId == input.PersonId); + var age = DateTime.Now.Year - ((DateTime)person.BirthDate).Year; var medicalPackages = await _medicalPackageRepository.GetListAsync(o => o.IsActive == 'Y' && o.IsWebAppoint == 'Y' && o.IsBasicRecommend == 'Y' && - (o.ForSexId == ForSexFlag.All || o.ForSexId == person.SexId)); + (o.ForSexId == ForSexFlag.All || o.ForSexId == person.SexId) && + o.AgeUpperLimit <= age && o.AgeLowerLimit >= age); if (person.MaritalStatusId == MaritalStatusFlag.UnMarried) { //未婚 diff --git a/src/Shentun.WebPeis.Application/MedicalPackages/MedicalPackageAppservice.cs b/src/Shentun.WebPeis.Application/MedicalPackages/MedicalPackageAppservice.cs index eb3ce01..a1189e6 100644 --- a/src/Shentun.WebPeis.Application/MedicalPackages/MedicalPackageAppservice.cs +++ b/src/Shentun.WebPeis.Application/MedicalPackages/MedicalPackageAppservice.cs @@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Mvc; using Shentun.WebPeis.Enums; using Shentun.WebPeis.Models; +using Shentun.WebPeis.Persons; using System; using System.Collections.Generic; using System.Linq; @@ -18,6 +19,7 @@ namespace Shentun.WebPeis.MedicalPackages public class MedicalPackageAppService : ApplicationService { private readonly IRepository _repository; + private readonly IRepository _personRepository; private readonly IRepository _asbitemRepository; private readonly IRepository _itemTypeRepository; private readonly IRepository _medicalPackageDetailRepository; @@ -29,7 +31,8 @@ namespace Shentun.WebPeis.MedicalPackages IRepository asbitemRepository, IRepository medicalPackageDetailRepository, IRepository itemTypeRepository, - IRepository customerOrgGroupDetailRepository + IRepository customerOrgGroupDetailRepository, + IRepository personRepository ) { @@ -39,26 +42,112 @@ namespace Shentun.WebPeis.MedicalPackages _medicalPackageDetailRepository = medicalPackageDetailRepository; _itemTypeRepository = itemTypeRepository; _customerOrgGroupDetailRepository = customerOrgGroupDetailRepository; + _personRepository = personRepository; } /// /// 获取能预约的套餐信息 /// /// - [HttpPost("api/app/MedicalPackage/GetCanAppointList")] + [HttpPost("api/app/MedicalPackage/GetCanAppointListByPersonId")] //[AllowAnonymous] - public async Task> GetCanAppointListAsync() + public async Task> GetCanAppointListByPersonIdAsync(PersonIdInputDto input) { - var list = (await _repository.GetListAsync(o => o.IsActive == 'Y' && o.IsWebAppoint == 'Y')) - .OrderBy(o => o.DisplayOrder).ToList(); - var returnList = ObjectMapper.Map, List>(list); ; + var person = await _personRepository.GetAsync(o => o.PersonId == input.PersonId); + var age = DateTime.Now.Year - ((DateTime)person.BirthDate).Year; + var medicalPackages = await _repository.GetListAsync(o => o.IsActive == 'Y' && + o.IsWebAppoint == 'Y' && + (o.ForSexId == ForSexFlag.All || o.ForSexId == person.SexId) && + o.AgeUpperLimit <= age && o.AgeLowerLimit >= age); + + if (person.MaritalStatusId == MaritalStatusFlag.UnMarried) + { + //未婚 + if (medicalPackages.Where(o => o.MaritalStatusId == MaritalStatusFlag.Married).Any()) + { + medicalPackages = medicalPackages.Where(o => + o.MaritalStatusId == MaritalStatusFlag.UnMarried).ToList(); + } + else + { + medicalPackages = medicalPackages.Where(o => o.MaritalStatusId == MaritalStatusFlag.All).ToList(); + } + + + } + else if (person.MaritalStatusId != MaritalStatusFlag.UnKnown) + { + //已婚 + if (medicalPackages.Where(o => o.MaritalStatusId == MaritalStatusFlag.Married).Any()) + { + medicalPackages = medicalPackages.Where(o => o.MaritalStatusId == MaritalStatusFlag.Married).ToList(); + } + else + { + medicalPackages = medicalPackages.Where(o => o.MaritalStatusId == MaritalStatusFlag.All).ToList(); + } + } + medicalPackages = medicalPackages.OrderBy(o=>o.DisplayOrder).ToList(); + var returnList = ObjectMapper.Map, List>(medicalPackages); ; foreach (var item in returnList) { item.ForSexName = await _cacheService.GetForSexNameAsync(item.ForSexId); - item.MaritalStatusName = await _cacheService.GetForSexNameAsync(item.MaritalStatusId); + item.MaritalStatusName = await _cacheService.GetMaritalStatusNameAsync(item.MaritalStatusId); } return returnList; ; } + + /// + /// 获取推荐的套餐 + /// + /// + /// + [HttpPost("api/app/MedicalPackage/GetRecommendCanAppointByPersonId")] + public async Task GetRecommendCanAppointByPersonIdAsync(PersonIdInputDto input) + { + var person = await _personRepository.GetAsync(o => o.PersonId == input.PersonId); + var age = DateTime.Now.Year - ((DateTime)person.BirthDate).Year; + var medicalPackages = await _repository.GetListAsync(o => o.IsActive == 'Y' && + o.IsWebAppoint == 'Y' && o.IsBasicRecommend == 'Y' && + (o.ForSexId == ForSexFlag.All || o.ForSexId == person.SexId) && + o.AgeUpperLimit <= age && o.AgeLowerLimit >= age); + + if (person.MaritalStatusId == MaritalStatusFlag.UnMarried) + { + //未婚 + if (medicalPackages.Where(o => o.MaritalStatusId == MaritalStatusFlag.Married).Any()) + { + medicalPackages = medicalPackages.Where(o => + o.MaritalStatusId == MaritalStatusFlag.UnMarried).ToList(); + } + else + { + medicalPackages = medicalPackages.Where(o => o.MaritalStatusId == MaritalStatusFlag.All).ToList(); + } + + + } + else if (person.MaritalStatusId != MaritalStatusFlag.UnKnown) + { + //已婚 + if (medicalPackages.Where(o => o.MaritalStatusId == MaritalStatusFlag.Married).Any()) + { + medicalPackages = medicalPackages.Where(o => o.MaritalStatusId == MaritalStatusFlag.Married).ToList(); + } + else + { + medicalPackages = medicalPackages.Where(o => o.MaritalStatusId == MaritalStatusFlag.All).ToList(); + } + } + var medicalPackage = medicalPackages.OrderBy(o => o.DisplayOrder).Single(); + var result = ObjectMapper.Map(medicalPackage); ; + result.ForSexName = await _cacheService.GetForSexNameAsync(result.ForSexId); + result.MaritalStatusName = await _cacheService.GetForSexNameAsync(result.MaritalStatusId); + + return result; + + } + /// /// 获取套餐或单位分组组合项目 /// diff --git a/test/Shentun.WebPeis.Application.Tests/MedicalPackageAppServiceTest.cs b/test/Shentun.WebPeis.Application.Tests/MedicalPackageAppServiceTest.cs index 4c74149..808fea9 100644 --- a/test/Shentun.WebPeis.Application.Tests/MedicalPackageAppServiceTest.cs +++ b/test/Shentun.WebPeis.Application.Tests/MedicalPackageAppServiceTest.cs @@ -30,14 +30,17 @@ namespace Shentun.WebPeis } [Fact] - public async Task GetCanAppointListAsync() + public async Task GetCanAppointListByPersonIdAsync() { using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true)) { - var list = await _appService.GetCanAppointListAsync(); + var list = await _appService.GetCanAppointListByPersonIdAsync( new Persons.PersonIdInputDto() + { + PersonId = new Guid("3a12d72c-19d9-e8b2-71f6-cf283103e191") + }); foreach (var item in list) { _output.WriteLine(item.MedicalPackageName); @@ -46,6 +49,23 @@ namespace Shentun.WebPeis } } + [Fact] + public async Task GetRecommendCanAppointByPersonIdAsync() + { + using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true)) + { + + + + var item = await _appService.GetRecommendCanAppointByPersonIdAsync(new Persons.PersonIdInputDto() + { + PersonId = new Guid("3a12d72c-19d9-e8b2-71f6-cf283103e191") + }); + _output.WriteLine(item.MedicalPackageName); + + await unitOfWork.CompleteAsync(); + } + } [Fact] public async Task GetCheckTypeWithAsbitemsListByMedicalPackageIdAsync() { diff --git a/test/Shentun.WebPeis.Application.Tests/appsettings.json b/test/Shentun.WebPeis.Application.Tests/appsettings.json index 51239e4..d0a6ea5 100644 --- a/test/Shentun.WebPeis.Application.Tests/appsettings.json +++ b/test/Shentun.WebPeis.Application.Tests/appsettings.json @@ -49,5 +49,9 @@ "VerifySmsTypeId": "3a12e09d-438a-1d08-d4f0-712aef13708d", "VerifySmsValidTime": "1", "SmsAppId": "3a12e09f-8534-ec43-8c46-e61af0964ab6" + }, + "Redis": { + "IsEnabled": "true", + "Configuration": "62.156.10.86" } }