Pārlūkot izejas kodu

修复保存紧急错误

qinchaoyue 5 mēneši atpakaļ
vecāks
revīzija
74349b3778

+ 10 - 5
src/Hotline.Application.Tests/Controller/DefaultHttpContextAccessor.cs

@@ -36,15 +36,20 @@ public class DefaultHttpContextAccessor : ISessionContext, IScopeDependency
     /// <summary>
     /// Id of current tenant or null for host
     /// </summary>
-    public string? UserId { get {
+    public string? UserId
+    {
+        get
+        {
             return TestSessionConstants.UserId;
-        } init { } }
+        }
+        init { }
+    }
 
     /// <summary>
     /// Id of current user or throw Exception for guest
     /// </summary>
     /// <exception cref="AuthenticationException"></exception>
-    public string RequiredUserId { get; }
+    public string RequiredUserId { get { return TestSessionConstants.UserId; } }
     public string? UserName { get { return TestSessionConstants.UserName; } init { } }
     public string? Phone { get; init; }
 
@@ -52,8 +57,8 @@ public class DefaultHttpContextAccessor : ISessionContext, IScopeDependency
     /// Roles
     /// </summary>
     public string[] Roles { get { return TestSessionConstants.Roles; } init { } }
-    public string? OrgId { get { return TestSessionConstants.OrgId;  } init { } }
-    public string RequiredOrgId { get; }
+    public string? OrgId { get { return TestSessionConstants.OrgId; } init { } }
+    public string RequiredOrgId { get { return TestSessionConstants.OrgId; } }
     public string? OrgName { get; init; }
     public int OrgLevel { get; init; }
     public string? OrgAreaCode { get; init; }

+ 20 - 0
src/Hotline.Application.Tests/Controller/OrderControllerTest.cs

@@ -9,6 +9,7 @@ using Hotline.Settings.Hotspots;
 using Hotline.Share.Dtos.File;
 using Hotline.Share.Dtos.Order;
 using Hotline.Share.Dtos.Users;
+using Hotline.Share.Enums.FlowEngine;
 using Hotline.Share.Enums.Settings;
 using Hotline.Share.Tools;
 using Hotline.Users;
@@ -52,6 +53,25 @@ public class OrderControllerTest : TestBase
         Set一级部门();
     }
 
+    [Fact]
+    public async Task IsStepUrgent_True_Test()
+    {
+        SetZuoXi();
+        var order = _orderServiceMock.CreateOrder()
+            .办理到派单员()
+            .办理到归档(SetPaiDanYuan, data => data.IsStepUrgent = true, workflow => 
+            {
+                workflow.BusinessType = EBusinessType.DepartmentLeader;
+                workflow.Opinion = "测试保存勾选紧急";
+            })
+            .GetCreateResult();
+        order.ShouldNotBeNull();
+        order.Id.ShouldNotBeNull();
+        var orderDto = await _orderController.Get(order.Id);
+        orderDto.IsStepUrgent.ShouldBeTrue();
+        orderDto.IsStepUrgenText.ShouldBe("紧急");
+    }
+
     /// <summary>
     /// 测试在办理的过程中能正确保存 
     /// 1.与市民电话联系

+ 39 - 2
src/Hotline.Application.Tests/Mock/OrderServiceMock.cs

@@ -41,6 +41,37 @@ public class OrderServiceMock
         return CreateOrderOutDto;
     }
 
+    public OrderServiceMock 办理到派单员()
+    { 
+        var stepNextInfo = _orderController.GetFlowStartOptions(CreateOrderOutDto.Id).GetAwaiter().GetResult().ToJson().FromJson<NextStepsDto<NextStepOption>>();
+        var stepInfo = stepNextInfo.Steps.FirstOrDefault(m => m.Value == "派单组");
+        var stepOrg = stepInfo.Items.FirstOrDefault(m => m.Username == "单元测试派单员");
+
+        var handleDto = new StartWorkflowDto<OrderHandleFlowDto>
+        {
+            Data = new OrderHandleFlowDto
+            {
+                OrderId = CreateOrderOutDto.Id,
+            },
+            Workflow = new BasicWorkflowDto
+            {
+                NextHandlers = [stepOrg],
+                NextStepCode = stepInfo.Key,
+                NextStepName = stepInfo.Value,
+                Opinion = "办理到派单组意见",
+                BackToCountersignEnd = false,
+                IsSms = false,
+                IsForwarded = false,
+                HandlerType = EHandlerType.OrgLevel,
+                BusinessType = EBusinessType.Send,
+                FlowDirection = EFlowDirection.CenterToCenter,
+            }
+        };
+        _orderController.StartFlow(handleDto).GetAwaiter().GetResult();
+        return this;
+
+    }
+
     public OrderServiceMock 办理到一级部门()
     {
         var stepNextInfo = _orderController.GetFlowStartOptions(CreateOrderOutDto.Id).GetAwaiter().GetResult().ToJson().FromJson<NextStepsDto<NextStepOption>>();
@@ -70,7 +101,7 @@ public class OrderServiceMock
         return this;
     }
 
-    public OrderServiceMock 办理到归档(Action action = null)
+    public OrderServiceMock 办理到归档(Action action = null, Action<OrderHandleFlowDto> dataAction = null, Action<NextWorkflowDto> workflowAction = null)
     {
         action?.Invoke();
         var stepNextInfo = _orderController.GetNextStepsWithRecommend(CreateOrderOutDto.Id).GetAwaiter().GetResult().ToJson().FromJson<NextStepsDto<NextStepOption>>();
@@ -91,7 +122,7 @@ public class OrderServiceMock
                 IsOther = true,
                 OtherRemark = "其它原因",
                 RealCommunicationAddress = "地点地点地点",
-                RealCommunicationTime = DateTime.Now
+                RealCommunicationTime = DateTime.Now,
             },
             Workflow = new NextWorkflowDto
             {
@@ -108,6 +139,8 @@ public class OrderServiceMock
                 StepId = stepNextInfo.StepId,
             }
         };
+        dataAction?.Invoke(handleDto.Data);
+        workflowAction?.Invoke(handleDto.Workflow);
         try
         {
             _orderController.Handle(handleDto).GetAwaiter().GetResult();
@@ -115,6 +148,10 @@ public class OrderServiceMock
         catch (Exception e)
         {
             var msg = e.Message;
+            if (msg.Contains("RealtimeService") == false)
+            {
+                throw;
+            }
             // ignore
         }
         return this;

+ 1 - 0
src/Hotline.Application/Mappers/OrderMapperConfigs.cs

@@ -204,6 +204,7 @@ public class OrderMapperConfigs : IRegister
             .IgnoreIf((src, dest) => string.IsNullOrEmpty(src.TranspondCityName), dest => dest.TranspondCityName)
             .Map(src => src.TranspondCityValue, dest => dest.TranspondCityValue)
             .IgnoreIf((src, dest) => string.IsNullOrEmpty(src.TranspondCityValue), dest => dest.TranspondCityValue)
+            .Map(src => src.IsStepUrgent, dest => dest.IsStepUrgent)
             .IgnoreNonMapped(true);
 
         config.ForType<AddOrderComplementDto, OrderComplement>()