guqiang hai 1 mes
pai
achega
a8b7128064

+ 11 - 0
src/Hotline.Api/Controllers/JudicialManagementOrdersController.cs

@@ -695,6 +695,17 @@ namespace Hotline.Api.Controllers
             return new PagedDto<EnforcementOrderListDto>(total, items);
         }
 
+        /// <summary>
+        /// 执法领域统计
+        /// </summary>
+        /// <param name="queryIndustryOrderStatisticsRequest"></param>
+        /// <returns></returns>
+        [HttpGet("enforcement_industry_statistics_order")]
+        public async Task<PagedDto<IndustryOrderStaticsDto>> QueryIndustryOrderStatics([FromQuery] QueryIndustryOrderStatisticsRequest queryIndustryOrderStatisticsRequest)
+        {
+            return await _enforcementApplication.QueryIndustryOrderStatics(queryIndustryOrderStatisticsRequest);
+        }
+
         /// <summary>
         /// 执法部门办件统计---明细---导出
         /// </summary>

+ 27 - 0
src/Hotline.Application/JudicialManagement/EnforcementApplication.cs

@@ -1,10 +1,12 @@
 using Hotline.JudicialManagement;
 using Hotline.Orders;
 using Hotline.Settings;
+using Hotline.Share.Dtos;
 using Hotline.Share.Dtos.JudicialManagement;
 using Hotline.Share.Dtos.Order;
 using Hotline.Share.Enums.JudicialManagement;
 using Hotline.Share.Enums.Order;
+using Hotline.Snapshot;
 using MapsterMapper;
 using SqlSugar;
 using XF.Domain.Authentications;
@@ -365,5 +367,30 @@ namespace Hotline.Application.JudicialManagement
 
         }
 
+        public async Task<PagedDto<IndustryOrderStaticsDto>> QueryIndustryOrderStatics(QueryIndustryOrderStatisticsRequest queryIndustryOrderStatisticsRequest)
+        {
+            var judicialManagementOrderTable = _judicialManagementOrdersRepository.Queryable()
+                .Where(x => x.CreationTime >= queryIndustryOrderStatisticsRequest.StartTime && x.CreationTime <= queryIndustryOrderStatisticsRequest.EndTime);
+            var queryable = judicialManagementOrderTable.InnerJoin<OrderSnapshot>((j, o) => j.Id == o.Id)
+                .GroupBy((j, o) => o.IndustryName)
+                .Select((j, o) => new IndustryOrderStaticsDto
+                {
+                    IndustryName = o.IndustryName,
+                    TotalOrderCount = SqlFunc.AggregateCount(o.Id),
+                    EnforcementOrderCount = SqlFunc.AggregateCount(SqlFunc.IIF(j.IsEnforcementOrder.HasValue && j.IsEnforcementOrder==true, 1,0)),
+                    NotEnforcementOrderCount = SqlFunc.AggregateCount(SqlFunc.IIF(j.IsEnforcementOrder.HasValue && j.IsEnforcementOrder != true, 1, 0)),
+                    ToBeVerifiedOrderCount = SqlFunc.AggregateCount(SqlFunc.IIF(!j.IsEnforcementOrder.HasValue, 1, 0))
+                });
+
+            var count = await queryable.CountAsync();
+
+            var result = await queryable.ToPageListAsync(queryIndustryOrderStatisticsRequest.PageIndex, queryIndustryOrderStatisticsRequest.PageSize);
+
+            return  new PagedDto<IndustryOrderStaticsDto>
+            {
+                Total = count,
+                Items = result
+            };
+        }
     }
 }

+ 9 - 0
src/Hotline.Application/JudicialManagement/IEnforcementApplication.cs

@@ -1,4 +1,5 @@
 using Hotline.JudicialManagement;
+using Hotline.Share.Dtos;
 using Hotline.Share.Dtos.JudicialManagement;
 using Hotline.Share.Dtos.Order;
 using SqlSugar;
@@ -56,6 +57,8 @@ namespace Hotline.Application.JudicialManagement
         /// <returns></returns>
         ISugarQueryable<JudicialManagementOrders> GetRegionalClassificationStatisticsOrderListAsync(QueryRegionalClassificationStatisticsDto dto);
 
+        
+
         /// <summary>
         /// 部门满意度统计
         /// </summary>
@@ -72,5 +75,11 @@ namespace Hotline.Application.JudicialManagement
         /// <returns></returns>
         ISugarQueryable<EnforcementOrgSatisfactionOrderListDto> GetVisitAndOrgSatisfactionStatisticsOrderListAsync(QueryOrgSatisfactionStatisticsDto dto);
 
+        /// <summary>
+        /// 获取行业订单统计
+        /// </summary>
+        /// <param name="queryIndustryOrderStatisticsRequest"></param>
+        /// <returns></returns>
+        Task<PagedDto<IndustryOrderStaticsDto>> QueryIndustryOrderStatics(QueryIndustryOrderStatisticsRequest queryIndustryOrderStatisticsRequest);
     }
 }

+ 36 - 1
src/Hotline.Share/Dtos/JudicialManagement/EmDepartmentalProcessingStatisticsDto.cs

@@ -1,4 +1,6 @@
-namespace Hotline.Share.Dtos.JudicialManagement
+using System.ComponentModel;
+
+namespace Hotline.Share.Dtos.JudicialManagement
 {
     public class EmDepartmentalProcessingStatisticsDto
     {
@@ -19,4 +21,37 @@
         public int TheClueIsNotTrue { get; set; }
         public int EnforcementOrder { get; set; }
     }
+
+    public class IndustryOrderStaticsDto
+    {
+        /// <summary>
+        /// 行业名称
+        /// </summary>
+        [Description("行业名称")]
+        public string IndustryName { get; set; }
+
+        /// <summary>
+        /// 办件总量
+        /// </summary>
+        [Description("办件总量")]
+        public int TotalOrderCount { get; set; }
+
+        /// <summary>
+        /// 执法类工单
+        /// </summary>
+        [Description("执法类工单")]
+        public int EnforcementOrderCount { get; set; }
+
+        /// <summary>
+        /// 非执法类工单
+        /// </summary>
+        [Description("非执法类工单")]
+        public int NotEnforcementOrderCount { get; set; }
+
+        /// <summary>
+        /// 待核实订单
+        /// </summary>
+        [Description("待核实订单")]
+        public int ToBeVerifiedOrderCount { get; set; }
+    }
 }

+ 16 - 0
src/Hotline.Share/Dtos/JudicialManagement/QueryEventClassificationStatisticsDto.cs

@@ -1,4 +1,5 @@
 using Hotline.Share.Requests;
+using System.ComponentModel;
 
 namespace Hotline.Share.Dtos.JudicialManagement
 {
@@ -67,6 +68,21 @@ namespace Hotline.Share.Dtos.JudicialManagement
         public bool EnforcementOrder { get; set; }
     }
 
+    public record QueryIndustryOrderStatisticsRequest: PagedRequest
+    {
+        /// <summary>
+        /// 开始时间
+        /// </summary>
+        [Description("开始时间")]
+        public DateTime StartTime { get; set; }
+
+        /// <summary>
+        /// 结束时间
+        /// </summary>
+        [Description("结束时间")]
+        public DateTime EndTime { get; set; }
+    }
+
     /// <summary>
     /// 
     /// </summary>