소스 검색

Merge branch 'dev' into dev_tj

TANG JIANG 1 년 전
부모
커밋
428c96c282

+ 76 - 13
src/Hotline.Api/Controllers/Bi/BiOrderController.cs

@@ -2549,6 +2549,7 @@ namespace Hotline.Api.Controllers.Bi
             if (!dto.StartTime.HasValue || !dto.EndTime.HasValue)
                 throw UserFriendlyException.SameMessage("请选择时间!");
             dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
+
             var items = await _workflowTraceRepository.Queryable()
                 .LeftJoin<Workflow>((x, w) => x.WorkflowId == w.Id)
                 .LeftJoin<WorkflowStepHandler>((x, w, wsh) => x.StepId == wsh.WorkflowStepId)
@@ -2558,32 +2559,39 @@ namespace Hotline.Api.Controllers.Bi
                 .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)
+                //.Having((x, w, wsh, su) => SqlFunc.AggregateCount(x.WorkflowId) == 1)
                 .Select((x, w, wsh, su) => new BiOrderSendVo
                 {
                     UserId = su.UserId,
                     UserName = su.UserName,
-                    SendOrderNum = SqlFunc.AggregateSum(SqlFunc.IIF(true, 1, 0)),
+                    SendOrderNum = SqlFunc.AggregateDistinctCount(w.ExternalId),
                     NoSendOrderNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.HandlerId == null || x.HandlerId == "", 1, 0)),
                     ReSendOrderNum = 0,
                 }).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.AggregateSum(SqlFunc.IIF(true, 1, 0)),
+                    ReSendOrderNum = SqlFunc.AggregateDistinctCount(wf.ExternalId),
                 }).ToListAsync();
 
             var res = (from t1 in items
@@ -2602,7 +2610,62 @@ namespace Hotline.Api.Controllers.Bi
 
             return res;
         }
+        /// <summary>
+        /// 派单量统计明细
+        /// </summary>
+        /// <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);
+
+            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)
+                .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 == "")
+                .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)
+                .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));
+		}
+
 
 
-    }
+	}
 }

+ 3 - 13
src/Hotline.Api/Controllers/OrderController.cs

@@ -3737,19 +3737,9 @@ public class OrderController : BaseController
         var order = await _orderRepository.GetAsync(id, HttpContext.RequestAborted);
         List<Kv> orgs = new List<Kv> { new Kv { Key = "001", Value = "市民热线服务系统" } };
         if (order == null ) throw UserFriendlyException.SameMessage("无效工单信息!");
-        if (order.CounterSignType == ECounterSignType.Center)
-        {
-            //中心会签调取方法
-            var org = await _workflowDomainService.GetLevelOneOrgsAsync(order.WorkflowId, HttpContext.RequestAborted);
-            orgs.AddRange(org);
-		}
-        else
-        {
-	        if (!string.IsNullOrEmpty(order.OrgLevelOneCode) && order.OrgLevelOneCode != "001")
-	        {
-                orgs.Add(new Kv { Key = order.OrgLevelOneCode,Value = order.OrgLevelOneName });
-			}
-		}
+		//中心会签调取方法
+		var org = await _workflowDomainService.GetLevelOneOrgsAsync(order.WorkflowId, HttpContext.RequestAborted);
+		orgs.AddRange(org);
 		var step = await _workflowApplication.GetRecallStepsAsync(order.WorkflowId, HttpContext.RequestAborted);
         //获取部门信息
 	    var rsp = new

+ 7 - 0
src/Hotline.Share/Requests/PagedKeywordRequest.cs

@@ -167,4 +167,11 @@ public record QuerySendOrderRequest
 	/// </summary>
 	public DateTime? EndTime { get; set; }
 
+}
+
+public record QuerySendOrderDetailRequest : ReportPagedRequest 
+{
+	public string UserId { get; set; }
+
+	public string TitleCode { get; set; }
 }