Explorar el Código

完成行业统计详情

qinchaoyue hace 1 mes
padre
commit
66b5859672

+ 9 - 0
src/Hotline.Api/Controllers/Snapshot/BiSnapshotController.cs

@@ -285,6 +285,15 @@ public class BiSnapshotController : BaseController
         };
     }
 
+    /// <summary>
+    /// 行业统计详情
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    [HttpGet("industry-statistics-detail")]
+    public async Task<PagedDto<IndustryStatisticsDetailsOutDto>> GetIndustryStatisticsDetailsAsync([FromQuery] IndustryStatisticsDetailsInDto dto)
+        => (await _biSnapshotApplication.GetIndustryStatisticsDetails(dto).ToPagedListAsync(dto)).ToPaged();
+
     /// <summary>
     /// 检查合规统计-详情
     /// </summary>

+ 10 - 0
src/Hotline.Application/Snapshot/BiSnapshotApplication.cs

@@ -931,4 +931,14 @@ public class BiSnapshotApplication : IBiSnapshotApplication, IScopeDependency
         pivotResult.AddSumLine("IndustryName");
         return pivotResult;
     }
+
+    public ISugarQueryable<IndustryStatisticsDetailsOutDto> GetIndustryStatisticsDetails(IndustryStatisticsDetailsInDto dto)
+    {
+        var query = _orderSnapshotRepository.Queryable(includeDeleted: true)
+            .LeftJoin<Order>((snapshot, order) => snapshot.Id == order.Id)
+            .Where((snapshot, order) => snapshot.CreationTime >= dto.StartTime && snapshot.CreationTime <= dto.EndTime && snapshot.IndustryId == dto.IndustryId)
+            .WhereIF(dto.FieldName != "OrderCountNum", (Snapshot, order) => order.County == dto.FieldName)
+            .Select((snapshot, order) => new IndustryStatisticsDetailsOutDto(), true);
+        return query;
+    }
 }

+ 7 - 0
src/Hotline.Application/Snapshot/IBiSnapshotApplication.cs

@@ -104,4 +104,11 @@ public interface IBiSnapshotApplication
     /// <param name="dto"></param>
     /// <returns></returns>
     List<Dictionary<string, object>> GetIndustryStatistics(IndustryStatisticsInDto dto);
+
+    /// <summary>
+    /// 行业统计详情
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    ISugarQueryable<IndustryStatisticsDetailsOutDto> GetIndustryStatisticsDetails(IndustryStatisticsDetailsInDto dto);
 }

+ 204 - 7
src/Hotline.Share/Dtos/Snapshot/StatisticsDto.cs

@@ -713,7 +713,7 @@ public class SnapshotStatisticsDetailOutDto
     /// <summary>
     /// 过期状态
     /// </summary>
-    public string ExpiredStatusText => ExpiredStatus?.GetDescription();    
+    public string ExpiredStatusText => ExpiredStatus?.GetDescription();
 
     /// <summary>
     /// 受理编号
@@ -843,6 +843,11 @@ public class SnapshotStatisticsDetailOutDto
     /// </summary>
     public string OrgLevelOneCode { get; set; }
 
+    /// <summary>
+    /// 一级部门名称
+    /// </summary>
+    public string? OrgLevelOneName { get; set; }
+
     /// <summary>
     /// 接办部门
     /// </summary>
@@ -1701,7 +1706,7 @@ public class GuiderWorkLogsOutDto
     /// <summary>
     /// 网格员办理状态
     /// </summary>
-    public string ReplyResultTypeTxt => ReplyResultType == null ? "未知": ReplyResultType.Value.GetDescription();
+    public string ReplyResultTypeTxt => ReplyResultType == null ? "未知" : ReplyResultType.Value.GetDescription();
 }
 
 public record GuiderWorkLogsInDto : PagedRequest
@@ -1824,7 +1829,7 @@ public record DuplicateItemsInDto : PagedRequest
     /// </summary>
     public string? IndustryId { get; set; }
 }
-public class DuplicateItemsOutDto 
+public class DuplicateItemsOutDto
 {
     /// <summary>
     /// Id
@@ -2335,7 +2340,7 @@ public class SnapshotDepartmentAveTimeStatisticsOutDto
     /// <summary>
     /// 平均小时数
     /// </summary>
-    public string AvgHours => OrderCountNum == 0 ? "0": (double.Parse(TotalMinutes) / 60 / OrderCountNum).ToString("f2");
+    public string AvgHours => OrderCountNum == 0 ? "0" : (double.Parse(TotalMinutes) / 60 / OrderCountNum).ToString("f2");
 }
 
 public class SnapshotDepartmentAveTimeStatisticsInDto
@@ -2659,7 +2664,7 @@ public class CompliantStatisticsDetailsOutDto
     /// </summary>
     public string Title { get; set; }
 
-   /// <summary>
+    /// <summary>
     /// 接办部门
     /// </summary>
     public string ActualHandleOrgName { get; set; }
@@ -2704,11 +2709,11 @@ public class ReTransactStatisticsOutDto
     /// <summary>
     /// 数据
     /// </summary>
