From 5bbe79822da8b4b9e6cbb2a066bac6d6c8454f3a Mon Sep 17 00:00:00 2001 From: "DESKTOP-G961P6V\\Zhh" <839860190@qq.com> Date: Thu, 20 Jun 2024 18:36:15 +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 --- .../CreateQuestionAnswerAsbitemDto.cs | 34 +++++ .../CreateQuestionAnswerRiskLevelDto.cs | 19 +++ .../QuestionAnswerAsbitemDto.cs | 28 ++++ .../QuestionAnswerRiskLevelDto.cs | 25 ++++ .../AppointPatientRegisterAppService.cs | 4 +- .../DiseaseRiskLevelAppService.cs | 60 +------- .../QuestionAnswerAppService.cs | 129 +++++++++++++++++- .../QuestionRegisterAppService.cs | 4 +- ...elAnswer.cs => QuestionAnswerRiskLevel.cs} | 4 +- ...cs => QuestionAnswerRiskLevelConfigure.cs} | 8 +- .../EntityFrameworkCore/WebPeisDbContext.cs | 3 +- 11 files changed, 248 insertions(+), 70 deletions(-) create mode 100644 src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/CreateQuestionAnswerAsbitemDto.cs create mode 100644 src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/CreateQuestionAnswerRiskLevelDto.cs create mode 100644 src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerAsbitemDto.cs create mode 100644 src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerRiskLevelDto.cs rename src/Shentun.WebPeis.Domain/Models/{DiseaseRiskLevelAnswer.cs => QuestionAnswerRiskLevel.cs} (84%) rename src/Shentun.WebPeis.EntityFrameworkCore/Configures/{DiseaseRiskLevelAnswerConfigure.cs => QuestionAnswerRiskLevelConfigure.cs} (51%) diff --git a/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/CreateQuestionAnswerAsbitemDto.cs b/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/CreateQuestionAnswerAsbitemDto.cs new file mode 100644 index 0000000..59b5737 --- /dev/null +++ b/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/CreateQuestionAnswerAsbitemDto.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Shentun.WebPeis.QuestionAnswers +{ + public class CreateQuestionAnswerAsbitemDto + { + /// + /// 问卷答案ID + /// + public Guid QuestionAnswerId { get; set; } + /// + /// 组合项目集合 + /// + + public List Asbitems { get; set; } = new List(); + + } + + public class CreateQuestionAnswerAsbitemDetail + { + /// + /// 组合项目ID + /// + + public Guid AsbitemId { get; set; } + /// + /// 推荐组合项目级别 1-一级推荐,2-2级推荐,3-3级推荐 + /// + + public short AsbitemRecommendLevelId { get; set; } + } +} diff --git a/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/CreateQuestionAnswerRiskLevelDto.cs b/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/CreateQuestionAnswerRiskLevelDto.cs new file mode 100644 index 0000000..f0f69fb --- /dev/null +++ b/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/CreateQuestionAnswerRiskLevelDto.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Shentun.WebPeis.QuestionAnswers +{ + public class CreateQuestionAnswerRiskLevelDto + { + /// + /// 问卷答案ID + /// + public Guid QuestionAnswerId { get; set; } + + /// + /// 疾病风险级别集合 + /// + public List DiseaseRiskLevelIds { get; set; } = new List(); + } +} diff --git a/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerAsbitemDto.cs b/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerAsbitemDto.cs new file mode 100644 index 0000000..8f4340c --- /dev/null +++ b/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerAsbitemDto.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Shentun.WebPeis.QuestionAnswers +{ + public class QuestionAnswerAsbitemDto + { + /// + /// 问卷答案ID + /// + public Guid QuestionAnswerId { get; set; } + /// + /// 组合项目ID + /// + public Guid AsbitemId { get; set; } + /// + /// 组合项目名称 + /// + public string AsbitemName { get; set; } + + /// + /// 推荐组合项目级别 1-一级推荐,2-2级推荐,3-3级推荐 + /// + + public short AsbitemRecommendLevelId { get; set; } + } +} diff --git a/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerRiskLevelDto.cs b/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerRiskLevelDto.cs new file mode 100644 index 0000000..81c8a17 --- /dev/null +++ b/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerRiskLevelDto.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Shentun.WebPeis.QuestionAnswers +{ + public class QuestionAnswerRiskLevelDto + { + + + /// + /// 问卷答案ID + /// + public Guid QuestionAnswerId { get; set; } + + /// 疾病风险疾病ID + /// + public Guid DiseaseRiskLevelId { get; set; } + + /// + /// 疾病风险名称 + /// + public string DiseaseRiskLevelName { get; set; } + } +} diff --git a/src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs b/src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs index 4b9ba5c..b2010e6 100644 --- a/src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs +++ b/src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs @@ -60,7 +60,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters private readonly IRepository _questionSubjectTypeRepository; private readonly IRepository _diseaseRiskRepository; private readonly IRepository _diseaseRiskLevelRepository; - private readonly IRepository _diseaseRiskLevelAnswerRepository; + private readonly IRepository _diseaseRiskLevelAnswerRepository; private readonly IRepository _diseaseRiskLevelAsbitemRepository; public AppointPatientRegisterAppService(IRepository repository, CacheService cacheService, @@ -90,7 +90,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters IRepository questionSubjectTypeRepository, IRepository diseaseRiskRepository, IRepository diseaseRiskLevelRepository, - IRepository diseaseRiskLevelAnswerRepository, + IRepository diseaseRiskLevelAnswerRepository, IRepository diseaseRiskLevelAsbitemRepository ) diff --git a/src/Shentun.WebPeis.Application/DiseaseRiskLevels/DiseaseRiskLevelAppService.cs b/src/Shentun.WebPeis.Application/DiseaseRiskLevels/DiseaseRiskLevelAppService.cs index d759e8d..fb3cb44 100644 --- a/src/Shentun.WebPeis.Application/DiseaseRiskLevels/DiseaseRiskLevelAppService.cs +++ b/src/Shentun.WebPeis.Application/DiseaseRiskLevels/DiseaseRiskLevelAppService.cs @@ -22,7 +22,7 @@ namespace Shentun.WebPeis.DiseaseRiskLevels { private readonly IRepository _diseaseRiskLevelRepository; - private readonly IRepository _diseaseRiskLevelAnswerRepository; + private readonly IRepository _diseaseRiskLevelAnswerRepository; private readonly IRepository _diseaseRiskLevelAsbitemRepository; private readonly IRepository _questionAnswerRepository; private readonly IRepository _asbitemRepository; @@ -33,7 +33,7 @@ namespace Shentun.WebPeis.DiseaseRiskLevels IRepository diseaseRiskLevelRepository, DiseaseRiskLevelManager diseaseRiskLevelManager, CacheService cacheService, - IRepository diseaseRiskLevelAnswerRepository, + IRepository diseaseRiskLevelAnswerRepository, IRepository questionAnswerRepository, IRepository diseaseRiskLevelAsbitemRepository, IRepository asbitemRepository) @@ -164,61 +164,7 @@ namespace Shentun.WebPeis.DiseaseRiskLevels } - /// - /// 设置疾病风险级别对应的答案 - /// - /// - [HttpPost("api/app/DiseaseRiskLevel/CreateDiseaseRiskLevelAnswer")] - public async Task CreateDiseaseRiskLevelAnswerAsync(CreateDiseaseRiskLevelAnswerDto input) - { - await _diseaseRiskLevelAnswerRepository.DeleteAsync(d => d.DiseaseRiskLevelId == input.DiseaseRiskLevelId,true); - if (input.QuestionAnswerIds.Any()) - { - foreach (var questionAnswerId in input.QuestionAnswerIds) - { - var isQuestionAnswer = await _diseaseRiskLevelAnswerRepository.FirstOrDefaultAsync(f => f.QuestionAnswerId == questionAnswerId && f.DiseaseRiskLevelId == input.DiseaseRiskLevelId); - if (isQuestionAnswer == null) - { - await _diseaseRiskLevelAnswerRepository.InsertAsync(new DiseaseRiskLevelAnswer - { - DiseaseRiskLevelId = input.DiseaseRiskLevelId, - QuestionAnswerId = questionAnswerId - }, true); - } - } - } - } - - /// - /// 根据疾病风险级别ID获取对应的答案 - /// - /// - /// - [HttpPost("api/app/DiseaseRiskLevel/GetDiseaseRiskLevelAnswerByDiseaseRiskLevelId")] - public async Task> GetDiseaseRiskLevelAnswerByDiseaseRiskLevelIdAsync(DiseaseRiskLevelIdInputDto input) - { - var query = from diseaseRiskLevelAnswer in await _diseaseRiskLevelAnswerRepository.GetQueryableAsync() - join questionAnswer in await _questionAnswerRepository.GetQueryableAsync() - on diseaseRiskLevelAnswer.QuestionAnswerId equals questionAnswer.QuestionAnswerId - where diseaseRiskLevelAnswer.DiseaseRiskLevelId == input.DiseaseRiskLevelId - orderby questionAnswer.DisplayOrder ascending - select new - { - diseaseRiskLevelAnswer.DiseaseRiskLevelId, - questionAnswer.QuestionAnswerId, - questionAnswer.QuestionAnswerName - }; - - var entListDto = query.Select(s => new DiseaseRiskLevelAnswerDto - { - DiseaseRiskLevelId = s.DiseaseRiskLevelId, - QuestionAnswerId = s.QuestionAnswerId, - QuestionAnswerName = s.QuestionAnswerName - }).ToList(); - - return entListDto; - - } + /// diff --git a/src/Shentun.WebPeis.Application/QuestionAnswers/QuestionAnswerAppService.cs b/src/Shentun.WebPeis.Application/QuestionAnswers/QuestionAnswerAppService.cs index a9e5be9..0361aca 100644 --- a/src/Shentun.WebPeis.Application/QuestionAnswers/QuestionAnswerAppService.cs +++ b/src/Shentun.WebPeis.Application/QuestionAnswers/QuestionAnswerAppService.cs @@ -1,5 +1,6 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Shentun.WebPeis.DiseaseRiskLevels; using Shentun.WebPeis.Models; using Shentun.WebPeis.Questions; using System; @@ -22,17 +23,29 @@ namespace Shentun.WebPeis.QuestionAnswers { private readonly IRepository _questionAnswerRepository; + private readonly IRepository _questionAnswerAsbitemRepository; + private readonly IRepository _asbitemRepository; + private readonly IRepository _questionAnswerRiskLevelRepository; + private readonly IRepository _diseaseRiskLevelRepository; private readonly QuestionAnswerManager _questionAnswerManager; private readonly CacheService _cacheService; public QuestionAnswerAppService( CacheService cacheService, IRepository questionAnswerRepository, - QuestionAnswerManager questionAnswerManager) + QuestionAnswerManager questionAnswerManager, + IRepository questionAnswerAsbitemRepository, + IRepository asbitemRepository, + IRepository questionAnswerRiskLevelRepository, + IRepository diseaseRiskLevelRepository) { _cacheService = cacheService; _questionAnswerRepository = questionAnswerRepository; _questionAnswerManager = questionAnswerManager; + _questionAnswerAsbitemRepository = questionAnswerAsbitemRepository; + _asbitemRepository = asbitemRepository; + _questionAnswerRiskLevelRepository = questionAnswerRiskLevelRepository; + _diseaseRiskLevelRepository = diseaseRiskLevelRepository; } /// @@ -182,6 +195,120 @@ namespace Shentun.WebPeis.QuestionAnswers await _questionAnswerManager.UpdateSortDragAsync(input); } + /// + /// 设置答案对应的疾病风险级别 + /// + /// + [HttpPost("api/app/QuestionAnswer/CreateQuestionAnswerRiskLevel")] + public async Task CreateQuestionAnswerRiskLevelAsync(CreateQuestionAnswerRiskLevelDto input) + { + await _questionAnswerRiskLevelRepository.DeleteAsync(d => d.QuestionAnswerId == input.QuestionAnswerId, true); + if (input.DiseaseRiskLevelIds.Any()) + { + foreach (var diseaseRiskLevelId in input.DiseaseRiskLevelIds) + { + var isQuestionAnswer = await _questionAnswerRiskLevelRepository.FirstOrDefaultAsync(f => f.DiseaseRiskLevelId == diseaseRiskLevelId && + f.QuestionAnswerId == input.QuestionAnswerId); + if (isQuestionAnswer == null) + { + await _questionAnswerRiskLevelRepository.InsertAsync(new QuestionAnswerRiskLevel + { + DiseaseRiskLevelId = diseaseRiskLevelId, + QuestionAnswerId = input.QuestionAnswerId + }, true); + } + } + } + } + + /// + /// 根据答案ID获取疾病风险级别 + /// + /// + /// + [HttpPost("api/app/QuestionAnswer/GetQuestionAnswerRiskLevelById")] + public async Task> GetQuestionAnswerRiskLevelByIdAsync(QuestionAnswerIdInputDto input) + { + var query = from questionAnswerRiskLevel in await _questionAnswerRiskLevelRepository.GetQueryableAsync() + join diseaseRiskLevel in await _diseaseRiskLevelRepository.GetQueryableAsync() + on questionAnswerRiskLevel.DiseaseRiskLevelId equals diseaseRiskLevel.DiseaseRiskLevelId + where questionAnswerRiskLevel.QuestionAnswerId == input.QuestionAnswerId + orderby diseaseRiskLevel.DisplayOrder ascending + select new + { + questionAnswerRiskLevel.QuestionAnswerId, + diseaseRiskLevel.DiseaseRiskLevelId, + diseaseRiskLevel.DiseaseRiskLevelName + }; + + var entListDto = query.Select(s => new QuestionAnswerRiskLevelDto + { + DiseaseRiskLevelId = s.DiseaseRiskLevelId, + QuestionAnswerId = s.QuestionAnswerId, + DiseaseRiskLevelName = s.DiseaseRiskLevelName + }).ToList(); + + return entListDto; + + } + + /// + /// 设置问卷答案推荐的组合项目 + /// + /// + [HttpPost("api/app/QuestionAnswer/CreateQuestionAnswerAsbitem")] + public async Task CreateQuestionAnswerAsbitemAsync(CreateQuestionAnswerAsbitemDto input) + { + await _questionAnswerAsbitemRepository.DeleteAsync(d => d.QuestionAnswerId == input.QuestionAnswerId, true); + if (input.Asbitems.Any()) + { + foreach (var item in input.Asbitems) + { + var isAsbitem = await _questionAnswerAsbitemRepository.FirstOrDefaultAsync(f => f.AsbitemId == item.AsbitemId && f.QuestionAnswerId == input.QuestionAnswerId); + if (isAsbitem == null) + { + await _questionAnswerAsbitemRepository.InsertAsync(new QuestionAnswerAsbitem + { + QuestionAnswerId = input.QuestionAnswerId, + AsbitemId = item.AsbitemId, + AsbitemRecommendLevelId = item.AsbitemRecommendLevelId + }, true); + } + } + } + } + /// + /// 根据问卷答案获取推荐的组合项目 + /// + /// + /// + [HttpPost("api/app/QuestionAnswer/GetQuestionAnswerAsbitemById")] + public async Task> GetQuestionAnswerAsbitemByIdAsync(QuestionAnswerIdInputDto input) + { + var query = from questionAnswerAsbitem in await _questionAnswerAsbitemRepository.GetQueryableAsync() + join asbitem in await _asbitemRepository.GetQueryableAsync() + on questionAnswerAsbitem.AsbitemId equals asbitem.AsbitemId + where questionAnswerAsbitem.QuestionAnswerId == input.QuestionAnswerId + orderby asbitem.DisplayOrder ascending + select new + { + questionAnswerAsbitem.QuestionAnswerId, + asbitem.AsbitemId, + asbitem.AsbitemName, + questionAnswerAsbitem.AsbitemRecommendLevelId + }; + + var entListDto = query.Select(s => new QuestionAnswerAsbitemDto + { + QuestionAnswerId = s.QuestionAnswerId, + AsbitemId = s.AsbitemId, + AsbitemName = s.AsbitemName, + AsbitemRecommendLevelId = s.AsbitemRecommendLevelId + }).ToList(); + + return entListDto; + + } /// /// 使用Code进行递归 diff --git a/src/Shentun.WebPeis.Application/QuestionRegisters/QuestionRegisterAppService.cs b/src/Shentun.WebPeis.Application/QuestionRegisters/QuestionRegisterAppService.cs index 996e989..add24c7 100644 --- a/src/Shentun.WebPeis.Application/QuestionRegisters/QuestionRegisterAppService.cs +++ b/src/Shentun.WebPeis.Application/QuestionRegisters/QuestionRegisterAppService.cs @@ -33,7 +33,7 @@ namespace Shentun.WebPeis.QuestionRegisters private readonly IRepository _questionSubjectTypeRepository; private readonly IRepository _diseaseRiskRepository; private readonly IRepository _diseaseRiskLevelRepository; - private readonly IRepository _diseaseRiskLevelAnswerRepository; + private readonly IRepository _diseaseRiskLevelAnswerRepository; private readonly IRepository _diseaseRiskLevelAsbitemRepository; private readonly IRepository _asbitemRepository; private readonly QuestionRegisterManager _questionRegisterManager; @@ -49,7 +49,7 @@ namespace Shentun.WebPeis.QuestionRegisters IRepository questionSubjectTypeRepository, IRepository diseaseRiskRepository, IRepository diseaseRiskLevelRepository, - IRepository diseaseRiskLevelAnswerRepository, + IRepository diseaseRiskLevelAnswerRepository, IRepository diseaseRiskLevelAsbitemRepository, IRepository asbitemRepository, SysParmValueManager sysParmValueManager) diff --git a/src/Shentun.WebPeis.Domain/Models/DiseaseRiskLevelAnswer.cs b/src/Shentun.WebPeis.Domain/Models/QuestionAnswerRiskLevel.cs similarity index 84% rename from src/Shentun.WebPeis.Domain/Models/DiseaseRiskLevelAnswer.cs rename to src/Shentun.WebPeis.Domain/Models/QuestionAnswerRiskLevel.cs index 4e43403..5811175 100644 --- a/src/Shentun.WebPeis.Domain/Models/DiseaseRiskLevelAnswer.cs +++ b/src/Shentun.WebPeis.Domain/Models/QuestionAnswerRiskLevel.cs @@ -9,9 +9,9 @@ using Volo.Abp.Domain.Entities; namespace Shentun.WebPeis.Models { /// - /// 疾病风险级别对应的答案 + /// 答案对应的疾病风险级别 /// - public class DiseaseRiskLevelAnswer : Entity, IHasConcurrencyStamp + public class QuestionAnswerRiskLevel : Entity, IHasConcurrencyStamp { //public DiseaseRiskLevelAnswer() { } public Guid DiseaseRiskLevelId { get; set; } diff --git a/src/Shentun.WebPeis.EntityFrameworkCore/Configures/DiseaseRiskLevelAnswerConfigure.cs b/src/Shentun.WebPeis.EntityFrameworkCore/Configures/QuestionAnswerRiskLevelConfigure.cs similarity index 51% rename from src/Shentun.WebPeis.EntityFrameworkCore/Configures/DiseaseRiskLevelAnswerConfigure.cs rename to src/Shentun.WebPeis.EntityFrameworkCore/Configures/QuestionAnswerRiskLevelConfigure.cs index f899a35..0581bd3 100644 --- a/src/Shentun.WebPeis.EntityFrameworkCore/Configures/DiseaseRiskLevelAnswerConfigure.cs +++ b/src/Shentun.WebPeis.EntityFrameworkCore/Configures/QuestionAnswerRiskLevelConfigure.cs @@ -9,13 +9,13 @@ using System.Threading.Tasks; namespace Shentun.WebPeis.Configures { - public class DiseaseRiskLevelAnswerConfigure : IEntityTypeConfiguration + public class QuestionAnswerRiskLevelConfigure : IEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entity) + public void Configure(EntityTypeBuilder entity) { - entity.HasKey(e => new { e.DiseaseRiskLevelId, e.QuestionAnswerId }).HasName("pk_disease_risk_level_answer"); + entity.HasKey(e => new { e.DiseaseRiskLevelId, e.QuestionAnswerId }).HasName("pk_question_answer_risk_level"); - entity.ToTable("disease_risk_level_answer", tb => tb.HasComment("疾病风险对应的答案")); + entity.ToTable("question_answer_risk_level", tb => tb.HasComment("答案对应的疾病风险级别")); } } } diff --git a/src/Shentun.WebPeis.EntityFrameworkCore/EntityFrameworkCore/WebPeisDbContext.cs b/src/Shentun.WebPeis.EntityFrameworkCore/EntityFrameworkCore/WebPeisDbContext.cs index 3a7aa97..3f1b789 100644 --- a/src/Shentun.WebPeis.EntityFrameworkCore/EntityFrameworkCore/WebPeisDbContext.cs +++ b/src/Shentun.WebPeis.EntityFrameworkCore/EntityFrameworkCore/WebPeisDbContext.cs @@ -152,7 +152,6 @@ public partial class WebPeisDbContext : AbpDbContext, public virtual DbSet DiseaseRiskLevelAsbitems { get; set; } - public virtual DbSet DiseaseRiskLevelAnswers { get; set; } public virtual DbSet DiseaseRiskNormalLevels { get; set; } @@ -191,8 +190,8 @@ public partial class WebPeisDbContext : AbpDbContext, public virtual DbSet QuestionAnswers { get; set; } public virtual DbSet QuestionAnswerAsbitems { get; set; } - + public virtual DbSet QuestionAnswerRiskLevels { get; set; } public virtual DbSet QuestionRegisters { get; set; } public virtual DbSet QuestionRegisterAnswers { get; set; }