3 Commits

Author SHA1 Message Date
DESKTOP-G961P6V\Zhh 6528da1930 预约 2 years ago
DESKTOP-G961P6V\Zhh 5bbe79822d 预约 2 years ago
DESKTOP-G961P6V\Zhh f7359cfa7e 预约 2 years ago
  1. 34
      src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/CreateQuestionAnswerAsbitemDto.cs
  2. 19
      src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/CreateQuestionAnswerRiskLevelDto.cs
  3. 28
      src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerAsbitemDto.cs
  4. 25
      src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerRiskLevelDto.cs
  5. 34
      src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs
  6. 60
      src/Shentun.WebPeis.Application/DiseaseRiskLevels/DiseaseRiskLevelAppService.cs
  7. 30
      src/Shentun.WebPeis.Application/Persons/PersonAppService.cs
  8. 129
      src/Shentun.WebPeis.Application/QuestionAnswers/QuestionAnswerAppService.cs
  9. 39
      src/Shentun.WebPeis.Application/QuestionRegisters/QuestionRegisterAppService.cs
  10. 2
      src/Shentun.WebPeis.Domain/Models/QuestionAnswer.cs
  11. 37
      src/Shentun.WebPeis.Domain/Models/QuestionAnswerAsbitem.cs
  12. 4
      src/Shentun.WebPeis.Domain/Models/QuestionAnswerRiskLevel.cs
  13. 43
      src/Shentun.WebPeis.EntityFrameworkCore/Configures/QuestionAnswerAsbitemConfigure.cs
  14. 8
      src/Shentun.WebPeis.EntityFrameworkCore/Configures/QuestionAnswerRiskLevelConfigure.cs
  15. 4
      src/Shentun.WebPeis.EntityFrameworkCore/EntityFrameworkCore/WebPeisDbContext.cs

34
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
{
/// <summary>
/// 问卷答案ID
/// </summary>
public Guid QuestionAnswerId { get; set; }
/// <summary>
/// 组合项目集合
/// </summary>
public List<CreateQuestionAnswerAsbitemDetail> Asbitems { get; set; } = new List<CreateQuestionAnswerAsbitemDetail>();
}
public class CreateQuestionAnswerAsbitemDetail
{
/// <summary>
/// 组合项目ID
/// </summary>
public Guid AsbitemId { get; set; }
/// <summary>
/// 推荐组合项目级别 1-一级推荐,2-2级推荐,3-3级推荐
/// </summary>
public short AsbitemRecommendLevelId { get; set; }
}
}

19
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
{
/// <summary>
/// 问卷答案ID
/// </summary>
public Guid QuestionAnswerId { get; set; }
/// <summary>
/// 疾病风险级别集合
/// </summary>
public List<Guid> DiseaseRiskLevelIds { get; set; } = new List<Guid>();
}
}

28
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
{
/// <summary>
/// 问卷答案ID
/// </summary>
public Guid QuestionAnswerId { get; set; }
/// <summary>
/// 组合项目ID
/// </summary>
public Guid AsbitemId { get; set; }
/// <summary>
/// 组合项目名称
/// </summary>
public string AsbitemName { get; set; }
/// <summary>
/// 推荐组合项目级别 1-一级推荐,2-2级推荐,3-3级推荐
/// </summary>
public short AsbitemRecommendLevelId { get; set; }
}
}

25
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
{
/// <summary>
/// 问卷答案ID
/// </summary>
public Guid QuestionAnswerId { get; set; }
/// 疾病风险疾病ID
/// </summary>
public Guid DiseaseRiskLevelId { get; set; }
/// <summary>
/// 疾病风险名称
/// </summary>
public string DiseaseRiskLevelName { get; set; }
}
}

34
src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs

