田爽 1 year ago
parent
commit
02eeff0e4b
1 changed files with 34 additions and 24 deletions
  1. 34 24
      src/Hotline.Api/Controllers/OrderController.cs

+ 34 - 24
src/Hotline.Api/Controllers/OrderController.cs

@@ -2752,31 +2752,41 @@ public class OrderController : BaseController
         var twoSendBack = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.TwoOrgSendBack)?.SettingValue[0]);
         if (oneSendBack || twoSendBack)
         {
-          var (currentStep, prevStep,isOrgToCenter, isSecondToFirstOrgLevel) = await _workflowApplication.GetPreviousInformationAsync(
+			var workflow = await _workflowDomainService.GetWorkflowAsync(dto.WorkflowId, withSteps: true, cancellationToken: HttpContext.RequestAborted);
+			var (currentStep, prevStep,isOrgToCenter, isSecondToFirstOrgLevel) = await _workflowApplication.GetPreviousInformationAsync(
                 dto.WorkflowId, _sessionContext.RequiredUserId, _sessionContext.RequiredOrgId, HttpContext.RequestAborted);
-          if ((oneSendBack && isOrgToCenter) || (twoSendBack && isSecondToFirstOrgLevel))
-          {
-	          var workflow = await _workflowDomainService.GetWorkflowAsync(dto.WorkflowId, withSteps: true, cancellationToken: HttpContext.RequestAborted);
-             var audit = new OrderSendBackAudit
-			  {
-                  OrderId = workflow.ExternalId,
-                  State = ESendBackAuditState.Apply,
-                  Content = dto.Opinion,
-                  SendBackData = dto,
-                  ApplyOrgId = currentStep.AcceptorOrgId,
-                  ApplyOrgName = currentStep!.AcceptorOrgName,
-                  SendBackOrgId = prevStep.HandlerOrgId,//prevStep.AcceptorOrgId,
-                  SendBackOrgName = prevStep.HandlerOrgName,//prevStep!.AcceptorOrgName,
-                  WorkflowOrgId = _sessionContext.RequiredOrgId,
-                  WorkflowUserId = _sessionContext.RequiredUserId
-              };
-              await _orderSendBackAuditRepository.AddAsync(audit, HttpContext.RequestAborted);
-          }
-          else
-          {
-	          await _workflowApplication.PreviousAsync(dto, HttpContext.RequestAborted);
-	          //发送短信TODO
-          }
+            var sendBack = await _orderSendBackAuditRepository.Queryable().Where(x => x.OrderId == workflow.ExternalId && x.State == ESendBackAuditState.Apply).AnyAsync();
+            if (sendBack)
+	            throw UserFriendlyException.SameMessage("当前工单已经生成退回记录");
+
+            var order = await _orderRepository
+	            .Queryable()
+	            .Includes(d => d.Workflow)
+	            .FirstAsync(d => d.Id == workflow.ExternalId);
+            if (order.Workflow.IsInCountersign) throw UserFriendlyException.SameMessage("工单会签中,无法进行退回!");
+            if ((oneSendBack && isOrgToCenter) || (twoSendBack && isSecondToFirstOrgLevel))
+            {
+               
+                var audit = new OrderSendBackAudit
+                {
+                    OrderId = workflow.ExternalId,
+                    State = ESendBackAuditState.Apply,
+                    Content = dto.Opinion,
+                    SendBackData = dto,
+                    ApplyOrgId = currentStep.AcceptorOrgId,
+                    ApplyOrgName = currentStep!.AcceptorOrgName,
+                    SendBackOrgId = prevStep.HandlerOrgId,//prevStep.AcceptorOrgId,
+                    SendBackOrgName = prevStep.HandlerOrgName,//prevStep!.AcceptorOrgName,
+                    WorkflowOrgId = _sessionContext.RequiredOrgId,
+                    WorkflowUserId = _sessionContext.RequiredUserId
+                };
+                await _orderSendBackAuditRepository.AddAsync(audit, HttpContext.RequestAborted);
+            }
+            else
+            {
+                await _workflowApplication.PreviousAsync(dto, HttpContext.RequestAborted);
+                //发送短信TODO
+            }
 		}
         else
         {