田爽 1 vuosi sitten
vanhempi
commit
d5b2ab0d6c

+ 6 - 10
src/Hotline.Api/Controllers/Bi/BiKnowledgeController.cs

@@ -1,15 +1,10 @@
 using Hotline.KnowledgeBase;
-using Hotline.Repository.SqlSugar.Extensions;
 using Hotline.Share.Dtos.Knowledge;
 using Hotline.Share.Dtos;
 using Hotline.Share.Enums.KnowledgeBase;
 using Microsoft.AspNetCore.Mvc;
-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
 {
@@ -27,13 +22,14 @@ namespace Hotline.Api.Controllers.Bi
 		/// <param name="dto"></param>
 		/// <returns></returns>
 		[HttpGet("data_list")]
-		public async Task<PagedDto<KnowledgeBiDataListVo>> DataList([FromQuery] QualityBiDataListDto dto)
+		public async Task<PagedDto<KnowledgeBiDataListVo>> DataList([FromQuery] KnowledgeBiDataListDto dto)
 		{
 			var total = 0;
 			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)
+				.WhereIF(!string.IsNullOrEmpty(dto.Keyword),(x,o)=> o.Name.Contains(dto.Keyword!))
 				.GroupBy((x,o) =>  new { x.SourceOrganizeId, o.Name, o.OrgType })
 				.Select((x,o) => new KnowledgeBiDataListVo
 				{
@@ -47,16 +43,16 @@ namespace Hotline.Api.Controllers.Bi
 				}).MergeTable();
 			switch (dto.SortField)
 			{
-				case 0:
+				case "addNum":
 					query = dto.SortRule == 0 ? query.OrderBy(x => x.AddNum) : query.OrderByDescending(x => x.AddNum);
 					break;
-				case 1:
+				case "deleteNum":
 					query = dto.SortRule == 0 ? query.OrderBy(x => x.DeleteNum) : query.OrderByDescending(x => x.DeleteNum);
 					break;
-				case 2:
+				case "sendBackNum":
 					query = dto.SortRule == 0 ? query.OrderBy(x => x.SendBackNum) : query.OrderByDescending(x => x.SendBackNum);
 					break;
-				case 3:
+				case "passNum":
 					query = dto.SortRule == 0 ? query.OrderBy(x => x.PassNum) : query.OrderByDescending(x => x.PassNum);
 					break;
 			}

+ 52 - 0
src/Hotline.Api/Controllers/Bi/BiOrderController.cs

@@ -1,4 +1,12 @@
 using Hotline.Orders;
+using Hotline.Settings;
+using Hotline.Share.Dtos.Knowledge;
+using Hotline.Share.Dtos;
+using Hotline.Share.Dtos.Order;
+using Hotline.Share.Enums.KnowledgeBase;
+using Hotline.Share.Enums.Order;
+using Microsoft.AspNetCore.Mvc;
+using SqlSugar;
 
 namespace Hotline.Api.Controllers.Bi
 {
@@ -9,5 +17,49 @@ namespace Hotline.Api.Controllers.Bi
 		{
 			_orderRepository = orderRepository;
 		}
+
+		/// <summary>
+		/// 部门数据统计
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[HttpGet("org_data_list")]
+		public async Task<PagedDto<OrderBiOrgDataListVo>> DataList([FromQuery] OrderBiOrgDataListDto dto)
+		{
+			//TODO 会签统计待处理 目前缺少关联关系
+			var total = 0;
+			var query = _orderRepository.Queryable(false, false, false)
+				.LeftJoin<SystemOrganize>((x, o) => x.ActualHandleOrgCode == o.Id)
+				.WhereIF(dto.CreationTimeStart.HasValue, (x, o) => x.CreationTime >= dto.CreationTimeStart)
+				.WhereIF(dto.CreationTimeEnd.HasValue, (x, o) => x.CreationTime <= dto.CreationTimeEnd)
+				.WhereIF(!string.IsNullOrEmpty(dto.Keyword), (x, o) => o.Name.Contains(dto.Keyword!))
+				.GroupBy((x, o) => new { x.ActualHandleOrgCode, o.Name })
+				.Select((x, o) => new OrderBiOrgDataListVo
+				{
+					OrgName = o.Name,
+					OrgId = x.ActualHandleOrgCode,
+					HandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF((int)x.Status > 300 && x.ExpiredTime > x.FiledTime, 1, 0)),
+					//CounterHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.IsDeleted, 1, 0)),
+					NoHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF((int)x.Status < 300 && x.ExpiredTime > x.FiledTime, 1, 0)),
+					//CounterNoHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status == EKnowledgeStatus.OnShelf, 1, 0))
+				}).MergeTable();
+			switch (dto.SortField)
+			{
+				case "handlerExtendedNum":
+					query = dto.SortRule == 0 ? query.OrderBy(x => x.HandlerExtendedNum) : query.OrderByDescending(x => x.HandlerExtendedNum);
+					break;
+				case "counterHandlerExtendedNum":
+					query = dto.SortRule == 0 ? query.OrderBy(x => x.CounterHandlerExtendedNum) : query.OrderByDescending(x => x.CounterHandlerExtendedNum);
+					break;
+				case "noHandlerExtendedNum":
+					query = dto.SortRule == 0 ? query.OrderBy(x => x.NoHandlerExtendedNum) : query.OrderByDescending(x => x.NoHandlerExtendedNum);
+					break;
+				case "counterNoHandlerExtendedNum":
+					query = dto.SortRule == 0 ? query.OrderBy(x => x.CounterNoHandlerExtendedNum) : query.OrderByDescending(x => x.CounterNoHandlerExtendedNum);
+					break;
+			}
+			var items = query.ToPageList(dto.PageIndex, dto.PageSize, ref total);
+			return new PagedDto<OrderBiOrgDataListVo>(total, items);
+		}
 	}
 }