@ -60,8 +60,8 @@ namespace Shentun.WebPeis.AppointPatientRegisters
private readonly IRepository<QuestionSubjectType> _questionSubjectTypeRepository;
private readonly IRepository<DiseaseRisk> _diseaseRiskRepository;
private readonly IRepository<DiseaseRiskLevel> _diseaseRiskLevelRepository;
private readonly IRepository<DiseaseRiskLevelAnswer> _diseaseRiskLevelAnswerRepository;
private readonly IRepository<DiseaseRiskLevelAsbitem> _diseaseRiskLevelAsbitemRepository;
private readonly IRepository<QuestionAnswerRiskLevel> _questionAnswerRiskLevelRepository;
private readonly IRepository<QuestionAnswerAsbitem> _questionAnswerAsbitemRepository;
public AppointPatientRegisterAppService(IRepository<AppointPatientRegister> repository,
CacheService cacheService,
IRepository<ItemType> itemTypeRepository,
@ -90,8 +90,8 @@ namespace Shentun.WebPeis.AppointPatientRegisters
IRepository<QuestionSubjectType> questionSubjectTypeRepository,
IRepository<DiseaseRisk> diseaseRiskRepository,
IRepository<DiseaseRiskLevel> diseaseRiskLevelRepository,
IRepository<DiseaseRiskLevelAnswer> diseaseRiskLevelAnswerRepository,
IRepository<DiseaseRiskLevelAsbitem> diseaseRiskLevelAsbitemRepository
IRepository<QuestionAnswerRiskLevel> questionAnswerRiskLevelRepository,
IRepository<QuestionAnswerAsbitem> questionAnswerAsbitemRepository
)
{
@ -123,8 +123,8 @@ namespace Shentun.WebPeis.AppointPatientRegisters
_questionSubjectTypeRepository = questionSubjectTypeRepository;
_diseaseRiskRepository = diseaseRiskRepository;
_diseaseRiskLevelRepository = diseaseRiskLevelRepository;
_diseaseRiskLevelAnswerRepository = diseaseRiskLevelAnswerRepository;
_diseaseRiskLevelAsbitemRepository = diseaseRiskLevelAsbitemRepository;
_questionAnswerRiskLevelRepository = questionAnswerRiskLevelRepository;
_questionAnswerAsbitemRepository = questionAnswerAsbitemRepository;
}
@ -956,15 +956,15 @@ namespace Shentun.WebPeis.AppointPatientRegisters
join diseaseRiskLevel in await _diseaseRiskLevelRepository.GetQueryableAsync()
on diseaseRisk.DiseaseRiskId equals diseaseRiskLevel.DiseaseRiskId into emptyDiseaseRiskLevel
from haveDiseaseRiskLevel in emptyDiseaseRiskLevel.DefaultIfEmpty()
join diseaseRiskLevelAnswer in await _diseaseRiskLevelAnswerRepository.GetQueryableAsync()
on haveDiseaseRiskLevel.DiseaseRiskLevelId equals diseaseRiskLevelAnswer.DiseaseRiskLevelId into emptyDiseaseRiskLevelAnswer
from haveDiseaseRiskLevelAnswer in emptyDiseaseRiskLevelAnswer.DefaultIfEmpty()
join questionAnswerRiskLevel in await _questionAnswerRiskLevelRepository.GetQueryableAsync()
on haveDiseaseRiskLevel.DiseaseRiskLevelId equals questionAnswerRiskLevel.DiseaseRiskLevelId into emptyQuestionAnswerRiskLevel
from haveQuestionAnswerRiskLevel in emptyQuestionAnswerRiskLevel.DefaultIfEmpty()
orderby diseaseRisk.DisplayOrder
select new
{
diseaseRisk,
haveDiseaseRiskLevel,
haveDiseaseRiskLevelAnswer
haveQuestionAnswerRiskLevel
}).ToList();
var questionRegisterDiseaseRiskDtos = diseaseRisks.GroupBy(o => o.diseaseRisk)
@ -984,9 +984,9 @@ namespace Shentun.WebPeis.AppointPatientRegisters
DiseaseRiskLevel matchDiseaseRiskLevel = null;
foreach (var diseaseRiskLevel in diseaseRiskLevels)
{
if (questionRegisterItems.Where(o => diseaseRiskLevel.haveDiseaseRiskLevelAnswer != null &&
if (questionRegisterItems.Where(o => diseaseRiskLevel.haveQuestionAnswerRiskLevel != null &&
o.questionRegisterAnswer.QuestionAnswerId ==
diseaseRiskLevel.haveDiseaseRiskLevelAnswer.QuestionAnswerId).Any())
diseaseRiskLevel.haveQuestionAnswerRiskLevel.QuestionAnswerId).Any())
{
if (diseaseRiskLevel.haveDiseaseRiskLevel != null)
{
@ -1005,10 +1005,12 @@ namespace Shentun.WebPeis.AppointPatientRegisters
diseaseRisk.DiseaseRiskLevelId = matchDiseaseRiskLevel.DiseaseRiskLevelId;
diseaseRisk.DiseaseRiskLevelName = matchDiseaseRiskLevel.DiseaseRiskLevelName;
var personDiseaseRiskLevelAsbitems = (from diseaseRiskLevelAsbitem in await _diseaseRiskLevelAsbitemRepository.GetQueryableAsync()
var personDiseaseRiskLevelAsbitems = (from questionAnswerAsbitem in await _questionAnswerAsbitemRepository.GetQueryableAsync()
join asbitem in await _asbitemRepository.GetQueryableAsync()
on diseaseRiskLevelAsbitem.AsbitemId equals asbitem.AsbitemId
where diseaseRiskLevelAsbitem.DiseaseRiskLevelId == diseaseRisk.DiseaseRiskLevelId
on questionAnswerAsbitem.AsbitemId equals asbitem.AsbitemId
join questionAnswerRiskLevel in await _questionAnswerRiskLevelRepository.GetQueryableAsync()
on questionAnswerAsbitem.QuestionAnswerId equals questionAnswerRiskLevel.QuestionAnswerId
where questionAnswerRiskLevel.DiseaseRiskLevelId == diseaseRisk.DiseaseRiskLevelId
orderby asbitem.DisplayOrder
select new RecommendMedicalPackageAsbitem()
{
@ -1019,7 +1021,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters
ClinicalMeaning = asbitem.ClinicalMeaning,
Warn = asbitem.Warn,
DisplayOrder = asbitem.DisplayOrder,
AsbitemRecommendLevelId = diseaseRiskLevelAsbitem.AsbitemRecommendLevelId
AsbitemRecommendLevelId = questionAnswerAsbitem.AsbitemRecommendLevelId
}).ToList();
diseaseRisk.Asbitems.AddRange(personDiseaseRiskLevelAsbitems);
}

60
src/Shentun.WebPeis.Application/DiseaseRiskLevels/DiseaseRiskLevelAppService.cs

@ -22,7 +22,7 @@ namespace Shentun.WebPeis.DiseaseRiskLevels
{
private readonly IRepository<DiseaseRiskLevel> _diseaseRiskLevelRepository;
private readonly IRepository<DiseaseRiskLevelAnswer> _diseaseRiskLevelAnswerRepository;
private readonly IRepository<QuestionAnswerRiskLevel> _diseaseRiskLevelAnswerRepository;
private readonly IRepository<DiseaseRiskLevelAsbitem> _diseaseRiskLevelAsbitemRepository;
private readonly IRepository<QuestionAnswer> _questionAnswerRepository;
private readonly IRepository<Asbitem> _asbitemRepository;
@ -33,7 +33,7 @@ namespace Shentun.WebPeis.DiseaseRiskLevels
IRepository<DiseaseRiskLevel> diseaseRiskLevelRepository,
DiseaseRiskLevelManager diseaseRiskLevelManager,
CacheService cacheService,
IRepository<DiseaseRiskLevelAnswer> diseaseRiskLevelAnswerRepository,
IRepository<QuestionAnswerRiskLevel> diseaseRiskLevelAnswerRepository,
IRepository<QuestionAnswer> questionAnswerRepository,
IRepository<DiseaseRiskLevelAsbitem> diseaseRiskLevelAsbitemRepository,
IRepository<Asbitem> asbitemRepository)
@ -164,61 +164,7 @@ namespace Shentun.WebPeis.DiseaseRiskLevels
}
/// <summary>
/// 设置疾病风险级别对应的答案
/// </summary>
/// <returns></returns>
[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);
}
}
}
}
/// <summary>
/// 根据疾病风险级别ID获取对应的答案
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/DiseaseRiskLevel/GetDiseaseRiskLevelAnswerByDiseaseRiskLevelId")]
public async Task<List<DiseaseRiskLevelAnswerDto>> 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;
}
/// <summary>

