xf 2 years ago
parent
commit
44eeb94716

+ 4 - 2
src/Hotline.Api/Context/DefaultSessionContext.cs

@@ -1,7 +1,9 @@
 using System.Security.Authentication;
 using System.Security.Claims;
+using Hotline.Repository.SqlSugar;
 using Hotline.Users;
 using IdentityModel;
+using SqlSugar;
 using XF.Domain.Authentications;
 using XF.Domain.Dependency;
 using XF.Domain.Exceptions;
@@ -11,7 +13,7 @@ namespace Hotline.Api.Token
 {
     public class DefaultSessionContext : ISessionContext, IScopeDependency
     {
-        public DefaultSessionContext(IHttpContextAccessor httpContextAccessor, IUserRepository userRepository)
+        public DefaultSessionContext(IHttpContextAccessor httpContextAccessor, ISugarUnitOfWork<HotlineDbContext> uow)
         {
             var httpContext = httpContextAccessor.HttpContext;
             if (httpContext is null)
@@ -25,7 +27,7 @@ namespace Hotline.Api.Token
             //Roles = user.Claims.Where(d => d.Type == JwtClaimTypes.Role).Select(d => d.Value).ToArray();
             Roles = user.Claims.Where(d => d.Type == ClaimTypes.Role).Select(d => d.Value).ToArray();
 
-            var dbUser = userRepository.Queryable()
+            var dbUser = uow.Db.Queryable<User>()
                 .IncludeLeftJoin(d => d.Organization)
                 .FirstAsync(d => d.Id == RequiredUserId)
                 .GetAwaiter().GetResult();

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

@@ -2,6 +2,7 @@
 using Hotline.Repository.SqlSugar.Extensions;
 using Hotline.Share.Dtos;
 using Hotline.Share.Requests;
+using Microsoft.AspNetCore.Mvc;
 
 namespace Hotline.Api.Controllers;
 
@@ -14,6 +15,7 @@ public class OrderController : BaseController
         _orderRepository = orderRepository;
     }
 
+    [HttpGet]
     public async Task<PagedDto<Order>> Query(PagedKeywordRequest dto)
     {
         var (total, items) = await _orderRepository.Queryable()

+ 1 - 1
src/Hotline/FlowEngine/Workflows/StepBasicEntity.cs

@@ -28,7 +28,7 @@ public class StepBasicEntity : CreationEntity
     /// 根据类型可能为:roles, depLevels, depTypes, depCodes, userIds
     /// </example>
     /// </summary>
-    [SugarColumn(ColumnDataType = "varchar(4000)", IsJson = true)]
+    [SugarColumn(ColumnDataType = "varchar(2000)", IsJson = true)]
     public List<string> HandlerClassifies { get; set; } = new();
 
     /// <summary>

+ 7 - 2
src/Hotline/FlowEngine/Workflows/Workflow.cs

@@ -72,17 +72,22 @@ public class Workflow : CreationEntity
     /// <summary>
     /// 检查会签是否结束,并更新当前会签节点
     /// </summary>
-    public void CheckCountersignStatus()
+    public void CheckCountersignAndUpdate()
     {
         if (IsInCountersign())
         {
             var countersignStepBox = StepBoxes.First(d => d.Code == CurrentCountersignCode);
-            var countersignOver = countersignStepBox.Steps.All(d => d.Status is EWorkflowStepStatus.Completed);
+            var countersignOver = countersignStepBox.Steps.All(d => d.Status is EWorkflowStepStatus.Completed);//todo 有bug,考虑会签嵌套的场景
             if (countersignOver) //会签结束
                 CurrentCountersignCode = null;
         }
     }
 
+    public void CheckCurrentStepBoxCompleted()
+    {
+
+    }
+
     /// <summary>
     /// 流程是否处于会签中
     /// </summary>

+ 3 - 1
src/Hotline/FlowEngine/Workflows/WorkflowDomainService.cs

@@ -187,7 +187,7 @@ namespace Hotline.FlowEngine.Workflows
             await _workflowStepRepository.UpdateRangeAsync(new List<WorkflowStep> { currentStepBox, currentStep }, cancellationToken);
 
             //检查会签是否结束,并更新当前会签节点
-            workflow.CheckCountersignStatus();
+            workflow.CheckCountersignAndUpdate();
 
             //检查是否流转到流程终点
             //var nextStepBoxDefine = GetStepBoxDefine(workflow.Definition, dto.NextStepCode);
@@ -277,9 +277,11 @@ namespace Hotline.FlowEngine.Workflows
                 var nextStepBoxDefine = GetStepBoxDefine(workflow.Definition, dto.NextStepCode);
                 var nextStepBox = await CreateStepAsync(workflow, nextStepBoxDefine, dto, lastStepBox.Id, lastStepBox.Id, cancellationToken);
 
+                //更新当前节点名称、时间、会签节点code
                 workflow.CloseCountersignStatus();
                 var isCountersign = dto.Handlers.Count > 1;
                 SetWorkflowCurrentStepInfo(workflow, isCountersign, nextStepBox);
+                await _workflowRepository.UpdateAsync(workflow, cancellationToken);
 
                 #region 补充中间节点处理方案