TANG JIANG 1 year ago
parent
commit
e9e3fd1d69

+ 115 - 4
src/Hotline.Api/Controllers/EnforcementOrderController.cs

@@ -13,6 +13,8 @@ using Hotline.Share.Enums.Order;
 using MapsterMapper;
 using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Mvc;
+using Org.BouncyCastle.Utilities;
+using Polly.Caching;
 using SqlSugar;
 using XF.Domain.Authentications;
 using XF.Domain.Exceptions;
@@ -169,9 +171,8 @@ namespace Hotline.Api.Controllers
                     p.AreaName,
                     p.Id
                 })
-                .OrderBy(p=>p.Id)
+                .OrderBy(p => p.Id)
                 .ToListAsync();
-
         }
 
         /// <summary>
@@ -242,7 +243,6 @@ namespace Hotline.Api.Controllers
         /// <param name="AreaCode"></param>
         /// <returns></returns>
         [HttpGet("event_classification_statistics")]
-        [AllowAnonymous]
         public async Task<object> GetEventClassificationStatisticsAsync(DateTime StartDate, DateTime EndDate, string Id, string AreaCode)
         {
 
@@ -298,6 +298,28 @@ namespace Hotline.Api.Controllers
             return new { List = items, Total = total, OrderCount = orderCount };
         }
 
+        /// <summary>
+        /// 事项分类统计--明细
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpGet("event_classification_statistics_order_list")]
+        public async Task<PagedDto<EnforcementOrderListDto>> GetEventClassificationStatisticsOrderListAsync([FromQuery] QueryEventClassificationStatisticsDto dto)
+        {
+            dto.EndDate = dto.EndDate.AddDays(1).AddSeconds(-1);
+
+            var (total, items) = await _enforcementOrdersRepository.Queryable()
+            .Includes(x => x.Order)
+            .Where(d => d.Order.Id != null)
+            .Where(d => d.Order.CreationTime >= dto.StartDate && d.Order.CreationTime <= dto.EndDate)
+            .WhereIF(!string.IsNullOrEmpty(dto.EventTypeId), d => d.EventTypeId == dto.EventTypeId)
+            .WhereIF(!string.IsNullOrEmpty(dto.AreaCode), d => d.Order.AreaCode == dto.AreaCode)
+              .OrderByDescending(d => d.CreationTime)
+           .ToPagedListAsync(dto, HttpContext.RequestAborted);
+
+            return new PagedDto<EnforcementOrderListDto>(total, _mapper.Map<List<EnforcementOrderListDto>>(items));
+        }
+
         /// <summary>
         /// 执法部门办件统计
         /// </summary>
@@ -320,6 +342,7 @@ namespace Hotline.Api.Controllers
                     })
                     .Select(d => new
                     {
+                        OrgCode = d.Order.OrgLevelOneCode,
                         OrgName = d.Order.OrgLevelOneName,
                         CountNum = SqlFunc.AggregateCount(d.Order.OrgLevelOneCode),
                         TheClueIsTrue = SqlFunc.AggregateSum(SqlFunc.IIF(d.IsTheClueTrue.HasValue && d.IsTheClueTrue.Value == true, 1, 0)),
@@ -332,7 +355,71 @@ namespace Hotline.Api.Controllers
         }
 
         /// <summary>
-        /// 区域受理排行
+        /// 执法部门办件统计---子级
+        /// </summary>
+        /// <param name="StartDate"></param>
+        /// <param name="EndDate"></param>
+        /// <param name="OrgCode"></param>
+        /// <returns></returns>
+        [HttpGet("enforcement_departmental_processing_statistics_child")]
+        public async Task<object> GetDepartmentalProcessingStatisticsAsync(DateTime StartDate, DateTime EndDate,string OrgCode)
+        {
+
+            EndDate = EndDate.AddDays(1).AddSeconds(-1);
+            if(string.IsNullOrEmpty(OrgCode))
+                throw UserFriendlyException.SameMessage("部门code不能为空!");
+
+            var data = await _enforcementOrdersRepository.Queryable()
+                   .Includes(x => x.Order)
+                   .Where(d => d.Order.Id != null)
+                   .Where(d => d.Order.CreationTime >= StartDate && d.Order.CreationTime <= EndDate)
+                   .Where(d => d.Order.ActualHandleOrgCode.StartsWith(OrgCode))
+                    .GroupBy(d => new
+                    {
+                        OrgCode = d.Order.ActualHandleOrgCode,
+                        OrgName = d.Order.ActualHandleOrgName
+                    })
+                    .Select(d => new
+                    {
+                        OrgCode = d.Order.ActualHandleOrgCode,
+                        OrgName = d.Order.ActualHandleOrgName,
+                        CountNum = SqlFunc.AggregateCount(d.Order.ActualHandleOrgCode),
+                        TheClueIsTrue = SqlFunc.AggregateSum(SqlFunc.IIF(d.IsTheClueTrue.HasValue && d.IsTheClueTrue.Value == true, 1, 0)),
+                        TheClueIsNotTrue = SqlFunc.AggregateSum(SqlFunc.IIF(d.IsTheClueTrue.HasValue && d.IsTheClueTrue.Value == false, 1, 0)),
+                        EnforcementOrder = SqlFunc.AggregateSum(SqlFunc.IIF(d.IsEnforcementOrder, 1, 0)),
+                       
+                    })
+                   .ToListAsync();
+
+            return data;
+        }
+
+        /// <summary>
+        /// 执法部门办件统计---明细
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpGet("enforcement_departmental_processing_statistics_order_list")]
+        public async Task<PagedDto<EnforcementOrderListDto>> GetDepartmentalProcessingStatisticsOrderListAsync([FromQuery] QueryDepartmentalProcessingStatisticsDto dto)
+        {
+            dto.EndDate = dto.EndDate.AddDays(1).AddSeconds(-1);
+
+            var (total, items) = await _enforcementOrdersRepository.Queryable()
+            .Includes(x => x.Order)
+            .Where(d => d.Order.Id != null)
+            .Where(d => d.Order.CreationTime >= dto.StartDate && d.Order.CreationTime <= dto.EndDate)
+            .WhereIF(!string.IsNullOrEmpty(dto.OrgCode), d => d.Order.OrgLevelOneCode == dto.OrgCode)
+            .WhereIF(dto.TheClueIsTrue==true, d => d.IsTheClueTrue == true)
+            .WhereIF(dto.TheClueIsNotTrue == true, d => d.IsTheClueTrue == false)
+            .WhereIF(dto.EnforcementOrder == true, d => d.IsEnforcementOrder == true)
+              .OrderByDescending(d => d.CreationTime)
+           .ToPagedListAsync(dto, HttpContext.RequestAborted);
+
+            return new PagedDto<EnforcementOrderListDto>(total, _mapper.Map<List<EnforcementOrderListDto>>(items));
+        }
+
+        /// <summary>
+        /// 区域分类统计
         /// </summary>
         /// <returns></returns>
         [HttpGet("regional_classification_statistics")]
