Browse Source

Merge branch 'tianshuang' of Fengwo/hotline into master

tianshuang 1 year ago
parent
commit
699114b695
1 changed files with 52 additions and 23 deletions
  1. 52 23
      src/Hotline.Api/Controllers/Bi/BiOrderController.cs

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

@@ -1902,21 +1902,28 @@ namespace Hotline.Api.Controllers.Bi
                 }).ToListAsync();
             var items2 = await _workflowTraceRepository.Queryable()
                 .LeftJoin<Workflow>((x, w) => x.WorkflowId == w.Id)
-                .LeftJoin<WorkflowStepHandler>((x, w, wsh) => x.StepId == wsh.WorkflowStepId)
-                .InnerJoin<SchedulingUser>((x, w, wsh, su) => wsh.UserId == su.UserId)
-                .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)
-                .WhereIF(!string.IsNullOrEmpty(dto.UserName), (x, w, wsh, su) => su.UserName == dto.UserName)
-                .GroupBy((x, w, wsh, su) => new { su.UserId, su.UserName })
-                .Having((x, w, wsh, su) => SqlFunc.AggregateCount(x.WorkflowId) > 1)
-                .Select((x, w, wsh, su) => new BiOrderSendVo
+                .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)
+				.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,
                     UserName = su.UserName,
                     SendOrderNum = 0,
                     NoSendOrderNum = 0,
-                    ReSendOrderNum = SqlFunc.AggregateDistinctCount(w.ExternalId),
+                    ReSendOrderNum = SqlFunc.AggregateDistinctCount(wf.ExternalId),
                 }).ToListAsync();
 
             var res = (from t1 in items
@@ -1946,25 +1953,47 @@ namespace Hotline.Api.Controllers.Bi
 		        throw UserFriendlyException.SameMessage("请选择时间!");
 	        dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
 
-			var quer =  _workflowTraceRepository.Queryable()
+            var (total, items) = await _workflowTraceRepository.Queryable()
                 .LeftJoin<Workflow>((x, w) => x.WorkflowId == w.Id)
                 .LeftJoin<WorkflowStepHandler>((x, w, wsh) => x.StepId == wsh.WorkflowStepId)
-                .InnerJoin<SchedulingUser>((x, w,  wsh, su) => wsh.UserId == su.UserId)
+                .InnerJoin<SchedulingUser>((x, w, wsh, su) => wsh.UserId == su.UserId)
                 .Where((x, w, wsh, su) => w.ModuleCode == "OrderHandle" && x.BusinessType == EBusinessType.Send)
-                .Where((x, w,  wsh, su) => su.UserId == dto.UserId)
                 .Where((x, w, wsh, su) => x.CreationTime >= dto.StartTime.Value)
-                .Where((x, w,  wsh, su) => x.CreationTime <= dto.EndTime.Value)
-				.WhereIF(dto.TitleCode == "NoSendOrderNum", (x, w, wsh, su) => x.HandlerId == null || x.HandlerId == "");
-                if (dto.TitleCode == "ReSendOrderNum")
-			    {
-                     quer = quer.Having((x, w, wsh, su) => SqlFunc.AggregateCount(x.WorkflowId) > 1);
-				}
-                var (total, items) = await quer.GroupBy((x, w, wsh, su)=> w.ExternalId)
-                .Select((x, w, wsh, su) => new { Id = w.ExternalId }  )
+                .Where((x, w, wsh, su) => x.CreationTime <= dto.EndTime.Value)
+                .Where((x, w, wsh, su)=> su.UserId == dto.UserId)
+				.WhereIF(dto.TitleCode == "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()
-                .LeftJoin<Order>((a,b) => a.Id == b.Id)
-                .Select((a,b)=>b)
+                .LeftJoin<Order>((a, b) => a.Id == b.Id)
+                .Select((a, b) => b)
                 .ToPagedListAsync(dto, HttpContext.RequestAborted);
+
+			if (dto.TitleCode == "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));
 		}