浏览代码

修改知识库数据查询

TANG JIANG 2 年之前
父节点
当前提交
ebf348ecc8

+ 203 - 93
src/Hotline.Api/Controllers/KnowledgeController.cs

@@ -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
 

+ 5 - 0
src/Hotline.Share/Dtos/Knowledge/KnowledgeDataDto.cs

@@ -45,6 +45,11 @@ namespace Hotline.Share.Dtos.Knowledge
     /// </summary>
     public record KnowledgeDataDto : KnowledgeBaseDataDto
     {
+        /// <summary>
+        /// 申请部门
+        /// </summary>
+        public string CreationBMName { get; set; }
+
         /// <summary>
         /// 是否上架
         /// </summary>

+ 0 - 5
src/Hotline/KnowledgeBase/Knowledge.cs

@@ -56,11 +56,6 @@ public class Knowledge : WorkflowEntity// FullStateEntity
     /// </summary>
     public EKnowledgeStatus Status { get; set; }
 
-    /// <summary>
-    /// 是否历史数据
-    /// </summary>
-    public bool IsHistory { get; set; }
-
     /// <summary>
     /// 是否上架
     /// </summary>