瀏覽代碼

HandleDuration

xf 1 年之前
父節點
當前提交
6cff50d540

+ 17 - 0
src/Hotline.Share/Dtos/Order/OrderDto.cs

@@ -94,6 +94,23 @@ namespace Hotline.Share.Dtos.Order
         /// </summary>
         public DateTime? FiledTime { get; set; }
 
+        /// <summary>
+        /// 办结时长(分钟)
+        /// 办结时间-交办时间
+        /// </summary>
+        public double HandleDuration { get; set; }
+
+        /// <summary>
+        /// 办结工作日时长
+        /// </summary>
+        public double HandleDurationWorkday { get; set; }
+
+        /// <summary>
+        /// 全流程时长(分钟)
+        /// 归档时间-创建时间
+        /// </summary>
+        public double AllDuration { get; set; }
+
         /// <summary>
         /// 办理时间限制(如:24小时、7个工作日)
         /// </summary>

+ 39 - 0
src/Hotline/FlowEngine/Workflows/Workflow.cs

@@ -213,6 +213,26 @@ public class Workflow : CreationEntity
     /// </summary>
     public DateTime? CenterToOrgTime { get; set; }
 
+    /// <summary>
+    /// 办结时长(分钟)
+    /// 办结时间-交办时间
+    /// </summary>
+    [SugarColumn(DefaultValue = "0")]
+    public double HandleDuration { get; set; }
+
+    /// <summary>
+    /// 办结工作日时长
+    /// </summary>
+    [SugarColumn(DefaultValue = "0")]
+    public double HandleDurationWorkday { get; set; }
+
+    /// <summary>
+    /// 全流程时长(分钟)
+    /// 归档时间-创建时间
+    /// </summary>
+    [SugarColumn(DefaultValue = "0")]
+    public double AllDuration { get; set; }
+
     /// <summary>
     /// 外部业务唯一标识
     /// </summary>
@@ -337,6 +357,7 @@ public class Workflow : CreationEntity
     {
         Status = EWorkflowStatus.Completed;
         CompleteTime = DateTime.Now;
+        SetAllDuration();
 
         UpdateActualOption();
     }
@@ -405,6 +426,8 @@ public class Workflow : CreationEntity
             actualHandlerId, actualHandlerName,
             actualHandleOrgCode, actualHandleOrgName,
             actualHandleOrgAreaCode, actualHandleOrgAreaName);
+
+        SetHandleDuration();
     }
 
     /// <summary>
@@ -645,6 +668,22 @@ public class Workflow : CreationEntity
 
     }
 
+    public void SetHandleDuration()
+    {
+        if (!ActualHandleTime.HasValue)
+            throw new ArgumentNullException($"{ActualHandleTime} is null");
+        if (!CenterToOrgTime.HasValue)
+            throw new ArgumentNullException($"{CenterToOrgTime} is null");
+        HandleDuration = (ActualHandleTime - CenterToOrgTime).Value.TotalMinutes;
+    }
+
+    public void SetAllDuration()
+    {
+        if (!CompleteTime.HasValue)
+            throw new ArgumentNullException($"{CompleteTime} is null");
+        AllDuration = (CompleteTime - CreationTime).Value.TotalMinutes;
+    }
+
     #endregion
 }
 

+ 4 - 0
src/Hotline/FlowEngine/Workflows/WorkflowDomainService.cs

@@ -119,6 +119,8 @@ namespace Hotline.FlowEngine.Workflows
                  _sessionContext.RequiredOrgCode, _sessionContext.OrgName,
                 _sessionContext.OrgAreaCode, _sessionContext.OrgAreaName);
 
+            //todo 计算办理工作时长
+
             //更新当前办理节点信息
             workflow.UpdateWorkflowCurrentStepInfo(dto.IsStartCountersign, firstStep, secondStepBox.Steps.First());
 
@@ -398,6 +400,8 @@ namespace Hotline.FlowEngine.Workflows
                 _sessionContext.RequiredOrgCode, _sessionContext.OrgName,
                 _sessionContext.OrgAreaCode, _sessionContext.OrgAreaName);
 
+            //todo 计算办理工作时长
+
             //更新当前办理节点信息
             workflow.UpdateWorkflowCurrentStepInfo(dto.IsStartCountersign, currentStep, nextStepBox.Steps.First());
 

+ 21 - 1
src/Hotline/Orders/Order.cs

@@ -295,6 +295,26 @@ namespace Hotline.Orders
         /// </summary>
         public DateTime? FiledTime { get; set; }
 
+        /// <summary>
+        /// 办结时长(分钟)
+        /// 办结时间-交办时间
+        /// </summary>
+        [SugarColumn(DefaultValue = "0")]
+        public double HandleDuration { get; set; }
+
+        /// <summary>
+        /// 办结工作日时长
+        /// </summary>
+        [SugarColumn(DefaultValue = "0")]
+        public double HandleDurationWorkday { get; set; }
+
+        /// <summary>
+        /// 全流程时长(分钟)
+        /// 归档时间-创建时间
+        /// </summary>
+        [SugarColumn(DefaultValue = "0")]
+        public double AllDuration { get; set; }
+
         /// <summary>
         /// 办理时间限制(如:24小时、7个工作日)
         /// </summary>
@@ -541,7 +561,7 @@ namespace Hotline.Orders
         public void Cancel()
         {
             IsCancel = true;
-            
+
         }
 
         public void Redo()