30
src/Shentun.WebPeis.Application/Persons/PersonAppService.cs

@ -288,6 +288,34 @@ namespace Shentun.WebPeis.Persons
return ObjectMapper.Map<Person, PersonDto>(person);
}
/// <summary>
/// 更新资料不带手机号码
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
[HttpPost("api/app/Person/UpdateNoMobileTelephone")]
public async Task<PersonDto> UpdateNoMobileTelephoneAsync(UpdatePersonDto input)
{
if (input == null) throw new UserFriendlyException("input参数不能为空");
var entity = ObjectMapper.Map<UpdatePersonDto, Person>(input);
//更新人员信息
var person = await _repository.GetAsync(o => o.PersonId == input.PersonId);
await _personManager.UpdateAsync(entity, person);
await _repository.UpdateAsync(person);
//更新用户信息
var user = await _identityUserRepository.GetAsync(person.PersonId);
user.Name = input.PersonName;
await _identityUserRepository.UpdateAsync(user);
return ObjectMapper.Map<Person, PersonDto>(person);
}
/// <summary>
/// 创建亲属
@ -543,6 +571,8 @@ namespace Shentun.WebPeis.Persons
}
/// <summary>
/// 获取校验码
/// </summary>

129
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<QuestionAnswer> _questionAnswerRepository;
private readonly IRepository<QuestionAnswerAsbitem> _questionAnswerAsbitemRepository;
private readonly IRepository<Asbitem> _asbitemRepository;
private readonly IRepository<QuestionAnswerRiskLevel> _questionAnswerRiskLevelRepository;
private readonly IRepository<DiseaseRiskLevel> _diseaseRiskLevelRepository;
private readonly QuestionAnswerManager _questionAnswerManager;
private readonly CacheService _cacheService;
public QuestionAnswerAppService(
CacheService cacheService,
IRepository<QuestionAnswer> questionAnswerRepository,
QuestionAnswerManager questionAnswerManager)
QuestionAnswerManager questionAnswerManager,
IRepository<QuestionAnswerAsbitem> questionAnswerAsbitemRepository,
IRepository<Asbitem> asbitemRepository,
IRepository<QuestionAnswerRiskLevel> questionAnswerRiskLevelRepository,
IRepository<DiseaseRiskLevel> diseaseRiskLevelRepository)
{
_cacheService = cacheService;
_questionAnswerRepository = questionAnswerRepository;
_questionAnswerManager = questionAnswerManager;
_questionAnswerAsbitemRepository = questionAnswerAsbitemRepository;
_asbitemRepository = asbitemRepository;
_questionAnswerRiskLevelRepository = questionAnswerRiskLevelRepository;
_diseaseRiskLevelRepository = diseaseRiskLevelRepository;
}
/// <summary>
@ -182,6 +195,120 @@ namespace Shentun.WebPeis.QuestionAnswers
await _questionAnswerManager.UpdateSortDragAsync(input);
}
/// <summary>
/// 设置答案对应的疾病风险级别
/// </summary>
/// <returns></returns>
[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);
}
}
}
}
/// <summary>
/// 根据答案ID获取疾病风险级别
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/QuestionAnswer/GetQuestionAnswerRiskLevelById")]
public async Task<List<QuestionAnswerRiskLevelDto>> 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;
}
/// <summary>
/// 设置问卷答案推荐的组合项目
/// </summary>
/// <returns></returns>
[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);
}
}
}
}
/// <summary>
/// 根据问卷答案获取推荐的组合项目
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/QuestionAnswer/GetQuestionAnswerAsbitemById")]
public async Task<List<QuestionAnswerAsbitemDto>> 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;
}
/// <summary>
/// 使用Code进行递归

