TANG JIANG hai 1 ano
pai
achega
31851d26e5
Modificáronse 1 ficheiros con 100 adicións e 44 borrados
  1. 100 44
      src/Hotline.Api/Controllers/Bi/BiOrderController.cs

+ 100 - 44
src/Hotline.Api/Controllers/Bi/BiOrderController.cs

@@ -1757,8 +1757,36 @@ namespace Hotline.Api.Controllers.Bi
           .MergeTable();
             #endregion
 
-            return await _orderRepository.OrderUnionAll(queryOrder, queryPublish, queryCountersign, orderDelay, orderScreen, orderVisit);
+            var items = await _orderRepository.OrderUnionAll(queryOrder, queryPublish, queryCountersign, orderDelay, orderScreen, orderVisit);
 
+            var total = new DepartmentalProcessingStatisticsDataDto
+            {
+                OrgCode = "",
+                OrgName = "合计",
+                OrgType = EOrgType.City,
+                OrderCountNum = items.Sum(p => p.OrderCountNum),
+                YBOrderCountNum = items.Sum(p => p.YBOrderCountNum),
+                ZBOrderCountNum = items.Sum(p => p.ZBOrderCountNum),
+                Archived = items.Sum(p => p.Archived),
+                ToBeArchived = items.Sum(p => p.ToBeArchived),
+                WaitPublished = items.Sum(p => p.WaitPublished),
+                PublishedOpen = items.Sum(p => p.PublishedOpen),
+                PublishedNoOpen = items.Sum(p => p.PublishedNoOpen),
+                YBOverdue = items.Sum(p => p.YBOverdue),
+                ZBOverdue = items.Sum(p => p.ZBOverdue),
+                HQYBOverdue = items.Sum(p => p.HQYBOverdue),
+                HQZBOverdue = items.Sum(p => p.HQZBOverdue),
+                DelayEnd = items.Sum(p => p.DelayEnd),
+                DelayWait = items.Sum(p => p.DelayWait),
+                OrderDelayCount = items.Sum(p => p.OrderDelayCount),
+                ScreenCount = items.Sum(p => p.ScreenCount),
+                ScreenApproval = items.Sum(p => p.ScreenApproval),
+                ScreenPass = items.Sum(p => p.ScreenPass),
+                ScreenNotPass = items.Sum(p => p.ScreenNotPass),
+                SatisfactionCount = items.Sum(p => p.SatisfactionCount),
+                NotSatisfactionCount = items.Sum(p => p.NotSatisfactionCount)
+            };
+            return new { List = items, Total = total };
         }
 
         /// <summary>
@@ -2043,8 +2071,35 @@ namespace Hotline.Api.Controllers.Bi
           .MergeTable();
             #endregion
 
-            return await _orderRepository.OrderUnionAll(queryOrder, queryPublish, queryCountersign, orderDelay, orderScreen, orderVisit);
-
+            var items = await _orderRepository.OrderUnionAll(queryOrder, queryPublish, queryCountersign, orderDelay, orderScreen, orderVisit);
+            var total = new DepartmentalProcessingStatisticsDataDto
+            {
+                OrgCode = "",
+                OrgName = "合计",
+                OrgType = EOrgType.City,
+                OrderCountNum = items.Sum(p => p.OrderCountNum),
+                YBOrderCountNum = items.Sum(p => p.YBOrderCountNum),
+                ZBOrderCountNum = items.Sum(p => p.ZBOrderCountNum),
+                Archived = items.Sum(p => p.Archived),
+                ToBeArchived = items.Sum(p => p.ToBeArchived),
+                WaitPublished = items.Sum(p => p.WaitPublished),
+                PublishedOpen = items.Sum(p => p.PublishedOpen),
+                PublishedNoOpen = items.Sum(p => p.PublishedNoOpen),
+                YBOverdue = items.Sum(p => p.YBOverdue),
+                ZBOverdue = items.Sum(p => p.ZBOverdue),
+                HQYBOverdue = items.Sum(p => p.HQYBOverdue),
+                HQZBOverdue = items.Sum(p => p.HQZBOverdue),
+                DelayEnd = items.Sum(p => p.DelayEnd),
+                DelayWait = items.Sum(p => p.DelayWait),
+                OrderDelayCount = items.Sum(p => p.OrderDelayCount),
+                ScreenCount = items.Sum(p => p.ScreenCount),
+                ScreenApproval = items.Sum(p => p.ScreenApproval),
+                ScreenPass = items.Sum(p => p.ScreenPass),
+                ScreenNotPass = items.Sum(p => p.ScreenNotPass),
+                SatisfactionCount = items.Sum(p => p.SatisfactionCount),
+                NotSatisfactionCount = items.Sum(p => p.NotSatisfactionCount)
+            };
+            return new { List = items, Total = total };
         }
 
         /// <summary>
