Browse Source

Merge branch 'dev' of http://110.188.24.182:10023/Fengwo/hotline into dev

xf 1 year ago
parent
commit
61dba00858

+ 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)
@@ -509,12 +508,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.OrgCode), x => x.ApplyOrgCode == dto.OrgCode)
+                .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("请选择时间!");

+ 60 - 8
src/Hotline.Api/Controllers/OrderController.cs

@@ -20,6 +20,7 @@ using Hotline.Push.FWMessage;
 using Hotline.Push.Notifies;
 using Hotline.Repository.SqlSugar.Extensions;
 using Hotline.Repository.SqlSugar.Ts;
+using Hotline.SeedData;
 using Hotline.Settings;
 using Hotline.Settings.Hotspots;
 using Hotline.Settings.TimeLimits;
@@ -43,6 +44,7 @@ using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Mvc;
 using MiniExcelLibs;
 using SqlSugar;
+using System;
 using XF.Domain.Authentications;
 using XF.Domain.Cache;
 using XF.Domain.Constants;
@@ -2872,14 +2874,64 @@ public class OrderController : BaseController
             .ToPagedListAsync(dto, HttpContext.RequestAborted);
 
         return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
-    }
+	}
 
-    /// <summary>
-    /// 首页查询
-    /// </summary>
-    /// <param name="dto"></param>
-    /// <returns></returns>
-    [HttpGet("waited/home")]
+
+	/// <summary>
+	/// 查询中心待办
+	/// </summary>
+	[HttpGet("waited/center")]
+	public async Task<PagedDto<OrderDto>> QueryWaitedForCenter([FromQuery] QueryOrderWaitedCenterDto dto) 
+    {
+        if (dto.EndCreationTime.HasValue)
+            dto.EndCreationTime = dto.EndCreationTime.Value.AddDays(1).AddSeconds(-1);
+        if (dto.StartTimeEnd.HasValue)
+	        dto.StartTimeEnd = dto.StartTimeEnd.Value.AddDays(1).AddSeconds(-1);
+
+		var (total, items) = await _orderRepository.Queryable(viewFilter: false)
+            .Where(x => x.Workflow.Steps.Any(s => s.Status < EWorkflowStepStatus.Handled && s.StepHandlers.Any(d => d.OrgId == OrgSeedData.CenterId) ))
+            .Where(x => x.Source < ESource.MLSQ || x.Source > ESource.WZSC)
+			.Where(x => x.Status != EOrderStatus.BackToProvince)
+            .WhereIF(!string.IsNullOrEmpty(dto.No), x => x.No!.Contains(dto.No!))
+            .WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.Title!.Contains(dto.Title!))
+            .WhereIF(dto is { StCreationTime: not null, EndCreationTime: not null }, x => x.CreationTime >= dto.StCreationTime && x.CreationTime <= dto.EndCreationTime)
+            .WhereIF(dto is { StartTimeSt: not null, StartTimeEnd: not null }, x => x.CreationTime >= dto.StartTimeSt && x.CreationTime <= dto.StartTimeEnd)
+			.WhereIF(!string.IsNullOrEmpty(dto.StepName), x => x.Workflow.Steps.Any(s=>s.Name == dto.StepName))
+            .WhereIF(!string.IsNullOrEmpty(dto.ActualHandleOrgName), x => x.ActualHandleOrgName!.Contains(dto.ActualHandleOrgName!))
+            .WhereIF(dto.Status.HasValue, x => x.Status == dto.Status)
+            .WhereIF(!string.IsNullOrEmpty(dto.AcceptorName), x => x.AcceptorName!.Contains(dto.AcceptorName!))
+            .WhereIF(dto.ExpiredStatus is EExpiredStatus.Normal, x => DateTime.Now < x.NearlyExpiredTime)
+            .WhereIF(dto.ExpiredStatus is EExpiredStatus.GoingToExpired, x => DateTime.Now > x.NearlyExpiredTime && DateTime.Now < x.ExpiredTime)
+            .WhereIF(dto.ExpiredStatus is EExpiredStatus.Expired, x => DateTime.Now >= x.ExpiredTime)
+			.OrderBy(x => x.Status)
+			.OrderBy(x => x.CreationTime, OrderByType.Desc)
+			.ToPagedListAsync(dto, HttpContext.RequestAborted);
+
+		return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
+	}
+
+	/// <summary>
+	/// 查询中心待办基础数据
+	/// </summary>
+	/// <returns></returns>
+	[HttpGet("waited/center/base")]
+	public async Task<object> WaitedForCenterBaseData()
+	{
+		var rsp = new
+		{
+			OrderStatus = EnumExts.GetDescriptions<EOrderStatus>(),
+			ExpiredStatus = EnumExts.GetDescriptions<EExpiredStatus>(),
+            StepNames = new  string[] { "话务部", "派单组" }
+		};
+		return rsp;
+	}
+
+	/// <summary>
+	/// 首页查询
+	/// </summary>
+	/// <param name="dto"></param>
+	/// <returns></returns>
+	[HttpGet("waited/home")]
 
     public async Task<Object> QueryWaitedHome([FromQuery] QueryOrderWaitedDto dto) {
 
@@ -3041,7 +3093,7 @@ public class OrderController : BaseController
              .WhereIF(dto.AuditState == 1, d => d.State == ESendBackAuditState.Apply)
              .WhereIF(dto.AuditState == 2 && !dto.State.HasValue, d => d.State > ESendBackAuditState.Apply)
              .WhereIF(dto.AuditState == 2 && dto.State.HasValue, d => d.State == dto.State)
-             .WhereIF(_sessionContext.Roles.Contains("123") == false, x => x.SendBackOrgId == _sessionContext.OrgId);// 123 系统管理员
+             .WhereIF(_sessionContext.Roles.Contains("role_sysadmin") == false, x => x.SendBackOrgId == _sessionContext.OrgId);// 123 系统管理员
 
         var (total, items) = await query.OrderByDescending(x => x.CreationTime)
             .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);

