Parcourir la source

调整执法工单统计接口

guqiang il y a 1 semaine
Parent
commit
115744975b

+ 1 - 1
src/Hotline.Api/config/appsettings.Development.json

@@ -78,7 +78,7 @@
     "Host": "110.188.24.182",
     "Port": 50179,
     "Password": "fengwo123!$!$",
-    "Database": 3 //test:3, dev:5
+    "Database": 5 //test:3, dev:5
   },
   "Swagger": true,
   "AccLog": false,

+ 35 - 25
src/Hotline.Application/JudicialManagement/EnforcementApplication.cs

@@ -1,4 +1,5 @@
-using Hotline.JudicialManagement;
+using Hotline.IndustryClassification;
+using Hotline.JudicialManagement;
 using Hotline.Orders;
 using Hotline.Settings;
 using Hotline.Share.Dtos;
@@ -370,18 +371,17 @@ namespace Hotline.Application.JudicialManagement
 
         public async Task<List<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 == null, 1, 0))
-                });
+            var queryIndustryOrderStatisticsRateRequest = _mapper.Map<QueryIndustryOrderStatisticsRateRequest>(queryIndustryOrderStatisticsRequest);
+            ISugarQueryable<JudicialManagementOrders, Order, IndustryAssociations, IndustrialManagement> groupByQueryable = IndustryGroupBy(queryIndustryOrderStatisticsRateRequest);
+
+            var queryable = groupByQueryable.Select((x, o, a, i) => new IndustryOrderStaticsDto
+            {
+                IndustryName = i.IndustrialName,
+                TotalOrderCount = SqlFunc.AggregateCount(x.Id),
+                EnforcementOrderCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.IsEnforcementOrder.HasValue && x.IsEnforcementOrder == true, 1, 0)),
+                NotEnforcementOrderCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.IsEnforcementOrder.HasValue && x.IsEnforcementOrder != true, 1, 0)),
+                ToBeVerifiedOrderCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.IsEnforcementOrder == null, 1, 0))
+            });
 
 
             var result = await queryable.ToListAsync();
@@ -391,25 +391,35 @@ namespace Hotline.Application.JudicialManagement
 
         public async Task<List<IndustryOrderStaticsRateDto>> QueryIndustryOrderStaticsRate(QueryIndustryOrderStatisticsRateRequest queryIndustryOrderStatisticsRateRequest)
         {
-            var judicialManagementOrderTable = _judicialManagementOrdersRepository.Queryable()
-                .LeftJoin<Order>((x, o) => x.Id == o.Id)
-                .Where((x, o) => x.CreationTime >= queryIndustryOrderStatisticsRateRequest.StartTime && x.CreationTime <= queryIndustryOrderStatisticsRateRequest.EndTime)
-                .WhereIF(string.IsNullOrEmpty(queryIndustryOrderStatisticsRateRequest.AreaCode), (x, o) => o.AreaCode != null && o.AreaCode.StartsWith(queryIndustryOrderStatisticsRateRequest.AreaCode));
+            ISugarQueryable<JudicialManagementOrders, Order, IndustryAssociations, IndustrialManagement> groupByQueryable = IndustryGroupBy(queryIndustryOrderStatisticsRateRequest);
 
-            var queryable = judicialManagementOrderTable.InnerJoin<OrderSnapshot>((x, o, s) => x.Id == s.Id)
-               .GroupBy((x, o, s) => s.IndustryName)
-               .Select((x, o, s) => new IndustryOrderStaticsRateDto
-               {
-                   IndustryName = s.IndustryName,
-                   Rate = SqlFunc.AggregateCount(SqlFunc.IIF(o.IsEnforcementOrder.HasValue && o.IsEnforcementOrder == true, 1, 0)) / SqlFunc.AggregateCount(o.Id),
-                   Count = SqlFunc.AggregateCount(SqlFunc.IIF(o.IsEnforcementOrder.HasValue && o.IsEnforcementOrder == true, 1, 0))
-               });
+            var queryable = groupByQueryable.Select((x, o, a, i) => new IndustryOrderStaticsRateDto
+            {
+                IndustryName = i.IndustrialName,
+                Rate = SqlFunc.AggregateSum(SqlFunc.IIF(x.IsEnforcementOrder.HasValue && x.IsEnforcementOrder == true, 1, 0)) / SqlFunc.AggregateCount(x.Id),
+                Count = SqlFunc.AggregateSum(SqlFunc.IIF(x.IsEnforcementOrder.HasValue && x.IsEnforcementOrder == true, 1, 0))
+            });
 
             var result = await queryable.ToListAsync();
 
             return result;
         }
 
+        private ISugarQueryable<JudicialManagementOrders, Order, IndustryAssociations, IndustrialManagement> IndustryGroupBy(QueryIndustryOrderStatisticsRateRequest queryIndustryOrderStatisticsRateRequest)
+        {
+            var judicialManagementOrderTable = _judicialManagementOrdersRepository.Queryable()
+                            .LeftJoin<Order>((x, o) => x.Id == o.Id)
+                            .Where((x, o) => x.CreationTime >= queryIndustryOrderStatisticsRateRequest.StartTime && x.CreationTime <= queryIndustryOrderStatisticsRateRequest.EndTime)
+                            .WhereIF(string.IsNullOrEmpty(queryIndustryOrderStatisticsRateRequest.AreaCode), (x, o) => o.AreaCode != null && o.AreaCode.StartsWith(queryIndustryOrderStatisticsRateRequest.AreaCode));
+
+            var queryable = judicialManagementOrderTable
+                .LeftJoin<IndustryAssociations>((x, o, a) => a.OrganizeId == o.ActualHandleOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("9")))
+                .LeftJoin<IndustrialManagement>((x, o, a, i) => a.IndustrialManagementId == i.Id);
+
+            var groupby = queryable.GroupBy((x, o, a, i) => i.IndustrialName);
+            return groupby;
+        }
+
         public async Task<List<EventTypeOrderStaticsDto>> QueryEventTypeOrderStatics(QueryEventTypeOrderStaticsRequest queryEventTypeOrderStaticsRequest)
         {
             var judicialManagementOrderTable = _judicialManagementOrdersRepository.Queryable()