Переглянути джерело

发布重办按需求调整

xf 2 місяців тому
батько
коміт
b76b451552

+ 46 - 43
src/Hotline.Api/Controllers/OrderController.cs

@@ -449,10 +449,11 @@ public class OrderController : BaseController
         {
             hasProvince = await _orderRepository.Queryable().AnyAsync(x => dto.Ids.Contains(x.Id) && x.Source == ESource.ProvinceStraight);
         }
+
         if (hasProvince)
             throw UserFriendlyException.SameMessage("选择的工单中含有省工单, 不能批量发布. 请排除省工单.");
 
-        var orderList = await _orderRepository.Queryable().Where(x=>dto.Ids.Contains(x.Id)).ToListAsync();
+        var orderList = await _orderRepository.Queryable().Where(x => dto.Ids.Contains(x.Id)).ToListAsync();
         foreach (var order in orderList)
         {
             if (order != null && order.Status == EOrderStatus.Filed)
@@ -3645,11 +3646,11 @@ public class OrderController : BaseController
             if (order.Status == EOrderStatus.SendBack || order.Status == EOrderStatus.SendBackAudit || order.Status == EOrderStatus.BackToUnAccept)
             {
                 var backTrace = workflow.Traces.Where(x => x.Status == EWorkflowStepStatus.Handled).OrderByDescending(x => x.CreationTime).First();
-				backTrace.Opinion = backTrace.Opinion.Replace("流程归档", "");
-				dto.SendBackOpinion = string.IsNullOrEmpty(backTrace.Opinion) ? string.Empty : backTrace.HandlerOrgName + "   " + backTrace.Opinion;
-				//var sendBack = await _orderSendBackAuditRepository.Queryable().Where(x => x.OrderId == dto.Id).OrderByDescending(x => x.CreationTime).FirstAsync();
-				//dto.SendBackOpinion = sendBack is { Id: not null } && !string.IsNullOrEmpty(sendBack.Content) ? sendBack.Content : string.Empty;
-			}
+                backTrace.Opinion = backTrace.Opinion.Replace("流程归档", "");
+                dto.SendBackOpinion = string.IsNullOrEmpty(backTrace.Opinion) ? string.Empty : backTrace.HandlerOrgName + "   " + backTrace.Opinion;
+                //var sendBack = await _orderSendBackAuditRepository.Queryable().Where(x => x.OrderId == dto.Id).OrderByDescending(x => x.CreationTime).FirstAsync();
+                //dto.SendBackOpinion = sendBack is { Id: not null } && !string.IsNullOrEmpty(sendBack.Content) ? sendBack.Content : string.Empty;
+            }
         }
 
         //工单是否在退回审批中
@@ -3723,30 +3724,30 @@ public class OrderController : BaseController
     }
 
 
-	/// <summary>
-	/// 上传附件
-	/// </summary>
-	/// <param name="dto"></param>
-	/// <returns></returns>
-	//[HttpPost]
-	//[LogFilterAlpha("上传附件")]
-	//public async Task UploadFiles(OrderUploadFiles dto) { 
-    
- //       var fileJson = await _fileRepository.AddFileAsync(dto.Files, dto.Id, "", HttpContext.RequestAborted);
-
- //       if (fileJson.Any())
- //       {
-	//		var order = await _orderRepository.GetAsync(dto.Id);
- //           if (order.FileJson != null && order.FileJson.Any())
- //           {
- //               order.FileJson.AddRange(fileJson);
- //           }
- //           else {
- //               order.FileJson = fileJson;
-	//		}
- //           await _orderRepository.Updateable().SetColumns(x => new Order { FileJson = order.FileJson }).Where(x => x.Id == dto.Id).ExecuteCommandAsync();
-	//	}
-	//}
+    /// <summary>
+    /// 上传附件
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    //[HttpPost]
+    //[LogFilterAlpha("上传附件")]
+    //public async Task UploadFiles(OrderUploadFiles dto) { 
+
+    //       var fileJson = await _fileRepository.AddFileAsync(dto.Files, dto.Id, "", HttpContext.RequestAborted);
+
+    //       if (fileJson.Any())
+    //       {
+    //		var order = await _orderRepository.GetAsync(dto.Id);
+    //           if (order.FileJson != null && order.FileJson.Any())
+    //           {
+    //               order.FileJson.AddRange(fileJson);
+    //           }
+    //           else {
+    //               order.FileJson = fileJson;
+    //		}
+    //           await _orderRepository.Updateable().SetColumns(x => new Order { FileJson = order.FileJson }).Where(x => x.Id == dto.Id).ExecuteCommandAsync();
+    //	}
+    //}
 
 
     /// <summary>
@@ -4050,8 +4051,9 @@ public class OrderController : BaseController
             var pushTypes = dto.OrderPushTypes.Select(x => x.PushType);
             order.PushType = string.Join(",", pushTypes);
         }
