Преглед изворни кода

Merge branch 'feature/task_59_order' into dev

qinchaoyue пре 5 месеци
родитељ
комит
dbfb30a8e4

+ 5 - 3
src/Hotline.Application/Orders/OrderPublishHandler/OrderPublishEndWorkflowHandler.cs

@@ -45,6 +45,7 @@ public class OrderPublishEndWorkflowHandler : INotificationHandler<EndWorkflowNo
     private readonly ILogger<OrderPublishEndWorkflowHandler> _logger;
     private readonly ISystemLogRepository _systemLogRepository;
     private const string Name = "中心直办件归档后默认自动发布";
+    private string ClassName = nameof(OrderPublishEndWorkflowHandler);
 
     public OrderPublishEndWorkflowHandler(IOrderRepository orderRepository, IRepository<OrderPublish> orderPublishRepository, ISessionContextProvider sessionContextProvider, ICapPublisher capPublisher, ISystemSettingCacheManager systemSettingCacheManager, Publisher publisher, IOptionsSnapshot<AppConfiguration> appOptions, IOrderVisitRepository orderVisitRepository, IRepository<OrderVisitDetail> orderVisitedDetailRepository, ILogger<OrderPublishEndWorkflowHandler> logger, ISystemLogRepository systemLogRepository, IOrderDomainService orderDomainService)
     {
@@ -64,6 +65,7 @@ public class OrderPublishEndWorkflowHandler : INotificationHandler<EndWorkflowNo
 
     public async Task Handle(EndWorkflowNotify notification, CancellationToken cancellationToken)
     {
+        await _systemLogRepository.AddAsync(Name, notification.Workflow.ExternalId, "进入方法", ClassName, status: 1);
         try
         {
             if (_systemSettingCacheManager.AutomaticPublishOrder == false)
@@ -75,7 +77,7 @@ public class OrderPublishEndWorkflowHandler : INotificationHandler<EndWorkflowNo
             var order = await _orderRepository.GetAsync(notification.Workflow.ExternalId, cancellationToken);
             if (order == null)
             {
-                await _systemLogRepository.AddAsync(Name, notification.Workflow.ExternalId, "根据 workflow.ExternalId 查询 order 为空");
+                await _systemLogRepository.AddAsync(Name, notification.Workflow.ExternalId, "根据 workflow.ExternalId 查询 order 为空", ClassName);
                 return;
             }
             var checkResult = order.AutoPublishCheck();
@@ -87,7 +89,7 @@ public class OrderPublishEndWorkflowHandler : INotificationHandler<EndWorkflowNo
 
             if (order.ProcessType != EProcessType.Zhiban)
             {
-                await _systemLogRepository.AddAsync(Name, order.Id, "非中心直办件");
+                await _systemLogRepository.AddAsync(Name, order.Id, "非中心直办件", ClassName);
                 return;
             }
 
@@ -95,7 +97,7 @@ public class OrderPublishEndWorkflowHandler : INotificationHandler<EndWorkflowNo
         }
         catch (Exception e)
         {
-            await _systemLogRepository.AddAsync(Name, notification.Workflow.ExternalId, $"系统异常: {e.Message}");
+            await _systemLogRepository.AddAsync(Name, notification.Workflow.ExternalId, $"系统异常: {e.Message}", ClassName);
         }
     }
 }

+ 20 - 13
src/Hotline.Repository.SqlSugar/System/SystemLogRepository.cs

@@ -19,22 +19,29 @@ public class SystemLogRepository : BaseRepository<SystemLog>, ISystemLogReposito
 
     public async Task AddAsync(string name, string executeParam = "", string remark = "", string executeUrl = "", int status = 0)
     {
-        var entity = new SystemLog 
+        try
         {
-            Name = name,
-            ExecuteParam = executeParam,
-            ExecuteUrl = executeUrl,
-            Remark = remark,
-            Status = status
-        };
-        if (executeUrl.IsNullOrEmpty())
-        {
-            try
+            var entity = new SystemLog
+            {
+                Name = name,
+                ExecuteParam = executeParam,
+                ExecuteUrl = executeUrl,
+                Remark = remark,
+                Status = status
+            };
+            if (executeUrl.IsNullOrEmpty())
             {
-                entity.ExecuteUrl = new StackTrace().GetFrame(1).GetMethod().Name;
+                try
+                {
+                    entity.ExecuteUrl = new StackTrace().GetFrame(1).GetMethod().Name;
+                }
+                catch { }
             }
-            catch{ }
+            await AddAsync(entity);
+        }
+        catch
+        {
+            // ignore
         }
-        await AddAsync(entity);
     }
 }

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

@@ -38,6 +38,7 @@ namespace Hotline.FlowEngine.Workflows
         private readonly ISystemSettingCacheManager _systemSettingCacheManager;
         private readonly IWfModuleCacheManager _wfModuleCacheManager;
         private readonly ISessionContextProvider _sessionContextProvider;
+        private readonly ISystemLogRepository _systemLogRepository;
 
         public WorkflowDomainService(
             IWorkflowRepository workflowRepository,
@@ -50,7 +51,8 @@ namespace Hotline.FlowEngine.Workflows
             IMapper mapper,
             Publisher publisher,
             ILogger<WorkflowDomainService> logger,
-            IFileRepository fileRepository)
+            IFileRepository fileRepository,
+            ISystemLogRepository systemLogRepository)
         {
             _workflowRepository = workflowRepository;
             _workflowStepRepository = workflowStepRepository;
@@ -63,6 +65,7 @@ namespace Hotline.FlowEngine.Workflows
             _systemSettingCacheManager = systemSettingCacheManager;
             _wfModuleCacheManager = wfModuleCacheManager;
             _sessionContextProvider = sessionContextProvider;
+            _systemLogRepository = systemLogRepository;
         }
 
         public async Task<Workflow> CreateWorkflowAsync(WorkflowModule wfModule, string title, string userId,
@@ -1920,6 +1923,7 @@ namespace Hotline.FlowEngine.Workflows
                 workflow.UpdateLevelOneOrg(workflow.ActualHandleOrgCode, workflow.ActualHandleOrgName);
 
             await _workflowRepository.UpdateAsync(workflow, cancellationToken);
+            await _systemLogRepository.AddAsync("流程领域", workflow.ExternalId, "流程结束");
 
             await _publisher.PublishAsync(new EndWorkflowNotify(workflow, endTrace, dto),
                 PublishStrategy.ParallelWhenAll, cancellationToken);