-    public List<Dictionary<string, object>> Data {get; set; }
+    public List<Dictionary<string, object>> Data { get; set; }
 }
 
 public class ReTransactStatisticsDetailsOutDto
-{ 
+{
     /// <summary>
     /// Id
     /// </summary>
@@ -2904,3 +2909,195 @@ public class IndustryStatisticsInDto
     [Required]
     public DateTime EndTime { get; set; }
 }
+
+public record IndustryStatisticsDetailsInDto : PagedRequest
+{
+    [Required]
+    public DateTime StartTime { get; set; }
+    [Required]
+    public DateTime EndTime { get; set; }
+
+    /// <summary>
+    /// 字段名称
+    /// </summary>
+    [Required]
+    public string FieldName { get; set; }
+
+    /// <summary>
+    /// 行业Id
+    /// </summary>
+    [Required]
+    public string IndustryId { get; set; }
+}
+
+public class IndustryStatisticsDetailsOutDto
+{
+    /// <summary>
+    /// Id
+    /// </summary>
+    public string Id { get; set; }
+
+    /// <summary>
+    /// 过期状态
+    /// </summary>
+    public EExpiredStatus? ExpiredStatus => FiledTime.CalculateExpiredState(Status, this.ExpiredTime, this.NearlyExpiredTime, this.NearlyExpiredTimeOne);
+
+    /// <summary>
+    /// 过期状态
+    /// </summary>
+    public string ExpiredStatusText => ExpiredStatus?.GetDescription();
+
+    /// <summary>
+    /// 受理编号
+    /// </summary>
+    public string No { get; set; }
+
+    /// <summary>
+    /// 信件状态
+    /// </summary>
+    public EOrderStatus Status { get; set; }
+
+    /// <summary>
+    /// 信件状态
+    /// </summary>
+    public string StatusTxt => Status.GetDescription();
+
+    /// <summary>
+    /// 来源
+    /// </summary>
+    public string SourceChannel { get; set; }
+
+    /// <summary>
+    /// 当前节点
+    /// </summary>
+    public string CurrentStepName { get; set; }
+
+    /// <summary>
+    /// 重办次数
+    /// </summary>
+    public int ReTransactNum { get; set; }
+
+    /// <summary>
+    /// 是否紧急
+    /// </summary>
+    public bool IsUrgent { get; set; }
+
+    /// <summary>
+    /// 是否紧急
+    /// </summary>
+    public string IsUrgentText => IsUrgent ? "紧急" : "-";
+
+    /// <summary>
+    /// 期满时间
+    /// </summary>
+    public DateTime? ExpiredTime { get; set; }
+
+    /// <summary>
+    /// 即将超期时间
+    /// </summary>
+    public DateTime? NearlyExpiredTime { get; set; }
+
+    /// <summary>
+    /// 即将超期时间第一级
+    /// </summary>
+    public DateTime? NearlyExpiredTimeOne { get; set; }
+
+    /// <summary>
+    /// 是否超期
+    /// </summary>
+    public bool IsExpired
+    {
+        get
+        {
+            if (ExpiredTime.HasValue)
+                return DateTime.Now > ExpiredTime.Value;
+            return false;
+        }
+    }
+
+    /// <summary>
+    /// 受理时间
+    /// </summary>
+    public DateTime CreationTime { get; set; }
+
+    /// <summary>
+    /// 标题
+    /// </summary>
+    public string Title { get; set; }
+
+    /// <summary>
+    /// 行业
+    /// </summary>
+    public string IndustryName { get; set; }
+
+    /// <summary>
+    /// 办理时长
+    /// </summary>
+    public double? AllDuration { get; set; }
+
+    /// <summary>
+    /// 办理时长(时)
+    /// </summary>
+    public string TotalHours => AllDuration == null ? "0" : ((double)AllDuration / 60 / 60).ToString("f2");
+
+    /// <summary>
+    /// 区域
+    /// </summary>
+    public string County { get; set; }
+
+    /// <summary>
+    /// 电话
+    /// </summary>
+    public string Contact { get; set; }
+
+    /// <summary>
+    /// 受理期满时间
+    /// </summary>
+    public DateTime? AcceptExpiredTime { get; set; }
+
+    /// <summary>
+    /// 接办部门
+    /// </summary>
+    public string ActualHandleOrgName { get; set; }
+
+    /// <summary>
+    /// 一级部门
+    /// </summary>
+    public string? OrgLevelOneName { get; set; }
+
+    /// <summary>
+    /// 接办时间
+    /// </summary>
+    public DateTime? ActualHandleTime { get; set; }
+
+    /// <summary>
+    /// 办结时间
+    /// </summary>
+    public DateTime? FiledTime { get; set; }
+
+    /// <summary>
+    /// 受理类型
+    /// </summary>
+    public string AcceptType { get; set; }
+
+    /// <summary>
+    /// 热点类型
+    /// </summary>
+    public string HotspotName { get; set; }
+
+    /// <summary>
+    /// 受理人
+    /// </summary>
+    public string AcceptorName { get; set; }
+
+    /// <summary>
+    /// 受理内容
+    /// </summary>
+    public string Content { get; set; }
+
+    /// <summary>
+    /// 办理结果
+    /// </summary>
+    public string FileOpinion { get; set; }
+
+}