DESKTOP-G961P6V\Zhh 1 year ago
parent
commit
7ccc478aae
  1. 71
      src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/CreateQuestionAnswerDto.cs
  2. 80
      src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerDto.cs
  3. 11
      src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerIdInputDto.cs
  4. 82
      src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/QuestionAnswerTreeListDto.cs
  5. 68
      src/Shentun.WebPeis.Application.Contracts/QuestionAnswers/UpdateQuestionAnswerDto.cs
  6. 5
      src/Shentun.WebPeis.Application.Contracts/Questions/CreateQuestionDto.cs
  7. 4
      src/Shentun.WebPeis.Application.Contracts/Questions/UpdateQuestionDto.cs
  8. 223
      src/Shentun.WebPeis.Application/QuestionAnswers/QuestionAnswerAppService.cs
  9. 1
      src/Shentun.WebPeis.Application/Questions/QuestionAppService.cs
  10. 17
      src/Shentun.WebPeis.Application/WebPeisApplicationAutoMapperProfile.cs
  11. 2
      src/Shentun.WebPeis.Domain/Models/AsbitemRecommendLevel.cs
  12. 2
      src/Shentun.WebPeis.Domain/Models/DiseaseRisk.cs
  13. 6
      src/Shentun.WebPeis.Domain/Models/DiseaseRiskLevel.cs
  14. 13
      src/Shentun.WebPeis.Domain/Models/QuestionAnswer.cs
  15. 208
      src/Shentun.WebPeis.Domain/QuestionAnswers/QuestionAnswerManager.cs
  16. 21
      src/Shentun.WebPeis.Domain/QuestionAnswers/UpdateQuestionAnswerSortDragDto.cs
  17. 18
      src/Shentun.WebPeis.Domain/QuestionAnswers/UpdateQuestionAnswerSortTopOrBottomInputDto.cs
  18. 1
      src/Shentun.WebPeis.Domain/Questions/QuestionManager.cs

71
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
{
/// <summary>
/// 答案
/// </summary>
public string QuestionAnswerName { get; set; } = null!;
/// <summary>
/// 问卷ID
/// </summary>
public Guid QuestionId { get; set; }
/// <summary>
/// 子答案类别
/// </summary>
public char? ChildAnswerType { get; set; }
/// <summary>
/// 答案结果类别
/// </summary>
public char? AnswerResultType { get; set; }
/// <summary>
/// 别名
/// </summary>
public string? Aliases { get; set; }
/// <summary>
/// 概述
/// </summary>
public string? Overview { get; set; }
/// <summary>
/// 可能原因
/// </summary>
public string? Reason { get; set; }
/// <summary>
/// 健康指导
/// </summary>
public string? HealthGuidance { get; set; }
/// <summary>
/// 父答案ID
/// </summary>
public Guid? ParentId { get; set; }
/// <summary>
/// 子答案标题
/// </summary>
public string? ChildAnswerTitle { get; set; }
/// <summary>
/// 无,和其它答案排斥
/// </summary>
public char IsNone { get; set; }
}
}

80
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
{
/// <summary>
/// 主键
/// </summary>
public Guid QuestionAnswerId { get; set; }
/// <summary>
/// 答案
/// </summary>
public string QuestionAnswerName { get; set; } = null!;
/// <summary>
/// 问卷ID
/// </summary>
public Guid QuestionId { get; set; }
/// <summary>
/// 子答案类别
/// </summary>
public char? ChildAnswerType { get; set; }
/// <summary>
/// 答案结果类别
/// </summary>
public char? AnswerResultType { get; set; }
/// <summary>
/// 别名
/// </summary>
public string? Aliases { get; set; }
/// <summary>
/// 概述
/// </summary>
public string? Overview { get; set; }
/// <summary>
/// 可能原因
/// </summary>
public string? Reason { get; set; }
/// <summary>
/// 健康指导
/// </summary>
public string? HealthGuidance { get; set; }
/// <summary>
/// 父答案ID
/// </summary>
public Guid? ParentId { get; set; }
/// <summary>
/// 编码路径
/// </summary>
public string? PathCode { get; set; }
/// <summary>
/// 子答案标题
/// </summary>
public string? ChildAnswerTitle { get; set; }
/// <summary>
/// 无,和其它答案排斥
/// </summary>
public char IsNone { get; set; }
public string SimpleCode { get; set; } = null!;
public int DisplayOrder { get; set; }
}
}

