Browse Source

组合项目

master
wxd 1 year ago
parent
commit
d527a18382
  1. 14
      src/Shentun.WebPeis.Application.Contracts/Asbitems/ItemTypeIdInputDto.cs
  2. 5
      src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerRiskLevelDto.cs
  3. 107
      src/Shentun.WebPeis.Application/Asbitems/AsbitemAppService.cs
  4. 6
      src/Shentun.WebPeis.Application/QuestionAnswers/QuestionAnswerAppService.cs
  5. 2
      src/Shentun.WebPeis.Domain/Models/Asbitem.cs

14
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
{
/// <summary>
/// 项目类别ID 不传时查所有
/// </summary>
public Guid? ItemTypeId { get; set; }
}
}

5
src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerRiskLevelDto.cs

@ -8,6 +8,11 @@ namespace Shentun.WebPeis.QuestionAnswers
{ {
/// <summary>
/// 疾病风险ID
/// </summary>
public Guid DiseaseRiskId { get; set; }
/// <summary> /// <summary>
/// 问卷答案ID /// 问卷答案ID
/// </summary> /// </summary>

107
src/Shentun.WebPeis.Application/Asbitems/AsbitemAppService.cs

@ -2,6 +2,7 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Shentun.WebPeis.Enums; using Shentun.WebPeis.Enums;
using Shentun.WebPeis.Models; using Shentun.WebPeis.Models;
using Shentun.WebPeis.OrganizationUnits;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -139,5 +140,111 @@ namespace Shentun.WebPeis.Asbitems
return entdto; return entdto;
} }
/// <summary>
/// 获取组合项目 根据项目类别
/// </summary>
/// <returns></returns>
[HttpPost("api/app/Asbitem/GetBasicListByItemTypeId")]
public async Task<List<BasicAsbitemDto>> 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;
}
/// <summary>
/// 获取项目类别树型结构
/// </summary>
/// <returns></returns>
[HttpPost("api/app/ItemType/GetByCodeAll")]
public async Task<List<TreeChildViewDto>> 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);
}
/// <summary>
/// 递归查询项目类别
/// </summary>
/// <param name="items"></param>
/// <param name="parentId"></param>
/// <returns></returns>
private List<TreeChildViewDto> GetTree(List<TreeChildViewDto> 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();
}
/// <summary>
/// 获取包含子级的ID
/// </summary>
/// <param name="itemTypeId"></param>
/// <returns></returns>
private async Task<List<Guid?>> 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<Guid?> itemTypeIds = new List<Guid?>();
GetChildren(itemTypeEntList, itemTypeId, itemTypeIds);
return itemTypeIds;
}
private void GetChildren(List<ItemType> itemTypeEntList, Guid itemTypeId, List<Guid?> 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);
}
}
}
} }
} }

6
src/Shentun.WebPeis.Application/QuestionAnswers/QuestionAnswerAppService.cs

@ -238,14 +238,16 @@ namespace Shentun.WebPeis.QuestionAnswers
{ {
questionAnswerRiskLevel.QuestionAnswerId, questionAnswerRiskLevel.QuestionAnswerId,
diseaseRiskLevel.DiseaseRiskLevelId, diseaseRiskLevel.DiseaseRiskLevelId,
diseaseRiskLevel.DiseaseRiskLevelName
diseaseRiskLevel.DiseaseRiskLevelName,
diseaseRiskLevel.DiseaseRiskId
}; };
var entListDto = query.Select(s => new QuestionAnswerRiskLevelDto var entListDto = query.Select(s => new QuestionAnswerRiskLevelDto
{ {
DiseaseRiskLevelId = s.DiseaseRiskLevelId, DiseaseRiskLevelId = s.DiseaseRiskLevelId,
QuestionAnswerId = s.QuestionAnswerId, QuestionAnswerId = s.QuestionAnswerId,
DiseaseRiskLevelName = s.DiseaseRiskLevelName
DiseaseRiskLevelName = s.DiseaseRiskLevelName,
DiseaseRiskId = s.DiseaseRiskId
}).ToList(); }).ToList();
return entListDto; return entListDto;

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

@ -109,7 +109,7 @@ public partial class Asbitem:AuditedEntity, IHasConcurrencyStamp
/// </summary> /// </summary>
public char? IsWebAppoint { get; set; } public char? IsWebAppoint { get; set; }
public string? SimpleCode { get; set; }
public string SimpleCode { get; set; }
public int DisplayOrder { get; set; } public int DisplayOrder { get; set; }

Loading…
Cancel
Save