diff --git a/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/CreateQuestionAnswerDto.cs b/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/CreateQuestionAnswerDto.cs
new file mode 100644
index 0000000..a5ce447
--- /dev/null
+++ b/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/CreateQuestionAnswerDto.cs
@@ -0,0 +1,71 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shentun.WebPeis.QuestionAnswers
+{
+ public class CreateQuestionAnswerDto
+ {
+
+ ///
+ /// 答案
+ ///
+
+ public string QuestionAnswerName { get; set; } = null!;
+ ///
+ /// 问卷ID
+ ///
+
+ public Guid QuestionId { get; set; }
+
+
+
+ ///
+ /// 子答案类别
+ ///
+
+ public char? ChildAnswerType { get; set; }
+ ///
+ /// 答案结果类别
+ ///
+
+ public char? AnswerResultType { get; set; }
+ ///
+ /// 别名
+ ///
+
+ public string? Aliases { get; set; }
+
+ ///
+ /// 概述
+ ///
+
+ public string? Overview { get; set; }
+ ///
+ /// 可能原因
+ ///
+ public string? Reason { get; set; }
+ ///
+ /// 健康指导
+ ///
+ public string? HealthGuidance { get; set; }
+
+ ///
+ /// 父答案ID
+ ///
+
+ public Guid? ParentId { get; set; }
+
+ ///
+ /// 子答案标题
+ ///
+ public string? ChildAnswerTitle { get; set; }
+ ///
+ /// 无,和其它答案排斥
+ ///
+ public char IsNone { get; set; }
+
+
+
+ }
+}
diff --git a/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerDto.cs b/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerDto.cs
new file mode 100644
index 0000000..5809d69
--- /dev/null
+++ b/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerDto.cs
@@ -0,0 +1,80 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shentun.WebPeis.QuestionAnswers
+{
+ public class QuestionAnswerDto: AuditedEntityDtoName
+ {
+ ///
+ /// 主键
+ ///
+ public Guid QuestionAnswerId { get; set; }
+ ///
+ /// 答案
+ ///
+
+ public string QuestionAnswerName { get; set; } = null!;
+ ///
+ /// 问卷ID
+ ///
+
+ public Guid QuestionId { get; set; }
+
+
+
+ ///
+ /// 子答案类别
+ ///
+
+ public char? ChildAnswerType { get; set; }
+ ///
+ /// 答案结果类别
+ ///
+
+ public char? AnswerResultType { get; set; }
+ ///
+ /// 别名
+ ///
+
+ public string? Aliases { get; set; }
+
+ ///
+ /// 概述
+ ///
+
+ public string? Overview { get; set; }
+ ///
+ /// 可能原因
+ ///
+ public string? Reason { get; set; }
+ ///
+ /// 健康指导
+ ///
+ public string? HealthGuidance { get; set; }
+
+ ///
+ /// 父答案ID
+ ///
+
+ public Guid? ParentId { get; set; }
+ ///
+ /// 编码路径
+ ///
+
+ public string? PathCode { get; set; }
+ ///
+ /// 子答案标题
+ ///
+ public string? ChildAnswerTitle { get; set; }
+ ///
+ /// 无,和其它答案排斥
+ ///
+ public char IsNone { get; set; }
+
+
+ public string SimpleCode { get; set; } = null!;
+
+ public int DisplayOrder { get; set; }
+ }
+}
diff --git a/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerIdInputDto.cs b/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerIdInputDto.cs
new file mode 100644
index 0000000..212151f
--- /dev/null
+++ b/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerIdInputDto.cs
@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shentun.WebPeis.QuestionAnswers
+{
+ public class QuestionAnswerIdInputDto
+ {
+ public Guid QuestionAnswerId { get; set; }
+ }
+}
diff --git a/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerTreeListDto.cs b/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerTreeListDto.cs
new file mode 100644
index 0000000..30c167b
--- /dev/null
+++ b/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerTreeListDto.cs
@@ -0,0 +1,82 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shentun.WebPeis.QuestionAnswers
+{
+ public class QuestionAnswerTreeListDto: AuditedEntityDtoName
+ {
+ ///
+ /// 主键
+ ///
+ public Guid QuestionAnswerId { get; set; }
+ ///
+ /// 答案
+ ///
+
+ public string QuestionAnswerName { get; set; } = null!;
+ ///
+ /// 问卷ID
+ ///
+
+ public Guid QuestionId { get; set; }
+
+
+
+ ///
+ /// 子答案类别
+ ///
+
+ public char? ChildAnswerType { get; set; }
+ ///
+ /// 答案结果类别
+ ///
+
+ public char? AnswerResultType { get; set; }
+ ///
+ /// 别名
+ ///
+
+ public string? Aliases { get; set; }
+
+ ///
+ /// 概述
+ ///
+
+ public string? Overview { get; set; }
+ ///
+ /// 可能原因
+ ///
+ public string? Reason { get; set; }
+ ///
+ /// 健康指导
+ ///
+ public string? HealthGuidance { get; set; }
+
+ ///
+ /// 父答案ID
+ ///
+
+ public Guid? ParentId { get; set; }
+ ///
+ /// 编码路径
+ ///
+
+ public string? PathCode { get; set; }
+ ///
+ /// 子答案标题
+ ///
+ public string? ChildAnswerTitle { get; set; }
+ ///
+ /// 无,和其它答案排斥
+ ///
+ public char IsNone { get; set; }
+
+
+ public string SimpleCode { get; set; } = null!;
+
+ public int DisplayOrder { get; set; }
+
+ public List TreeChildren { get; set; }
+ }
+}
diff --git a/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/UpdateQuestionAnswerDto.cs b/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/UpdateQuestionAnswerDto.cs
new file mode 100644
index 0000000..0e2237b
--- /dev/null
+++ b/src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/UpdateQuestionAnswerDto.cs
@@ -0,0 +1,68 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shentun.WebPeis.QuestionAnswers
+{
+ public class UpdateQuestionAnswerDto
+ {
+ ///
+ /// 主键
+ ///
+ public Guid QuestionAnswerId { get; set; }
+
+ ///
+ /// 答案
+ ///
+
+ public string QuestionAnswerName { get; set; } = null!;
+ ///
+ /// 问卷ID
+ ///
+
+ public Guid QuestionId { get; set; }
+
+
+
+ ///
+ /// 子答案类别
+ ///
+
+ public char? ChildAnswerType { get; set; }
+ ///
+ /// 答案结果类别
+ ///
+
+ public char? AnswerResultType { get; set; }
+ ///
+ /// 别名
+ ///
+
+ public string? Aliases { get; set; }
+
+ ///
+ /// 概述
+ ///
+
+ public string? Overview { get; set; }
+ ///
+ /// 可能原因
+ ///
+ public string? Reason { get; set; }
+ ///
+ /// 健康指导
+ ///
+ public string? HealthGuidance { get; set; }
+
+
+
+ ///
+ /// 子答案标题
+ ///
+ public string? ChildAnswerTitle { get; set; }
+ ///
+ /// 无,和其它答案排斥
+ ///
+ public char IsNone { get; set; }
+ }
+}
diff --git a/src/Shentun.WebPeis.Application.Contracts/Questions/CreateQuestionDto.cs b/src/Shentun.WebPeis.Application.Contracts/Questions/CreateQuestionDto.cs
index ec02167..e7a3994 100644
--- a/src/Shentun.WebPeis.Application.Contracts/Questions/CreateQuestionDto.cs
+++ b/src/Shentun.WebPeis.Application.Contracts/Questions/CreateQuestionDto.cs
@@ -6,10 +6,7 @@ namespace Shentun.WebPeis.Questions
{
public class CreateQuestionDto
{
- ///
- /// 主键
- ///
- public Guid QuestionId { get; set; }
+
///
/// 题目
///
diff --git a/src/Shentun.WebPeis.Application.Contracts/Questions/UpdateQuestionDto.cs b/src/Shentun.WebPeis.Application.Contracts/Questions/UpdateQuestionDto.cs
index fada274..4d2779b 100644
--- a/src/Shentun.WebPeis.Application.Contracts/Questions/UpdateQuestionDto.cs
+++ b/src/Shentun.WebPeis.Application.Contracts/Questions/UpdateQuestionDto.cs
@@ -37,11 +37,7 @@ namespace Shentun.WebPeis.Questions
///
public char? IsActive { get; set; }
- ///
- /// 父问卷ID
- ///
- public Guid? ParentId { get; set; }
}
}
diff --git a/src/Shentun.WebPeis.Application/QuestionAnswers/QuestionAnswerAppService.cs b/src/Shentun.WebPeis.Application/QuestionAnswers/QuestionAnswerAppService.cs
new file mode 100644
index 0000000..ed6c53e
--- /dev/null
+++ b/src/Shentun.WebPeis.Application/QuestionAnswers/QuestionAnswerAppService.cs
@@ -0,0 +1,223 @@
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Shentun.WebPeis.Models;
+using Shentun.WebPeis.Questions;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Volo.Abp.Application.Services;
+using Volo.Abp.Domain.Repositories;
+
+namespace Shentun.WebPeis.QuestionAnswers
+{
+
+ ///
+ /// 问卷答案
+ ///
+ [ApiExplorerSettings(GroupName = "Work")]
+ [Authorize]
+ public class QuestionAnswerAppService : ApplicationService
+ {
+
+ private readonly IRepository _questionAnswerRepository;
+ private readonly QuestionAnswerManager _questionAnswerManager;
+ private readonly CacheService _cacheService;
+
+ public QuestionAnswerAppService(
+ CacheService cacheService,
+ IRepository questionAnswerRepository,
+ QuestionAnswerManager questionAnswerManager)
+ {
+ _cacheService = cacheService;
+ _questionAnswerRepository = questionAnswerRepository;
+ _questionAnswerManager = questionAnswerManager;
+ }
+
+ /////
+ ///// 获取列表
+ /////
+ /////
+ //[HttpPost("api/app/QuestionAnswer/GetList")]
+ //public async Task> GetListAsync()
+ //{
+ // var entlist = await _questionRepository.GetQueryableAsync();
+
+ // var entdto = entlist.Select(s => new QuestionDto
+ // {
+ // CreationTime = s.CreationTime,
+ // CreatorId = s.CreatorId,
+ // DisplayOrder = s.DisplayOrder,
+ // LastModificationTime = s.LastModificationTime,
+ // LastModifierId = s.LastModifierId,
+ // SimpleCode = s.SimpleCode,
+ // QuestionTypeId = s.QuestionTypeId,
+ // QuestionSubjectTypeId = s.QuestionSubjectTypeId,
+ // QuestionName = s.QuestionName,
+ // QuestionId = s.QuestionId,
+ // PathCode = s.PathCode,
+ // ParentId = s.ParentId,
+ // IsActive = s.IsActive,
+ // AnswerType = s.AnswerType,
+ // CreatorName = _cacheService.GetSurnameAsync(s.CreatorId).Result,
+ // LastModifierName = _cacheService.GetSurnameAsync(s.LastModifierId).Result
+ // }).OrderBy(o => o.DisplayOrder).ToList();
+
+ // return entdto;
+
+
+ //}
+
+
+ ///
+ /// 获取问卷答案树型列表 根据问卷ID
+ ///
+ ///
+ ///
+ [HttpPost("api/app/QuestionAnswer/GetQuestionTreeList")]
+ public async Task> GetQuestionAnswerTreeListAsync(QuestionIdInputDto input)
+ {
+ var dataList = await _questionAnswerRepository.GetListAsync(m => m.QuestionId == input.QuestionId);
+ var items = from p in dataList.OrderBy(o => o.DisplayOrder)
+ select new QuestionAnswerTreeListDto()
+ {
+ ParentId = p.ParentId,
+ QuestionId = p.QuestionId,
+ CreationTime = p.CreationTime,
+ CreatorId = p.CreatorId,
+ CreatorName = _cacheService.GetSurnameAsync(p.CreatorId).Result,
+ LastModificationTime = p.LastModificationTime,
+ LastModifierId = p.LastModifierId,
+ LastModifierName = _cacheService.GetSurnameAsync(p.LastModifierId).Result,
+ PathCode = p.PathCode,
+ SimpleCode = p.SimpleCode,
+ DisplayOrder = p.DisplayOrder,
+ ChildAnswerType = p.ChildAnswerType,
+ QuestionAnswerId = p.QuestionAnswerId,
+ Reason = p.Reason,
+ QuestionAnswerName = p.QuestionAnswerName,
+ Aliases = p.Aliases,
+ AnswerResultType = p.AnswerResultType,
+ ChildAnswerTitle = p.ChildAnswerTitle,
+ HealthGuidance = p.HealthGuidance,
+ IsNone = p.IsNone,
+ Overview = p.Overview
+ };
+ return GetTree(items.ToList(), 0, "");
+ }
+
+
+
+ ///
+ /// 创建
+ ///
+ ///
+ [HttpPost("api/app/QuestionAnswer/Create")]
+ public async Task CreateAsync(CreateQuestionAnswerDto input)
+ {
+ var createEntity = ObjectMapper.Map(input);
+ createEntity.QuestionAnswerId = GuidGenerator.Create();
+ var entity = await _questionAnswerManager.CreateAsync(createEntity);
+ entity = await _questionAnswerRepository.InsertAsync(entity);
+ var dto = ObjectMapper.Map(entity);
+ dto.CreatorName = await _cacheService.GetSurnameAsync(dto.CreatorId);
+ dto.LastModifierName = await _cacheService.GetSurnameAsync(dto.LastModifierId);
+ return dto;
+ }
+
+ ///
+ /// 更新
+ ///
+ ///
+ ///
+ [HttpPost("api/app/QuestionAnswer/Update")]
+ public async Task UpdateAsync(UpdateQuestionAnswerDto input)
+ {
+ var entity = await _questionAnswerRepository.GetAsync(f => f.QuestionAnswerId == input.QuestionAnswerId);
+ var sourceEntity = ObjectMapper.Map(input);
+ _questionAnswerManager.UpdateAsync(sourceEntity, entity);
+ entity = await _questionAnswerRepository.UpdateAsync(entity);
+ var dto = ObjectMapper.Map(entity);
+ dto.CreatorName = await _cacheService.GetSurnameAsync(dto.CreatorId);
+ dto.LastModifierName = await _cacheService.GetSurnameAsync(dto.LastModifierId);
+ return dto;
+ }
+
+ ///
+ /// 删除
+ ///
+ ///
+ ///
+ [HttpPost("api/app/QuestionAnswer/Delete")]
+ public async Task DeleteAsync(QuestionAnswerIdInputDto input)
+ {
+ await _questionAnswerManager.CheckAndDeleteAsync(input.QuestionAnswerId);
+ }
+
+ ///
+ /// 修改排序 置顶,置底
+ ///
+ ///
+ ///
+ [HttpPost("api/app/QuestionAnswer/UpdateSortTopOrBottom")]
+ public async Task UpdateSortTopOrBottomAsync(UpdateQuestionAnswerSortTopOrBottomInputDto input)
+ {
+ await _questionAnswerManager.UpdateSortTopOrBottomAsync(input.QuestionAnswerId, input.SortType);
+ }
+
+ ///
+ /// 修改排序 拖拽
+ ///
+ ///
+ ///
+ [HttpPost("api/app/QuestionAnswer/UpdateSortDragAsync")]
+ public async Task UpdateSortDragAsync(UpdateQuestionAnswerSortDragDto input)
+ {
+ await _questionAnswerManager.UpdateSortDragAsync(input);
+ }
+
+
+ ///
+ /// 使用Code进行递归
+ ///
+ ///
+ ///
+ ///
+ ///
+ private List GetTree(List items, int deep, string prefix)
+ {
+ return (from p in items
+ where p.PathCode.StartsWith(prefix) && p.PathCode.Count(a => a == '.') == deep
+ orderby p.DisplayOrder ascending
+ let subs = GetTree(items, deep + 1, p.PathCode)
+ select new QuestionAnswerTreeListDto()
+ {
+ ParentId = p.ParentId,
+ QuestionId = p.QuestionId,
+ CreationTime = p.CreationTime,
+ CreatorId = p.CreatorId,
+ CreatorName = _cacheService.GetSurnameAsync(p.CreatorId).Result,
+ LastModificationTime = p.LastModificationTime,
+ LastModifierId = p.LastModifierId,
+ LastModifierName = _cacheService.GetSurnameAsync(p.LastModifierId).Result,
+ PathCode = p.PathCode,
+ SimpleCode = p.SimpleCode,
+ DisplayOrder = p.DisplayOrder,
+ ChildAnswerType = p.ChildAnswerType,
+ QuestionAnswerId = p.QuestionAnswerId,
+ Reason = p.Reason,
+ QuestionAnswerName = p.QuestionAnswerName,
+ Aliases = p.Aliases,
+ AnswerResultType = p.AnswerResultType,
+ ChildAnswerTitle = p.ChildAnswerTitle,
+ HealthGuidance = p.HealthGuidance,
+ IsNone = p.IsNone,
+ Overview = p.Overview,
+ TreeChildren = subs.ToList()
+ }
+ ).ToList();
+ }
+
+ }
+}
diff --git a/src/Shentun.WebPeis.Application/Questions/QuestionAppService.cs b/src/Shentun.WebPeis.Application/Questions/QuestionAppService.cs
index bcbe74d..8965ac5 100644
--- a/src/Shentun.WebPeis.Application/Questions/QuestionAppService.cs
+++ b/src/Shentun.WebPeis.Application/Questions/QuestionAppService.cs
@@ -110,6 +110,7 @@ namespace Shentun.WebPeis.Questions
public async Task CreateAsync(CreateQuestionDto input)
{
var createEntity = ObjectMapper.Map(input);
+ createEntity.QuestionId= GuidGenerator.Create();
var entity = await _questionManager.CreateAsync(createEntity);
entity = await _questionRepository.InsertAsync(entity);
var dto = ObjectMapper.Map(entity);
diff --git a/src/Shentun.WebPeis.Application/WebPeisApplicationAutoMapperProfile.cs b/src/Shentun.WebPeis.Application/WebPeisApplicationAutoMapperProfile.cs
index 854c313..d6999c0 100644
--- a/src/Shentun.WebPeis.Application/WebPeisApplicationAutoMapperProfile.cs
+++ b/src/Shentun.WebPeis.Application/WebPeisApplicationAutoMapperProfile.cs
@@ -12,6 +12,9 @@ using Shentun.WebPeis.Models;
using Shentun.WebPeis.Nations;
using Shentun.WebPeis.OrganizationUnits;
using Shentun.WebPeis.Persons;
+using Shentun.WebPeis.QuestionAnswers;
+using Shentun.WebPeis.Questions;
+using Shentun.WebPeis.QuestionTypes;
using Shentun.WebPeis.Sexs;
using Shentun.WebPeis.ThirdInterfaces;
using Volo.Abp.Identity;
@@ -82,5 +85,19 @@ public class WebPeisApplicationAutoMapperProfile : Profile
CreateMap();
CreateMap();
CreateMap();
+
+
+ CreateMap();
+ CreateMap();
+ CreateMap();
+
+ CreateMap();
+ CreateMap();
+ CreateMap();
+
+
+ CreateMap();
+ CreateMap();
+ CreateMap();
}
}
diff --git a/src/Shentun.WebPeis.Domain/Models/AsbitemRecommendLevel.cs b/src/Shentun.WebPeis.Domain/Models/AsbitemRecommendLevel.cs
index 686eebf..8db57cc 100644
--- a/src/Shentun.WebPeis.Domain/Models/AsbitemRecommendLevel.cs
+++ b/src/Shentun.WebPeis.Domain/Models/AsbitemRecommendLevel.cs
@@ -8,7 +8,7 @@ using Volo.Abp.Domain.Entities.Auditing;
namespace Shentun.WebPeis.Models
{
- public class AsbitemRecommendLevel : AuditedEntity, IHasConcurrencyStamp
+ public class AsbitemRecommendLevel : AuditedEntity, IHasConcurrencyStamp, IDisplayOrder
{
public short AsbitemRecommendLevelId { get; set; }
diff --git a/src/Shentun.WebPeis.Domain/Models/DiseaseRisk.cs b/src/Shentun.WebPeis.Domain/Models/DiseaseRisk.cs
index 698f5ac..7bce782 100644
--- a/src/Shentun.WebPeis.Domain/Models/DiseaseRisk.cs
+++ b/src/Shentun.WebPeis.Domain/Models/DiseaseRisk.cs
@@ -9,7 +9,7 @@ namespace Shentun.WebPeis.Models;
///
/// 疾病风险
///
-public partial class DiseaseRisk : AuditedEntity, IHasConcurrencyStamp
+public partial class DiseaseRisk : AuditedEntity, IHasConcurrencyStamp,IDisplayOrder
{
///
/// 主键
diff --git a/src/Shentun.WebPeis.Domain/Models/DiseaseRiskLevel.cs b/src/Shentun.WebPeis.Domain/Models/DiseaseRiskLevel.cs
index 3cd0b99..6e5a8cb 100644
--- a/src/Shentun.WebPeis.Domain/Models/DiseaseRiskLevel.cs
+++ b/src/Shentun.WebPeis.Domain/Models/DiseaseRiskLevel.cs
@@ -8,7 +8,7 @@ namespace Shentun.WebPeis.Models;
///
/// 疾病风险级别
///
-public partial class DiseaseRiskLevel : AuditedEntity, IHasConcurrencyStamp
+public partial class DiseaseRiskLevel : AuditedEntity, IHasConcurrencyStamp, IDisplayOrder
{
///
/// 风险级别ID
@@ -29,7 +29,7 @@ public partial class DiseaseRiskLevel : AuditedEntity, IHasConcurrencyStamp
public int DisplayOrder { get; set; }
-
+
///
/// 风险标准级别ID,暂时废弃
///
@@ -45,7 +45,7 @@ public partial class DiseaseRiskLevel : AuditedEntity, IHasConcurrencyStamp
public string? Suggestion { get; set; }
- public string DiagnosisFunction { get; set; }
+ public string DiagnosisFunction { get; set; }
public virtual DiseaseRisk DiseaseRisk { get; set; } = null!;
diff --git a/src/Shentun.WebPeis.Domain/Models/QuestionAnswer.cs b/src/Shentun.WebPeis.Domain/Models/QuestionAnswer.cs
index 840f437..ecc88ec 100644
--- a/src/Shentun.WebPeis.Domain/Models/QuestionAnswer.cs
+++ b/src/Shentun.WebPeis.Domain/Models/QuestionAnswer.cs
@@ -8,7 +8,7 @@ namespace Shentun.WebPeis.Models;
///
/// 问卷答案
///
-public partial class QuestionAnswer : AuditedEntity, IHasConcurrencyStamp
+public partial class QuestionAnswer : AuditedEntity, IHasConcurrencyStamp, IDisplayOrder
{
///
/// 主键
@@ -25,9 +25,7 @@ public partial class QuestionAnswer : AuditedEntity, IHasConcurrencyStamp
public Guid QuestionId { get; set; }
- public string SimpleCode { get; set; } = null!;
- public int DisplayOrder { get; set; }
///
/// 子答案类别
@@ -49,7 +47,7 @@ public partial class QuestionAnswer : AuditedEntity, IHasConcurrencyStamp
/// 概述
///
- public string? Overview { get; set; }
+ public string? Overview { get; set; }
///
/// 可能原因
///
@@ -77,6 +75,13 @@ public partial class QuestionAnswer : AuditedEntity, IHasConcurrencyStamp
/// 无,和其它答案排斥
///
public char IsNone { get; set; }
+
+
+ public string SimpleCode { get; set; } = null!;
+
+ public int DisplayOrder { get; set; }
+
+
public virtual ICollection QuestionRegisterAnswers { get; set; } = new List();
public string? ConcurrencyStamp { get; set; }
diff --git a/src/Shentun.WebPeis.Domain/QuestionAnswers/QuestionAnswerManager.cs b/src/Shentun.WebPeis.Domain/QuestionAnswers/QuestionAnswerManager.cs
new file mode 100644
index 0000000..d1bfd2a
--- /dev/null
+++ b/src/Shentun.WebPeis.Domain/QuestionAnswers/QuestionAnswerManager.cs
@@ -0,0 +1,208 @@
+using NPOI.POIFS.Properties;
+using Shentun.Utilities;
+using Shentun.WebPeis.Models;
+using Shentun.WebPeis.Questions;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Runtime.CompilerServices;
+using System.Text;
+using System.Threading.Tasks;
+using Volo.Abp.Domain.Entities;
+using Volo.Abp.Domain.Repositories;
+using Volo.Abp.Domain.Services;
+
+namespace Shentun.WebPeis.QuestionAnswers
+{
+ public class QuestionAnswerManager : DomainService
+ {
+ private readonly IRepository _questionAnswerRepository;
+
+ public QuestionAnswerManager(
+ IRepository questionAnswerRepository
+ )
+ {
+ _questionAnswerRepository = questionAnswerRepository;
+ }
+
+ ///
+ /// 创建
+ ///
+ ///
+ public async Task CreateAsync(QuestionAnswer entity)
+ {
+ DataHelper.CheckEntityIsNull(entity);
+ //DataHelper.CheckStringIsNull(entity.QuestionTypeName, "名称");
+
+ return new QuestionAnswer
+ {
+ HealthGuidance = entity.HealthGuidance,
+ Aliases = entity.Aliases,
+ IsNone = entity.IsNone,
+ Overview = entity.Overview,
+ ChildAnswerTitle = entity.ChildAnswerTitle,
+ AnswerResultType = entity.AnswerResultType,
+ ChildAnswerType = entity.ChildAnswerType,
+ QuestionAnswerId = entity.QuestionAnswerId,
+ QuestionAnswerName = entity.QuestionAnswerName,
+ QuestionRegisterAnswers = entity.QuestionRegisterAnswers,
+ Reason = entity.Reason,
+ ParentId = entity.ParentId,
+ PathCode = await CreatePathCode(entity.ParentId),
+ QuestionId = entity.QuestionId,
+ SimpleCode = LanguageConverter.GetPYSimpleCode(entity.QuestionAnswerName),
+ DisplayOrder = await EntityHelper.CreateMaxDisplayOrder(_questionAnswerRepository)
+ };
+ }
+
+
+ ///
+ /// 更新
+ ///
+ ///
+ ///
+ ///
+ public void UpdateAsync(
+ QuestionAnswer sourceEntity,
+ QuestionAnswer targetEntity
+ )
+ {
+ DataHelper.CheckEntityIsNull(sourceEntity);
+ DataHelper.CheckEntityIsNull(targetEntity);
+ //DataHelper.CheckStringIsNull(sourceEntity.QuestionTypeName, "名称");
+
+
+
+ targetEntity.HealthGuidance = sourceEntity.HealthGuidance;
+ targetEntity.Aliases = sourceEntity.Aliases;
+ targetEntity.IsNone = sourceEntity.IsNone;
+ targetEntity.Overview = sourceEntity.Overview;
+ targetEntity.ChildAnswerTitle = sourceEntity.ChildAnswerTitle;
+ targetEntity.AnswerResultType = sourceEntity.AnswerResultType;
+ targetEntity.ChildAnswerType = sourceEntity.ChildAnswerType;
+ targetEntity.QuestionAnswerName = sourceEntity.QuestionAnswerName;
+ targetEntity.QuestionRegisterAnswers = sourceEntity.QuestionRegisterAnswers;
+ targetEntity.Reason = sourceEntity.Reason;
+ targetEntity.QuestionId = sourceEntity.QuestionId;
+ targetEntity.SimpleCode = LanguageConverter.GetPYSimpleCode(sourceEntity.QuestionAnswerName);
+
+ }
+
+
+
+ ///
+ /// 删除
+ ///
+ ///
+ ///
+ ///
+ public async Task CheckAndDeleteAsync(Guid QuestionAnswerId)
+ {
+
+ //var questionEnt = await _questionRepository.FirstOrDefaultAsync(m => m.QuestionTypeId == QuestionTypeId);
+ //if (questionEnt != null)
+ //{
+ // throw new UserFriendlyException($"问卷类别已被使用,不能删除");
+ //}
+
+ await _questionAnswerRepository.DeleteAsync(d => d.QuestionAnswerId == QuestionAnswerId);
+
+ }
+
+
+ ///
+ /// 修改排序 置顶,置底
+ ///
+ /// 需要修改的ID
+ /// 修改方式:1 置顶 2 置底
+ ///
+ public async Task UpdateSortTopOrBottomAsync(Guid QuestionAnswerId, int SortType)
+ {
+ var entity = await _questionAnswerRepository.GetAsync(f => f.QuestionAnswerId == QuestionAnswerId);
+ await EntityHelper.UpdateSortTopOrBottomAsync(_questionAnswerRepository, entity, SortType);
+ }
+
+
+
+ ///
+ /// 修改排序 拖拽
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task UpdateSortDragAsync(UpdateQuestionAnswerSortDragDto input)
+ {
+ var entitylist = await _questionAnswerRepository.GetListAsync(o => input.ItemList.Select(s => s.QuestionAnswerId).Contains(o.QuestionAnswerId));
+
+ foreach (var entity in entitylist)
+ {
+ foreach (var item in input.ItemList)
+ {
+ if (item.QuestionAnswerId == entity.QuestionAnswerId)
+ entity.DisplayOrder = item.DisplayOrder;
+ }
+ }
+
+ await _questionAnswerRepository.UpdateManyAsync(entitylist);
+ }
+
+
+ ///
+ /// 自动生成pathcode
+ ///
+ ///
+ ///
+ public async Task CreatePathCode(Guid? parentId)
+ {
+ string PathCode = "00001";
+ //一级
+ if (parentId == null || parentId == Guid.Empty)
+ {
+ //最大pathcode
+ var LastPathCode = (await _questionAnswerRepository.GetListAsync(o => o.ParentId == Guid.Empty || o.ParentId == null))
+ .OrderByDescending(o =>
+ {
+ var sortCode = o.PathCode.Replace(".", "");
+ return Convert.ToInt32(sortCode);
+ }).FirstOrDefault();
+ if (LastPathCode != null)
+ {
+ PathCode = (Convert.ToInt32(LastPathCode.PathCode) + 1).ToString().PadLeft(5, '0');
+ }
+ else
+ {
+ PathCode = "00001";
+ }
+ }
+ else
+ {
+ //二级以及以上
+
+
+ //上级pathcode
+ var ParentPathCode = (await _questionAnswerRepository.GetListAsync(o => o.QuestionAnswerId == parentId)).FirstOrDefault().PathCode;
+
+ //最大pathcode
+ var LastPathCode = (await _questionAnswerRepository.GetListAsync(o => o.ParentId == parentId))
+ .OrderByDescending(o =>
+ {
+ var sortCode = o.PathCode.Replace(".", "");
+ return Convert.ToInt32(sortCode);
+ }).Select(s => s.PathCode).FirstOrDefault();
+
+ if (!string.IsNullOrEmpty(LastPathCode))
+ {
+ var MaxCode = LastPathCode.Split('.').Last();
+ PathCode = ParentPathCode + "." + (Convert.ToInt32(MaxCode) + 1).ToString().PadLeft(5, '0');
+ }
+ else
+ {
+ PathCode = ParentPathCode + ".00001";
+ }
+ }
+
+ return PathCode;
+ }
+ }
+}
diff --git a/src/Shentun.WebPeis.Domain/QuestionAnswers/UpdateQuestionAnswerSortDragDto.cs b/src/Shentun.WebPeis.Domain/QuestionAnswers/UpdateQuestionAnswerSortDragDto.cs
new file mode 100644
index 0000000..ec9c18f
--- /dev/null
+++ b/src/Shentun.WebPeis.Domain/QuestionAnswers/UpdateQuestionAnswerSortDragDto.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Shentun.WebPeis.QuestionAnswers
+{
+
+ public class UpdateQuestionAnswerSortDragDto
+ {
+ public List ItemList { get; set; }
+ }
+
+
+ public class UpdateQuestionAnswerSortDragDetail
+ {
+ public Guid QuestionAnswerId { get; set; }
+ public int DisplayOrder { get; set; }
+ }
+}
diff --git a/src/Shentun.WebPeis.Domain/QuestionAnswers/UpdateQuestionAnswerSortTopOrBottomInputDto.cs b/src/Shentun.WebPeis.Domain/QuestionAnswers/UpdateQuestionAnswerSortTopOrBottomInputDto.cs
new file mode 100644
index 0000000..288babf
--- /dev/null
+++ b/src/Shentun.WebPeis.Domain/QuestionAnswers/UpdateQuestionAnswerSortTopOrBottomInputDto.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Shentun.WebPeis.QuestionAnswers
+{
+ public class UpdateQuestionAnswerSortTopOrBottomInputDto
+ {
+ public Guid QuestionAnswerId { get; set; }
+
+ ///
+ /// 修改方式:1 置顶 2 置底
+ ///
+ public int SortType { get; set; }
+ }
+}
diff --git a/src/Shentun.WebPeis.Domain/Questions/QuestionManager.cs b/src/Shentun.WebPeis.Domain/Questions/QuestionManager.cs
index 2868f78..c0b7df1 100644
--- a/src/Shentun.WebPeis.Domain/Questions/QuestionManager.cs
+++ b/src/Shentun.WebPeis.Domain/Questions/QuestionManager.cs
@@ -69,7 +69,6 @@ namespace Shentun.WebPeis.Questions
targetEntity.AnswerType = sourceEntity.AnswerType;
targetEntity.IsActive = sourceEntity.IsActive;
- targetEntity.ParentId = sourceEntity.ParentId;
targetEntity.QuestionName = sourceEntity.QuestionName;
targetEntity.QuestionSubjectTypeId = sourceEntity.QuestionSubjectTypeId;
targetEntity.SimpleCode = LanguageConverter.GetPYSimpleCode(sourceEntity.QuestionName);