11
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; }
}
}

82
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
{
/// <summary>
/// 主键
/// </summary>
public Guid QuestionAnswerId { get; set; }
/// <summary>
/// 答案
/// </summary>
public string QuestionAnswerName { get; set; } = null!;
/// <summary>
/// 问卷ID
/// </summary>
public Guid QuestionId { get; set; }
/// <summary>
/// 子答案类别
/// </summary>
public char? ChildAnswerType { get; set; }
/// <summary>
/// 答案结果类别
/// </summary>
public char? AnswerResultType { get; set; }
/// <summary>
/// 别名
/// </summary>
public string? Aliases { get; set; }
/// <summary>
/// 概述
/// </summary>
public string? Overview { get; set; }
/// <summary>
/// 可能原因
/// </summary>
public string? Reason { get; set; }
/// <summary>
/// 健康指导
/// </summary>
public string? HealthGuidance { get; set; }
/// <summary>
/// 父答案ID
/// </summary>
public Guid? ParentId { get; set; }
/// <summary>
/// 编码路径
/// </summary>
public string? PathCode { get; set; }
/// <summary>
/// 子答案标题
/// </summary>
public string? ChildAnswerTitle { get; set; }
/// <summary>
/// 无,和其它答案排斥
/// </summary>
public char IsNone { get; set; }
public string SimpleCode { get; set; } = null!;
public int DisplayOrder { get; set; }
public List<QuestionAnswerTreeListDto> TreeChildren { get; set; }
}
}

68
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
{
/// <summary>
/// 主键
/// </summary>
public Guid QuestionAnswerId { get; set; }
/// <summary>
/// 答案
/// </summary>
public string QuestionAnswerName { get; set; } = null!;
/// <summary>
/// 问卷ID
/// </summary>
public Guid QuestionId { get; set; }
/// <summary>
/// 子答案类别
/// </summary>
public char? ChildAnswerType { get; set; }
/// <summary>
/// 答案结果类别
/// </summary>
public char? AnswerResultType { get; set; }
/// <summary>
/// 别名
/// </summary>
public string? Aliases { get; set; }
/// <summary>
/// 概述
/// </summary>
public string? Overview { get; set; }
/// <summary>
/// 可能原因
/// </summary>
public string? Reason { get; set; }
/// <summary>
/// 健康指导
/// </summary>
public string? HealthGuidance { get; set; }
/// <summary>
/// 子答案标题
/// </summary>
public string? ChildAnswerTitle { get; set; }
/// <summary>
/// 无,和其它答案排斥
/// </summary>
public char IsNone { get; set; }
}
}

5
src/Shentun.WebPeis.Application.Contracts/Questions/CreateQuestionDto.cs

@ -6,10 +6,7 @@ namespace Shentun.WebPeis.Questions
{
public class CreateQuestionDto
{
/// <summary>
/// 主键
/// </summary>
public Guid QuestionId { get; set; }
/// <summary>
/// 题目
/// </summary>

4
src/Shentun.WebPeis.Application.Contracts/Questions/UpdateQuestionDto.cs

@ -37,11 +37,7 @@ namespace Shentun.WebPeis.Questions
/// </summary>
public char? IsActive { get; set; }
/// <summary>
/// 父问卷ID
/// </summary>
public Guid? ParentId { get; set; }
}
}

