Browse Source

特提统计

田爽 1 year ago
parent
commit
0a57ff9828

+ 27 - 14
src/Hotline.Api/Controllers/Bi/BiOrderController.cs

@@ -2,24 +2,17 @@
 using Hotline.Repository.SqlSugar.Extensions;
 using Hotline.Settings;
 using Hotline.Settings.Hotspots;
-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;
 using Hotline.Share.Requests;
-using Hotline.Users;
 using XF.Domain.Repository;
-using Hotline.Caching.Services;
-using Hotline.Share.Dtos.CallCenter;
-using Microsoft.AspNetCore.Authorization;
 using Hotline.Caching.Interfaces;
-using System.Data;
 using Hotline.FlowEngine.Workflows;
+using Hotline.Share.Dtos.CallCenter;
 using MapsterMapper;
-using Microsoft.EntityFrameworkCore.Query.Internal;
 
 namespace Hotline.Api.Controllers.Bi
 {
@@ -68,7 +61,6 @@ namespace Hotline.Api.Controllers.Bi
                 .LeftJoin<SystemOrganize>((x, o) => x.ActualHandleOrgCode == o.Id)
                 .WhereIF(dto.StartTime.HasValue, (x, o) => x.CreationTime >= dto.StartTime)
                 .WhereIF(dto.EndTime.HasValue, (x, o) => x.CreationTime <= dto.EndTime)
-               
                 .GroupBy((x, o) => new { x.ActualHandleOrgCode, o.Name })
                 .Select((x, o) => new OrderBiOrgDataListVo
                 {
@@ -78,14 +70,15 @@ namespace Hotline.Api.Controllers.Bi
                     NoHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF((int)x.Status < 300 && x.ExpiredTime > x.FiledTime, 1, 0)),
                 }).MergeTable();
             var queryCountersign = _workflowCountersignRepository.Queryable()
+                .LeftJoin<WorkflowCountersignMember>((x,o)=>x.Id ==o.WorkflowCountersignId)
 	            .WhereIF(dto.StartTime.HasValue, x => x.CreationTime >= dto.StartTime)
 	            .WhereIF(dto.EndTime.HasValue, x=> x.CreationTime <= dto.EndTime)
-	            //.GroupBy((x, o) => new { o.Id, o.Name })
-	            .Select(x => new OrderBiOrgDataListVo
+                .GroupBy((x,o)=> o.Key)
+                .Select((x,o) => new OrderBiOrgDataListVo
 	            {
-		            OrgId =  x.Id,
-                    CounterHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonArrayLength(x.Members) > 0 && SqlFunc.JsonListObjectAny(x.Members, "IsHandled",true),1,0)),
-                    CounterNoHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonArrayLength(x.Members) > 0  &&SqlFunc.JsonListObjectAny(x.Members, "IsHandled", false), 1, 0)),
+					OrgId =  o.Key,
+                    CounterHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(o.IsHandled,1,0)),
+                    CounterNoHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(!o.IsHandled, 1, 0)),
 				}).MergeTable();
 
             var  query = queryOrder.LeftJoin(queryCountersign,(or,co)=>or.OrgId == co.OrgId)
@@ -316,5 +309,25 @@ namespace Hotline.Api.Controllers.Bi
 			var (total, items) = await query.ToPagedListAsync(dto, HttpContext.RequestAborted);
 			return new PagedDto<OrderBiSpecialListVo>(total, items);
 		}
+
+		/// <summary>
+		/// 获取工单特提信息列表
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[HttpGet("special_data_list/list")]
+		public async Task<PagedDto<OrderSpecialDto>> List([FromQuery] OrderSpecialListDto dto)
+		{
+			var (total, items) = await _orderSpecialRepository.Queryable()
+				.Includes(x => x.Order)
+				.WhereIF(!string.IsNullOrEmpty(dto.Keyword),
+					x => x.Order.No.Contains(dto.Keyword!) || x.Order.Title.Contains(dto.Keyword!))
+				.WhereIF(!string.IsNullOrEmpty(dto.Cause),
+					x => x.Cause != null && x.Cause.Equals(dto.Cause))
+				.WhereIF(dto.State.HasValue, x => x.State == dto.State)
+				.OrderByDescending(x => x.CreationTime)
+				.ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
+			return new PagedDto<OrderSpecialDto>(total, _mapper.Map<IReadOnlyList<OrderSpecialDto>>(items));
+		}
 	}
 }

+ 2 - 0
src/Hotline.Share/Dtos/Order/OrderSpecialDto.cs

@@ -239,6 +239,8 @@ namespace Hotline.Share.Dtos.Order
 		///  审核结果  0  待审核  1 审核通过  2 审核不通过
 		/// </summary>
 		public int? State { get; set; }
+
+		public string? Cause { get; set; }
 	}
 	public class OrderSpecialHandleTime 
 	{