TANG JIANG hai 1 ano
pai
achega
bc27df4daa

+ 42 - 0
src/Hotline.Api/Controllers/Bi/BiOrderController.cs

@@ -2232,6 +2232,48 @@ namespace Hotline.Api.Controllers.Bi
 
             #endregion
 
+            #region 超期件数
+            //超期件数
+            if (stye == "6")
+            {
+                var queryOrder = _orderRepository.Queryable()
+                         .Where(it => it.CreationTime >= dto.StartDate && it.CreationTime <= dto.EndDate && it.Status > EOrderStatus.WaitForAccept)
+                         .WhereIF(dto.OrgCode == "001", it => it.ActualHandleOrgCode == dto.OrgCode)
+                         .WhereIF(dto.OrgCode != "001", it => it.ActualHandleOrgCode.StartsWith(dto.OrgCode))
+                          .WhereIF(dto.StatisticsType == EStatisticsType.SubtotalOverdue, it => (it.Status >= EOrderStatus.Filed && it.ActualHandleTime > it.ExpiredTime)
+                                     || (it.Status < EOrderStatus.Filed && it.ExpiredTime < SqlFunc.GetDate()))//已办超期/待办超期
+                         .Select(it => new SelectOrderId { Id = it.Id })
+                         .MergeTable();
+
+                //会签(已办超期、待办超期)
+                var queryCountersign = _workflowStepHandleRepository.Queryable()
+               .LeftJoin<WorkflowTrace>((x, o) => x.WorkflowStepId == o.StepId)
+               .LeftJoin<Order>((x, o, p) => o.WorkflowId == p.WorkflowId)
+               .Where((x, o, p) => o.ModuleCode == WorkflowModuleConsts.OrderHandle && o.CountersignPosition == ECountersignPosition.Multi
+               && o.CountersignPosition == ECountersignPosition.Single && o.CreationTime >= dto.StartDate && o.CreationTime <= dto.EndDate)
+               .WhereIF(dto.OrgCode == "001", (x, o, p) => x.OrgId == dto.OrgCode)
+               .WhereIF(dto.OrgCode != "001", (x, o, p) => x.OrgId.StartsWith(dto.OrgCode))
+               .WhereIF(dto.StatisticsType == EStatisticsType.HQYBOverdue, (x, o, p) => (o.Status == EWorkflowStepStatus.Handled && o.HandleTime > o.StepExpiredTime)
+                        || (o.Status != EWorkflowStepStatus.Handled && DateTime.Now >= o.StepExpiredTime))//会签已办超期/会签待办超期
+                .Select((x, o, p) => new SelectOrderId { Id = p.Id })
+               .MergeTable();
+
+                var queryData = await _orderRepository.OrderListUnionAll(queryOrder, queryCountersign)
+                    .LeftJoin<Order>((x, o) => x.Id == o.Id)
+                     .Select((x, o) => new { o })
+                    .ToPageListAsync(dto.PageIndex, dto.PageSize, total, HttpContext.RequestAborted);
+
+                var dtos = queryData.Select(d =>
+                {
+                    var dto = _mapper.Map<OrderDto>(d.o);
+                    return dto;
+                }).ToList();
+
+                return new PagedDto<OrderDto>(total, dtos);
+
+            } 
+            #endregion
+
             return new PagedDto<OrderDto>(total, new List<OrderDto>());
         }
 

+ 9 - 16
src/Hotline.Repository.SqlSugar/Orders/OrderRepository.cs

@@ -1,24 +1,12 @@
-using Hotline.Caching.Interfaces;
-using Hotline.FlowEngine.Workflows;
-using Hotline.Orders;
+using Hotline.Orders;
 using Hotline.Repository.SqlSugar.DataPermissions;
 using Hotline.Repository.SqlSugar.Extensions;
-using Hotline.Repository.SqlSugar.Ts;
 using Hotline.Settings;
 using Hotline.Settings.Hotspots;
-using Hotline.Settings.TimeLimits;
-using Hotline.Share.Dtos;
-using Hotline.Share.Dtos.FlowEngine.Workflow;
-using Hotline.Share.Dtos.Order;
-using Hotline.Share.Enums.Order;
 using Hotline.Share.Requests;
-using Hotline.Tools;
-using MapsterMapper;
 using SqlSugar;
 using System.Reflection;
