Parcourir la source

部门延期统计明细

田爽 il y a 1 an
Parent
commit
9b15266a76

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

@@ -92,36 +92,51 @@ namespace Hotline.Api.Controllers.Bi
             _workflowStepHandleRepository = workflowStepHandleRepository;
         }
 
-        /// <summary>
-        /// 部门超期统计明细
-        /// </summary>
-        /// <param name="dto"></param>
-        /// <returns></returns>
-        [HttpGet("org_data_list_detail")]
-        public async Task<PagedDto<OrderDto>> OrgDataListDetail([FromQuery] OrgDataListDetailRequest dto)
-        {
-            dto.EndTime = dto.EndTime.AddDays(1).AddSeconds(-1);
-
-            var (total, items) = await _orderRepository.Queryable()
-            .Where(x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
-            .WhereIF(dto.QueryType == 1, x => x.Status >= EOrderStatus.Filed && x.ExpiredTime < x.FiledTime) //业务已办超期
-            //.WhereIF(dto.QueryType== 2,) //会签已办超期
-            .WhereIF(dto.QueryType == 3, x => x.Status < EOrderStatus.Filed && x.ExpiredTime < SqlFunc.GetDate()) //业务待办超期
-            .WhereIF(string.IsNullOrEmpty(dto.OrgCode), x => x.ActualHandleOrgCode == dto.OrgCode)
-            //.WhereIF(dto.QueryType ==4,) //会签待办超期
-            //.MergeTable();
-            .ToPagedListAsync(dto.PageIndex, dto.PageSize);
-
-            return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
-        }
-
-
-        /// <summary>
-        /// 部门超期统计
-        /// </summary>
-        /// <param name="dto"></param>
-        /// <returns></returns>
-        [HttpGet("org_data_list")]
+		/// <summary>
+		/// 部门超期统计明细
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[HttpGet("org_data_list_detail")]
+		public async Task<PagedDto<OrderDto>> OrgDataListDetail([FromQuery] OrgDataListDetailRequest dto)
+		{
+			dto.EndTime = dto.EndTime.AddDays(1).AddSeconds(-1);
+
+			var quer = _orderRepository.Queryable()
+					.Where(x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
+					.WhereIF(dto.QueryType == 1, x => x.Status >= EOrderStatus.Filed && x.ExpiredTime < x.FiledTime) //业务已办超期
+					.WhereIF(dto.QueryType == 3, x => x.Status < EOrderStatus.Filed && x.ExpiredTime < SqlFunc.GetDate()) //业务待办超期
+					.WhereIF(dto.QueryType == 5, x =>
+						(x.Status >= EOrderStatus.Filed && x.ExpiredTime < x.FiledTime) || (x.Status < EOrderStatus.Filed && x.ExpiredTime < SqlFunc.GetDate()))
+					.WhereIF(!string.IsNullOrEmpty(dto.OrgCode) && dto.QueryType is  1 or 3, x => x.ActualHandleOrgCode == dto.OrgCode);
+
+			if (dto.QueryType is 2 or 4 or 5)
+			{
+                var queryCountersign = _workflowCountersignRepository.Queryable()
+                    .LeftJoin<WorkflowCountersignMember>((x, o) => x.Id == o.WorkflowCountersignId)
+                    .Where((x, o) => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
+                    .WhereIF(dto.QueryType == 2, (x, o) => o.IsHandled == true) //会签已办超期
+                    .WhereIF(dto.QueryType == 4, (x, o) => o.IsHandled == false) //会签待办超期
+                    .WhereIF(!string.IsNullOrEmpty(dto.OrgCode) && dto.QueryType is 2 or 4 or 5, (x, o) => o.Key == dto.OrgCode)
+                    //.GroupBy((x,o)=>x.WorkflowId)
+                    .Select((x,o)=> new { Id= x.WorkflowId })
+                    .MergeTable();
+
+				quer = quer.InnerJoin(queryCountersign, (x, c) => x.WorkflowId == c.Id);
+                   
+			}
+			var (total, items) = await quer.ToPagedListAsync(dto.PageIndex, dto.PageSize);
+
+			return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
+		}
+
+
+		/// <summary>
+		/// 部门超期统计
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[HttpGet("org_data_list")]
         public async Task<PagedDto<OrderBiOrgDataListVo>> OrgDataList([FromQuery] ReportPagedRequest dto)
         {
             if (!dto.StartTime.HasValue || !dto.EndTime.HasValue) throw UserFriendlyException.SameMessage("请选择时间!");
@@ -145,22 +160,6 @@ namespace Hotline.Api.Controllers.Bi
                     NoHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(o.Status < EOrderStatus.Filed && o.ExpiredTime < SqlFunc.GetDate(), 1, 0)),
                 }).MergeTable();
 
-
-
-            //var queryOrder = _orderRepository.Queryable(false, false, false)
-            //    .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)
-            //    .WhereIF(IsCenter == false, (x, o) => x.ActualHandleOrgCode == _sessionContext.RequiredOrgId)
-            //    .GroupBy((x, o) => new { x.ActualHandleOrgCode, o.Name })
-            //    .Select((x, o) => new OrderBiOrgDataListVo
-            //    {
-            //        OrgName = o.Name,
-            //        OrgId = x.ActualHandleOrgCode,
-            //        HandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status >= EOrderStatus.Filed && x.ExpiredTime < x.FiledTime, 1, 0)),
-            //        NoHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status < EOrderStatus.Filed && x.ExpiredTime < SqlFunc.GetDate(), 1, 0)),
-            //    }).MergeTable();
-
             var queryCountersign = _workflowCountersignRepository.Queryable()
                 .LeftJoin<WorkflowCountersignMember>((x, o) => x.Id == o.WorkflowCountersignId)
                 .WhereIF(dto.StartTime.HasValue, x => x.CreationTime >= dto.StartTime)
@@ -503,12 +502,38 @@ namespace Hotline.Api.Controllers.Bi
             return list;
         }
 