@@ -2271,7 +2326,7 @@ namespace Hotline.Api.Controllers.Bi
 
                 return new PagedDto<OrderDto>(total, dtos);
 
-            } 
+            }
             #endregion
 
             return new PagedDto<OrderDto>(total, new List<OrderDto>());
@@ -2572,19 +2627,19 @@ namespace Hotline.Api.Controllers.Bi
                 .LeftJoin<Workflow>((x, w) => x.WorkflowId == w.Id)
                 .LeftJoin<WorkflowStepHandler>((x, w, wfsh) => x.StepId == wfsh.WorkflowStepId)
                 .InnerJoin<SchedulingUser>((x, w, wfsh, su) => wfsh.UserId == su.UserId)
-				.Where((x, w, wfsh, su) => w.ModuleCode == "OrderHandle" && x.BusinessType == EBusinessType.Send)
+                .Where((x, w, wfsh, su) => w.ModuleCode == "OrderHandle" && x.BusinessType == EBusinessType.Send)
                 .Where((x, w, wfsh, su) => x.CreationTime >= dto.StartTime.Value)
                 .Where((x, w, wfsh, su) => x.CreationTime <= dto.EndTime.Value)
-				.GroupBy((x, w, wfsh, su) =>x.WorkflowId)
+                .GroupBy((x, w, wfsh, su) => x.WorkflowId)
                 .Having((x, w, wfsh, su) => SqlFunc.AggregateCount(x.WorkflowId) > 1)
                 .Select((x, w, wfsh, su) => new { Id = x.WorkflowId })
                 .MergeTable()
-                .LeftJoin<WorkflowTrace>((a,wt)=>a.Id == wt.WorkflowId)
+                .LeftJoin<WorkflowTrace>((a, wt) => a.Id == wt.WorkflowId)
                 .LeftJoin<Workflow>((a, wt, wf) => wt.WorkflowId == wf.Id)
