田爽 пре 1 година
родитељ
комит
adb859e258

+ 19 - 15
src/Hotline.Api/Controllers/Bi/KnowledgeController.cs

@@ -8,6 +8,8 @@ using Hotline.Share.Dtos.Quality;
 using Org.BouncyCastle.Utilities;
 using Polly.Caching;
 using SqlSugar;
+using Hotline.Settings;
+using XF.Utility.EnumExtensions;
 
 namespace Hotline.Api.Controllers.Bi
 {
@@ -20,22 +22,24 @@ namespace Hotline.Api.Controllers.Bi
 		}
 
 		[HttpGet("data_list")]
-		public async Task<PagedDto<Object>> DataList([FromQuery] QualityBiDataListDto dto)
+		public async Task<PagedDto<KnowledgeBiDataListVo>> DataList([FromQuery] QualityBiDataListDto dto)
 		{
 			var total = 0;
-			var query = _knowledgeRepository.Queryable()
-				.Includes(x => x.SourceOrganize)
-				.WhereIF(dto.CreationTimeStart.HasValue, x => x.CreationTime >= dto.CreationTimeStart)
-				.WhereIF(dto.CreationTimeEnd.HasValue, x => x.CreationTime <= dto.CreationTimeEnd)
-				.Select(x => new {
-					OrgName = x.SourceOrganize.Name,
+			var query = _knowledgeRepository.Queryable(false,true,false)
+				.LeftJoin<SystemOrganize>((x,o)=>x.SourceOrganizeId == o.Id)
+				.WhereIF(dto.CreationTimeStart.HasValue, (x,o) => x.CreationTime >= dto.CreationTimeStart)
+				.WhereIF(dto.CreationTimeEnd.HasValue, (x,o)=> x.CreationTime <= dto.CreationTimeEnd)
+				.GroupBy((x,o) =>  new { x.SourceOrganizeId, o.Name, o.OrgType })
+				.Select((x,o) => new KnowledgeBiDataListVo
+				{
+					OrgName = o.Name,
 					OrgId = x.SourceOrganizeId,
-					OrgType = x.SourceOrganize.OrgTypeText,
-					AddNum = SqlFunc.MappingColumn(default(int),"SUM(CASE WHEN \"Status\" =3 THEN 1 ELSE 0 END)"),
-					DeleteNum = SqlFunc.MappingColumn(default(int), "SUM(CASE WHEN \"IsDeleted\" ='t' THEN 1 ELSE 0 END)"),
-					SendBackNum = SqlFunc.MappingColumn(default(int), "SUM(CASE WHEN \"Status\" =5 THEN 1 ELSE 0 END)"),
-					PassNum = SqlFunc.MappingColumn(default(int), "SUM(CASE WHEN \"Status\" =3 THEN 1 ELSE 0 END)")
-				});
+					OrgType = o.OrgType,
+					AddNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status == EKnowledgeStatus.OnShelf, 1, 0)),
+					DeleteNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.IsDeleted, 1, 0)),
+					SendBackNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status == EKnowledgeStatus.Revert, 1, 0)),
+					PassNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status == EKnowledgeStatus.OnShelf, 1, 0))
+				}).MergeTable();
 			switch (dto.SortField)
 			{
 				case 0:
@@ -51,9 +55,9 @@ namespace Hotline.Api.Controllers.Bi
 					query = dto.SortRule == 0 ? query.OrderBy(x => x.PassNum) : query.OrderByDescending(x => x.PassNum);
 					break;
 			}
-			query.GroupBy(x => x.OrgId);
+			var sql = query.ToSql();
             var  items = query.ToPageList(dto.PageIndex, dto.PageSize,ref total);
-			return new PagedDto<Object>(total, items);
+			return new PagedDto<KnowledgeBiDataListVo>(total, items);
 		}
 	}
 }

+ 31 - 0
src/Hotline.Share/Dtos/Knowledge/KnowledgeBiDto.cs

@@ -0,0 +1,31 @@
+using Hotline.Settings;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using XF.Utility.EnumExtensions;
+
+namespace Hotline.Share.Dtos.Knowledge
+{
+	public class KnowledgeBiDataListVo
+	{
+		public string OrgName { get; set; }
+
+		public string OrgId { get; set; }
+		/// <summary>
+		/// 部门类型
+		/// </summary>
+		public EOrgType OrgType { get; set; }
+
+		public int AddNum { get; set; }
+
+		public int DeleteNum { get; set; }
+
+		public int SendBackNum { get; set; }
+
+		public int PassNum { get; set; }
+
+		public string OrgTypeText => OrgType.GetDescription();
+	}
+}