223
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
{
/// <summary>
/// 问卷答案
/// </summary>
[ApiExplorerSettings(GroupName = "Work")]
[Authorize]
public class QuestionAnswerAppService : ApplicationService
{
private readonly IRepository<QuestionAnswer> _questionAnswerRepository;
private readonly QuestionAnswerManager _questionAnswerManager;
private readonly CacheService _cacheService;
public QuestionAnswerAppService(
CacheService cacheService,
IRepository<QuestionAnswer> questionAnswerRepository,
QuestionAnswerManager questionAnswerManager)
{
_cacheService = cacheService;
_questionAnswerRepository = questionAnswerRepository;
_questionAnswerManager = questionAnswerManager;
}
///// <summary>
///// 获取列表
///// </summary>
///// <returns></returns>
//[HttpPost("api/app/QuestionAnswer/GetList")]
//public async Task<List<QuestionDto>> 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;
//}
/// <summary>
/// 获取问卷答案树型列表 根据问卷ID
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/QuestionAnswer/GetQuestionTreeList")]
public async Task<List<QuestionAnswerTreeListDto>> 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, "");
}
/// <summary>
/// 创建
/// </summary>
/// <returns></returns>
[HttpPost("api/app/QuestionAnswer/Create")]
public async Task<QuestionAnswerDto> CreateAsync(CreateQuestionAnswerDto input)
{
var createEntity = ObjectMapper.Map<CreateQuestionAnswerDto, QuestionAnswer>(input);
createEntity.QuestionAnswerId = GuidGenerator.Create();
var entity = await _questionAnswerManager.CreateAsync(createEntity);
entity = await _questionAnswerRepository.InsertAsync(entity);
var dto = ObjectMapper.Map<QuestionAnswer, QuestionAnswerDto>(entity);
dto.CreatorName = await _cacheService.GetSurnameAsync(dto.CreatorId);
dto.LastModifierName = await _cacheService.GetSurnameAsync(dto.LastModifierId);
return dto;
}
/// <summary>
/// 更新
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/QuestionAnswer/Update")]
public async Task<QuestionAnswerDto> UpdateAsync(UpdateQuestionAnswerDto input)
{
var entity = await _questionAnswerRepository.GetAsync(f => f.QuestionAnswerId == input.QuestionAnswerId);
var sourceEntity = ObjectMapper.Map<UpdateQuestionAnswerDto, QuestionAnswer>(input);
_questionAnswerManager.UpdateAsync(sourceEntity, entity);
entity = await _questionAnswerRepository.UpdateAsync(entity);
var dto = ObjectMapper.Map<QuestionAnswer, QuestionAnswerDto>(entity);
dto.CreatorName = await _cacheService.GetSurnameAsync(dto.CreatorId);
dto.LastModifierName = await _cacheService.GetSurnameAsync(dto.LastModifierId);
return dto;
}
/// <summary>
/// 删除
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/QuestionAnswer/Delete")]
public async Task DeleteAsync(QuestionAnswerIdInputDto input)
{
await _questionAnswerManager.CheckAndDeleteAsync(input.QuestionAnswerId);
}
/// <summary>
/// 修改排序 置顶,置底
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/QuestionAnswer/UpdateSortTopOrBottom")]
public async Task UpdateSortTopOrBottomAsync(UpdateQuestionAnswerSortTopOrBottomInputDto input)
{
await _questionAnswerManager.UpdateSortTopOrBottomAsync(input.QuestionAnswerId, input.SortType);
}
/// <summary>
/// 修改排序 拖拽
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/QuestionAnswer/UpdateSortDragAsync")]
public async Task UpdateSortDragAsync(UpdateQuestionAnswerSortDragDto input)
{
await _questionAnswerManager.UpdateSortDragAsync(input);
}
/// <summary>
/// 使用Code进行递归
/// </summary>
/// <param name="items"></param>
/// <param name="deep"></param>
/// <param name="prefix"></param>
/// <returns></returns>
private List<QuestionAnswerTreeListDto> GetTree(List<QuestionAnswerTreeListDto> 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();
}
}
}

1
src/Shentun.WebPeis.Application/Questions/QuestionAppService.cs

@ -110,6 +110,7 @@ namespace Shentun.WebPeis.Questions
public async Task<QuestionDto> CreateAsync(CreateQuestionDto input)
{
var createEntity = ObjectMapper.Map<CreateQuestionDto, Question>(input);
createEntity.QuestionId= GuidGenerator.Create();
var entity = await _questionManager.CreateAsync(createEntity);
entity = await _questionRepository.InsertAsync(entity);
var dto = ObjectMapper.Map<Question, QuestionDto>(entity);

17
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<ThirdInterface, ThirdInterfaceDto>();
CreateMap<CreateThirdInterfaceDto, ThirdInterface>();
CreateMap<UpdateThirdInterfaceDto, ThirdInterface>();
CreateMap<QuestionType, QuestionTypeDto>();
CreateMap<CreateQuestionTypeDto, QuestionType>();
CreateMap<UpdateQuestionTypeDto, QuestionType>();
CreateMap<Question, QuestionDto>();
CreateMap<CreateQuestionDto, Question>();
CreateMap<UpdateQuestionDto, Question>();
CreateMap<QuestionAnswer, QuestionAnswerDto>();
CreateMap<CreateQuestionAnswerDto, QuestionAnswer>();
CreateMap<UpdateQuestionAnswerDto, QuestionAnswer>();
}
}

2
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; }

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

