Browse Source

fixed: 部门领导指派类型错误

xfe 2 months ago
parent
commit
6d190dca02

+ 3 - 0
src/Hotline.Application/FlowEngine/WorkflowApplication.cs

@@ -1054,6 +1054,9 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
                     })
                     .ToList();
                 break;
+            case EHandlerType.AssignedOrgOrRole:
+                
+                break;
             default:
                 throw new ArgumentOutOfRangeException();
         }

+ 25 - 9
src/Hotline/FlowEngine/Workflows/WorkflowDomainService.cs

@@ -362,17 +362,33 @@ namespace Hotline.FlowEngine.Workflows
                 && nextStepDefine.HandlerType == EHandlerType.Role
                 && !dto.NextHandlers.Any())
             {
-                //todo 指派给配置的角色
-                dto.FlowAssignType = EFlowAssignType.Role;
                 var handler = nextStepDefine.HandlerTypeItems.First();
-                dto.NextHandlers.Add(new StepAssignInfo
+                if (nextStepDefine.BusinessType is EBusinessType.DepartmentLeader)
                 {
-                    Key = handler.Key,
-                    Value = handler.Value,
-                    RoleId = handler.Key,
-                    RoleName = handler.Value,
-                    FlowAssignType = EFlowAssignType.Role
-                });
+                    dto.NextHandlers.Add(new StepAssignInfo
+                    {
+                        Key = handler.Key,
+                        Value = handler.Value,
+                        RoleId = handler.Key,
+                        RoleName = handler.Value,
+                        OrgId = _sessionContextProvider.SessionContext.RequiredOrgId,
+                        OrgName = _sessionContextProvider.SessionContext.OrgName,
+                        FlowAssignType = EFlowAssignType.OrgAndRole
+                    });
+                }
+                else
+                {
+                    //todo 指派给配置的角色
+                    //dto.FlowAssignType = EFlowAssignType.Role;
+                    dto.NextHandlers.Add(new StepAssignInfo
+                    {
+                        Key = handler.Key,
+                        Value = handler.Value,
+                        RoleId = handler.Key,
+                        RoleName = handler.Value,
+                        FlowAssignType = EFlowAssignType.Role
+                    });
+                }
             }
 
 

+ 46 - 10
test/Hotline.Tests/Controller/OrderControllerTest.cs

@@ -43,6 +43,7 @@ using XF.Domain.Exceptions;
 using XF.Domain.Repository;
 
 namespace Hotline.Tests.Controller;
