|
@@ -24,19 +24,19 @@ namespace Hotline.Api.Controllers
|
|
|
private readonly IRepository<KnowledgeStandard> _knowledgeStandardRepository;
|
|
|
private readonly IMapper _mapper;
|
|
|
private readonly ISessionContext _sessionContext;
|
|
|
- private readonly ISystemOrganizeRepository _systemOrganizeRepository;
|
|
|
- private readonly IRepository<Hotspot> _hotspotTypeRepository;
|
|
|
+ private readonly ISystemOrganizeRepository _systemOrganizeRepository;
|
|
|
+ private readonly IRepository<Hotspot> _hotspotTypeRepository;
|
|
|
|
|
|
- /// <summary>
|
|
|
- ///
|
|
|
- /// </summary>
|
|
|
- /// <param name="knowledgeTypeRepository"></param>
|
|
|
- /// <param name="knowledgeTypeDomainService"></param>
|
|
|
- /// <param name="knowledgeStandardRepository"></param>
|
|
|
- /// <param name="mapper"></param>
|
|
|
- public KnowledgeCommonController(IRepository<KnowledgeType> knowledgeTypeRepository, IKnowledgeTypeDomainService knowledgeTypeDomainService,
|
|
|
+ /// <summary>
|
|
|
+ ///
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="knowledgeTypeRepository"></param>
|
|
|
+ /// <param name="knowledgeTypeDomainService"></param>
|
|
|
+ /// <param name="knowledgeStandardRepository"></param>
|
|
|
+ /// <param name="mapper"></param>
|
|
|
+ public KnowledgeCommonController(IRepository<KnowledgeType> knowledgeTypeRepository, IKnowledgeTypeDomainService knowledgeTypeDomainService,
|
|
|
IRepository<KnowledgeStandard> knowledgeStandardRepository, ISessionContext sessionContext,
|
|
|
- IMapper mapper, ISystemOrganizeRepository systemOrganizeRepository, IRepository<Hotspot> hotspotTypeRepository)
|
|
|
+ IMapper mapper, ISystemOrganizeRepository systemOrganizeRepository, IRepository<Hotspot> hotspotTypeRepository)
|
|
|
{
|
|
|
_knowledgeTypeRepository = knowledgeTypeRepository;
|
|
|
_knowledgeTypeDomainService = knowledgeTypeDomainService;
|
|
@@ -45,7 +45,7 @@ namespace Hotline.Api.Controllers
|
|
|
_sessionContext = sessionContext;
|
|
|
_systemOrganizeRepository = systemOrganizeRepository;
|
|
|
_hotspotTypeRepository = hotspotTypeRepository;
|
|
|
- }
|
|
|
+ }
|
|
|
#endregion
|
|
|
|
|
|
#region 知识分类
|
|
@@ -93,8 +93,8 @@ namespace Hotline.Api.Controllers
|
|
|
public async Task<KnowledgeType> GetType(string Id)
|
|
|
{
|
|
|
var types = await _knowledgeTypeRepository.Queryable()
|
|
|
- .Includes(x=>x.KnowledgeTypeOrgs)
|
|
|
- .Where(x=>x.Id == Id)
|
|
|
+ .Includes(x => x.KnowledgeTypeOrgs)
|
|
|
+ .Where(x => x.Id == Id)
|
|
|
.FirstAsync(HttpContext.RequestAborted);
|
|
|
if (types is null)
|
|
|
throw UserFriendlyException.SameMessage("查询失败!");
|
|
@@ -140,23 +140,42 @@ namespace Hotline.Api.Controllers
|
|
|
/// <param name="IsEnable">不传查询所有</param>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet("treelist")]
|
|
|
- public async Task<List<KnowledgeTypeDto>> GetTreeList(bool? IsEnable,string? Attribution)
|
|
|
+ public async Task<List<KnowledgeTypeDto>> GetTreeList(bool? IsEnable, string? Attribution)
|
|
|
{
|
|
|
- return await _knowledgeTypeRepository.Queryable().WhereIF(IsEnable.HasValue, x =>x.IsEnable == IsEnable)
|
|
|
- //.Where(x => x.KnowledgeTypeOrgs.Any(to => to.OrgId == _sessionContext.RequiredOrgId) || x.KnowledgeTypeOrgs.Any() == false)
|
|
|
- .Where(x=> SqlFunc.Subqueryable<KnowledgeTypeOrg>().Where(to=>to.TypeId == x.Id && to.OrgId == _sessionContext.RequiredOrgId).Any()
|
|
|
- || SqlFunc.Subqueryable<KnowledgeTypeOrg>().Where(to => to.TypeId == x.Id).NotAny())
|
|
|
- .Select(x=> new KnowledgeTypeDto()
|
|
|
- {
|
|
|
+ var query = _knowledgeTypeRepository.Queryable();
|
|
|
+ if (!_sessionContext.OrgIsCenter)
|
|
|
+ query.Where(d => d.Orgs.Any(s => s.Id == _sessionContext.RequiredOrgId));
|
|
|
+ return await query.WhereIF(IsEnable.HasValue, x => x.IsEnable == IsEnable)
|
|
|
+ .Select(x => new KnowledgeTypeDto()
|
|
|
+ {
|
|
|
Id = x.Id.SelectAll(),
|
|
|
- KnowledgeNum = SqlFunc.Subqueryable<KnowledgeRelationType>().LeftJoin<Knowledge>((kr,k)=> kr.KnowledgeId == k.Id)
|
|
|
- .Where((kr, k)=>kr.KnowledgeTypeSpliceName.StartsWith(x.SpliceName))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(Attribution),(kr,k)=>k.Attribution == Attribution).DistinctCount(kr=>kr.KnowledgeId)
|
|
|
+ KnowledgeNum = SqlFunc.Subqueryable<KnowledgeRelationType>().LeftJoin<Knowledge>((kr, k) => kr.KnowledgeId == k.Id)
|
|
|
+ .Where((kr, k) => kr.KnowledgeTypeSpliceName.StartsWith(x.SpliceName))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(Attribution), (kr, k) => k.Attribution == Attribution).DistinctCount(kr => kr.KnowledgeId)
|
|
|
|
|
|
- })
|
|
|
- .OrderBy(x => x.Sort).ToTreeAsync(it => it.children, it => it.ParentId, null,it=> it.Id);
|
|
|
+ })
|
|
|
+ .OrderBy(x => x.Sort)
|
|
|
+ .ToTreeAsync(it => it.children, it => it.ParentId, null, it => it.Id);
|
|
|
}
|
|
|
|
|
|
+ //[HttpGet("treelist")]
|
|
|
+ //public async Task<List<KnowledgeTypeDto>> GetTreeList(bool? IsEnable, string? Attribution)
|
|
|
+ //{
|
|
|
+ // return await _knowledgeTypeRepository.Queryable()
|
|
|
+ // .WhereIF(IsEnable.HasValue, x => x.IsEnable == IsEnable)
|
|
|
+ // .Where(x => SqlFunc.Subqueryable<KnowledgeTypeOrg>().Where(to => to.TypeId == x.Id && to.OrgId == _sessionContext.RequiredOrgId).Any()
|
|
|
+ // || SqlFunc.Subqueryable<KnowledgeTypeOrg>().Where(to => to.TypeId == x.Id).NotAny())
|
|
|
+ // .Select(x => new KnowledgeTypeDto()
|
|
|
+ // {
|
|
|
+ // Id = x.Id.SelectAll(),
|
|
|
+ // KnowledgeNum = SqlFunc.Subqueryable<KnowledgeRelationType>().LeftJoin<Knowledge>((kr, k) => kr.KnowledgeId == k.Id)
|
|
|
+ // .Where((kr, k) => kr.KnowledgeTypeSpliceName.StartsWith(x.SpliceName))
|
|
|
+ // .WhereIF(!string.IsNullOrEmpty(Attribution), (kr, k) => k.Attribution == Attribution).DistinctCount(kr => kr.KnowledgeId)
|
|
|
+
|
|
|
+ // })
|
|
|
+ // .OrderBy(x => x.Sort).ToTreeAsync(it => it.children, it => it.ParentId, null, it => it.Id);
|
|
|
+ //}
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 知识部门
|
|
|
/// </summary>
|
|
@@ -166,25 +185,25 @@ namespace Hotline.Api.Controllers
|
|
|
public async Task<List<KnowledgeOrgDto>> GetTreeList(string? Attribution)
|
|
|
{
|
|
|
|
|
|
- //await Db.Queryable<SystemOrganize>()
|
|
|
- // .Where(it => it.Id.StartsWith(orgCode))
|
|
|
- // .OrderBy(d => d.Id)
|
|
|
- // .ToTreeAsync(it => it.Children, it => it.ParentId, orgCode.Length > 6 ? orgCode.Substring(0, orgCode.Length - 3) : null);
|
|
|
- var orgCode = _sessionContext.RequiredOrgId;
|
|
|
- var query= _systemOrganizeRepository.Queryable().WhereIF(!_sessionContext.OrgIsCenter, it => it.Id.StartsWith(_sessionContext.RequiredOrgId))
|
|
|
- .Select(it=> new KnowledgeOrgDto()
|
|
|
- {
|
|
|
- Id = it.Id.SelectAll(),
|
|
|
- KnowledgeNum = SqlFunc.Subqueryable<Knowledge>()
|
|
|
- .Where(k => k.CreatorOrgId.StartsWith(it.Id))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(Attribution), k => k.Attribution == Attribution).DistinctCount(k => k.Id)
|
|
|
+ //await Db.Queryable<SystemOrganize>()
|
|
|
+ // .Where(it => it.Id.StartsWith(orgCode))
|
|
|
+ // .OrderBy(d => d.Id)
|
|
|
+ // .ToTreeAsync(it => it.Children, it => it.ParentId, orgCode.Length > 6 ? orgCode.Substring(0, orgCode.Length - 3) : null);
|
|
|
+ var orgCode = _sessionContext.RequiredOrgId;
|
|
|
+ var query = _systemOrganizeRepository.Queryable().WhereIF(!_sessionContext.OrgIsCenter, it => it.Id.StartsWith(_sessionContext.RequiredOrgId))
|
|
|
+ .Select(it => new KnowledgeOrgDto()
|
|
|
+ {
|
|
|
+ Id = it.Id.SelectAll(),
|
|
|
+ KnowledgeNum = SqlFunc.Subqueryable<Knowledge>()
|
|
|
+ .Where(k => k.CreatorOrgId.StartsWith(it.Id))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(Attribution), k => k.Attribution == Attribution).DistinctCount(k => k.Id)
|
|
|
|
|
|
- }).OrderBy(d => d.Id);
|
|
|
+ }).OrderBy(d => d.Id);
|
|
|
|
|
|
- if (_sessionContext.OrgIsCenter)
|
|
|
- {
|
|
|
- return await query.ToTreeAsync(x => x.Children, it => it.ParentId, null);
|
|
|
- }
|
|
|
+ if (_sessionContext.OrgIsCenter)
|
|
|
+ {
|
|
|
+ return await query.ToTreeAsync(x => x.Children, it => it.ParentId, null);
|
|
|
+ }
|
|
|
return await query.ToTreeAsync(it => it.Children, it => it.ParentId, orgCode.Length > 6 ? orgCode.Substring(0, orgCode.Length - 3) : null);
|
|
|
|
|
|
}
|
|
@@ -195,20 +214,20 @@ namespace Hotline.Api.Controllers
|
|
|
[HttpGet("treelist/hotspot")]
|
|
|
public async Task<IReadOnlyList<KnowledgeHotSpotDto>> GetChildren([FromQuery] string? id, string? Attribution)
|
|
|
{
|
|
|
- var list = await _hotspotTypeRepository.Queryable()
|
|
|
- .WhereIF(!string.IsNullOrEmpty(id), x => x.ParentId == id)
|
|
|
- .WhereIF(string.IsNullOrEmpty(id), x => x.ParentId == null || x.ParentId == "")
|
|
|
- .OrderBy(d => d.HotSpotName)
|
|
|
- .Select(x => new KnowledgeHotSpotDto
|
|
|
- {
|
|
|
- Id = x.Id.SelectAll(),
|
|
|
- HasChild = SqlFunc.Subqueryable<Hotspot>().Where(d => d.ParentId == x.Id).NotAny(),
|
|
|
- KnowledgeNum = SqlFunc.Subqueryable<Knowledge>().LeftJoin<Hotspot>((k,h)=>k.HotspotId == h.Id)
|
|
|
- .Where((k,h) =>h.HotSpotFullName.StartsWith(x.HotSpotFullName))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(Attribution), (k,h) => k.Attribution == Attribution).DistinctCount(k => k.Id)
|
|
|
- }).ToListAsync();
|
|
|
+ var list = await _hotspotTypeRepository.Queryable()
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(id), x => x.ParentId == id)
|
|
|
+ .WhereIF(string.IsNullOrEmpty(id), x => x.ParentId == null || x.ParentId == "")
|
|
|
+ .OrderBy(d => d.HotSpotName)
|
|
|
+ .Select(x => new KnowledgeHotSpotDto
|
|
|
+ {
|
|
|
+ Id = x.Id.SelectAll(),
|
|
|
+ HasChild = SqlFunc.Subqueryable<Hotspot>().Where(d => d.ParentId == x.Id).NotAny(),
|
|
|
+ KnowledgeNum = SqlFunc.Subqueryable<Knowledge>().LeftJoin<Hotspot>((k, h) => k.HotspotId == h.Id)
|
|
|
+ .Where((k, h) => h.HotSpotFullName.StartsWith(x.HotSpotFullName))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(Attribution), (k, h) => k.Attribution == Attribution).DistinctCount(k => k.Id)
|
|
|
+ }).ToListAsync();
|
|
|
|
|
|
- return list;
|
|
|
+ return list;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -220,27 +239,27 @@ namespace Hotline.Api.Controllers
|
|
|
[HttpGet("treelist/children-hasname")]
|
|
|
public async Task<IReadOnlyList<KnowledgeHotSpotDto>> GetChildrenHasName([FromQuery] string Name, string? Attribution)
|
|
|
{
|
|
|
- var arr = _hotspotTypeRepository.Queryable()
|
|
|
- .WhereIF(!string.IsNullOrEmpty(Name), x => x.HotSpotFullName.Contains(Name)).Select(x => x.Id).ToList().Cast<object>().ToArray();
|
|
|
- //.ToTreeAsync(x => x.Children, it => it.ParentId, null);
|
|
|
- return await _hotspotTypeRepository.Queryable().Select(x => new KnowledgeHotSpotDto
|
|
|
- {
|
|
|
- Id = x.Id.SelectAll(),
|
|
|
- HasChild = SqlFunc.Subqueryable<Hotspot>().Where(d => d.ParentId == x.Id).NotAny(),
|
|
|
- KnowledgeNum = SqlFunc.Subqueryable<Knowledge>().LeftJoin<Hotspot>((k, h) => k.HotspotId == h.Id)
|
|
|
- .Where((k, h) => h.HotSpotFullName.StartsWith(x.HotSpotFullName))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(Attribution), (k, h) => k.Attribution == Attribution).DistinctCount(k => k.Id)
|
|
|
- }).ToTreeAsync(x => x.Children, it => it.ParentId, "", arr);
|
|
|
+ var arr = _hotspotTypeRepository.Queryable()
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(Name), x => x.HotSpotFullName.Contains(Name)).Select(x => x.Id).ToList().Cast<object>().ToArray();
|
|
|
+ //.ToTreeAsync(x => x.Children, it => it.ParentId, null);
|
|
|
+ return await _hotspotTypeRepository.Queryable().Select(x => new KnowledgeHotSpotDto
|
|
|
+ {
|
|
|
+ Id = x.Id.SelectAll(),
|
|
|
+ HasChild = SqlFunc.Subqueryable<Hotspot>().Where(d => d.ParentId == x.Id).NotAny(),
|
|
|
+ KnowledgeNum = SqlFunc.Subqueryable<Knowledge>().LeftJoin<Hotspot>((k, h) => k.HotspotId == h.Id)
|
|
|
+ .Where((k, h) => h.HotSpotFullName.StartsWith(x.HotSpotFullName))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(Attribution), (k, h) => k.Attribution == Attribution).DistinctCount(k => k.Id)
|
|
|
+ }).ToTreeAsync(x => x.Children, it => it.ParentId, "", arr);
|
|
|
}
|
|
|
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 知识分类- 只获取一级
|
|
|
- /// </summary>
|
|
|
- /// <param name="ParentId">不传默认查询第一级</param>
|
|
|
- /// <param name="IsEnable">不传查询所有,包含已经禁用的</param>
|
|
|
- /// <returns></returns>
|
|
|
- [HttpGet("typelist")]
|
|
|
+ /// <summary>
|
|
|
+ /// 知识分类- 只获取一级
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="ParentId">不传默认查询第一级</param>
|
|
|
+ /// <param name="IsEnable">不传查询所有,包含已经禁用的</param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("typelist")]
|
|
|
public async Task<List<KnowledgeType>> GetTypeList(string? ParentId, bool? IsEnable)
|
|
|
{
|
|
|
return await _knowledgeTypeRepository
|