@ -9,7 +9,7 @@ namespace Shentun.WebPeis.Models;
/// <summary>
/// 疾病风险
/// </summary>
public partial class DiseaseRisk : AuditedEntity, IHasConcurrencyStamp
public partial class DiseaseRisk : AuditedEntity, IHasConcurrencyStamp,IDisplayOrder
{
/// <summary>
/// 主键

6
src/Shentun.WebPeis.Domain/Models/DiseaseRiskLevel.cs

@ -8,7 +8,7 @@ namespace Shentun.WebPeis.Models;
/// <summary>
/// 疾病风险级别
/// </summary>
public partial class DiseaseRiskLevel : AuditedEntity, IHasConcurrencyStamp
public partial class DiseaseRiskLevel : AuditedEntity, IHasConcurrencyStamp, IDisplayOrder
{
/// <summary>
/// 风险级别ID
@ -29,7 +29,7 @@ public partial class DiseaseRiskLevel : AuditedEntity, IHasConcurrencyStamp
public int DisplayOrder { get; set; }
/// <summary>
/// 风险标准级别ID,暂时废弃
/// </summary>
@ -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!;

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

@ -8,7 +8,7 @@ namespace Shentun.WebPeis.Models;
/// <summary>
/// 问卷答案
/// </summary>
public partial class QuestionAnswer : AuditedEntity, IHasConcurrencyStamp
public partial class QuestionAnswer : AuditedEntity, IHasConcurrencyStamp, IDisplayOrder
{
/// <summary>
/// 主键
@ -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; }
/// <summary>
/// 子答案类别
@ -49,7 +47,7 @@ public partial class QuestionAnswer : AuditedEntity, IHasConcurrencyStamp
/// 概述
/// </summary>
public string? Overview { get; set; }
public string? Overview { get; set; }
/// <summary>
/// 可能原因
/// </summary>
@ -77,6 +75,13 @@ public partial class QuestionAnswer : AuditedEntity, IHasConcurrencyStamp
/// 无,和其它答案排斥
/// </summary>
public char IsNone { get; set; }
public string SimpleCode { get; set; } = null!;
public int DisplayOrder { get; set; }
public virtual ICollection<QuestionRegisterAnswer> QuestionRegisterAnswers { get; set; } = new List<QuestionRegisterAnswer>();
public string? ConcurrencyStamp { get; set; }

208
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<QuestionAnswer> _questionAnswerRepository;
public QuestionAnswerManager(
IRepository<QuestionAnswer> questionAnswerRepository
)
{
_questionAnswerRepository = questionAnswerRepository;
}
/// <summary>
/// 创建
/// </summary>
/// <returns></returns>
public async Task<QuestionAnswer> 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<QuestionAnswer>(_questionAnswerRepository)
};
}
/// <summary>
/// 更新
/// </summary>
/// <param name="sourceEntity"></param>
/// <param name="targetEntity"></param>
/// <returns></returns>
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);
}
/// <summary>
/// 删除
/// </summary>
/// <param name="QuestionAnswerId"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
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);
}
/// <summary>
/// 修改排序 置顶,置底
/// </summary>
/// <param name="id">需要修改的ID</param>
/// <param name="SortType">修改方式:1 置顶 2 置底</param>
/// <returns></returns>
public async Task UpdateSortTopOrBottomAsync(Guid QuestionAnswerId, int SortType)
{
var entity = await _questionAnswerRepository.GetAsync(f => f.QuestionAnswerId == QuestionAnswerId);
await EntityHelper.UpdateSortTopOrBottomAsync(_questionAnswerRepository, entity, SortType);
}
/// <summary>
/// 修改排序 拖拽
/// </summary>
/// <typeparam name="TEntity"></typeparam>
/// <param name="repository"></param>
/// <param name="input"></param>
/// <returns></returns>
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);
}
/// <summary>
/// 自动生成pathcode
/// </summary>
/// <param name="parentId"></param>
/// <returns></returns>
public async Task<string> 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;
}
}
}

21
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<UpdateQuestionAnswerSortDragDetail> ItemList { get; set; }
}
public class UpdateQuestionAnswerSortDragDetail
{
public Guid QuestionAnswerId { get; set; }
public int DisplayOrder { get; set; }
}
}

18
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; }
/// <summary>
/// 修改方式:1 置顶 2 置底
/// </summary>
public int SortType { get; set; }
}
}

1
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);

Loading…
Cancel
Save