Bläddra i källkod

fixed: 退回到部门审批接口异常

xf 2 månader sedan
förälder
incheckning
bc466458fd

+ 45 - 13
src/Hotline.Api/Controllers/OrderController.cs

@@ -5659,12 +5659,28 @@ public class OrderController : BaseController
             //string applicantId, string applicantOrgId, string[] applicantRoleIds,
             //    ISessionContext current, CancellationToken cancellationToken);
             sendBack.SendBackData.ExpiredTime = order.ExpiredTime;
-            var result = await _workflowApplication.PreviousAsync(sendBack.SendBackData, sendBack.WorkflowUserId,
-                sendBack.WorkflowOrgId, sendBack.WorkflowRoleIds.ToArray(),
-                cancellationToken: HttpContext.RequestAborted);
+            //var result = await _workflowApplication.PreviousAsync(sendBack.SendBackData, sendBack.WorkflowUserId,
+            //    sendBack.WorkflowOrgId, sendBack.WorkflowRoleIds.ToArray(),
+            //    cancellationToken: HttpContext.RequestAborted);
+
+            var (workflow, currentStep1, prevDefine, prevStep1, newStep, flowDirection) =
+                await _workflowApplication.PreviousAsync(sendBack.SendBackData,
+                    sendBack.WorkflowUserId, sendBack.WorkflowOrgId, sendBack.WorkflowRoleIds.ToArray(),
+                    async (workflow1, prevStepDefine, prevStep1, newStep) =>
+                    {
+                        var stepAssignInfo =
+                            await _orderApplication.GetOrderPreviousAssignInfoAsync(workflow1, prevStepDefine,
+                                prevStep1, HttpContext.RequestAborted);
+                        if (stepAssignInfo is null) return;
+                        var validator = new StepAssignInfoValidator();
+                        await validator.ValidateAndThrowAsync(stepAssignInfo);
+                        newStep.Assign(stepAssignInfo);
+                    },
+                    HttpContext.RequestAborted);
+
             //var flowDirection = await _workflowApplication.PreviousAsync(sendBack.SendBackData, sendBack.WorkflowUserId, HttpContext.RequestAborted);
-            var processType = result.flowDirection == EFlowDirection.OrgToCenter ||
-                              result.flowDirection == EFlowDirection.CenterToCenter
+            var processType = flowDirection == EFlowDirection.OrgToCenter ||
+                              flowDirection == EFlowDirection.CenterToCenter
                 ? EProcessType.Zhiban
                 : EProcessType.Jiaoban;
             if (sendBack.ApplyOrgId != OrgSeedData.CenterId && sendBack.SendBackOrgId == OrgSeedData.CenterId)
@@ -5673,8 +5689,8 @@ public class OrderController : BaseController
                 .Where(o => o.Id == sendBack.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
 
             //记录退回后最新的流程节点
-            if (result.newStep != null && !string.IsNullOrEmpty(result.newStep.Id))
-                sendBack.NewCurrentStepId = result. newStep.Id;
+            if (newStep != null && !string.IsNullOrEmpty(newStep.Id))
+                sendBack.NewCurrentStepId = newStep.Id;
             //发送短信TODO
         }
         else
@@ -5738,11 +5754,27 @@ public class OrderController : BaseController
                 }
 
                 sendBack.SendBackData.ExpiredTime = order.ExpiredTime;
-                var result = await _workflowApplication.PreviousAsync(sendBack.SendBackData,
-                    sendBack.WorkflowUserId, sendBack.WorkflowOrgId, sendBack.WorkflowRoleIds.ToArray(),
-                    cancellationToken: HttpContext.RequestAborted);
+                //var result = await _workflowApplication.PreviousAsync(sendBack.SendBackData,
+                //    sendBack.WorkflowUserId, sendBack.WorkflowOrgId, sendBack.WorkflowRoleIds.ToArray(),
+                //    cancellationToken: HttpContext.RequestAborted);
                 //var flowDirection = await _workflowApplication.PreviousAsync(sendBack.SendBackData, sendBack.WorkflowUserId, HttpContext.RequestAborted);
-                var processType = result.flowDirection == EFlowDirection.OrgToCenter || result.flowDirection == EFlowDirection.CenterToCenter
+
+                var (workflow, currentStep1, prevDefine, prevStep1, newStep, flowDirection) =
+                    await _workflowApplication.PreviousAsync(sendBack.SendBackData,
+                        sendBack.WorkflowUserId, sendBack.WorkflowOrgId, sendBack.WorkflowRoleIds.ToArray(),
+                        async (workflow1, prevStepDefine, prevStep1, newStep) =>
+                        {
+                            var stepAssignInfo =
+                                await _orderApplication.GetOrderPreviousAssignInfoAsync(workflow1, prevStepDefine,
+                                    prevStep1, HttpContext.RequestAborted);
+                            if (stepAssignInfo is null) return;
+                            var validator = new StepAssignInfoValidator();
+                            await validator.ValidateAndThrowAsync(stepAssignInfo);
+                            newStep.Assign(stepAssignInfo);
+                        },
+                        HttpContext.RequestAborted);
+
+                var processType = flowDirection == EFlowDirection.OrgToCenter || flowDirection == EFlowDirection.CenterToCenter
                     ? EProcessType.Zhiban
                     : EProcessType.Jiaoban;
                 if (sendBack.ApplyOrgId != OrgSeedData.CenterId && sendBack.SendBackOrgId == OrgSeedData.CenterId)
@@ -5751,8 +5783,8 @@ public class OrderController : BaseController
                     .Where(o => o.Id == sendBack.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
 
                 //记录退回后最新的流程节点
-                if (result.newStep != null && !string.IsNullOrEmpty(result.newStep.Id))
-                    sendBack.NewCurrentStepId = result.newStep.Id;
+                if (newStep != null && !string.IsNullOrEmpty(newStep.Id))
+                    sendBack.NewCurrentStepId = newStep.Id;
                 //发送短信TODO
             }
             else

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

@@ -144,8 +144,6 @@ namespace Hotline.Share.Dtos.Order
         /// </summary>
         public string AllDurationHour => GetAllDurationHour();
 
-        public string AllDurationHour => GetAllDurationHour();
-
         public string GetAllDurationHour()
         {
             if (CreationTimeHandleDurationWorkday != null && CreationTimeHandleDurationWorkday > 0)