|
@@ -1,8 +1,11 @@
|
|
|
-using Hotline.KnowledgeBase;
|
|
|
+using Google.Rpc;
|
|
|
+using Hotline.KnowledgeBase;
|
|
|
using Hotline.Repository.SqlSugar.Extensions;
|
|
|
+using Hotline.Settings;
|
|
|
using Hotline.Share.Dtos;
|
|
|
using Hotline.Share.Dtos.Knowledge;
|
|
|
using Hotline.Share.Enums.KnowledgeBase;
|
|
|
+using Hotline.Users;
|
|
|
using MapsterMapper;
|
|
|
using Microsoft.AspNetCore.Authorization;
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
@@ -176,6 +179,10 @@ namespace Hotline.Api.Controllers
|
|
|
|
|
|
return await _knowledgeRepository.AddAsync(kn);
|
|
|
//调用流程创建
|
|
|
+
|
|
|
+
|
|
|
+ //如果流程创建失败需要删除此条数据
|
|
|
+ //await _knowledgeRepository.RemoveAsync(knowledge);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -201,12 +208,15 @@ namespace Hotline.Api.Controllers
|
|
|
knowledge.Status = EKnowledgeStatus.Auditing;
|
|
|
knowledge.Id = "";
|
|
|
knowledge.Version = know.Version + 1;
|
|
|
- knowledge.IsHistory = true;
|
|
|
//新增一条数据
|
|
|
|
|
|
await _knowledgeRepository.AddAsync(knowledge);
|
|
|
|
|
|
//调用流程创建
|
|
|
+
|
|
|
+
|
|
|
+ //如果流程创建失败需要删除此条数据
|
|
|
+ //await _knowledgeRepository.RemoveAsync(knowledge);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -227,6 +237,7 @@ namespace Hotline.Api.Controllers
|
|
|
if (know != null)
|
|
|
{
|
|
|
//调用流程审批接口
|
|
|
+ //流程调用成功以后在处理以下业务
|
|
|
|
|
|
//处理数据
|
|
|
if (ApprovalStatus == "0")
|
|
@@ -239,15 +250,7 @@ namespace Hotline.Api.Controllers
|
|
|
{
|
|
|
know.Status = EKnowledgeStatus.Failed;
|
|
|
}
|
|
|
- know.IsHistory = false;
|
|
|
await _knowledgeRepository.UpdateAsync(know);
|
|
|
- //处理原始数据的状态
|
|
|
- var oldKnow = await _knowledgeRepository.GetAsync(p => p.Code == know.Code && p.Status == EKnowledgeStatus.Succeed && p.Id != know.Id);
|
|
|
- if (oldKnow != null)
|
|
|
- {
|
|
|
- oldKnow.IsHistory = true;
|
|
|
- await _knowledgeRepository.UpdateAsync(oldKnow);
|
|
|
- }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -284,33 +287,49 @@ namespace Hotline.Api.Controllers
|
|
|
/// <returns></returns>
|
|
|
[HttpPost("knowledge-testlist")]
|
|
|
[AllowAnonymous]
|
|
|
- public async Task<string> testlist([FromBody] KnowledgePagedListDto pagedDto)
|
|
|
+ public async Task<PagedDto<KnowledgeDataDto>> testlist([FromBody] KnowledgePagedListDto pagedDto)
|
|
|
{
|
|
|
+ RefAsync<int> total = 0;
|
|
|
var temp = await _knowledgeRepository
|
|
|
- .Queryable().Select(it => new
|
|
|
+ .Queryable()
|
|
|
+ .LeftJoin<User>((o, cus) => o.CreatorId == cus.Id)
|
|
|
+ .LeftJoin<SystemOrganize>((o, cus, sys) => o.CreatorOrgId == sys.Id)
|
|
|
+ .LeftJoin<KnowledgeType>((o, cus, sys, kn) => o.KnowledgeTypeId == kn.Id)
|
|
|
+
|
|
|
+ .Where((o, cus, sys, kn) => o.IsDeleted == false)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.Title), (o, cus, sys, kn) => o.Title.Contains(pagedDto.Title!))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.KnowledgeTypeId), (o, cus, sys, kn) => o.KnowledgeTypeId == pagedDto.KnowledgeTypeId)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.HotspotId), (o, cus, sys, kn) => o.HotspotId == pagedDto.HotspotId)
|
|
|
+ .WhereIF(pagedDto.StartTime != null, (o, cus, sys, kn) => o.OnShelfTime >= pagedDto.StartTime)
|
|
|
+ .WhereIF(pagedDto.EndTime != null, (o, cus, sys, kn) => o.OnShelfTime <= pagedDto.EndTime)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateUserName), (o, cus, sys, kn) => cus.Name.Contains(pagedDto.CreateUserName!))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateBMName), (o, cus, sys, kn) => sys.OrgName.Contains(pagedDto.CreateBMName!))
|
|
|
+
|
|
|
+ .Select((o, cus, sys, kn) => new
|
|
|
{
|
|
|
- index2 = SqlFunc.RowNumber(it.Code, it.Version),
|
|
|
- Code = it.Code,
|
|
|
- Title = it.Title,
|
|
|
- Version = it.Version
|
|
|
+ Id = o.Id,
|
|
|
+ index = SqlFunc.RowNumber($"{o.Version} desc ", $"{o.Code}"),
|
|
|
+ Code = o.Code,
|
|
|
+ Title = o.Title,
|
|
|
+ Version = o.Version,
|
|
|
+ CreationName = cus.Name,
|
|
|
+ CreationBMName = sys.OrgName,
|
|
|
+ KnowledgeTypeId = o.KnowledgeTypeId,
|
|
|
+ KnowledgeTypeName = kn.SpliceName,
|
|
|
+ IsDeleted = o.IsDeleted,
|
|
|
+ HotspotId = o.HotspotId,
|
|
|
+ OnShelfTime = o.OnShelfTime,
|
|
|
+ CreationTime = o.CreationTime,
|
|
|
+ PageView = o.PageView,
|
|
|
+ Status = o.Status,
|
|
|
+ OffShelfTime = o.OffShelfTime,
|
|
|
+ LastModificationTime = o.LastModificationTime
|
|
|
})
|
|
|
.MergeTable()//将结果合并成一个表
|
|
|
- .Where(it => it.index2 == 1)
|
|
|
-
|
|
|
- //.Includes(it => it.User)
|
|
|
- //.Includes(it => it.SystemOrganize)
|
|
|
- //.Includes(it => it.KnowledgeType)
|
|
|
- //.Where(p => p.IsDeleted == false)//&& p.Status != EKnowledgeStatus.Update
|
|
|
- //.WhereIF(!string.IsNullOrEmpty(pagedDto.CreateUserName), d => d.User.Name.Contains(pagedDto.CreateUserName!))
|
|
|
- //.WhereIF(!string.IsNullOrEmpty(pagedDto.CreateBMName), d => d.SystemOrganize.OrgName.Contains(pagedDto.CreateBMName!))
|
|
|
- //.WhereIF(!string.IsNullOrEmpty(pagedDto.Title), d => d.Title.Contains(pagedDto.Title!))
|
|
|
- //.WhereIF(!string.IsNullOrEmpty(pagedDto.KnowledgeTypeId), d => d.KnowledgeTypeId == pagedDto.KnowledgeTypeId)
|
|
|
- //.WhereIF(!string.IsNullOrEmpty(pagedDto.HotspotId), d => d.HotspotId == pagedDto.HotspotId)
|
|
|
- //.WhereIF(pagedDto.StartTime != null, d => d.OnShelfTime >= pagedDto.StartTime)
|
|
|
- //.WhereIF(pagedDto.EndTime != null, d => d.OnShelfTime <= pagedDto.EndTime)
|
|
|
-
|
|
|
- .ToJsonAsync();
|
|
|
- return temp;
|
|
|
+ .Where(d => d.index == 1)
|
|
|
+
|
|
|
+ .ToPageListAsync(pagedDto.PageIndex, pagedDto.PageSize, total);
|
|
|
+ return new PagedDto<KnowledgeDataDto>(total.Value, _mapper.Map<IReadOnlyList<KnowledgeDataDto>>(temp));
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -324,32 +343,57 @@ namespace Hotline.Api.Controllers
|
|
|
var bmList = await _knowledgeService.GetChildBMId(_sessionContext.RequiredUserId);
|
|
|
if (bmList == null || bmList.Count == 0)
|
|
|
return new PagedDto<KnowledgeDataDto>(0, _mapper.Map<IReadOnlyList<KnowledgeDataDto>>(new List<Knowledge>()));
|
|
|
- var (total, items) = await _knowledgeRepository
|
|
|
- .Queryable()
|
|
|
- .Includes(it => it.User)
|
|
|
- .Includes(it => it.SystemOrganize)
|
|
|
- .Includes(it => it.KnowledgeType)
|
|
|
- .Where(p => p.IsDeleted == false && p.IsHistory == false)//
|
|
|
- .Where(p => bmList.Contains(p.CreatorOrgId))//组织Id
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateUserName), d => d.User.Name.Contains(pagedDto.CreateUserName!))//创建人
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateBMName), d => d.SystemOrganize.OrgName.Contains(pagedDto.CreateBMName!))//创建部门
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.Title), d => d.Title.Contains(pagedDto.Title!))//知识标题
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.KnowledgeTypeId), d => d.KnowledgeTypeId == pagedDto.KnowledgeTypeId)//知识分类
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.HotspotId), d => d.HotspotId == pagedDto.HotspotId)//热点
|
|
|
- //创建时间
|
|
|
- .WhereIF(pagedDto.StartTime != null, d => d.CreationTime >= pagedDto.StartTime)
|
|
|
- .WhereIF(pagedDto.EndTime != null, d => d.CreationTime <= pagedDto.EndTime)
|
|
|
+
|
|
|
+ RefAsync<int> total = 0;
|
|
|
+ var temp = await _knowledgeRepository
|
|
|
+ .Queryable()
|
|
|
+ .LeftJoin<User>((o, cus) => o.CreatorId == cus.Id)
|
|
|
+ .LeftJoin<SystemOrganize>((o, cus, sys) => o.CreatorOrgId == sys.Id)
|
|
|
+ .LeftJoin<KnowledgeType>((o, cus, sys, kn) => o.KnowledgeTypeId == kn.Id)
|
|
|
+
|
|
|
+ .Where((o, cus, sys, kn) => o.IsDeleted == false)
|
|
|
+ .Where((o, cus, sys, kn) => bmList.Contains(o.CreatorOrgId!))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.Title), (o, cus, sys, kn) => o.Title.Contains(pagedDto.Title!))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.KnowledgeTypeId), (o, cus, sys, kn) => o.KnowledgeTypeId == pagedDto.KnowledgeTypeId)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.HotspotId), (o, cus, sys, kn) => o.HotspotId == pagedDto.HotspotId)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateUserName), (o, cus, sys, kn) => cus.Name.Contains(pagedDto.CreateUserName!))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateBMName), (o, cus, sys, kn) => sys.OrgName.Contains(pagedDto.CreateBMName!))
|
|
|
+
|
|
|
+ //创建时间
|
|
|
+ .WhereIF(pagedDto.StartTime != null, (o, cus, sys, kn) => o.CreationTime >= pagedDto.StartTime)
|
|
|
+ .WhereIF(pagedDto.EndTime != null, (o, cus, sys, kn) => o.CreationTime <= pagedDto.EndTime)
|
|
|
//上架时间
|
|
|
- .WhereIF(pagedDto.StartOnShelfTime != null, d => d.OnShelfTime >= pagedDto.StartTime)
|
|
|
- .WhereIF(pagedDto.EndOnShelfTime != null, d => d.OnShelfTime <= pagedDto.EndTime)
|
|
|
+ .WhereIF(pagedDto.StartOnShelfTime != null, (o, cus, sys, kn) => o.OnShelfTime >= pagedDto.StartTime)
|
|
|
+ .WhereIF(pagedDto.EndOnShelfTime != null, (o, cus, sys, kn) => o.OnShelfTime <= pagedDto.EndTime)
|
|
|
//下架时间
|
|
|
- .WhereIF(pagedDto.StartOffShelfTime != null, d => d.OffShelfTime >= pagedDto.StartTime)
|
|
|
- .WhereIF(pagedDto.EndOffShelfTime != null, d => d.OffShelfTime <= pagedDto.EndTime)
|
|
|
+ .WhereIF(pagedDto.StartOffShelfTime != null, (o, cus, sys, kn) => o.OffShelfTime >= pagedDto.StartTime)
|
|
|
+ .WhereIF(pagedDto.EndOffShelfTime != null, (o, cus, sys, kn) => o.OffShelfTime <= pagedDto.EndTime)
|
|
|
|
|
|
- .OrderByDescending(p => p.CreationTime)
|
|
|
- .ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize);
|
|
|
+ .Select((o, cus, sys, kn) => new
|
|
|
+ {
|
|
|
+ Id = o.Id,
|
|
|
+ index = SqlFunc.RowNumber($"{o.Version} desc ", $"{o.Code}"),
|
|
|
+ Code = o.Code,
|
|
|
+ Title = o.Title,
|
|
|
+ Version = o.Version,
|
|
|
+ CreationName = cus.Name,
|
|
|
+ CreationBMName = sys.OrgName,
|
|
|
+ KnowledgeTypeId = o.KnowledgeTypeId,
|
|
|
+ KnowledgeTypeName = kn.SpliceName,
|
|
|
+ IsDeleted = o.IsDeleted,
|
|
|
+ HotspotId = o.HotspotId,
|
|
|
+ OnShelfTime = o.OnShelfTime,
|
|
|
+ CreationTime = o.CreationTime,
|
|
|
+ PageView = o.PageView,
|
|
|
+ Status = o.Status,
|
|
|
+ OffShelfTime = o.OffShelfTime,
|
|
|
+ LastModificationTime = o.LastModificationTime
|
|
|
+ })
|
|
|
+ .MergeTable()//将结果合并成一个表
|
|
|
+ .Where(d => d.index == 1)
|
|
|
|
|
|
- return new PagedDto<KnowledgeDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeDataDto>>(items));
|
|
|
+ .ToPageListAsync(pagedDto.PageIndex, pagedDto.PageSize, total);
|
|
|
+ return new PagedDto<KnowledgeDataDto>(total.Value, _mapper.Map<IReadOnlyList<KnowledgeDataDto>>(temp));
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -363,24 +407,49 @@ namespace Hotline.Api.Controllers
|
|
|
var bmList = await _knowledgeService.GetChildBMId(_sessionContext.RequiredUserId);
|
|
|
if (bmList == null || bmList.Count == 0)
|
|
|
return new PagedDto<KnowledgeDataDto>(0, _mapper.Map<IReadOnlyList<KnowledgeDataDto>>(new List<Knowledge>()));
|
|
|
- var (total, items) = await _knowledgeRepository
|
|
|
- .Queryable()
|
|
|
- .Includes(it => it.User)
|
|
|
- .Includes(it => it.SystemOrganize)
|
|
|
- .Includes(it => it.KnowledgeType)
|
|
|
- .Where(p => p.IsOnShelf == true && p.Status == EKnowledgeStatus.Succeed && p.IsDeleted == false)
|
|
|
- .Where(p => bmList.Contains(p.CreatorOrgId))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateUserName), d => d.User.Name.Contains(pagedDto.CreateUserName!))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateBMName), d => d.SystemOrganize.OrgName.Contains(pagedDto.CreateBMName!))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.Title), d => d.Title.Contains(pagedDto.Title!))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.KnowledgeTypeId), d => d.KnowledgeTypeId == pagedDto.KnowledgeTypeId)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.HotspotId), d => d.HotspotId == pagedDto.HotspotId)
|
|
|
- .WhereIF(pagedDto.StartTime != null, d => d.OnShelfTime >= pagedDto.StartTime)
|
|
|
- .WhereIF(pagedDto.EndTime != null, d => d.OnShelfTime <= pagedDto.EndTime)
|
|
|
- .OrderByDescending(p => p.CreationTime)
|
|
|
- .ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize);
|
|
|
|
|
|
- return new PagedDto<KnowledgeDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeDataDto>>(items));
|
|
|
+ RefAsync<int> total = 0;
|
|
|
+ var temp = await _knowledgeRepository
|
|
|
+ .Queryable()
|
|
|
+ .LeftJoin<User>((o, cus) => o.CreatorId == cus.Id)
|
|
|
+ .LeftJoin<SystemOrganize>((o, cus, sys) => o.CreatorOrgId == sys.Id)
|
|
|
+ .LeftJoin<KnowledgeType>((o, cus, sys, kn) => o.KnowledgeTypeId == kn.Id)
|
|
|
+
|
|
|
+ .Where((o, cus, sys, kn) => o.IsDeleted == false && o.IsOnShelf == true && o.Status == EKnowledgeStatus.Succeed)
|
|
|
+ .Where((o, cus, sys, kn) => bmList.Contains(o.CreatorOrgId!))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.Title), (o, cus, sys, kn) => o.Title.Contains(pagedDto.Title!))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.KnowledgeTypeId), (o, cus, sys, kn) => o.KnowledgeTypeId == pagedDto.KnowledgeTypeId)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.HotspotId), (o, cus, sys, kn) => o.HotspotId == pagedDto.HotspotId)
|
|
|
+ .WhereIF(pagedDto.StartTime != null, (o, cus, sys, kn) => o.OnShelfTime >= pagedDto.StartTime)
|
|
|
+ .WhereIF(pagedDto.EndTime != null, (o, cus, sys, kn) => o.OnShelfTime <= pagedDto.EndTime)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateUserName), (o, cus, sys, kn) => cus.Name.Contains(pagedDto.CreateUserName!))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateBMName), (o, cus, sys, kn) => sys.OrgName.Contains(pagedDto.CreateBMName!))
|
|
|
+
|
|
|
+ .Select((o, cus, sys, kn) => new
|
|
|
+ {
|
|
|
+ Id = o.Id,
|
|
|
+ index = SqlFunc.RowNumber($"{o.Version} desc ", $"{o.Code}"),
|
|
|
+ Code = o.Code,
|
|
|
+ Title = o.Title,
|
|
|
+ Version = o.Version,
|
|
|
+ CreationName = cus.Name,
|
|
|
+ CreationBMName = sys.OrgName,
|
|
|
+ KnowledgeTypeId = o.KnowledgeTypeId,
|
|
|
+ KnowledgeTypeName = kn.SpliceName,
|
|
|
+ IsDeleted = o.IsDeleted,
|
|
|
+ HotspotId = o.HotspotId,
|
|
|
+ OnShelfTime = o.OnShelfTime,
|
|
|
+ CreationTime = o.CreationTime,
|
|
|
+ PageView = o.PageView,
|
|
|
+ Status = o.Status,
|
|
|
+ OffShelfTime = o.OffShelfTime,
|
|
|
+ LastModificationTime = o.LastModificationTime
|
|
|
+ })
|
|
|
+ .MergeTable()//将结果合并成一个表
|
|
|
+ .Where(d => d.index == 1)
|
|
|
+ .OrderByDescending(p => p.CreationTime)
|
|
|
+ .ToPageListAsync(pagedDto.PageIndex, pagedDto.PageSize, total);
|
|
|
+ return new PagedDto<KnowledgeDataDto>(total.Value, _mapper.Map<IReadOnlyList<KnowledgeDataDto>>(temp));
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -394,24 +463,50 @@ namespace Hotline.Api.Controllers
|
|
|
var bmList = await _knowledgeService.GetChildBMId(_sessionContext.RequiredUserId);
|
|
|
if (bmList == null || bmList.Count == 0)
|
|
|
return new PagedDto<KnowledgeDataDto>(0, _mapper.Map<IReadOnlyList<KnowledgeDataDto>>(new List<Knowledge>()));
|
|
|
- var (total, items) = await _knowledgeRepository
|
|
|
- .Queryable()
|
|
|
- .Includes(it => it.User)
|
|
|
- .Includes(it => it.SystemOrganize)
|
|
|
- .Includes(it => it.KnowledgeType)
|
|
|
- .Where(p => p.IsOnShelf == false && p.Status == EKnowledgeStatus.Succeed && p.IsDeleted == false)
|
|
|
- .Where(p => bmList.Contains(p.CreatorOrgId))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateUserName), d => d.User.Name.Contains(pagedDto.CreateUserName!))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateBMName), d => d.SystemOrganize.OrgName.Contains(pagedDto.CreateBMName!))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.Title), d => d.Title.Contains(pagedDto.Title!))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.KnowledgeTypeId), d => d.KnowledgeTypeId == pagedDto.KnowledgeTypeId)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.HotspotId), d => d.HotspotId == pagedDto.HotspotId)
|
|
|
- .WhereIF(pagedDto.StartTime != null, d => d.OffShelfTime >= pagedDto.StartTime)
|
|
|
- .WhereIF(pagedDto.EndTime != null, d => d.OffShelfTime <= pagedDto.EndTime)
|
|
|
- .OrderByDescending(p => p.CreationTime)
|
|
|
- .ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize);
|
|
|
|
|
|
- return new PagedDto<KnowledgeDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeDataDto>>(items));
|
|
|
+ RefAsync<int> total = 0;
|
|
|
+ var temp = await _knowledgeRepository
|
|
|
+ .Queryable()
|
|
|
+ .LeftJoin<User>((o, cus) => o.CreatorId == cus.Id)
|
|
|
+ .LeftJoin<SystemOrganize>((o, cus, sys) => o.CreatorOrgId == sys.Id)
|
|
|
+ .LeftJoin<KnowledgeType>((o, cus, sys, kn) => o.KnowledgeTypeId == kn.Id)
|
|
|
+
|
|
|
+ .Where((o, cus, sys, kn) => o.IsDeleted == false && o.IsOnShelf == false && o.Status == EKnowledgeStatus.Succeed)//
|
|
|
+ .Where((o, cus, sys, kn) => bmList.Contains(o.CreatorOrgId!))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.Title), (o, cus, sys, kn) => o.Title.Contains(pagedDto.Title!))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.KnowledgeTypeId), (o, cus, sys, kn) => o.KnowledgeTypeId == pagedDto.KnowledgeTypeId)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.HotspotId), (o, cus, sys, kn) => o.HotspotId == pagedDto.HotspotId)
|
|
|
+ .WhereIF(pagedDto.StartTime != null, (o, cus, sys, kn) => o.OffShelfTime >= pagedDto.StartTime)
|
|
|
+ .WhereIF(pagedDto.EndTime != null, (o, cus, sys, kn) => o.OffShelfTime <= pagedDto.EndTime)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateUserName), (o, cus, sys, kn) => cus.Name.Contains(pagedDto.CreateUserName!))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateBMName), (o, cus, sys, kn) => sys.OrgName.Contains(pagedDto.CreateBMName!))
|
|
|
+
|
|
|
+ .Select((o, cus, sys, kn) => new
|
|
|
+ {
|
|
|
+ Id = o.Id,
|
|
|
+ index = SqlFunc.RowNumber($"{o.Version} desc ", $"{o.Code}"),
|
|
|
+ Code = o.Code,
|
|
|
+ Title = o.Title,
|
|
|
+ Version = o.Version,
|
|
|
+ CreationName = cus.Name,
|
|
|
+ CreationBMName = sys.OrgName,
|
|
|
+ KnowledgeTypeId = o.KnowledgeTypeId,
|
|
|
+ KnowledgeTypeName = kn.SpliceName,
|
|
|
+ IsDeleted = o.IsDeleted,
|
|
|
+ HotspotId = o.HotspotId,
|
|
|
+ OnShelfTime = o.OnShelfTime,
|
|
|
+ CreationTime = o.CreationTime,
|
|
|
+ PageView = o.PageView,
|
|
|
+ Status = o.Status,
|
|
|
+ OffShelfTime = o.OffShelfTime,
|
|
|
+ LastModificationTime = o.LastModificationTime
|
|
|
+ })
|
|
|
+ .MergeTable()//将结果合并成一个表
|
|
|
+ .Where(d => d.index == 1)
|
|
|
+ .OrderByDescending(p => p.CreationTime)
|
|
|
+ .ToPageListAsync(pagedDto.PageIndex, pagedDto.PageSize, total);
|
|
|
+ return new PagedDto<KnowledgeDataDto>(total.Value, _mapper.Map<IReadOnlyList<KnowledgeDataDto>>(temp));
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -526,18 +621,33 @@ namespace Hotline.Api.Controllers
|
|
|
if (bmList == null || bmList.Count == 0)
|
|
|
return new PagedDto<KnowledgeRetrievalDataDto>(0, _mapper.Map<IReadOnlyList<KnowledgeRetrievalDataDto>>(new List<Knowledge>()));
|
|
|
|
|
|
- var (total, items) = await _knowledgeRepository
|
|
|
+ string a = EKnowledgeRetrievalType.All.ToString();
|
|
|
+ RefAsync<int> total = 0;
|
|
|
+ var temp = await _knowledgeRepository
|
|
|
.Queryable()
|
|
|
.Where(p => p.IsDeleted == false && p.Status == EKnowledgeStatus.Succeed)
|
|
|
- .Where(p => bmList.Contains(p.CreatorOrgId)) //是否需要验证本部门以及下级部门的数据,不要注释此行
|
|
|
- .WhereIF(pagedDto.RetrievalType == EKnowledgeRetrievalType.All.ToString(), d => d.Title.Contains(pagedDto.Keyword) || d.Content.Contains(pagedDto.Keyword) || d.Additions.Contains(pagedDto.Keyword))
|
|
|
+ .Where(p => bmList.Contains(p.CreatorOrgId!)) //是否需要验证本部门以及下级部门的数据,不要注释此行
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.RetrievalType) || pagedDto.RetrievalType == EKnowledgeRetrievalType.All.ToString(),
|
|
|
+ d => d.Title.Contains(pagedDto.Keyword) || d.Content.Contains(pagedDto.Keyword) || d.Additions.Contains(pagedDto.Keyword))
|
|
|
.WhereIF(pagedDto.RetrievalType == EKnowledgeRetrievalType.Title.ToString(), d => d.Title.Contains(pagedDto.Keyword))
|
|
|
.WhereIF(pagedDto.RetrievalType == EKnowledgeRetrievalType.Content.ToString(), d => d.Content.Contains(pagedDto.Keyword))
|
|
|
.WhereIF(pagedDto.RetrievalType == EKnowledgeRetrievalType.Enclosure.ToString(), d => d.Additions.Contains(pagedDto.Keyword))
|
|
|
+
|
|
|
+ .Select(o => new
|
|
|
+ {
|
|
|
+ Id = o.Id,
|
|
|
+ index = SqlFunc.RowNumber($"{o.Version} desc ", $"{o.Code}"),
|
|
|
+ Code = o.Code,
|
|
|
+ Title = o.Title,
|
|
|
+ Summary = o.Summary,
|
|
|
+ Content = o.Content,
|
|
|
+ PageView = o.PageView
|
|
|
+ })
|
|
|
+
|
|
|
.OrderByDescending(p => p.PageView)
|
|
|
- .ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize);
|
|
|
+ .ToPageListAsync(pagedDto.PageIndex, pagedDto.PageSize, total);
|
|
|
|
|
|
- return new PagedDto<KnowledgeRetrievalDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeRetrievalDataDto>>(items));
|
|
|
+ return new PagedDto<KnowledgeRetrievalDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeRetrievalDataDto>>(temp));
|
|
|
}
|
|
|
#endregion
|
|
|
|