+ 15 - 24
src/Hotline.Api/Controllers/QualityController.cs

@@ -542,33 +542,24 @@ namespace Hotline.Api.Controllers
 		[HttpPost("AiResult")]
 		public async Task AiResult([FromBody] AiQualityResultDto dto) 
 		{
-			try
+			var quality = await _qualitey.GetAsync(dto.source_data.customer_id);
+			if (quality is { State: EQualityState.Apply })
 			{
-				var quality = await _qualitey.GetAsync(dto.source_data.customer_id);
-				if (quality is { State: EQualityState.Apply }) 
+				List<QualityDetail> details = new List<QualityDetail>();
+				foreach (var item in dto.analysis_data.score_items)
 				{
-					List<QualityDetail> details = new List<QualityDetail>();
-                    foreach (var item in dto.analysis_data.score_items)
-                    {
-						QualityDetail detail = new QualityDetail
-						{
-							QualityId = quality.Id,
-							Second = 0,
-							Name = item.name,
-							//Content = item.name,
-							Grade = item.score
-						};
-						details.Add(detail);
-					}
-					await _qualiteyDetail.AddRangeAsync(details);
-                }
-			}
-			catch (Exception e)
-			{
-				Console.WriteLine(e);
-				throw;
+					QualityDetail detail = new QualityDetail
+					{
+						QualityId = quality.Id,
+						Second = 0,
+						Name = item.name,
+						//Content = item.name,
+						Grade = item.score
+					};
+					details.Add(detail);
+				}
+				await _qualiteyDetail.AddRangeAsync(details);
 			}
-			
 		}
 	}
 }

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

@@ -1,4 +1,5 @@
 using Hotline.Settings;
+using Hotline.Share.Requests;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -28,4 +29,28 @@ namespace Hotline.Share.Dtos.Knowledge
 
 		public string OrgTypeText => OrgType.GetDescription();
 	}
+
+
+	public record KnowledgeBiDataListDto : PagedKeywordRequest
+	{
+		/// <summary>
+		/// 开始时间
+		/// </summary>
+		public DateTime? CreationTimeStart { get; set; }
+
+		/// <summary>
+		/// 结束时间
+		/// </summary>
+		public DateTime? CreationTimeEnd { get; set; }
+
+		/// <summary>
+		/// 排序字段 0 新增数量 1 删除数量 2 退回数量 3 通过数量
+		/// </summary>
+		public string SortField { get; set; }
+
+		/// <summary>
+		/// 排序规则  0 升序  1 降序
+		/// </summary>
+		public int SortRule { get; set; }
+	}
 }

+ 47 - 0
src/Hotline.Share/Dtos/Order/OrderBiDto.cs

@@ -0,0 +1,47 @@
+using Hotline.Settings;
+using Hotline.Share.Requests;
+using XF.Utility.EnumExtensions;
+
+namespace Hotline.Share.Dtos.Order
+{
+	public class OrderBiOrgDataListVo
+	{
+		public string OrgName { get; set; }
+
+		public string OrgId { get; set; }
+
+		public int HandlerExtendedNum { get; set; }
+
+		public int CounterHandlerExtendedNum { get; set; }
+
+		public int NoHandlerExtendedNum { get; set; }
+
+		public int CounterNoHandlerExtendedNum { get; set; }
+
+		public int Subtotal => HandlerExtendedNum + CounterHandlerExtendedNum + NoHandlerExtendedNum + CounterNoHandlerExtendedNum;
+	}
+
+
+	public record OrderBiOrgDataListDto: PagedKeywordRequest
+	{
+		/// <summary>
+		/// 开始时间
+		/// </summary>
+		public DateTime? CreationTimeStart { get; set; }
+
+		/// <summary>
+		/// 结束时间
+		/// </summary>
+		public DateTime? CreationTimeEnd { get; set; }
+
+		/// <summary>
+		/// 排序字段 
+		/// </summary>
+		public string SortField { get; set; }
+
+		/// <summary>
+		/// 排序规则  0 升序  1 降序
+		/// </summary>
+		public int SortRule { get; set; }
+	}
+}

+ 0 - 22
src/Hotline.Share/Dtos/Quality/QualityDto.cs

@@ -200,26 +200,4 @@ namespace Hotline.Share.Dtos.Quality
 		public DateTime? CreationTimeStart { get; set; }
 		public DateTime? CreationTimeEnd { get; set; }
 	}
-	public record QualityBiDataListDto : PagedKeywordRequest
-	{
-		/// <summary>
-		/// 开始时间
-		/// </summary>
-		public DateTime? CreationTimeStart { get; set; }
-
-		/// <summary>
-		/// 结束时间
-		/// </summary>
-		public DateTime? CreationTimeEnd { get; set; }
-
-		/// <summary>
-		/// 排序字段 0 新增数量 1 删除数量 2 退回数量 3 通过数量
-		/// </summary>
-		public int SortField { get; set; }
-
-		/// <summary>
-		/// 排序规则  0 升序  1 降序
-		/// </summary>
-		public int SortRule { get; set; }
-	}
 }