diff --git a/src/Shentun.WebPeis.Application.Contracts/Asbitems/ItemTypeIdInputDto.cs b/src/Shentun.WebPeis.Application.Contracts/Asbitems/ItemTypeIdInputDto.cs new file mode 100644 index 0000000..c2b3daf --- /dev/null +++ b/src/Shentun.WebPeis.Application.Contracts/Asbitems/ItemTypeIdInputDto.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Shentun.WebPeis.Asbitems +{ + public class ItemTypeIdInputDto + { + /// + /// 项目类别ID 不传时查所有 + /// + public Guid? ItemTypeId { get; set; } + } +} diff --git a/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerRiskLevelDto.cs b/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerRiskLevelDto.cs index 81c8a17..9e2b93f 100644 --- a/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerRiskLevelDto.cs +++ b/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerRiskLevelDto.cs @@ -6,7 +6,12 @@ namespace Shentun.WebPeis.QuestionAnswers { public class QuestionAnswerRiskLevelDto { - + + + /// + /// 疾病风险ID + /// + public Guid DiseaseRiskId { get; set; } /// /// 问卷答案ID diff --git a/src/Shentun.WebPeis.Application/Asbitems/AsbitemAppService.cs b/src/Shentun.WebPeis.Application/Asbitems/AsbitemAppService.cs index 5599e01..7a57904 100644 --- a/src/Shentun.WebPeis.Application/Asbitems/AsbitemAppService.cs +++ b/src/Shentun.WebPeis.Application/Asbitems/AsbitemAppService.cs @@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Mvc; using Shentun.WebPeis.Enums; using Shentun.WebPeis.Models; +using Shentun.WebPeis.OrganizationUnits; using System; using System.Collections.Generic; using System.Linq; @@ -139,5 +140,111 @@ namespace Shentun.WebPeis.Asbitems return entdto; } + + /// + /// 获取组合项目 根据项目类别 + /// + /// + [HttpPost("api/app/Asbitem/GetBasicListByItemTypeId")] + public async Task> GetBasicListByItemTypeIdAsync(ItemTypeIdInputDto input) + { + var query = await _repository.GetQueryableAsync(); + if (input.ItemTypeId != null) + { + var itemTypeIds = await GetItemTypeChildrenId(input.ItemTypeId.Value); + query = query.Where(m => itemTypeIds.Contains(m.ItemTypeId)); + } + + var entdto = query.Select(s => new BasicAsbitemDto + { + AsbitemId = s.AsbitemId, + AsbitemName = s.AsbitemName, + DisplayOrder = s.DisplayOrder, + ShortName = s.ShortName, + SimpleCode = s.SimpleCode + }).OrderBy(o => o.DisplayOrder).ToList(); + + return entdto; + } + + + + /// + /// 获取项目类别树型结构 + /// + /// + [HttpPost("api/app/ItemType/GetByCodeAll")] + public async Task> GetByCodeAllAsync() + { + var dataList = await _itemTypeRepository.GetListAsync(); + var items = from p in dataList.OrderBy(o => o.DisplayOrder) + select new TreeChildViewDto() + { + Id = p.ItemTypeId, + ParentId = p.ParentId, + Code = p.PathCode, + DisplayName = p.ItemTypeName, + SimpleCode = p.SimpleCode, + DisplayOrder = p.DisplayOrder + }; + return GetTree(items.ToList(), null); + } + + + /// + /// 递归查询项目类别 + /// + /// + /// + /// + private List GetTree(List items, Guid? parentId) + { + return (from p in items.AsParallel() + where p.ParentId == parentId + orderby p.DisplayOrder ascending + let subs = GetTree(items, p.Id) + select new TreeChildViewDto() + { + Id = p.Id, + ParentId = p.ParentId, + Code = p.Code, + DisplayName = p.DisplayName, + SimpleCode = p.SimpleCode, + TreeChildren = subs.ToList() + } + ).ToList(); + } + + + /// + /// 获取包含子级的ID + /// + /// + /// + private async Task> GetItemTypeChildrenId(Guid itemTypeId) + { + //var customerOrgEntList = await _repository.GetListAsync(); + + var itemType = await _itemTypeRepository.GetAsync(g => g.ItemTypeId == itemTypeId); + var itemTypeEntList = await _itemTypeRepository.GetListAsync(o => o.PathCode.StartsWith(itemType.PathCode)); + List itemTypeIds = new List(); + + GetChildren(itemTypeEntList, itemTypeId, itemTypeIds); + + return itemTypeIds; + } + + private void GetChildren(List itemTypeEntList, Guid itemTypeId, List itemTypeIds) + { + itemTypeIds.Add(itemTypeId); + var entlist = itemTypeEntList.Where(m => m.ParentId == itemTypeId).ToList(); + if (entlist.Count > 0) + { + foreach (var ent in entlist) + { + GetChildren(itemTypeEntList, ent.ItemTypeId, itemTypeIds); + } + } + } } } diff --git a/src/Shentun.WebPeis.Application/QuestionAnswers/QuestionAnswerAppService.cs b/src/Shentun.WebPeis.Application/QuestionAnswers/QuestionAnswerAppService.cs index 0361aca..b3de4ce 100644 --- a/src/Shentun.WebPeis.Application/QuestionAnswers/QuestionAnswerAppService.cs +++ b/src/Shentun.WebPeis.Application/QuestionAnswers/QuestionAnswerAppService.cs @@ -207,7 +207,7 @@ namespace Shentun.WebPeis.QuestionAnswers { foreach (var diseaseRiskLevelId in input.DiseaseRiskLevelIds) { - var isQuestionAnswer = await _questionAnswerRiskLevelRepository.FirstOrDefaultAsync(f => f.DiseaseRiskLevelId == diseaseRiskLevelId && + var isQuestionAnswer = await _questionAnswerRiskLevelRepository.FirstOrDefaultAsync(f => f.DiseaseRiskLevelId == diseaseRiskLevelId && f.QuestionAnswerId == input.QuestionAnswerId); if (isQuestionAnswer == null) { @@ -238,14 +238,16 @@ namespace Shentun.WebPeis.QuestionAnswers { questionAnswerRiskLevel.QuestionAnswerId, diseaseRiskLevel.DiseaseRiskLevelId, - diseaseRiskLevel.DiseaseRiskLevelName + diseaseRiskLevel.DiseaseRiskLevelName, + diseaseRiskLevel.DiseaseRiskId }; var entListDto = query.Select(s => new QuestionAnswerRiskLevelDto { DiseaseRiskLevelId = s.DiseaseRiskLevelId, QuestionAnswerId = s.QuestionAnswerId, - DiseaseRiskLevelName = s.DiseaseRiskLevelName + DiseaseRiskLevelName = s.DiseaseRiskLevelName, + DiseaseRiskId = s.DiseaseRiskId }).ToList(); return entListDto; diff --git a/src/Shentun.WebPeis.Domain/Models/Asbitem.cs b/src/Shentun.WebPeis.Domain/Models/Asbitem.cs index 190a2bb..301b701 100644 --- a/src/Shentun.WebPeis.Domain/Models/Asbitem.cs +++ b/src/Shentun.WebPeis.Domain/Models/Asbitem.cs @@ -109,7 +109,7 @@ public partial class Asbitem:AuditedEntity, IHasConcurrencyStamp /// public char? IsWebAppoint { get; set; } - public string? SimpleCode { get; set; } + public string SimpleCode { get; set; } public int DisplayOrder { get; set; }