-		order.OrderTags = new List<SystemDicData>();
-		if (dto.Tags != null && dto.Tags.Any())
+
+        order.OrderTags = new List<SystemDicData>();
+        if (dto.Tags != null && dto.Tags.Any())
         {
             var orderTags = new List<SystemDicData>();
             foreach (var item in dto.Tags)
@@ -6157,9 +6159,9 @@ public class OrderController : BaseController
                 endTime, order.Status >= EOrderStatus.Filed, EHandleMode.Redo,
                 async (workflow, prevStepDefine, prevStep, newStep) =>
                 {
-                    var basicWorkflowDto = _mapper.Map<BasicWorkflowDto>(dto);
-                    var stepAssignInfo = await _orderApplication.GetOrderRecallAssignInfoAsync(workflow, prevStepDefine, prevStep,
-                        basicWorkflowDto, HttpContext.RequestAborted);
+                    var stepAssignInfo = recall.NextHandlers.FirstOrDefault()
+                                         ?? await _orderApplication.GetOrderRecallAssignInfoAsync(workflow, prevStepDefine, prevStep,
+                                             recall, HttpContext.RequestAborted);
                     if (stepAssignInfo is null) return;
                     var validator = new StepAssignInfoValidator();
                     await validator.ValidateAndThrowAsync(stepAssignInfo, HttpContext.RequestAborted);
@@ -6203,7 +6205,8 @@ public class OrderController : BaseController
                 orderStatus = model.SpecialType == ESpecialType.SendBack ? EOrderStatus.SendBack : EOrderStatus.Special;
                 orderStartStatus = model.SpecialType == ESpecialType.SendBack ? EOrderStatus.BackToUnAccept : EOrderStatus.SpecialToUnAccept;
             }
-			//ReTransactNum = reTransactNum,
+
+            //ReTransactNum = reTransactNum,
             var Status = model.StepType == EStepType.Start ? orderStartStatus : orderStatus;
             await _orderRepository.Updateable()
                 .SetColumns(o => new Orders.Order() { ProcessType = processType, Status = Status })
@@ -6345,9 +6348,9 @@ public class OrderController : BaseController
                 expiredTime.ExpiredTime, order.Status >= EOrderStatus.Filed, EHandleMode.Recall,
                 async (workflow, prevStepDefine, prevStep, newStep) =>
                 {
-                    var basicWorkflowDto = _mapper.Map<BasicWorkflowDto>(dto);
-                    var stepAssignInfo = await _orderApplication.GetOrderRecallAssignInfoAsync(workflow, prevStepDefine, prevStep,
-                        basicWorkflowDto, HttpContext.RequestAborted);
+                    var stepAssignInfo = recall.NextHandlers.FirstOrDefault()
+                                         ?? await _orderApplication.GetOrderRecallAssignInfoAsync(workflow, prevStepDefine, prevStep,
+                                             recall, HttpContext.RequestAborted);
                     if (stepAssignInfo is null) return;
                     var validator = new StepAssignInfoValidator();
                     await validator.ValidateAndThrowAsync(stepAssignInfo, HttpContext.RequestAborted);
@@ -6535,9 +6538,9 @@ public class OrderController : BaseController
                     expiredTime.ExpiredTime, order.Status >= EOrderStatus.Filed, EHandleMode.Recall,
                     async (workflow, prevStepDefine, prevStep, newStep) =>
                     {
-                        var basicWorkflowDto = _mapper.Map<BasicWorkflowDto>(dto);
-                        var stepAssignInfo = await _orderApplication.GetOrderRecallAssignInfoAsync(workflow, prevStepDefine, prevStep,
-                            basicWorkflowDto, HttpContext.RequestAborted);
+                        var stepAssignInfo = recall.NextHandlers.FirstOrDefault()
+                                             ?? await _orderApplication.GetOrderRecallAssignInfoAsync(workflow, prevStepDefine, prevStep,
+                                                 recall, HttpContext.RequestAborted);
                         if (stepAssignInfo is null) return;
                         var validator = new StepAssignInfoValidator();
                         await validator.ValidateAndThrowAsync(stepAssignInfo, HttpContext.RequestAborted);
@@ -6946,7 +6949,7 @@ public class OrderController : BaseController
                 {
                     new()
                     {
-                        Key = org.Id, Value = org.Name, 
+                        Key = org.Id, Value = org.Name,
                         OrgId = org.Id, OrgName = org.Name,
                         UserId = user.Id, Username = user.Name,
                         FlowAssignType = EFlowAssignType.Org

+ 1 - 14
src/Hotline.Application/Orders/OrderApplication.cs

@@ -4064,20 +4064,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
                 //     : new ReverseFlowStepAssignInfo(EReverseFlowStepCreationPolicy.OriginStepUser, stepAssignInfo);
                 //await _workflowDomainService.RecallToStartStepAsync(order.WorkflowId, "省工单重派", current, order.Status >= EOrderStatus.Filed, cancellationToken);
                 var (isPaiDan, workflow) = await _workflowDomainService.RecallToCenterFirstToSendAsync(order.WorkflowId, "省工单重派",
-                    order.Status >= EOrderStatus.Filed, order.ExpiredTime, EHandleMode.Redo,
-                    async (workflow, prevStepDefine, prevStep, newStep) =>
-                    {
-                        var basicWorkflowDto = _mapper.Map<BasicWorkflowDto>(dto);
-                        var stepAssignInfo = await GetOrderRecallAssignInfoAsync(workflow, prevStepDefine, prevStep,
-                            basicWorkflowDto, cancellationToken);
-                        if (stepAssignInfo is not null)
-                        {
-                            var validator = new StepAssignInfoValidator();
-                            await validator.ValidateAndThrowAsync(stepAssignInfo, cancellationToken);
-
-                            newStep.Assign(stepAssignInfo);
-                        }
-                    }, cancellationToken);
+                    order.Status >= EOrderStatus.Filed, order.ExpiredTime, EHandleMode.Redo, cancellationToken: cancellationToken);
 
                 order.FileEmpty();
 

+ 2 - 28
src/Hotline.Application/Subscribers/DatasharingSubscriber.cs

@@ -335,20 +335,7 @@ namespace Hotline.Application.Subscribers
                 //var (isPaiDan, workflow) = await _workflowDomainService.RecallToCenterFirstToSendAsync(order.WorkflowId, 
                 //    dto.Opinion, order.Status >= EOrderStatus.Filed, order.ExpiredTime, nextHandler, EHandleMode.Recall, cancellationToken);
                 var (isPaiDan, workflow) = await _workflowDomainService.RecallToCenterFirstToSendAsync(order.WorkflowId, dto.Opinion,
-                    order.Status >= EOrderStatus.Filed, order.ExpiredTime, EHandleMode.Recall, 
-                    async (workflow, prevStepDefine, prevStep, newStep) =>
-                    {
-                        var basicWorkflowDto = _mapper.Map<BasicWorkflowDto>(dto);
-                        var stepAssignInfo = await _orderApplication.GetOrderRecallAssignInfoAsync(workflow, prevStepDefine, prevStep,
-                            basicWorkflowDto, cancellationToken);
-                        if (stepAssignInfo is not null)
-                        {
-                            var validator = new StepAssignInfoValidator();
-                            await validator.ValidateAndThrowAsync(stepAssignInfo, cancellationToken);
-
-                            newStep.Assign(stepAssignInfo);
-                        }
-                    }, cancellationToken);
+                    order.Status >= EOrderStatus.Filed, order.ExpiredTime, EHandleMode.Recall, cancellationToken: cancellationToken);
 
                 order.FiledTime = null;
                 order.Status = isPaiDan ? EOrderStatus.Special : EOrderStatus.WaitForAccept;
@@ -878,20 +865,7 @@ namespace Hotline.Application.Subscribers
 
                     // var reverseFlowStepAssignInfo = new ReverseFlowStepAssignInfo(EReverseFlowStepCreationPolicy.OriginStep);
                     var (isPaiDan, workflow) = await _workflowDomainService.RecallToCenterFirstToSendAsync(order.WorkflowId, dto.Opinion, 
-                        order.Status >= EOrderStatus.Filed, order.ExpiredTime, EHandleMode.Recall, 
-                        async (workflow, prevStepDefine, prevStep, newStep) =>
-                        {
-                            var basicWorkflowDto = _mapper.Map<BasicWorkflowDto>(dto);
-                            var stepAssignInfo = await _orderApplication.GetOrderRecallAssignInfoAsync(workflow, prevStepDefine, prevStep,
-                                basicWorkflowDto, cancellationToken);
-                            if (stepAssignInfo is not null)
-                            {
-                                var validator = new StepAssignInfoValidator();
-                                await validator.ValidateAndThrowAsync(stepAssignInfo, cancellationToken);
-
-                                newStep.Assign(stepAssignInfo);
-                            }
-                        }, cancellationToken);
+                        order.Status >= EOrderStatus.Filed, order.ExpiredTime, EHandleMode.Recall, cancellationToken: cancellationToken);
 
                     order.Status = isPaiDan ? EOrderStatus.Special : EOrderStatus.WaitForAccept;
                     order.CurrentStepName = workflow.CurrentStepName;

+ 1 - 1
src/Hotline.Share/Dtos/Order/OrderSpecialDto.cs

@@ -108,7 +108,7 @@ namespace Hotline.Share.Dtos.Order
 		/// 部门等级/分类为:depCodes, 角色为:userIds
 		/// </example>
 		/// </summary>
-		public List<FlowStepHandler> NextHandlers { get; set; } = new();
+		public List<StepAssignInfo> NextHandlers { get; set; } = new();
 
 		//public string? OrgId { get; set; }