xfe 4 meses atrás
pai
commit
dbfc8b30a4

+ 2 - 0
src/Hotline.Api/Controllers/OrderController.cs

@@ -5388,6 +5388,8 @@ public class OrderController : BaseController
                     .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
             }
             
+            recall.ReverseFlowStepAssignInfo = _orderDomainService.GetOrderRecallAssignInfo()
+
             await _workflowApplication.RecallAsync(recall, expiredTime.ExpiredTime, order.Status >= EOrderStatus.Filed, EWorkflowTraceType.Recall,
                 HttpContext.RequestAborted);
 

+ 20 - 6
src/Hotline.Application/FlowEngine/WorkflowApplication.cs

@@ -347,14 +347,21 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
     /// </summary>
     public async Task<EFlowDirection> PreviousAsync(PreviousWorkflowDto dto, CancellationToken cancellationToken)
     {
-        var workflow = await _workflowDomainService.GetWorkflowAsync(dto.WorkflowId, withSteps: true,
+        var workflow = await _workflowDomainService.GetWorkflowAsync(dto.WorkflowId, withDefine: true, withSteps: true,
             withTraces: true, withCountersigns: true, cancellationToken: cancellationToken);
-        return await _workflowDomainService.PreviousAsync(workflow, dto,
+        //return await _workflowDomainService.PreviousAsync(workflow, dto,
+        //    _sessionContextProvider.SessionContext.RequiredUserId, _sessionContextProvider.SessionContext.UserName,
+        //    _sessionContextProvider.SessionContext.RequiredOrgId, _sessionContextProvider.SessionContext.OrgName,
+        //    _sessionContextProvider.SessionContext.OrgAreaCode, _sessionContextProvider.SessionContext.OrgAreaName,
+        //    _sessionContextProvider.SessionContext.OrgIsCenter, _sessionContextProvider.SessionContext.Roles,
+        //    cancellationToken);
+
+        return await _workflowDomainService.PreviousAsync(workflow, dto, new OperatorInfo(
             _sessionContextProvider.SessionContext.RequiredUserId, _sessionContextProvider.SessionContext.UserName,
             _sessionContextProvider.SessionContext.RequiredOrgId, _sessionContextProvider.SessionContext.OrgName,
             _sessionContextProvider.SessionContext.OrgAreaCode, _sessionContextProvider.SessionContext.OrgAreaName,
             _sessionContextProvider.SessionContext.OrgIsCenter, _sessionContextProvider.SessionContext.Roles,
-            cancellationToken);
+            _sessionContextProvider.SessionContext.OrgLevel), cancellationToken);
     }
 
     /// <summary>
@@ -363,16 +370,23 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
     public async Task<EFlowDirection> PreviousAsync(PreviousWorkflowDto dto, string applicantId, string applicantOrgId, string[] applicantRoleIds,
         CancellationToken cancellationToken)
     {
-        var workflow = await _workflowDomainService.GetWorkflowAsync(dto.WorkflowId, withSteps: true,
+        var workflow = await _workflowDomainService.GetWorkflowAsync(dto.WorkflowId, withDefine: true, withSteps: true,
             withTraces: true, withCountersigns: true, cancellationToken: cancellationToken);
         var user = await _userRepository.Queryable()
             .Includes(x => x.Organization)
             .FirstAsync(x => x.Id == applicantId, cancellationToken);
-        return await _workflowDomainService.PreviousAsync(workflow, dto,
+        //return await _workflowDomainService.PreviousAsync(workflow, dto,
+        //    applicantId, user.Name,
+        //    applicantOrgId, user.Organization.Name,
+        //    user.Organization.AreaCode, user.Organization.AreaName,
+        //    user.Organization.IsCenter, applicantRoleIds, cancellationToken);
+
+        return await _workflowDomainService.PreviousAsync(workflow, dto, new OperatorInfo(
             applicantId, user.Name,
             applicantOrgId, user.Organization.Name,
             user.Organization.AreaCode, user.Organization.AreaName,
-            user.Organization.IsCenter, applicantRoleIds, cancellationToken);
+            user.Organization.IsCenter, applicantRoleIds,
+            user.Organization.Level), cancellationToken);
     }
 
     /// <summary>

+ 23 - 1
src/Hotline.Share/Dtos/FlowEngine/PreviousWorkflowDto.cs

@@ -92,6 +92,28 @@ public class AssignStepHandler : FlowStepHandler
 /// </summary>
 public class OperatorInfo
 {
+    public OperatorInfo()
+    {
+
+    }
+
+    public OperatorInfo(
+        string? userId, string? userName,
+        string? orgId, string? orgName,
+        string? orgAreaCode, string orgAreaName,
+        bool orgIsCenter, string[] roles,
+        int orglevel)
+    {
+        UserId = userId;
+        UserName = userName;
+        OrgId = orgId;
+        OrgName = orgName;
+        OrgLevel = orglevel;
+        OrgIsCenter = orgIsCenter;
+        OrgAreaCode = orgAreaCode;
+        Roles = roles;
+    }
+
     public string? UserId { get; init; }
 
     public string? UserName { get; init; }
@@ -113,5 +135,5 @@ public class OperatorInfo
     /// Roles
     /// </summary>
     public string[] Roles { get; init; }
-    
+
 }

+ 2 - 2
src/Hotline/FlowEngine/Workflows/WorkflowDomainService.cs

@@ -1142,8 +1142,8 @@ namespace Hotline.FlowEngine.Workflows
             //    newPrevStep.Assign(handle.UserId, handle.Username, handle.OrgId, handle.OrgName, handle.RoleId, handle.RoleName);
             //}
 
-            var prevStepDefine = 
-            ReverseFlowAssignStepHandler(dto.ReverseFlowStepAssignInfo, newPrevStep, prevStep, );
+            var prevStepDefine = workflow.WorkflowDefinition.FindStepDefine(prevStep.Code);
+            ReverseFlowAssignStepHandler(dto.ReverseFlowStepAssignInfo, newPrevStep, prevStep, prevStepDefine);
 
             await _workflowStepRepository.AddAsync(newPrevStep, cancellationToken);
             await CreateTraceAsync(workflow, newPrevStep, EWorkflowTraceType.Previous, cancellationToken);

+ 1 - 1
src/Hotline/Orders/IOrderDomainService.cs

@@ -118,7 +118,7 @@ namespace Hotline.Orders
         /// <summary>
         /// 查询退回操作目标节点的指派方式
         /// </summary>
-        ReverseFlowStepAssignInfo GetOrderPreviousAssignInfo(EBusinessType targetStepBusinessType, StepDefine targetStepDefinition, AssignStepHandler? handler);
+        ReverseFlowStepAssignInfo GetOrderPreviousAssignInfo(EBusinessType targetStepBusinessType, AssignStepHandler? handler);
 
         /// <summary>
         /// 查询特提操作目标节点的指派方式

+ 2 - 2
src/Hotline/Orders/OrderDomainService.cs

@@ -403,7 +403,7 @@ public class OrderDomainService : IOrderDomainService, IScopeDependency
     /// <summary>
     /// 查询退回操作目标节点的指派方式
     /// </summary>
-    public ReverseFlowStepAssignInfo GetOrderPreviousAssignInfo(EBusinessType targetStepBusinessType, StepDefine targetStepDefinition, AssignStepHandler? handler)
+    public ReverseFlowStepAssignInfo GetOrderPreviousAssignInfo(EBusinessType targetStepBusinessType, AssignStepHandler? handler)
     {
         //自贡需求:
         // 1. 工单退回、特提、重办到话务部节点时,所有坐席都可以查看和办理
@@ -469,7 +469,7 @@ public class OrderDomainService : IOrderDomainService, IScopeDependency
     /// <summary>
     /// 查询特提操作目标节点的指派方式
     /// </summary>
-    public ReverseFlowStepAssignInfo GetOrderRecallAssignInfo(EBusinessType targetStepBusinessType, StepDefine targetStepDefinition, AssignStepHandler? handler)
+    public ReverseFlowStepAssignInfo GetOrderRecallAssignInfo(EBusinessType targetStepBusinessType, AssignStepHandler? handler)
     {
         //自贡需求:
         // 1. 工单退回、特提、重办到话务部节点时,所有坐席都可以查看和办理