田爽 10 mēneši atpakaļ
vecāks
revīzija
b040836dd1

+ 35 - 5
src/Hotline.Api/Controllers/OrderController.cs

@@ -5648,12 +5648,11 @@ public class OrderController : BaseController
     [HttpGet("migration/{orderId}")]
     public async Task<GetOrderMigrationDto> Migration(string orderId)
     {
+        var order = await _orderRepository.GetAsync(orderId, HttpContext.RequestAborted);
         var steps = await _workflowStepRepository.Queryable()
             .Where(d => d.ExternalId == orderId && d.Status != EWorkflowStepStatus.Handled)
             .ToListAsync(HttpContext.RequestAborted);
 
-        if (!steps.Any())
-            throw new UserFriendlyException("未查询到待办理节点");
         if (steps.Count > 1)
             throw new UserFriendlyException("多个待办理节点暂不支持平移");
         var step = steps.First();
@@ -5663,7 +5662,13 @@ public class OrderController : BaseController
         var setting = step.BusinessType is EBusinessType.Center
             ? _systemSettingCacheManager.GetSetting(SettingConstants.RoleZuoXi)
             : _systemSettingCacheManager.GetSetting(SettingConstants.RolePaiDan);
-        var roles = setting?.SettingValue.ToList();
+        //未受理 已签到工单处理
+        if (string.IsNullOrEmpty(order.WorkflowId))
+        {
+            step = new WorkflowStep();
+            setting = _systemSettingCacheManager.GetSetting(SettingConstants.RoleZuoXi);
+		}
+		var roles = setting?.SettingValue.ToList();
         var users = await _userRepository.Queryable()
             .Includes(d => d.Organization)
             .Includes(d => d.Roles)
@@ -5672,7 +5677,8 @@ public class OrderController : BaseController
         return new GetOrderMigrationDto
         {
             StepId = step.Id,
-            Handlers = users.Select(d => new OrderMigrationHandler
+            OrderId = orderId,
+			Handlers = users.Select(d => new OrderMigrationHandler
             {
                 UserId = d.Id,
                 Username = d.Name,
@@ -5683,5 +5689,29 @@ public class OrderController : BaseController
         };
     }
 
-    #endregion
+
+	/// <summary>
+	/// 工单平移
+	/// </summary>
+	[HttpPost("change-handler")]
+    public async Task ChangeHandler([FromBody] ChangeHandlerDto dto)
+    {
+        if (string.IsNullOrEmpty(dto.StepId))
+        {
+	        await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { SignerId = dto.Handler.UserId, SignerName = dto.Handler.Username })
+		        .Where(o => o.Id == dto.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
+		}
+        else {
+			var step = await _workflowStepRepository.Queryable()
+				.Includes(d => d.WorkflowTrace)
+				.FirstAsync(d => d.Id == dto.StepId, HttpContext.RequestAborted);
+			if (step is null)
+				throw new UserFriendlyException("无效节点编号");
+			await _workflowDomainService.ChangeHandlerBatchAsync(new List<(string userId, string username, string orgId, string orgName, ICollection<WorkflowStep> steps)>
+			{
+				new(dto.Handler.UserId,dto.Handler.Username,dto.Handler.OrgId,dto.Handler.OrgName, new List<WorkflowStep>{step})
+			}, HttpContext.RequestAborted);
+		}
+    }
+	#endregion
 }

+ 2 - 1
src/Hotline.Share/Dtos/FlowEngine/Workflow/ChangeHandlerDto.cs

@@ -5,5 +5,6 @@ namespace Hotline.Share.Dtos.FlowEngine.Workflow;
 public class ChangeHandlerDto
 {
     public string StepId { get; set; }
-    public FlowStepHandler Handler { get; set; }
+    public string OrderId { get; set; }
+	public FlowStepHandler Handler { get; set; }
 }

+ 3 - 1
src/Hotline.Share/Dtos/Order/Migration/GetOrderMigrationDto.cs

@@ -10,7 +10,9 @@ namespace Hotline.Share.Dtos.Order.Migration
     public class GetOrderMigrationDto
     {
         public string StepId { get; set; }
-        public IReadOnlyList<OrderMigrationHandler> Handlers { get; set; }
+        public string OrderId { get; set; }
+		
+		public IReadOnlyList<OrderMigrationHandler> Handlers { get; set; }
     }
 
     public class OrderMigrationHandler : FlowStepHandler