-				.LeftJoin<WorkflowStepHandler>((a, wt, wf, wsh) => wt.StepId == wsh.WorkflowStepId)
-                .InnerJoin<SchedulingUser>((a,wt, wf, wsh, su) => wsh.UserId == su.UserId)
-				.WhereIF(!string.IsNullOrEmpty(dto.UserName), ((a, wt, wf, wsh, su) => su.UserName == dto.UserName))
-				.GroupBy((a, wt, wf, wsh, su) => new { su.UserId, su.UserName })
+                .LeftJoin<WorkflowStepHandler>((a, wt, wf, wsh) => wt.StepId == wsh.WorkflowStepId)
+                .InnerJoin<SchedulingUser>((a, wt, wf, wsh, su) => wsh.UserId == su.UserId)
+                .WhereIF(!string.IsNullOrEmpty(dto.UserName), ((a, wt, wf, wsh, su) => su.UserName == dto.UserName))
+                .GroupBy((a, wt, wf, wsh, su) => new { su.UserId, su.UserName })
                 .Select((a, wt, wf, wsh, su) => new BiOrderSendVo
                 {
                     UserId = su.UserId,
@@ -2616,10 +2671,11 @@ namespace Hotline.Api.Controllers.Bi
         /// <param name="dto"></param>
         /// <returns></returns>
         [HttpGet("send_order_detail_report")]
-		public async Task<PagedDto<OrderDto>> QuerySendOrderDetail([FromQuery] QuerySendOrderDetailRequest dto) {
-	        if (!dto.StartTime.HasValue || !dto.EndTime.HasValue)
-		        throw UserFriendlyException.SameMessage("请选择时间!");
-	        dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
+        public async Task<PagedDto<OrderDto>> QuerySendOrderDetail([FromQuery] QuerySendOrderDetailRequest dto)
+        {
+            if (!dto.StartTime.HasValue || !dto.EndTime.HasValue)
+                throw UserFriendlyException.SameMessage("请选择时间!");
+            dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
 
             var (total, items) = await _workflowTraceRepository.Queryable()
                 .LeftJoin<Workflow>((x, w) => x.WorkflowId == w.Id)
@@ -2628,8 +2684,8 @@ namespace Hotline.Api.Controllers.Bi
                 .Where((x, w, wsh, su) => w.ModuleCode == "OrderHandle" && x.BusinessType == EBusinessType.Send)
                 .Where((x, w, wsh, su) => x.CreationTime >= dto.StartTime.Value)
                 .Where((x, w, wsh, su) => x.CreationTime <= dto.EndTime.Value)
-                .Where((x, w, wsh, su)=> su.UserId == dto.UserId)
-				.WhereIF(dto.TitleCode.ToUpper() == "NOSENDORDERNUM", (x, w, wsh, su) => x.HandlerId == null || x.HandlerId == "")
+                .Where((x, w, wsh, su) => su.UserId == dto.UserId)
+                .WhereIF(dto.TitleCode.ToUpper() == "NOSENDORDERNUM", (x, w, wsh, su) => x.HandlerId == null || x.HandlerId == "")
                 .GroupBy((x, w, wsh, su) => w.ExternalId)
                 .Select((x, w, wsh, su) => new { Id = w.ExternalId })
                 .MergeTable()
@@ -2637,35 +2693,35 @@ namespace Hotline.Api.Controllers.Bi
                 .Select((a, b) => b)
                 .ToPagedListAsync(dto, HttpContext.RequestAborted);
 
-			if (dto.TitleCode.ToUpper() == "RESENDORDERNUM")
-			{
-				 (total, items) = await _workflowTraceRepository.Queryable()
-	                    .LeftJoin<Workflow>((x, w) => x.WorkflowId == w.Id)
-	                    .LeftJoin<WorkflowStepHandler>((x, w, wfsh) => x.StepId == wfsh.WorkflowStepId)
-	                    .InnerJoin<SchedulingUser>((x, w, wfsh, su) => wfsh.UserId == su.UserId)
-	                    .Where((x, w, wfsh, su) => w.ModuleCode == "OrderHandle" && x.BusinessType == EBusinessType.Send)
-	                    .Where((x, w, wfsh, su) => x.CreationTime >= dto.StartTime.Value)
-	                    .Where((x, w, wfsh, su) => x.CreationTime <= dto.EndTime.Value)
-						.GroupBy((x, w, wfsh, su) => x.WorkflowId)
-	                    .Having((x, w, wfsh, su) => SqlFunc.AggregateCount(x.WorkflowId) > 1)
-	                    .Select((x, w, wfsh, su) => new { Id = x.WorkflowId })
-	                    .MergeTable()
-	                    .LeftJoin<WorkflowTrace>((a, wt) => a.Id == wt.WorkflowId)
-	                    .LeftJoin<Workflow>((a, wt, wf) => wt.WorkflowId == wf.Id)
-	                    .LeftJoin<WorkflowStepHandler>((a, wt, wf, wsh) => wt.StepId == wsh.WorkflowStepId)
-	                    .InnerJoin<SchedulingUser>((a, wt, wf, wsh, su) => wsh.UserId == su.UserId)
-	                    .Where((a, wt, wf, wsh, su) => su.UserId == dto.UserId)
-						.GroupBy((a, wt, wf, wsh, su) => wf.ExternalId)
-	                    .Select((a, wt, wf, wsh, su) => new { Id = wf.ExternalId })
-	                    .MergeTable()
-	                    .LeftJoin<Order>((a, b) => a.Id == b.Id)
-	                    .Select((a, b) => b)
-	                    .ToPagedListAsync(dto, HttpContext.RequestAborted);
-			}
+            if (dto.TitleCode.ToUpper() == "RESENDORDERNUM")
+            {
+                (total, items) = await _workflowTraceRepository.Queryable()
+                       .LeftJoin<Workflow>((x, w) => x.WorkflowId == w.Id)
+                       .LeftJoin<WorkflowStepHandler>((x, w, wfsh) => x.StepId == wfsh.WorkflowStepId)
+                       .InnerJoin<SchedulingUser>((x, w, wfsh, su) => wfsh.UserId == su.UserId)
+                       .Where((x, w, wfsh, su) => w.ModuleCode == "OrderHandle" && x.BusinessType == EBusinessType.Send)
+                       .Where((x, w, wfsh, su) => x.CreationTime >= dto.StartTime.Value)
+                       .Where((x, w, wfsh, su) => x.CreationTime <= dto.EndTime.Value)
+                       .GroupBy((x, w, wfsh, su) => x.WorkflowId)
+                       .Having((x, w, wfsh, su) => SqlFunc.AggregateCount(x.WorkflowId) > 1)
+                       .Select((x, w, wfsh, su) => new { Id = x.WorkflowId })
+                       .MergeTable()
+                       .LeftJoin<WorkflowTrace>((a, wt) => a.Id == wt.WorkflowId)
+                       .LeftJoin<Workflow>((a, wt, wf) => wt.WorkflowId == wf.Id)
+                       .LeftJoin<WorkflowStepHandler>((a, wt, wf, wsh) => wt.StepId == wsh.WorkflowStepId)
+                       .InnerJoin<SchedulingUser>((a, wt, wf, wsh, su) => wsh.UserId == su.UserId)
+                       .Where((a, wt, wf, wsh, su) => su.UserId == dto.UserId)
+                       .GroupBy((a, wt, wf, wsh, su) => wf.ExternalId)
+                       .Select((a, wt, wf, wsh, su) => new { Id = wf.ExternalId })
+                       .MergeTable()
+                       .LeftJoin<Order>((a, b) => a.Id == b.Id)
+                       .Select((a, b) => b)
+                       .ToPagedListAsync(dto, HttpContext.RequestAborted);
+            }
             return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
-		}
+        }
 
 
 
-	}
+    }
 }