Prechádzať zdrojové kódy

Merge branch 'master' of http://110.188.24.182:10023/Fengwo/hotline

田爽 1 rok pred
rodič
commit
7ed0f0343d

+ 7 - 2
src/Hotline.Application/FlowEngine/WorkflowApplication.cs

@@ -456,7 +456,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
 
         var dto = new NextStepsDto
         {
-            CanReject = currentStep.CanReject,
+            CanReject = workflow.IsReviewType() && currentStep.CanReject,
             ExpiredTime = workflow.ExpiredTime,
             RealCommunicationModeOptions = EnumExts.GetDescriptions<ERealCommunicationMode>().ToList(),
             TimeTypeOptions = EnumExts.GetDescriptions<ETimeType>().ToList()
@@ -1138,7 +1138,12 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
                 var csStartStep = workflow.Steps.FirstOrDefault(d => d.Id == currentStep.CountersignStartStepId);
                 if (csStartStep is null)
                     throw new UserFriendlyException("未查询到会签开始节点");
-                return FlowAssignInfo.Create(csStartStep.FlowAssignType.Value, csStartStep.Handlers, isStartCountersign);
+
+                var prevStep = workflow.Steps.FirstOrDefault(d => d.Id == csStartStep.PrevStepId);
+                if (prevStep is null)
+                    throw new UserFriendlyException("未查询到目标节点的前一节点");
+
+                return FlowAssignInfo.Create(prevStep.FlowAssignType.Value, prevStep.Handlers, isStartCountersign);
             }
             else
             {

+ 10 - 8
src/Hotline.Application/Mappers/WorkflowMapperConfigs.cs

@@ -26,14 +26,14 @@ public class WorkflowMapperConfigs : IRegister
             .Ignore(d => d.IsStartedCountersignEnd)
             .Ignore(d => d.IsOrigin)
 
-            .Ignore(d=>d.NextHandlers)
-            .Ignore(d=>d.NextMainHandler)
-            .Ignore(d=>d.NextStepCode)
-            .Ignore(d=>d.BackToCountersignEnd)
-            .Ignore(d=>d.IsSms)
-            .Ignore(d=>d.Opinion)
-            .Ignore(d=>d.Additions)
-            .Ignore(d=>d.StepExpiredTime)
+            .Ignore(d => d.NextHandlers)
+            .Ignore(d => d.NextMainHandler)
+            .Ignore(d => d.NextStepCode)
+            .Ignore(d => d.BackToCountersignEnd)
+            .Ignore(d => d.IsSms)
+            .Ignore(d => d.Opinion)
+            .Ignore(d => d.Additions)
+            .Ignore(d => d.StepExpiredTime)
             ;
 
         config.ForType<WorkflowStep, WorkflowTrace>()
@@ -79,6 +79,8 @@ public class WorkflowMapperConfigs : IRegister
             .Map(d => d.RealCommunicationMode, s => s.RealCommunicationMode)
             .Map(d => d.RealCommunicationTime, s => s.RealCommunicationTime)
             .Map(d => d.RealCommunicationAddress, s => s.RealCommunicationAddress)
+            .Map(d => d.RealIsContacted, s => s.RealIsContacted)
+            .Map(d => d.RealContactLocale, s => s.RealContactLocale)
             .IgnoreNonMapped(true);
 
         //config.ForType<WorkflowDefinition, WorkflowStep>()

+ 10 - 0
src/Hotline.Share/Dtos/FlowEngine/NextWorkflowDto.cs

@@ -41,5 +41,15 @@ public class NextWorkflowDto : BasicWorkflowDto
     /// </summary>
     public string? RealCommunicationAddress { get; set; }
 
+    /// <summary>
+    /// 已与市民沟通
+    /// </summary>
+    public bool? RealIsContacted { get; set; }
+
+    /// <summary>
+    /// 已与市民现场沟通
+    /// </summary>
+    public bool? RealContactLocale { get; set; }
+
     #endregion
 }

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

@@ -188,6 +188,16 @@ namespace Hotline.Share.Dtos.Order
         /// </summary>
         public string? RealCommunicationAddress { get; set; }
 
+        /// <summary>
+        /// 已与市民沟通
+        /// </summary>
+        public bool? RealIsContacted { get; set; }
+
+        /// <summary>
+        /// 已与市民现场沟通
+        /// </summary>
+        public bool? RealContactLocale { get; set; }
+
         #endregion
 
         #region 当前办理节点信息

+ 16 - 3
src/Hotline/FlowEngine/Workflows/Workflow.cs

@@ -163,6 +163,16 @@ public partial class Workflow : CreationEntity
     /// </summary>
     public string? RealCommunicationAddress { get; set; }
 
+    /// <summary>
+    /// 已与市民沟通
+    /// </summary>
+    public bool? RealIsContacted { get; set; }
+
+    /// <summary>
+    /// 已与市民现场沟通
+    /// </summary>
+    public bool? RealContactLocale { get; set; }
+
     #endregion
 
     #region 当前办理节点信息
@@ -227,7 +237,7 @@ public partial class Workflow : CreationEntity
     /// <summary>
     /// 办结工作日时长
     /// </summary>
-    public double HandleDurationWorkday { get; set; }
+    public double HandleDurationWorkday { get; set; }//todo
 
     /// <summary>
     /// 全流程时长(分钟)
@@ -404,6 +414,7 @@ public partial class Workflow
         ActualHandleStepName = currentStep.Name;
         ActualHandleStepId = currentStep.Id;
         ActualHandleStepCreateTime = currentStep.CreationTime;
+        ActualHandleStepAcceptTime = currentStep.AcceptTime;
         ActualHandleTime = DateTime.Now;
         ActualHandlerId = actualHandlerId;
         ActualHandlerName = actualHandlerName;
@@ -700,18 +711,20 @@ public partial class Workflow
             throw new ArgumentNullException($"{ActualHandleTime} is null");
         if (!CenterToOrgTime.HasValue)
             throw new ArgumentNullException($"{CenterToOrgTime} is null");
-        HandleDuration = (ActualHandleTime - CenterToOrgTime).Value.TotalMinutes;
+        HandleDuration = Math.Round((ActualHandleTime - CenterToOrgTime).Value.TotalMinutes);
     }
 
     public void SetAllDuration()
     {
         if (!EndTime.HasValue)
             throw new ArgumentNullException($"{EndTime} is null");
-        AllDuration = (EndTime - CreationTime).Value.TotalMinutes;
+        AllDuration = Math.Round((EndTime - CreationTime).Value.TotalMinutes);
     }
 
     public bool IsReviewPass() => FlowType == EFlowType.Review && ReviewResult == EReviewResult.Approval;
 
+    public bool IsReviewType() => FlowType == EFlowType.Review;
+
     #endregion
 }
 

+ 10 - 0
src/Hotline/Orders/Order.cs

@@ -414,6 +414,16 @@ namespace Hotline.Orders
         [SugarColumn(IsNullable = true)]
         public string? RealCommunicationAddress { get; set; }
 
+        /// <summary>
+        /// 已与市民沟通
+        /// </summary>
+        public bool? RealIsContacted { get; set; }
+
+        /// <summary>
+        /// 已与市民现场沟通
+        /// </summary>
+        public bool? RealContactLocale { get; set; }
+
         #endregion
 
         #region 当前办理节点信息