39
src/Shentun.WebPeis.Application/QuestionRegisters/QuestionRegisterAppService.cs

@ -33,8 +33,8 @@ namespace Shentun.WebPeis.QuestionRegisters
private readonly IRepository<QuestionSubjectType> _questionSubjectTypeRepository;
private readonly IRepository<DiseaseRisk> _diseaseRiskRepository;
private readonly IRepository<DiseaseRiskLevel> _diseaseRiskLevelRepository;
private readonly IRepository<DiseaseRiskLevelAnswer> _diseaseRiskLevelAnswerRepository;
private readonly IRepository<DiseaseRiskLevelAsbitem> _diseaseRiskLevelAsbitemRepository;
private readonly IRepository<QuestionAnswerRiskLevel> _questionAnswerRiskLevelRepository;
private readonly IRepository<QuestionAnswerAsbitem> _questionAnswerAsbitemRepository;
private readonly IRepository<Asbitem> _asbitemRepository;
private readonly QuestionRegisterManager _questionRegisterManager;
private readonly IUnitOfWorkManager _unitOfWorkManager;
@ -49,8 +49,8 @@ namespace Shentun.WebPeis.QuestionRegisters
IRepository<QuestionSubjectType> questionSubjectTypeRepository,
IRepository<DiseaseRisk> diseaseRiskRepository,
IRepository<DiseaseRiskLevel> diseaseRiskLevelRepository,
IRepository<DiseaseRiskLevelAnswer> diseaseRiskLevelAnswerRepository,
IRepository<DiseaseRiskLevelAsbitem> diseaseRiskLevelAsbitemRepository,
IRepository<QuestionAnswerRiskLevel> questionAnswerRiskLevelRepository,
IRepository<QuestionAnswerAsbitem> questionAnswerAsbitemRepository,
IRepository<Asbitem> asbitemRepository,
SysParmValueManager sysParmValueManager)
{
@ -64,8 +64,8 @@ namespace Shentun.WebPeis.QuestionRegisters
_questionSubjectTypeRepository = questionSubjectTypeRepository;
_diseaseRiskRepository = diseaseRiskRepository;
_diseaseRiskLevelRepository = diseaseRiskLevelRepository;
_diseaseRiskLevelAnswerRepository = diseaseRiskLevelAnswerRepository;
_diseaseRiskLevelAsbitemRepository = diseaseRiskLevelAsbitemRepository;
_questionAnswerRiskLevelRepository = questionAnswerRiskLevelRepository;
_questionAnswerAsbitemRepository = questionAnswerAsbitemRepository;
_asbitemRepository = asbitemRepository;
_sysParmValueManager = sysParmValueManager;
}
@ -364,15 +364,15 @@ namespace Shentun.WebPeis.QuestionRegisters
join diseaseRiskLevel in await _diseaseRiskLevelRepository.GetQueryableAsync()
on diseaseRisk.DiseaseRiskId equals diseaseRiskLevel.DiseaseRiskId into emptyDiseaseRiskLevel
from haveDiseaseRiskLevel in emptyDiseaseRiskLevel.DefaultIfEmpty()
join diseaseRiskLevelAnswer in await _diseaseRiskLevelAnswerRepository.GetQueryableAsync()
on haveDiseaseRiskLevel.DiseaseRiskLevelId equals diseaseRiskLevelAnswer.DiseaseRiskLevelId into emptyDiseaseRiskLevelAnswer
from haveDiseaseRiskLevelAnswer in emptyDiseaseRiskLevelAnswer.DefaultIfEmpty()
join questionAnswerRiskLevel in await _questionAnswerRiskLevelRepository.GetQueryableAsync()
on haveDiseaseRiskLevel.DiseaseRiskLevelId equals questionAnswerRiskLevel.DiseaseRiskLevelId into emptyQuestionAnswerRiskLevel
from haveQuestionAnswerRiskLevel in emptyQuestionAnswerRiskLevel.DefaultIfEmpty()
orderby diseaseRisk.DisplayOrder
select new
{
diseaseRisk,
haveDiseaseRiskLevel,
haveDiseaseRiskLevelAnswer
haveQuestionAnswerRiskLevel
}).ToList();
var questionRegisterDiseaseRiskDtos = diseaseRisks.GroupBy(o => o.diseaseRisk)
@ -392,9 +392,9 @@ namespace Shentun.WebPeis.QuestionRegisters
DiseaseRiskLevel matchDiseaseRiskLevel = null;
foreach (var diseaseRiskLevel in diseaseRiskLevels)
{
if (questionRegisterItems.Where(o => diseaseRiskLevel.haveDiseaseRiskLevelAnswer != null &&
if (questionRegisterItems.Where(o => diseaseRiskLevel.haveQuestionAnswerRiskLevel != null &&
o.questionRegisterAnswer.QuestionAnswerId ==
diseaseRiskLevel.haveDiseaseRiskLevelAnswer.QuestionAnswerId).Any())
diseaseRiskLevel.haveQuestionAnswerRiskLevel.QuestionAnswerId).Any())
{
if (diseaseRiskLevel.haveDiseaseRiskLevel != null)
{
@ -443,10 +443,13 @@ namespace Shentun.WebPeis.QuestionRegisters
var diseaseRiskList = await GetDiseaseRiskListByPersonIdAsync(new PersonAppointInputDto() { PersonId = input.PersonId });
var personDiseaseRisk = diseaseRiskList.Where(o => o.DiseaseRiskId == input.DiseaseRiskId).First();
var diseaseRiskLevel = diseaseRiskLevels.Where(o => o.DiseaseRiskLevelId == personDiseaseRisk.DiseaseRiskLevelId).FirstOrDefault();
var asbitems = (from diseaseRiskLevelAsbitem in await _diseaseRiskLevelAsbitemRepository.GetQueryableAsync()
var asbitems = (from questionAnswerAsbitem in await _questionAnswerAsbitemRepository.GetQueryableAsync()
join asbitem in await _asbitemRepository.GetQueryableAsync()
on diseaseRiskLevelAsbitem.AsbitemId equals asbitem.AsbitemId
where diseaseRiskLevelAsbitem.DiseaseRiskLevelId == diseaseRiskLevel.DiseaseRiskLevelId
on questionAnswerAsbitem.AsbitemId equals asbitem.AsbitemId
join questionAnswerRiskLevel in await _questionAnswerRiskLevelRepository.GetQueryableAsync()
on questionAnswerAsbitem.QuestionAnswerId equals questionAnswerRiskLevel.QuestionAnswerId
where questionAnswerRiskLevel.DiseaseRiskLevelId == diseaseRiskLevel.DiseaseRiskLevelId
orderby asbitem.DisplayOrder
select asbitem).ToList();
@ -491,10 +494,10 @@ namespace Shentun.WebPeis.QuestionRegisters
on questionRegisterItem.QuestionId equals question.QuestionId
join questionSubjectType in await _questionSubjectTypeRepository.GetQueryableAsync()
on question.QuestionSubjectTypeId equals questionSubjectType.QuestionSubjectTypeId
join diseaseRiskLevelAnswer in await _diseaseRiskLevelAnswerRepository.GetQueryableAsync()
on questionAnswer.QuestionAnswerId equals diseaseRiskLevelAnswer.QuestionAnswerId
join questionAnswerRiskLevel in await _questionAnswerRiskLevelRepository.GetQueryableAsync()
on questionAnswer.QuestionAnswerId equals questionAnswerRiskLevel.QuestionAnswerId
where questionRegisterItem.QuestionRegisterId == questionRegister.QuestionRegisterId &&
diseaseRiskLevelAnswer.DiseaseRiskLevelId == diseaseRiskLevel.DiseaseRiskLevelId &&
questionAnswerRiskLevel.DiseaseRiskLevelId == diseaseRiskLevel.DiseaseRiskLevelId &&
questionAnswer.IsNone == 'N'
orderby questionSubjectType.DisplayOrder
select new

2
src/Shentun.WebPeis.Domain/Models/QuestionAnswer.cs

@ -83,6 +83,8 @@ public partial class QuestionAnswer : AuditedEntity, IHasConcurrencyStamp, IDisp
public virtual ICollection<QuestionRegisterAnswer> QuestionRegisterAnswers { get; set; } = new List<QuestionRegisterAnswer>();
public virtual ICollection<QuestionAnswerAsbitem> QuestionAnswerAsbitems { get; set; } = new List<QuestionAnswerAsbitem>();
public string? ConcurrencyStamp { get; set; }
public override object?[] GetKeys()

37
src/Shentun.WebPeis.Domain/Models/QuestionAnswerAsbitem.cs

@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Entities.Auditing;
using Volo.Abp.Domain.Entities;
namespace Shentun.WebPeis.Models
{
public class QuestionAnswerAsbitem : AuditedEntity, IHasConcurrencyStamp
{
/// <summary>
/// 问卷答案ID
/// </summary>
public Guid QuestionAnswerId { get; set; }
/// <summary>
/// 组合项目ID
/// </summary>
public Guid AsbitemId { get; set; }
/// <summary>
/// 推荐组合项目级别 1-一级推荐,2-2级推荐,3-3级推荐
/// </summary>
public short AsbitemRecommendLevelId { get; set; }
public string? ConcurrencyStamp { get; set; }
public virtual QuestionAnswer QuestionAnswer { get; set; } = null!;
public override object?[] GetKeys()
{
return [QuestionAnswerId, AsbitemId];
}
}
}

4
src/Shentun.WebPeis.Domain/Models/DiseaseRiskLevelAnswer.cs → src/Shentun.WebPeis.Domain/Models/QuestionAnswerRiskLevel.cs

@ -9,9 +9,9 @@ using Volo.Abp.Domain.Entities;
namespace Shentun.WebPeis.Models
{
/// <summary>
/// 疾病风险级别对应的答案
/// 答案对应的疾病风险级别
/// </summary>
public class DiseaseRiskLevelAnswer : Entity, IHasConcurrencyStamp
public class QuestionAnswerRiskLevel : Entity, IHasConcurrencyStamp
{
//public DiseaseRiskLevelAnswer() { }
public Guid DiseaseRiskLevelId { get; set; }

43
src/Shentun.WebPeis.EntityFrameworkCore/Configures/QuestionAnswerAsbitemConfigure.cs

@ -0,0 +1,43 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Shentun.WebPeis.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Entities;
namespace Shentun.WebPeis.Configures
{
public class QuestionAnswerAsbitemConfigure : IEntityTypeConfiguration<QuestionAnswerAsbitem>
{
public void Configure(EntityTypeBuilder<QuestionAnswerAsbitem> entity)
{
entity.HasKey(e => new { e.QuestionAnswerId, e.AsbitemId }).HasName("question_answer_asbitem_pkey");
entity.ToTable("question_answer_asbitem");
entity.Property(e => e.QuestionAnswerId).HasColumnName("question_answer_id");
entity.Property(e => e.AsbitemId).HasColumnName("asbitem_id");
entity.Property(e => e.AsbitemRecommendLevelId).HasColumnName("asbitem_recommend_level_id");
entity.Property(e => e.CreationTime)
.HasColumnType("timestamp(6) without time zone")
.HasColumnName("creation_time");
entity.Property(e => e.CreatorId).HasColumnName("creator_id");
entity.Property(e => e.LastModificationTime)
.HasColumnType("timestamp(6) without time zone")
.HasColumnName("last_modification_time");
entity.Property(e => e.LastModifierId).HasColumnName("last_modifier_id");
entity.Property(e => e.ConcurrencyStamp)
.HasMaxLength(40)
.HasColumnName("concurrency_stamp");
entity.HasOne(d => d.QuestionAnswer).WithMany(p => p.QuestionAnswerAsbitems)
.HasForeignKey(d => d.QuestionAnswerId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("question_answer_asbitem");
}
}
}

8
src/Shentun.WebPeis.EntityFrameworkCore/Configures/DiseaseRiskLevelAnswerConfigure.cs → src/Shentun.WebPeis.EntityFrameworkCore/Configures/QuestionAnswerRiskLevelConfigure.cs

@ -9,13 +9,13 @@ using System.Threading.Tasks;
namespace Shentun.WebPeis.Configures
{
internal class DiseaseRiskLevelAnswerConfigure : IEntityTypeConfiguration<DiseaseRiskLevelAnswer>
public class QuestionAnswerRiskLevelConfigure : IEntityTypeConfiguration<QuestionAnswerRiskLevel>
{
public void Configure(EntityTypeBuilder<DiseaseRiskLevelAnswer> entity)
public void Configure(EntityTypeBuilder<QuestionAnswerRiskLevel> 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("答案对应的疾病风险级别"));
}
}
}

4
src/Shentun.WebPeis.EntityFrameworkCore/EntityFrameworkCore/WebPeisDbContext.cs

@ -152,7 +152,6 @@ public partial class WebPeisDbContext : AbpDbContext<WebPeisDbContext>,
public virtual DbSet<DiseaseRiskLevelAsbitem> DiseaseRiskLevelAsbitems { get; set; }
public virtual DbSet<DiseaseRiskLevelAnswer> DiseaseRiskLevelAnswers { get; set; }
public virtual DbSet<DiseaseRiskNormalLevel> DiseaseRiskNormalLevels { get; set; }
@ -190,6 +189,9 @@ public partial class WebPeisDbContext : AbpDbContext<WebPeisDbContext>,
public virtual DbSet<QuestionAnswer> QuestionAnswers { get; set; }
public virtual DbSet<QuestionAnswerAsbitem> QuestionAnswerAsbitems { get; set; }
public virtual DbSet<QuestionAnswerRiskLevel> QuestionAnswerRiskLevels { get; set; }
public virtual DbSet<QuestionRegister> QuestionRegisters { get; set; }
public virtual DbSet<QuestionRegisterAnswer> QuestionRegisterAnswers { get; set; }

Loading…
Cancel
Save