Ver código fonte

调整order.getNextSteps

xf 1 ano atrás
pai
commit
8cc6481199

+ 5 - 0
src/Hotline.Ai.Jths/Hotline.Ai.Jths.csproj

@@ -9,10 +9,15 @@
   <ItemGroup>
     <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" />
     <PackageReference Include="RestSharp" Version="110.2.0" />
+    <PackageReference Include="Fw.Utility.UnifyResponse" Version="1.0.0" />
   </ItemGroup>
 
   <ItemGroup>
     <ProjectReference Include="..\Hotline\Hotline.csproj" />
   </ItemGroup>
 
+  <ItemGroup>
+    <Compile Remove="IJthsClient.cs" />
+  </ItemGroup>
+
 </Project>

+ 13 - 8
src/Hotline.Api/Controllers/OrderController.cs

@@ -1705,7 +1705,7 @@ public class OrderController : BaseController
 
     #endregion
 
-    #region 工单办理klooooooooooooooooooooooooooooooooooooooooooooooooo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+    #region 工单办理
 
     /// <summary>
     /// 工单列表
@@ -1965,18 +1965,23 @@ public class OrderController : BaseController
     /// 查询工单办理下一步可选节点(带推荐部门)
     /// </summary>
     [HttpGet("nextsteps/{orderId}")]
-    public async Task<NextStepsWithRecommendDto> GetNextStepsWithRecommendAsync(string orderId)
+    public async Task<NextStepsDto<RecommendStepOption>> GetNextStepsWithRecommendAsync(string orderId)
     {
         var order = await _orderDomainService.GetOrderAsync(orderId, cancellationToken: HttpContext.RequestAborted);
         if (string.IsNullOrEmpty(order.WorkflowId))
             throw new UserFriendlyException("该工单无关联流程id");
         var dto = await _workflowApplication.GetNextStepsAsync(order.WorkflowId, HttpContext.RequestAborted);
-        var rsp = _mapper.Map<NextStepsWithRecommendDto>(dto);
-        var org = await _organizeRepository.GetAsync(d => d.AreaCode == order.AreaCode, HttpContext.RequestAborted);
-        if (org is null) return rsp;
-        
-        rsp.RecommendOrgId = org.Id;
-        rsp.RecommendOrgName = org.Name;
+        var rsp = _mapper.Map<NextStepsDto<RecommendStepOption>>(dto);
+        foreach (var step in rsp.Steps)
+        {
+            if (dto.CurrentStepBusinessType is not EBusinessType.Send ||
+                step.BusinessType is not EBusinessType.Department) continue;
+            var org = await _organizeRepository.GetAsync(d => d.AreaCode == order.AreaCode, HttpContext.RequestAborted);
+            if (org is null) continue;
+            step.RecommendOrgId = org.Id;
+            step.RecommendOrgName = org.Name;
+        }
+
         return rsp;
     }
 

+ 14 - 15
src/Hotline.Api/Controllers/WorkflowController.cs

@@ -52,7 +52,7 @@ public class WorkflowController : BaseController
     private readonly ISystemDicDataCacheManager _systemDicDataCacheManager;
     private readonly IFileRepository _fileRepository;
 
-	public WorkflowController(
+    public WorkflowController(
         IDefinitionDomainService definitionDomainService,
         IRepository<WorkflowDefinition> definitionRepository,
         IWorkflowApplication workflowApplication,
@@ -70,7 +70,7 @@ public class WorkflowController : BaseController
         IMapper mapper,
         ISystemDicDataCacheManager systemDicDataCacheManager,
         IFileRepository fileRepository
-	)
+    )
     {
         _definitionDomainService = definitionDomainService;
         _definitionRepository = definitionRepository;
@@ -89,8 +89,7 @@ public class WorkflowController : BaseController
         _workflowCountersignRepository = workflowCountersignRepository;
         _systemDicDataCacheManager = systemDicDataCacheManager;
         _fileRepository = fileRepository;
-
-	}
+    }
 
     /// <summary>
     /// 分页查询最新版本号的模板
