diff --git a/src/Shentun.Peis.Application.Contracts/BigtextResultTemplates/GetBigtextResultTemplateWithDetailDto.cs b/src/Shentun.Peis.Application.Contracts/BigtextResultTemplates/GetBigtextResultTemplateWithDetailDto.cs new file mode 100644 index 0000000..2cd84e1 --- /dev/null +++ b/src/Shentun.Peis.Application.Contracts/BigtextResultTemplates/GetBigtextResultTemplateWithDetailDto.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Shentun.Peis.BigtextResultTemplates +{ + public class GetBigtextResultTemplateWithDetailDto + { + /// + /// 词条类别名称 + /// + public string BigtextResultTypeName { get; set; } + + /// + /// 词条模板名称 + /// + public string BigtextResultTemplateName { get; set; } + + /// + /// 词条结论 + /// + public string bigtextResultConclusion { get; set; } + + /// + /// 词条描述 + /// + public string bigtextResultDescription { get; set; } + + + } +} diff --git a/src/Shentun.Peis.Application/BigtextResultTemplates/BigtextResultTemplateAppService.cs b/src/Shentun.Peis.Application/BigtextResultTemplates/BigtextResultTemplateAppService.cs index 4c67e1a..b509807 100644 --- a/src/Shentun.Peis.Application/BigtextResultTemplates/BigtextResultTemplateAppService.cs +++ b/src/Shentun.Peis.Application/BigtextResultTemplates/BigtextResultTemplateAppService.cs @@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Mvc; using Shentun.Peis.BigtextResultTemplates; using Shentun.Peis.CommonTables; using Shentun.Peis.HelperDto; +using Shentun.Peis.Items; using Shentun.Peis.Models; using SqlSugar; using System; @@ -27,19 +28,25 @@ namespace Shentun.Peis.BigtextResultTemplates private readonly BigtextResultTemplateManager _bigtextResultTemplateManager; private readonly IRepository _bigtextResultConclusionRepository; private readonly IRepository _bigtextResultDescriptionRepository; + private readonly IRepository _itemBigtextResultTypeRepository; + private readonly IRepository _bigtextResultTypeRepository; public BigtextResultTemplateAppService( IRepository bigtextResultTemplateRepository, CacheService cacheService, BigtextResultTemplateManager bigtextResultTemplateManager, IRepository bigtextResultConclusionRepository, - IRepository bigtextResultDescriptionRepository) + IRepository bigtextResultDescriptionRepository, + IRepository itemBigtextResultTypeRepository, + IRepository bigtextResultTypeRepository) { _bigtextResultTemplateRepository = bigtextResultTemplateRepository; _cacheService = cacheService; _bigtextResultTemplateManager = bigtextResultTemplateManager; _bigtextResultConclusionRepository = bigtextResultConclusionRepository; _bigtextResultDescriptionRepository = bigtextResultDescriptionRepository; + _itemBigtextResultTypeRepository = itemBigtextResultTypeRepository; + _bigtextResultTypeRepository = bigtextResultTypeRepository; } /// @@ -213,6 +220,45 @@ namespace Shentun.Peis.BigtextResultTemplates return entDto; } + /// + /// 根据项目获取对应的词条模板、描述跟建议(多条换行合并) + /// + /// + /// + [HttpPost("api/app/BigtextResultTemplate/GetBigtextResultTemplateWithDetail")] + public async Task> GetBigtextResultTemplateWithDetailAsync(ItemIdInputDto input) + { + var query = (from itemBigtextResultType in await _itemBigtextResultTypeRepository.GetQueryableAsync() + join bigtextResultType in await _bigtextResultTypeRepository.GetQueryableAsync() on itemBigtextResultType.BigtextResultTypeId equals bigtextResultType.Id + join bigtextResultTemplate in await _bigtextResultTemplateRepository.GetQueryableAsync() on bigtextResultType.Id equals bigtextResultTemplate.BigtextResultTypeId + join bigtextResultConclusion in await _bigtextResultConclusionRepository.GetQueryableAsync() on bigtextResultTemplate.Id equals bigtextResultConclusion.BigtextResultTemplateId into bigtextResultConclusionTemp + from bigtextResultConclusionHaveEmpty in bigtextResultConclusionTemp.DefaultIfEmpty() + join bigtextResultDescription in await _bigtextResultDescriptionRepository.GetQueryableAsync() on bigtextResultTemplate.Id equals bigtextResultDescription.BigtextResultTemplateId into bigtextResultDescriptionTemp + from bigtextResultDescriptionHaveEmpty in bigtextResultDescriptionTemp.DefaultIfEmpty() + where itemBigtextResultType.ItemId == input.ItemId + orderby bigtextResultTemplate.DisplayOrder ascending + select new + { + bigtextResultTypeName = bigtextResultType.DisplayName, + bigtextResultTemplateName = bigtextResultTemplate.DisplayName, + bigtextResultTemplateId = bigtextResultTemplate.Id, + bigtextResultConclusionHaveEmpty, + bigtextResultDescriptionHaveEmpty + }).ToList(); + + var bigtextResultTemplateGroup = query.GroupBy(g => g.bigtextResultTemplateId); + + var entListDto = bigtextResultTemplateGroup.Select(s => new GetBigtextResultTemplateWithDetailDto + { + BigtextResultTypeName = s.FirstOrDefault().bigtextResultTypeName, + BigtextResultTemplateName = s.FirstOrDefault().bigtextResultTemplateName, + bigtextResultDescription = string.Join(";", s.Where(m => m.bigtextResultDescriptionHaveEmpty != null).Select(ss => ss.bigtextResultDescriptionHaveEmpty.Description).Distinct()), + bigtextResultConclusion = string.Join(";", s.Where(m => m.bigtextResultConclusionHaveEmpty != null).Select(ss => ss.bigtextResultConclusionHaveEmpty.Conclusion).Distinct()) + }).ToList(); + + return entListDto; + } + } }