-        /// <summary>
-        /// 特提统计
-        /// </summary>
-        /// <param name="dto"></param>
-        /// <returns></returns>
-        [HttpGet("special_data_list")]
+		/// <summary>
+		/// 部门延期统计明细
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[HttpGet("order-delay-data-detail")]
+        public async Task<PagedDto<OrderDelayDto>> QueryOrderDelayDataDetail([FromQuery] QueryOrderDelayDataDetailRequest dto)
+        {
+	        if (!dto.StartTime.HasValue || !dto.EndTime.HasValue) throw UserFriendlyException.SameMessage("请选择时间!");
+
+	        dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
+
+	        var (total, items) = await _orderDelayRepository.Queryable()
+                .Includes(x=>x.Order)
+		        .WhereIF(dto.StartTime.HasValue, x => x.CreationTime >= dto.StartTime)
+		        .WhereIF(dto.EndTime.HasValue, x => x.CreationTime <= dto.EndTime)
+		        .WhereIF(!string.IsNullOrEmpty(dto.OrgName), x => x.ApplyOrgName.Contains(dto.OrgName))
+                .WhereIF(dto.Type is 1, x=> x.DelayState == EDelayState.Pass)
+                .WhereIF(dto.Type is 2, x => x.DelayState == EDelayState.NoPass)
+                .WhereIF(dto.Type is 3, x => x.DelayState == EDelayState.Examining)
+                .WhereIF(dto.Type is 4, x => x.DelayState < EDelayState.Withdraw)
+                .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
+
+			return new PagedDto<OrderDelayDto>(total, _mapper.Map<IReadOnlyList<OrderDelayDto>>(items));
+		}
+
+		/// <summary>
+		/// 特提统计
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[HttpGet("special_data_list")]
         public async Task<PagedDto<OrderBiSpecialListVo>> SpecialDataList([FromQuery] ReportPagedRequest dto)
         {
             if (!dto.StartTime.HasValue || !dto.EndTime.HasValue) throw UserFriendlyException.SameMessage("请选择时间!");

+ 12 - 1
src/Hotline.Share/Requests/PagedKeywordRequest.cs

@@ -51,7 +51,7 @@ public record OrgDataListDetailRequest:PagedRequest
 	public string? No { get; set; }
 
 	/// <summary>
-	/// 查询状态 1:业务已办超期  2:会签已办超期  3:业务待办超期  4:会签待办超期
+	/// 查询状态 1:业务已办超期  2:会签已办超期  3:业务待办超期  4:会签待办超期  5:小计
 	/// </summary>
 	public int QueryType { get; set; }
 
@@ -136,6 +136,17 @@ public record QueryOrderDelayDataListRequest:ReportPagedRequest
 	public string? OrgName { get; set; }
 }
 
+public record QueryOrderDelayDataDetailRequest : ReportPagedRequest
+{
+	public string? OrgName { get; set; }
+
+	/// <summary>
+	/// 查询类型  1已同意次数 2 未同意次数 3  审批中次数 4 小计
+	/// </summary>
+	public int? Type { get; set; }
+
+}
+
 public record QueryOrderReTransactRequest : ReportPagedRequest
 {
 	public string? OrgName { get; set; }