-using XF.Domain.Constants;
 using XF.Domain.Dependency;
-using XF.Domain.Repository;
 
 namespace Hotline.Repository.SqlSugar.Orders
 {
@@ -166,21 +154,21 @@ namespace Hotline.Repository.SqlSugar.Orders
                            OrgCode = p.OrgCode,
                            OrgName = o.Name,
                            OrgType = o.OrgType,
-                           OrderCountNum =p.OrderCountNum,
+                           OrderCountNum = p.OrderCountNum,
                            YBOrderCountNum = p.YBOrderCountNum,
                            ZBOrderCountNum = p.ZBOrderCountNum,
                            Archived = p.Archived,
                            ToBeArchived = p.ToBeArchived,
                            WaitPublished = p.WaitPublished,
                            PublishedOpen = p.PublishedOpen,
-                           PublishedNoOpen =p.PublishedNoOpen,
+                           PublishedNoOpen = p.PublishedNoOpen,
                            YBOverdue = p.YBOverdue,
                            ZBOverdue = p.ZBOverdue,
                            HQYBOverdue = p.HQYBOverdue,
                            HQZBOverdue = p.HQZBOverdue,
                            DelayEnd = p.DelayEnd,
                            DelayWait = p.DelayWait,
-                           OrderDelayCount =p.OrderDelayCount,
+                           OrderDelayCount = p.OrderDelayCount,
                            ScreenCount = p.ScreenCount,
                            ScreenApproval = p.ScreenApproval,
                            ScreenPass = p.ScreenPass,
@@ -190,6 +178,11 @@ namespace Hotline.Repository.SqlSugar.Orders
                        })
                        .ToListAsync();
         }
+
+        public ISugarQueryable<SelectOrderId> OrderListUnionAll(ISugarQueryable<SelectOrderId> t1, ISugarQueryable<SelectOrderId> t2)
+        {
+            return Db.UnionAll(t1, t2).Select(it => new SelectOrderId { Id = it.Id }).MergeTable();
+        }
     }
 
     public class OrderScreenRepository : BaseRepositoryWorkflow<OrderScreen>, IOrderScreenRepository, IScopeDependency

+ 5 - 0
src/Hotline.Share/Requests/DepartmentalProcessingStatisticsDto.cs

@@ -226,4 +226,9 @@ namespace Hotline.Share.Requests
         /// </summary>
         public EStatisticsType StatisticsType { get; set; }
     }
+
+    public class SelectOrderId
+    {
+        public string Id { get; set; }
+    }
 }

+ 4 - 10
src/Hotline/Orders/IOrderRepository.cs

@@ -1,12 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Hotline.Share.Dtos;
-using Hotline.Share.Dtos.FlowEngine.Workflow;
-using Hotline.Share.Dtos.Order;
-using Hotline.Share.Requests;
+using Hotline.Share.Requests;
 using SqlSugar;
 using XF.Domain.Repository;
 
@@ -21,7 +13,7 @@ namespace Hotline.Orders
         Task OrderScreenRevisionVisit(string VisitId, bool canHandle, CancellationToken cancellationToken);
         Task FileAsync(Order order, CancellationToken cancellationToken);
 
-        Task<object> HotPortJoinOrgStatistics(DateTime StartTime, DateTime EndTime,bool IsCenter,string? OrgCode);
+        Task<object> HotPortJoinOrgStatistics(DateTime StartTime, DateTime EndTime, bool IsCenter, string? OrgCode);
 
         Task<List<DepartmentalProcessingStatisticsDataDto>> OrderUnionAll(ISugarQueryable<DepartmentalProcessingStatisticsDataDto> t1,
          ISugarQueryable<DepartmentalProcessingStatisticsDataDto> t2,
@@ -30,6 +22,8 @@ namespace Hotline.Orders
          ISugarQueryable<DepartmentalProcessingStatisticsDataDto> t5,
          ISugarQueryable<DepartmentalProcessingStatisticsDataDto> t6);
 
+        ISugarQueryable<SelectOrderId> OrderListUnionAll(ISugarQueryable<SelectOrderId> t1, ISugarQueryable<SelectOrderId> t2);
+
     }
 
     public interface IOrderScreenRepository : IRepositoryWorkflow<OrderScreen>