Procházet zdrojové kódy

Merge branch 'feature/snapshot' into dev

qinchaoyue před 2 měsíci
rodič
revize
0711cd3b6b

+ 68 - 17
src/Hotline.Share/Dtos/Snapshot/StatisticsDto.cs

@@ -1,5 +1,6 @@
 using Hotline.Share.Enums.Order;
 using Hotline.Share.Requests;
+using Hotline.Share.Tools;
 using Newtonsoft.Json;
 using System;
 using System.Collections.Generic;
@@ -49,7 +50,7 @@ public class RedPackStatisticsDetailsOutDto
     /// <summary>
     /// 过期状态
     /// </summary>
-    public EExpiredStatus ExpiredStatus { get; set; }
+    public EExpiredStatus? ExpiredStatus => FiledTime.CalculateExpiredState(Status, this.ExpiredTime, this.NearlyExpiredTime, this.NearlyExpiredTimeOne);
 
     /// <summary>
     /// 过期状态
@@ -94,13 +95,23 @@ public class RedPackStatisticsDetailsOutDto
     /// <summary>
     /// 是否紧急
     /// </summary>
-    public string IsUrgentTxt => IsUrgent ? "紧急" : "-";
+    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>
@@ -162,7 +173,7 @@ public class RedPackStatisticsDetailsOutDto
     /// <summary>
     /// 办结时间
     /// </summary>
-    public DateTime? CenterToOrgTime { get; set; }
+    public DateTime? FiledTime { get; set; }
 
     /// <summary>
     /// 受理类型
@@ -617,7 +628,7 @@ public class SnapshotStatisticsOutDto
     /// <summary>
     /// 二次办理工单满意率-回访不满意重办
     /// </summary>
-    public string ECBLGDMYLHFBMYCBTxt => ECBLGDMYLHFBMYCB.ToString("f4") + "%"; 
+    public string ECBLGDMYLHFBMYCBTxt => ECBLGDMYLHFBMYCB.ToString("f4") + "%";
 
     /// <summary>
     /// 特提件数
@@ -694,12 +705,12 @@ public class SnapshotStatisticsDetailOutDto
     /// <summary>
     /// 过期状态
     /// </summary>
-    public EExpiredStatus ExpiredStatus { get; set; }
+    public EExpiredStatus? ExpiredStatus => FiledTime.CalculateExpiredState(Status, this.ExpiredTime, this.NearlyExpiredTime, this.NearlyExpiredTimeOne);
 
     /// <summary>
     /// 过期状态
     /// </summary>
-    public string ExpiredStatusText => ExpiredStatus.GetDescription();
+    public string ExpiredStatusText => ExpiredStatus.GetDescription();    
 
     /// <summary>
     /// 受理编号
@@ -739,13 +750,23 @@ public class SnapshotStatisticsDetailOutDto
     /// <summary>
     /// 是否紧急
     /// </summary>
-    public string IsUrgentTxt => IsUrgent ? "紧急" : "-";
+    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>
@@ -832,7 +853,7 @@ public class SnapshotStatisticsDetailOutDto
     /// <summary>
     /// 办结时间
     /// </summary>
-    public DateTime? CenterToOrgTime { get; set; }
+    public DateTime? FiledTime { get; set; }
 
     /// <summary>
     /// 受理类型
@@ -906,7 +927,7 @@ public class HotspotStatisticsDetailsOutDto
     /// <summary>
     /// 过期状态
     /// </summary>
-    public EExpiredStatus ExpiredStatus { get; set; }
+    public EExpiredStatus? ExpiredStatus => FiledTime.CalculateExpiredState(Status, this.ExpiredTime, this.NearlyExpiredTime, this.NearlyExpiredTimeOne);
 
     /// <summary>
     /// 过期状态
@@ -961,13 +982,23 @@ public class HotspotStatisticsDetailsOutDto
     /// <summary>
     /// 是否紧急
     /// </summary>
-    public string IsUrgentTxt => IsUrgent ? "紧急" : "-";
+    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>
@@ -1029,7 +1060,7 @@ public class HotspotStatisticsDetailsOutDto
     /// <summary>
     /// 办结时间
     /// </summary>
-    public DateTime? CenterToOrgTime { get; set; }
+    public DateTime? FiledTime { get; set; }
 
     /// <summary>
     /// 满意度