+
 public class OrderControllerTest : TestBase
 {
     private readonly OrderController _orderController;
@@ -75,8 +76,11 @@ public class OrderControllerTest : TestBase
         IRepository<CallidRelation> callIdRelationRepository, XingTangCallApplication defaultCallApplication,
         ISugarUnitOfWork<CapDbContext> capDbContext, IHttpContextAccessor httpContextAccessor, IThirdIdentiyService thirdService,
         IThirdAccountRepository thirdAccount, IIndustryRepository industryRepository, IOrderSnapshotRepository orderSnapshotRepository,
-        ISystemLogRepository systemLogRepository, IOrderVisitDomainService orderVisitDomainService, IRepository<OrderVisitDetail> orderVisitDetailRepository, ISystemDicDataCacheManager systemDicDataCacheManager, ITypedCache<SystemSetting> cacheSettingData)
-        : base(accountRepository, roleRepository, userController, scopeFactory, userRepository, httpContextAccessor, thirdService, thirdAccount, cacheSettingData)
+        ISystemLogRepository systemLogRepository, IOrderVisitDomainService orderVisitDomainService,
+        IRepository<OrderVisitDetail> orderVisitDetailRepository, ISystemDicDataCacheManager systemDicDataCacheManager,
+        ITypedCache<SystemSetting> cacheSettingData)
+        : base(accountRepository, roleRepository, userController, scopeFactory, userRepository, httpContextAccessor, thirdService, thirdAccount,
+            cacheSettingData)
     {
         _hotspotRepository = hotspotRepository;
         _orderController = orderController;
@@ -161,8 +165,8 @@ public class OrderControllerTest : TestBase
         try
         {
             order = _orderServiceMock.CreateOrder(callNo)
-                       .办理到派单员()
-                       .GetCreateResult();
+                .办理到派单员()
+                .GetCreateResult();
         }
         catch (UserFriendlyException e)
         {
@@ -187,7 +191,8 @@ public class OrderControllerTest : TestBase
             .FirstAsync();
         var visitDetaila = await _orderVisitDetailRepository.Queryable().Where(m => m.VisitId == visit.Id).ToListAsync();
         var visitDetail = visitDetaila.Adapt<List<VisitDetailDto>>();
-        visitDetail.ForEach(m => { 
+        visitDetail.ForEach(m =>
+        {
             m.SeatEvaluate = ESeatEvaluate.DefaultSatisfied;
             var smsReply = _orderVisitDomainService.GetVisitEvaluateByReplyTxt("0");
             m.OrgProcessingResults = smsReply.GetOrgProcessingResults(_systemDicDataCacheManager.VisitSatisfaction);
@@ -203,9 +208,9 @@ public class OrderControllerTest : TestBase
             .Create();
         await _callNativeRepository.AddAsync(inDto);
 
-        _systemLogRepository.Add("回访外呼已经接通", "", new CallRemarkDto { CallId = callNo,  CallNumber = inDto.ToNo }.ToJson(), "", 1, visit.Id);
+        _systemLogRepository.Add("回访外呼已经接通", "", new CallRemarkDto { CallId = callNo, CallNumber = inDto.ToNo }.ToJson(), "", 1, visit.Id);
         var visitDto = new VisitDto
-        { 
+        {
             Id = visit.Id,
             IsPutThrough = true,
             VisitDetails = visitDetail
@@ -236,11 +241,11 @@ public class OrderControllerTest : TestBase
     [Fact]
     public async Task OrderSnapshot_Test()
     {
-        var industryItems = await _industryRepository.Queryable() .Select(d => new { d.Id, d.Name, }) .ToListAsync();
+        var industryItems = await _industryRepository.Queryable().Select(d => new { d.Id, d.Name, }).ToListAsync();
         var industry = industryItems.First();
 
         SetZuoXi();
-        var order = _orderServiceMock.CreateOrder(industryId:industry.Id, industryName: industry.Name)
+        var order = _orderServiceMock.CreateOrder(industryId: industry.Id, industryName: industry.Name)
             .办理到派单员()
             .办理到归档(SetPaiDanYuan, data =>
             {
@@ -458,4 +463,35 @@ public class OrderControllerTest : TestBase
         //    .FirstAsync();
         //orgVisit.VisitContent.ShouldBe("满意");
     }
-}
+
+    #region 工单流程
+
+    /// <summary>
+    /// 工单从创建到归档完整流程
+    /// </summary>
+    public async Task OrderHandleTest()
+    {
+        SetZuoXi();
+        var flowInPaiDan = _orderServiceMock.CreateOrder()
+            .办理到派单员();
+        var orderInfo = flowInPaiDan.GetCreateResult();
+        //todo check order 
+
+        var flowInLevelOne = flowInPaiDan.办理到一级部门(SetPaiDanYuan);
+        orderInfo = flowInLevelOne.GetCreateResult();
+
+        var flowInLevelTwo = flowInLevelOne.办理到二级部门(Set一级部门);
+        orderInfo = flowInLevelTwo.GetCreateResult();
+
+        var flowInLevelOneSummary = flowInLevelTwo.办理一级部门汇总(Set二级部门);
+        orderInfo = flowInLevelOneSummary.GetCreateResult();
+
+        var flowInEnd = flowInLevelOneSummary.办理到归档(Set一级部门);
+        orderInfo = flowInEnd.GetCreateResult();
+
+        flowInEnd.发布工单(SetZuoXi)
+            .GetCreateResult();
+    }
+
+    #endregion
+}