Selaa lähdekoodia

Merge branch 'master' of http://110.188.24.182:10023/Fengwo/hotline

田爽 1 vuosi sitten
vanhempi
commit
157cb1c479

+ 16 - 5
src/Hotline.Api/Controllers/TestController.cs

@@ -11,6 +11,7 @@ using Hotline.CallCenter.Calls;
 using Hotline.CallCenter.Devices;
 using Hotline.CallCenter.Ivrs;
 using Hotline.FlowEngine.WorkflowModules;
+using Hotline.FlowEngine.Workflows;
 using Hotline.Identity.Roles;
 using Hotline.Import;
 using Hotline.Orders;
@@ -79,6 +80,8 @@ public class TestController : BaseController
     private readonly IQueue _queue;
     private readonly IExportApplication _exportApplication;
     private readonly IAiVisitService _aiVisitService;
+    private readonly IRepository<WorkflowTrace> _workflowTraceRepository;
+    private readonly IRepository<WorkflowStepHandler> _workflowStepHandleRepository;
 
 
     //private readonly ITypedCache<List<User>> _cache;
@@ -111,8 +114,9 @@ public class TestController : BaseController
         ICapPublisher capPublisher,
         IQueue queue,
         IExportApplication exportApplication,
-        IAiVisitService aiVisitService
-    )
+        IAiVisitService aiVisitService,
+        IRepository<WorkflowTrace> workflowTraceRepository,
+        IRepository<WorkflowStepHandler> workflowStepHandleRepository)
     {
         _logger = logger;
         _authorizeGenerator = authorizeGenerator;
@@ -137,6 +141,8 @@ public class TestController : BaseController
         _queue = queue;
         _exportApplication = exportApplication;
         _aiVisitService = aiVisitService;
+        _workflowTraceRepository = workflowTraceRepository;
+        _workflowStepHandleRepository = workflowStepHandleRepository;
     }
 
     [HttpGet("testo")]
@@ -187,7 +193,7 @@ public class TestController : BaseController
 
     [HttpGet("time")]
     [AllowAnonymous]
-    public async Task<OpenResponse> GetTime(string batchId,string taskId)
+    public async Task<OpenResponse> GetTime(string batchId, string taskId)
     {
         //await _repositoryts.AddVectorAsync("f595e730-909a-45e4-9138-a84bf15f4662", DateTime.Now,
         //    new List<string> { "xx", "bb" }, HttpContext.RequestAborted);
@@ -317,8 +323,13 @@ public class TestController : BaseController
 
     [AllowAnonymous]
     [HttpGet("wfdefine")]
-    public async Task GetWorkflowDefine()
+    public async Task GetWorkflowDefine([FromQuery] string id)
     {
+        //var query = _workflowTraceRepository.Queryable()
+            
+        //if (!string.IsNullOrEmpty(id))
+        //    query = query.Where(d => d.WorkflowId == id);
+        //var traces = await query.ToListAsync(HttpContext.RequestAborted);
     }
 
     [AllowAnonymous]
@@ -337,5 +348,5 @@ public class TestController : BaseController
         var publicKey = keyList[1];
         return $"{publicKey} \r\n {privateKey}";
     }
-    
+
 }

+ 5 - 0
src/Hotline/FlowEngine/Workflows/IWorkflowDomainService.cs

@@ -224,5 +224,10 @@ namespace Hotline.FlowEngine.Workflows
         /// 查询工单办理中的一级部门
         /// </summary>
         Task<ICollection<Kv>> GetLevelOneOrgsAsync(string workflowId, CancellationToken cancellation);
+
+        /// <summary>
+        /// 更新未办理节点的期满时间
+        /// </summary>
+        Task UpdateUnhandleExpiredTimeAsync(string workflowId, DateTime expiredTime, CancellationToken cancellation);
     }
 }

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

@@ -324,15 +324,15 @@ namespace Hotline.FlowEngine.Workflows
                 currentStep.FileJson = await _fileRepository.AddFileAsync(dto.Files, workflow.ExternalId,
                     currentStep.Id, cancellationToken);
 
-                //(currentStep.IsInCountersign() && !dto.BackToCountersignEnd) || dto.IsStartCountersign;
-                var isStartCountersign = currentStep.CountersignPosition switch
-                {
-                    ECountersignPosition.None => dto.IsStartCountersign,
-                    ECountersignPosition.Multi => !dto.BackToCountersignEnd,
-                    ECountersignPosition.Single => !dto.BackToCountersignEnd,
-                    ECountersignPosition.End => dto.IsStartCountersign,
-                    _ => throw new ArgumentOutOfRangeException()
-                };
+            //(currentStep.IsInCountersign() && !dto.BackToCountersignEnd) || dto.IsStartCountersign;
+            var isStartCountersign = currentStep.CountersignPosition switch
+            {
+                ECountersignPosition.None => dto.IsStartCountersign,
+                ECountersignPosition.Multi => !dto.BackToCountersignEnd,
+                ECountersignPosition.Single => !dto.BackToCountersignEnd,
+                ECountersignPosition.End => dto.IsStartCountersign,
+                _ => throw new ArgumentOutOfRangeException()
+            };
 
             var counterSignType = GetCounterSignType(currentStep.BusinessType);
 
@@ -723,6 +723,27 @@ namespace Hotline.FlowEngine.Workflows
             return list.Where((x, i) => list.FindIndex(z => z.Key == x.Key) == i).ToList();
         }
 
+        /// <summary>
+        /// 更新未办理节点的期满时间
+        /// </summary>
+        public async Task UpdateUnhandleExpiredTimeAsync(string workflowId, DateTime expiredTime, CancellationToken cancellation)
+        {
+            var steps = await _workflowStepRepository.Queryable()
+                .Includes(d => d.WorkflowTrace)
+                .Where(d => d.WorkflowId == workflowId &&
+                            d.Status < EWorkflowStepStatus.Handled)
+                .ToListAsync(cancellation);
+            foreach (var step in steps)
+            {
+                step.StepExpiredTime = expiredTime;
+                step.WorkflowTrace.StepExpiredTime = expiredTime;
+            }
+
+            await _workflowStepRepository.UpdateNav(steps)
+                .Include(d => d.WorkflowTrace)
+                .ExecuteCommandAsync();
+        }
+
         /// <summary>
         /// 查找当前会签内所有节点(含start,end)
         /// </summary>