@@ -366,6 +453,30 @@ namespace Hotline.Api.Controllers
             return list;
         }
 
+        /// <summary>
+        /// 区域分类统计---明细
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpGet("regional_classification_statistics_order_list")]
+        public async Task<PagedDto<EnforcementOrderListDto>> GetRegionalClassificationStatisticsOrderListAsync([FromQuery] QueryRegionalClassificationStatisticsDto dto)
+        {
+            dto.EndDate = dto.EndDate.AddDays(1).AddSeconds(-1);
+
+            var (total, items) = await _enforcementOrdersRepository.Queryable()
+            .Includes(x => x.Order)
+            .Where(d => d.Order.Id != null)
+            .Where(d => d.Order.CreationTime >= dto.StartDate && d.Order.CreationTime <= dto.EndDate)
+            .WhereIF(!string.IsNullOrEmpty(dto.AreaCode), d => d.Order.AreaCode == dto.AreaCode)
+            .WhereIF(dto.TheClueIsTrue == true, d => d.IsTheClueTrue == true)
+            .WhereIF(dto.TheClueIsNotTrue == true, d => d.IsTheClueTrue == false)
+            .WhereIF(dto.EnforcementOrder == true, d => d.IsEnforcementOrder == true)
+              .OrderByDescending(d => d.CreationTime)
+           .ToPagedListAsync(dto, HttpContext.RequestAborted);
+
+            return new PagedDto<EnforcementOrderListDto>(total, _mapper.Map<List<EnforcementOrderListDto>>(items));
+        }
+
         /// <summary>
         /// 部门满意度统计
         /// </summary>

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

@@ -10,4 +10,60 @@ namespace Hotline.Share.Dtos.JudicialManagement
 
         public string AreaCode { get; set; }
     }
+
+
+    public record QueryDepartmentalProcessingStatisticsDto: PagedRequest
+    {
+        public DateTime StartDate { get; set; }
+        public DateTime EndDate { get; set; }
+
+        /// <summary>
+        /// 部门code
+        /// </summary>
+        public string OrgCode { get; set; }
+
+        /// <summary>
+        /// 线索属实
+        /// </summary>
+        public bool TheClueIsTrue { get; set; }
+
+        /// <summary>
+        /// 线索不属实
+        /// </summary>
+        public bool TheClueIsNotTrue { get; set; }
+
+        /// <summary>
+        /// 行政执法工单
+        /// </summary>
+        public bool EnforcementOrder { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public record QueryRegionalClassificationStatisticsDto : PagedRequest
+    {
+        public DateTime StartDate { get; set; }
+        public DateTime EndDate { get; set; }
+
+        /// <summary>
+        /// 区域code
+        /// </summary>
+        public string AreaCode { get; set; }
+
+        /// <summary>
+        /// 线索属实
+        /// </summary>
+        public bool TheClueIsTrue { get; set; }
+
+        /// <summary>
+        /// 线索不属实
+        /// </summary>
+        public bool TheClueIsNotTrue { get; set; }
+
+        /// <summary>
+        /// 行政执法工单
+        /// </summary>
+        public bool EnforcementOrder { get; set; }
+    }
 }