Browse Source

特提优化

田爽 5 months ago
parent
commit
ff59259856
1 changed files with 46 additions and 25 deletions
  1. 46 25
      src/Hotline.Api/Controllers/OrderController.cs

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

@@ -4709,28 +4709,9 @@ public class OrderController : BaseController
         var specialAny = await _orderSpecialRepository.Queryable().Where(x => x.OrderId == dto.OrderId && x.State == 0)
             .AnyAsync();
         if (specialAny) throw UserFriendlyException.SameMessage("工单已存在待审批特提信息!");
+        SpecialVerify(dto);
 
-        var screen = await _orderScreenRepository.Queryable().Where(x => x.OrderId == dto.OrderId && (int)x.Status < 2).AnyAsync();
-        if (screen) throw UserFriendlyException.SameMessage("工单存在甄别中的信息!");
-
-        if (await _orderSendBackAuditRepository.AnyAsync(x => x.OrderId == dto.OrderId && x.State == ESendBackAuditState.Apply,
-                HttpContext.RequestAborted))
-        {
-            throw UserFriendlyException.SameMessage("该工单存在正在审核中的退回,不能办理");
-        }
-
-        if (_appOptions.Value.IsZiGong && string.IsNullOrEmpty(dto.Cause))
-        {
-            dto.Cause = dto.Reason;
-        }
-
-        var order = await _orderRepository
-            .Queryable()
-            .Includes(d => d.Workflow)
-            .FirstAsync(d => d.Id == dto.OrderId);
-        if (order.Workflow.IsInCountersign) throw UserFriendlyException.SameMessage("工单会签中,无法进行特提!");
-
-        var model = _mapper.Map<OrderSpecial>(dto);
+		var model = _mapper.Map<OrderSpecial>(dto);
         var orgs = order.HandlerOrgs;
         model.OrgId = orgs != null && orgs.Count > 0 ? orgs[0].Key : "";
         model.OrgName = orgs != null && orgs.Count > 0 ? orgs[0].Value : "";
@@ -4905,11 +4886,51 @@ public class OrderController : BaseController
     }
 
     /// <summary>
-    /// 工单重办信息
+    /// 特提验证
     /// </summary>
-    /// <param name="dtos"></param>
-    /// <returns></returns>
-    [HttpPost("re_transact")]
+    /// <param name="dto"></param>
+    public async void SpecialVerify(OrderSpecialAddDto dto) {
+	    var screen = await _orderScreenRepository.Queryable().Where(x => x.OrderId == dto.OrderId && (int)x.Status < 2).ToListAsync(HttpContext.RequestAborted);
+	    var order = await _orderRepository.Queryable().Includes(d => d.Workflow).FirstAsync(d => d.Id == dto.OrderId);
+        var sendBackAudit = await _orderSendBackAuditRepository.Queryable().Where(x => x.OrderId == dto.OrderId && x.State == ESendBackAuditState.Apply).ToListAsync(HttpContext.RequestAborted);
+		if (_appOptions.Value.IsYiBin)
+        {
+            if (screen.Any()) {
+                _orderScreenRepository.RemoveRangeAsync(screen,true, HttpContext.RequestAborted);
+			}
+
+            if (sendBackAudit.Any())
+            {
+	            _orderSendBackAuditRepository.RemoveRangeAsync(sendBackAudit, true, HttpContext.RequestAborted);
+			}
+
+            if (order.Workflow.IsInCountersign)
+            {
+                var workflowStep = await _workflowStepRepository.Queryable().Where(x => x.Id == order.Workflow.TopCountersignStepId).FirstAsync(HttpContext.RequestAborted);
+                if (workflowStep != null)
+                {
+                    var dto = new EndCountersignDto() { CountersignId = workflowStep.StartCountersignId };
+                    await EndCountersign(dto);
+				}
+            }
+		}
+        else {
+			if (screen.Any()) throw UserFriendlyException.SameMessage("工单存在甄别中的信息!");
+
+			if (sendBackAudit.Any())
+				throw UserFriendlyException.SameMessage("该工单存在正在审核中的退回,不能办理");
+
+			if (order.Workflow.IsInCountersign) throw UserFriendlyException.SameMessage("工单会签中,无法进行特提!");
+		}
+	}
+
+
+	/// <summary>
+	/// 工单重办信息
+	/// </summary>
+	/// <param name="dtos"></param>
+	/// <returns></returns>
+	[HttpPost("re_transact")]
     [LogFilter("工单重办")]
     public async Task Add([FromBody] OrderReTransactDto dto)
     {