From d527a183826c7a67d8ddf532c2d25812828c7e0b Mon Sep 17 00:00:00 2001
From: wxd <123@qq.com>
Date: Sun, 23 Jun 2024 00:13:28 +0800
Subject: [PATCH] =?UTF-8?q?=E7=BB=84=E5=90=88=E9=A1=B9=E7=9B=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Asbitems/ItemTypeIdInputDto.cs | 14 +++
.../QuestionAnswerRiskLevelDto.cs | 7 +-
.../Asbitems/AsbitemAppService.cs | 107 ++++++++++++++++++
.../QuestionAnswerAppService.cs | 8 +-
src/Shentun.WebPeis.Domain/Models/Asbitem.cs | 2 +-
5 files changed, 133 insertions(+), 5 deletions(-)
create mode 100644 src/Shentun.WebPeis.Application.Contracts/Asbitems/ItemTypeIdInputDto.cs
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; }