@@ -333,7 +332,7 @@ public class WorkflowController : BaseController
     /// <param name="workflowId"></param>
     /// <returns></returns>
     [HttpGet("{workflowId}/recall")]
-    public async Task<RecallStepsDto> GetRecallSteps(string workflowId)
+    public async Task<NextStepsDto<RecallStepOption>> GetRecallSteps(string workflowId)
     {
         return await _workflowApplication.GetRecallStepsAsync(workflowId, HttpContext.RequestAborted);
     }
@@ -458,7 +457,7 @@ public class WorkflowController : BaseController
     public async Task<WorkflowDto> GetWorkflowTraces(string workflowId)
     {
         var workflow = await _workflowDomainService.GetWorkflowAsync(workflowId, cancellationToken: HttpContext.RequestAborted);
-		workflow.Traces = await _workflowTraceRepository.Queryable()
+        workflow.Traces = await _workflowTraceRepository.Queryable()
             .Where(d => d.WorkflowId == workflow.Id)
             .OrderBy(d => d.CreationTime)
             .ToTreeAsync(d => d.Traces, d => d.ParentId, null);
@@ -466,15 +465,16 @@ public class WorkflowController : BaseController
         var workflowDto = _mapper.Map<WorkflowDto>(workflow);
         if (workflowDto.Traces.Any())
         {
-	        foreach (var item in workflowDto.Traces)
-	        {
-		        if (item.FileJson != null && item.FileJson.Any())
-		        {
-					var files = await _fileRepository.Queryable().Where(x => x.FlowKey == item.StepId).ToListAsync();
-					if (files.Any()) item.Files = _mapper.Map<List<FileDto>>(files);
-				}
-			}
+            foreach (var item in workflowDto.Traces)
+            {
+                if (item.FileJson != null && item.FileJson.Any())
+                {
+                    var files = await _fileRepository.Queryable().Where(x => x.FlowKey == item.StepId).ToListAsync();
+                    if (files.Any()) item.Files = _mapper.Map<List<FileDto>>(files);
+                }
+            }
         }
+
         return workflowDto;
     }
 
@@ -619,6 +619,5 @@ public class WorkflowController : BaseController
         }).ToList();
 
         return new PagedDto<WorkflowCountersignDto>(total, dtos);
-
     }
 }

+ 6 - 5
src/Hotline.Application/FlowEngine/IWorkflowApplication.cs

@@ -21,7 +21,7 @@ namespace Hotline.Application.FlowEngine
         /// 流转至下一节点(节点办理)
         /// </summary>
         Task NextAsync(NextWorkflowDto dto, CancellationToken cancellationToken);
-        
+
         /// <summary>
         /// 退回(返回前一节点)
         /// </summary>
@@ -45,7 +45,8 @@ namespace Hotline.Application.FlowEngine
         /// <summary>
         /// 跳转至结束节点(无视流程模板配置直接跳至结束节点)
         /// </summary>