+ 3 - 1
src/Hotline.Application/Handlers/FlowEngine/WorkflowEndHandler.cs

@@ -157,7 +157,7 @@ public class WorkflowEndHandler : INotificationHandler<EndWorkflowNotify>
                     order.ProcessType is EProcessType.Zhiban)
                     : 0;
                 order.File(now, handleDuration, fileDuration, allDuration);
-                order.FileUserName = notification.Trace.HandlerId;
+                order.FileUserId = notification.Trace.HandlerId;
                 order.FileUserName = notification.Trace.HandlerName;
                 order.FileUserOrgId = notification.Trace.HandlerOrgId;
                 order.FileUserOrgName = notification.Trace.HandlerOrgName;
@@ -166,6 +166,8 @@ public class WorkflowEndHandler : INotificationHandler<EndWorkflowNotify>
                 {
                     order.FileUserRole = EFileUserType.Org;
                 }
+                //TODO
+
                
                 await _orderRepository.UpdateAsync(order, cancellationToken);
                 var callRecord = await _trCallRecordRepository.GetAsync(p => p.CallAccept == order.CallId, cancellationToken);

+ 63 - 0
src/Hotline.Share/Dtos/Order/OrderWaitedDto.cs

@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using Hotline.Share.Enums.Order;
 using Hotline.Share.Requests;
 
 namespace Hotline.Share.Dtos.Order
@@ -24,4 +25,66 @@ namespace Hotline.Share.Dtos.Order
     }
 
     public record QueryOrderWaitedDto(bool? IsProvince, bool? IsHandled,bool? IsCounterSign,bool? ExpiredOrAlmostOverdue) : PagedKeywordRequest;
+
+    /// <summary>
+    /// 中心待办
+    /// </summary>
+    public record QueryOrderWaitedCenterDto : PagedKeywordRequest
+	{
+		/// <summary>
+		/// 编号
+		/// </summary>
+		public string? No { get; set; }
+
+        /// <summary>
+        /// 标题
+        /// </summary>
+        public string? Title { get; set; }
+        
+        /// <summary>
+        /// 开始生成时间
+        /// </summary>
+        public DateTime? StCreationTime { get; set; }
+
+        /// <summary>
+        /// 结束生成时间
+        /// </summary>
+        public DateTime? EndCreationTime { get; set; }
+
+        /// <summary>
+        /// 开始受理时间
+        /// </summary>
+        public DateTime? StartTimeEnd { get; set; }
+
+        /// <summary>
+        /// 结束受理时间
+        /// </summary>
+        public DateTime? StartTimeSt { get; set; }
+        
+        /// <summary>
+        /// 当前节点名称
+        /// </summary>
+        public string? StepName { get; set; }
+
+        /// <summary>
+        /// 接办部门
+        /// </summary>
+        public string? ActualHandleOrgName { get; set; }
+
+        /// <summary>
+        /// 状态
+        /// </summary>
+        public EOrderStatus? Status { get; set; }
+
+        /// <summary>
+        /// 受理人
+        /// </summary>
+        public string? AcceptorName { get; set; }
+
+        /// <summary>
+        /// 过期状态
+        /// </summary>
+        public EExpiredStatus? ExpiredStatus { get; set; }
+
+    }
 }

+ 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? OrgCode { get; set; }
+
+	/// <summary>
+	/// 查询类型  1已同意次数 2 未同意次数 3  审批中次数 4 小计
+	/// </summary>
+	public int? Type { get; set; }
+
+}
+
 public record QueryOrderReTransactRequest : ReportPagedRequest
 {
 	public string? OrgName { get; set; }