|
@@ -1,9 +1,14 @@
|
|
|
-using Hotline.KnowledgeBase;
|
|
|
-using Hotline.Permissions;
|
|
|
+using Hotline.Application.Knowledge;
|
|
|
+using Hotline.KnowledgeBase;
|
|
|
+using Hotline.Repository.SqlSugar.Extensions;
|
|
|
using Hotline.Settings;
|
|
|
using Hotline.Settings.Hotspots;
|
|
|
+using Hotline.Share.Dtos;
|
|
|
using Hotline.Share.Dtos.Knowledge;
|
|
|
+using Hotline.Share.Dtos.Order;
|
|
|
using Hotline.Share.Enums.KnowledgeBase;
|
|
|
+using Hotline.Share.Requests;
|
|
|
+using Hotline.Tools;
|
|
|
using MapsterMapper;
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
using SqlSugar;
|
|
@@ -27,6 +32,7 @@ namespace Hotline.Api.Controllers
|
|
|
private readonly ISessionContext _sessionContext;
|
|
|
private readonly ISystemOrganizeRepository _systemOrganizeRepository;
|
|
|
private readonly IRepository<Hotspot> _hotspotTypeRepository;
|
|
|
+ private readonly IKnowApplication _knowApplication;
|
|
|
|
|
|
/// <summary>
|
|
|
///
|
|
@@ -34,10 +40,19 @@ namespace Hotline.Api.Controllers
|
|
|
/// <param name="knowledgeTypeRepository"></param>
|
|
|
/// <param name="knowledgeTypeDomainService"></param>
|
|
|
/// <param name="knowledgeStandardRepository"></param>
|
|
|
+ /// <param name="sessionContext"></param>
|
|
|
/// <param name="mapper"></param>
|
|
|
- public KnowledgeCommonController(IRepository<KnowledgeType> knowledgeTypeRepository, IKnowledgeTypeDomainService knowledgeTypeDomainService,
|
|
|
- IRepository<KnowledgeStandard> knowledgeStandardRepository, ISessionContext sessionContext,
|
|
|
- IMapper mapper, ISystemOrganizeRepository systemOrganizeRepository, IRepository<Hotspot> hotspotTypeRepository)
|
|
|
+ /// <param name="systemOrganizeRepository"></param>
|
|
|
+ /// <param name="hotspotTypeRepository"></param>
|
|
|
+ /// <param name="knowApplication"></param>
|
|
|
+ public KnowledgeCommonController(IRepository<KnowledgeType> knowledgeTypeRepository,
|
|
|
+ IKnowledgeTypeDomainService knowledgeTypeDomainService,
|
|
|
+ IRepository<KnowledgeStandard> knowledgeStandardRepository,
|
|
|
+ ISessionContext sessionContext,
|
|
|
+ IMapper mapper,
|
|
|
+ ISystemOrganizeRepository systemOrganizeRepository,
|
|
|
+ IRepository<Hotspot> hotspotTypeRepository,
|
|
|
+ IKnowApplication knowApplication)
|
|
|
{
|
|
|
_knowledgeTypeRepository = knowledgeTypeRepository;
|
|
|
_knowledgeTypeDomainService = knowledgeTypeDomainService;
|
|
@@ -46,6 +61,7 @@ namespace Hotline.Api.Controllers
|
|
|
_sessionContext = sessionContext;
|
|
|
_systemOrganizeRepository = systemOrganizeRepository;
|
|
|
_hotspotTypeRepository = hotspotTypeRepository;
|
|
|
+ _knowApplication = knowApplication;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
@@ -158,7 +174,7 @@ namespace Hotline.Api.Controllers
|
|
|
KnowledgeNum = SqlFunc.Subqueryable<Knowledge>()
|
|
|
.InnerJoin<KnowledgeRelationType>((k, krt) => k.Id == krt.KnowledgeId)
|
|
|
.InnerJoin<KnowledgeType>((k, krt, t) => krt.KnowledgeTypeId == t.Id)
|
|
|
- .Where((k, krt, t) => t.SpliceName.StartsWith(x.SpliceName) && k.IsDeleted == false && t.IsDeleted == false)
|
|
|
+ .Where((k, krt, t) => t.SpliceName.StartsWith(x.SpliceName) && k.IsDeleted == false && t.IsDeleted == false)
|
|
|
.WhereIF(!string.IsNullOrEmpty(attribution) && !isCenter, (k, krt, t) => k.Attribution == attribution)
|
|
|
.WhereIF(status != null, k => k.Status == status)
|
|
|
.DistinctCount(k => k.Id)
|
|
@@ -318,5 +334,51 @@ namespace Hotline.Api.Controllers
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
+ #region 知识超期未更新统计
|
|
|
+ /// <summary>
|
|
|
+ /// 知识超期未更新统计
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("get-know-overdue-statistics-list")]
|
|
|
+ public async Task<PagedDto<KnowedgeStatisticsDto>> GetKnowOverdueStatisticsList([FromQuery] PagedKeywordRequest dto)
|
|
|
+ {
|
|
|
+ var (total, items) = await _knowApplication.GetKnowedgeStatistics(dto)
|
|
|
+ .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
+ return new PagedDto<KnowedgeStatisticsDto>(total, items);
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ ///知识超期未更新统计导出
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("get-know-overdue-statistics-list-export")]
|
|
|
+ public async Task<FileStreamResult> GetKnowOverdueStatisticsListExport([FromBody] ExportExcelDto<PagedKeywordRequest> dto)
|
|
|
+ {
|
|
|
+ var query = _knowApplication.GetKnowedgeStatistics(dto.QueryDto);
|
|
|
+ List<KnowedgeStatisticsDto> data;
|
|
|
+ if (dto.IsExportAll)
|
|
|
+ {
|
|
|
+ data = await query.ToListAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
|
|
|
+ data = items;
|
|
|
+ }
|
|
|
+
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass<KnowedgeStatisticsDto>(dto.ColumnInfos);
|
|
|
+
|
|
|
+ var dtos = data
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(KnowedgeStatisticsDto), dynamicClass))
|
|
|
+ .Cast<object>()
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
+
|
|
|
+ return ExcelStreamResult(stream, "知识超期未更新统计");
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
}
|
|
|
}
|