@@ -1254,7 +1285,7 @@ public class SnapshotProcessingStatisticsDetailsOutDto
     /// <summary>
     /// 过期状态
     /// </summary>
-    public EExpiredStatus ExpiredStatus { get; set; }
+    public EExpiredStatus? ExpiredStatus => FiledTime.CalculateExpiredState(Status, this.ExpiredTime, this.NearlyExpiredTime, this.NearlyExpiredTimeOne);
 
     /// <summary>
     /// 过期状态
@@ -1310,7 +1341,17 @@ public class SnapshotProcessingStatisticsDetailsOutDto
     /// 期满时间
     /// </summary>
     public DateTime? ExpiredTime { get; set; }
-    
+
+    /// <summary>
+    /// 即将超期时间
+    /// </summary>
+    public DateTime? NearlyExpiredTime { get; set; }
+
+    /// <summary>
+    /// 即将超期时间第一级
+    /// </summary>
+    public DateTime? NearlyExpiredTimeOne { get; set; }
+
     /// <summary>
     /// 接办部门
     /// </summary>
@@ -1324,7 +1365,7 @@ public class SnapshotProcessingStatisticsDetailsOutDto
     /// <summary>
     /// 办结时间
     /// </summary>
-    public DateTime? CenterToOrgTime { get; set; }
+    public DateTime? FiledTime { get; set; }
 
     /// <summary>
     /// 受理类型
@@ -1401,7 +1442,7 @@ public class GuiderWorkStatisticsDetailsOutDto
     /// <summary>
     /// 过期状态
     /// </summary>
-    public EExpiredStatus ExpiredStatus { get; set; }
+    public EExpiredStatus? ExpiredStatus => FiledTime.CalculateExpiredState(Status, this.ExpiredTime, this.NearlyExpiredTime, this.NearlyExpiredTimeOne);
 
     /// <summary>
     /// 过期状态
@@ -1446,13 +1487,23 @@ public class GuiderWorkStatisticsDetailsOutDto
     /// <summary>
     /// 是否紧急
     /// </summary>
-    public string IsUrgentTxt => IsUrgent ? "紧急" : "-";
+    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>
@@ -1529,7 +1580,7 @@ public class GuiderWorkStatisticsDetailsOutDto
     /// <summary>
     /// 办结时间
     /// </summary>
-    public DateTime? CenterToOrgTime { get; set; }
+    public DateTime? FiledTime { get; set; }
 
     /// <summary>
     /// 受理类型

+ 38 - 0
src/Hotline.Share/Tools/DateTimeExtensions.cs

@@ -1,8 +1,11 @@
 using Hotline.Share.Dtos.CallCenter;
+using Hotline.Share.Dtos.Order;
+using Hotline.Share.Enums.Order;
 using Novacode;
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Runtime.CompilerServices;
 using System.Text;
 using System.Threading.Tasks;
 
@@ -37,4 +40,39 @@ public static class DateTimeExtensions
         return new DateTimeOffset(value).ToUnixTimeMilliseconds();
     }
 
+    public static EExpiredStatus? CalculateExpiredState(this DateTime? filedTime, EOrderStatus status, DateTime? expiredTime, DateTime? nearlyExpiredTime, DateTime? nearlyExpiredTimeOne)
+    {
+        DateTime? dateTime = DateTime.Now;
+        if (status >= EOrderStatus.Filed)
+        {
+            dateTime = filedTime;
+        }
+
+        if (expiredTime.HasValue)
+        {
+            if (nearlyExpiredTimeOne.HasValue && dateTime < nearlyExpiredTimeOne)
+            {
+                return EExpiredStatus.Normal;
+            }
+            else if (!nearlyExpiredTimeOne.HasValue && dateTime < nearlyExpiredTime)
+            {
+                return EExpiredStatus.Normal;
+            }
+            else if (nearlyExpiredTimeOne.HasValue && dateTime > nearlyExpiredTimeOne && dateTime < nearlyExpiredTime)
+            {
+                return EExpiredStatus.GoingToExpiredOne;
+            }
+            else if (dateTime > nearlyExpiredTime && dateTime < expiredTime)
+            {
+                return EExpiredStatus.GoingToExpired;
+            }
+            else
+            {
+                return EExpiredStatus.Expired;
+            }
+        }
+
+        return null;
+    }
+
 }