-        Task JumpToEndAsync(string workflowId, string opinion,List<FileDto> file, EReviewResult? reviewResult = EReviewResult.Unknown,
+        Task JumpToEndAsync(string workflowId, string opinion, List<FileDto> file,
+            EReviewResult? reviewResult = EReviewResult.Unknown,
             CancellationToken cancellationToken = default);
 
         /// <summary>
@@ -68,17 +69,17 @@ namespace Hotline.Application.FlowEngine
         /// <summary>
         /// 查询开始流程的下一步待选节点
         /// </summary>
-        Task<NextStepsDto> GetStartStepsAsync(string moduleCode, CancellationToken cancellationToken);
+        Task<NextStepsDto<NextStepOption>> GetStartStepsAsync(string moduleCode, CancellationToken cancellationToken);
 
         /// <summary>
         /// 查询办理流程的下一步待选节点
         /// </summary>
-        Task<NextStepsDto> GetNextStepsAsync(string workflowId, CancellationToken cancellationToken);
+        Task<NextStepsDto<NextStepOption>> GetNextStepsAsync(string workflowId, CancellationToken cancellationToken);
 
         /// <summary>
         /// 查询撤回可选节点
         /// </summary>
-        Task<RecallStepsDto> GetRecallStepsAsync(string workflowId, CancellationToken cancellationToken);
+        Task<NextStepsDto<RecallStepOption>> GetRecallStepsAsync(string workflowId, CancellationToken cancellationToken);
 
         /// <summary>
         /// 查询跳转可选节点

+ 8 - 8
src/Hotline.Application/FlowEngine/WorkflowApplication.cs

@@ -463,7 +463,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
     /// <summary>
     /// 查询开始流程的下一步待选节点
     /// </summary>
-    public async Task<NextStepsDto> GetStartStepsAsync(string moduleCode, CancellationToken cancellationToken)
+    public async Task<NextStepsDto<NextStepOption>> GetStartStepsAsync(string moduleCode, CancellationToken cancellationToken)
     {
         var wfModule = await GetWorkflowModuleAsync(moduleCode, cancellationToken);
         var definition = wfModule.Definition;
@@ -489,7 +489,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
             //return dto;
             var nextStepOption = await GetDynamicStepAsync(startStepDefine.InstancePolicy.Value,
                 startStepDefine.StepType, startStepDefine.BusinessType, cancellationToken);
-            return new NextStepsDto
+            return new NextStepsDto<NextStepOption>
             {
                 Steps = new List<NextStepOption> { nextStepOption }
             };
@@ -502,7 +502,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
         //var steps = firstStepDefines
         //        .Select(d => new NextStepOption { Key = d.Code, Value = d.Name })
         //        .ToList();
-        return new NextStepsDto
+        return new NextStepsDto<NextStepOption>
         {
             Steps = await GetConfigStepsAsync(definition.FlowType, startStepDefine.StepType, startStepDefine.BusinessType,
                 firstStepDefines,
@@ -515,7 +515,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
     /// <summary>
     /// 查询办理流程的下一步待选节点
     /// </summary>
-    public async Task<NextStepsDto> GetNextStepsAsync(string workflowId, CancellationToken cancellationToken)
+    public async Task<NextStepsDto<NextStepOption>> GetNextStepsAsync(string workflowId, CancellationToken cancellationToken)
     {
         var workflow = await _workflowDomainService.GetWorkflowAsync(workflowId, true, true,
             cancellationToken: cancellationToken);
@@ -523,12 +523,12 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
         if (currentStep.StepType is EStepType.End)
             throw new UserFriendlyException("结束节点无需办理");
 
-        var dto = new NextStepsDto
+        var dto = new NextStepsDto<NextStepOption>
         {
             CanReject = workflow.IsReviewType() && currentStep.CanReject,
             ExpiredTime = workflow.ExpiredTime,
             CanStartCountersign = currentStep.CanStartCountersign,
-            //RealCommunicationModeOptions = EnumExts.GetDescriptions<ERealCommunicationMode>().ToList(),
+            CurrentStepBusinessType = currentStep.BusinessType,
             TimeTypeOptions = EnumExts.GetDescriptions<ETimeType>().ToList()
         };
 
@@ -596,7 +596,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
     /// <summary>
     /// 查询撤回可选节点及办理对象
     /// </summary>
-    public async Task<RecallStepsDto> GetRecallStepsAsync(string workflowId, CancellationToken cancellationToken)
+    public async Task<NextStepsDto<RecallStepOption>> GetRecallStepsAsync(string workflowId, CancellationToken cancellationToken)
     {
         var workflow =
             await _workflowDomainService.GetWorkflowAsync(workflowId, true, true, cancellationToken: cancellationToken);
@@ -607,7 +607,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
         if (currentStep is null)
             throw new UserFriendlyException("无效当前节点编号");
 
-        var dto = new RecallStepsDto
+        var dto = new NextStepsDto<RecallStepOption>
         {
             TimeTypeOptions = EnumExts.GetDescriptions<ETimeType>().ToList()
         };

+ 35 - 29
src/Hotline.Share/Dtos/FlowEngine/NextStepsDto.cs

@@ -4,10 +4,7 @@ namespace Hotline.Share.Dtos.FlowEngine;
 
 public class NextStepsDto
 {
-    //public string DefinitionId { get; set; }
-    //public EInstanceMode InstanceMode { get; set; }
-    //public EDynamicPolicy DynamicPolicy { get; set; }
-    public IReadOnlyList<NextStepOption> Steps { get; set; }
+    // public IReadOnlyList<NextStepOption> Steps { get; set; }
     public DateTime? ExpiredTime { get; set; }
 
     /// <summary>
@@ -20,10 +17,19 @@ public class NextStepsDto
     /// </summary>
     public bool CanStartCountersign { get; set; }
 
-    //public IReadOnlyList<KeyValuePair<int, string>> RealCommunicationModeOptions { get; set; }
+    /// <summary>
+    /// 当前办理节点业务类型
+    /// </summary>
+    public EBusinessType CurrentStepBusinessType { get; set; }
+
     public IReadOnlyList<KeyValuePair<int, string>> TimeTypeOptions { get; set; }
 }
 
+public class NextStepsDto<TSteps> : NextStepsDto
+{
+    public IReadOnlyList<TSteps> Steps { get; set; }
+}
+
 public class NextStepOption : Kv
 {
     /// <summary>
@@ -65,30 +71,30 @@ public class GetNextStepItemsDto
     public NextStepOption Step { get; set; }
 }
 
-/// <summary>
-/// 撤回可选节点参数
-/// </summary>
-public class RecallStepsDto
-{
-    public IReadOnlyList<RecallStepOption> Steps { get; set; }
-
-    //public DateTime? ExpiredTime { get; set; }
-
-    /// <summary>
-    /// 是否有否决按钮
-    /// </summary>
-    public bool CanReject { get; set; }
-
-    /// <summary>
-    /// 是否支持发起会签
-    /// </summary>
-    public bool CanStartCountersign { get; set; }
-
-    /// <summary>
-    /// 办理时限时间类型待选参数
-    /// </summary>
-    public IReadOnlyList<KeyValuePair<int, string>> TimeTypeOptions { get; set; }
-}
+// /// <summary>
+// /// 撤回可选节点参数
+// /// </summary>
+// public class RecallStepsDto
+// {
+//     public IReadOnlyList<RecallStepOption> Steps { get; set; }
+//
+//     //public DateTime? ExpiredTime { get; set; }
+//
+//     /// <summary>
+//     /// 是否有否决按钮
+//     /// </summary>
+//     public bool CanReject { get; set; }
+//
+//     /// <summary>
+//     /// 是否支持发起会签
+//     /// </summary>
+//     public bool CanStartCountersign { get; set; }
+//
+//     /// <summary>
+//     /// 办理时限时间类型待选参数
+//     /// </summary>
+//     public IReadOnlyList<KeyValuePair<int, string>> TimeTypeOptions { get; set; }
+// }
 
 public class RecallStepOption : NextStepOption
 {

+ 14 - 1
src/Hotline.Share/Dtos/Order/NextStepsWithRecommendDto.cs

@@ -8,7 +8,20 @@ public class NextStepsWithRecommendDto : NextStepsDto
     /// 推荐部门id
     /// </summary>
     public string RecommendOrgId { get; set; }
-    
+
+    /// <summary>
+    /// 推荐部门名称
+    /// </summary>
+    public string RecommendOrgName { get; set; }
+}
+
+public class RecommendStepOption : NextStepOption
+{
+    /// <summary>
+    /// 推荐部门id
+    /// </summary>
+    public string RecommendOrgId { get; set; }
+
     /// <summary>
     /// 推荐部门名称
     /// </summary>