ソースを参照

try catch _provinceService complete half

xf 1 年間 前
コミット
2ca9a2d1e3

+ 37 - 23
src/Hotline.Api/Controllers/OrderController.cs

@@ -85,9 +85,10 @@ public class OrderController : BaseController
     private readonly IRepository<OrderSpecial> _orderSpecialRepository;
     private readonly IRepository<WorkflowTrace> _workflowTraceRepository;
     private readonly IRepository<TrCallRecord> _trCallRecordRepository;
+    private readonly ILogger<OrderController> _logger;
 
 
-	public OrderController(
+    public OrderController(
         IOrderDomainService orderDomainService,
         IOrderRepository orderRepository,
         IWorkflowApplication workflowApplication,
@@ -128,9 +129,8 @@ public class OrderController : BaseController
         IRepository<OrderSendBack> orderSendBackRepository,
         IRepository<OrderSpecial> orderSpecialRepository,
         IRepository<WorkflowTrace> workflowTraceRepository,
-		IRepository<TrCallRecord> trCallRecordRepository
-
-	)
+		IRepository<TrCallRecord> trCallRecordRepository,
+        ILogger<OrderController> logger)
     {
         _orderDomainService = orderDomainService;
         _orderRepository = orderRepository;
@@ -173,8 +173,8 @@ public class OrderController : BaseController
         _orderSpecialRepository = orderSpecialRepository;
         _workflowTraceRepository = workflowTraceRepository;
         _trCallRecordRepository = trCallRecordRepository;
-
-	}
+        _logger = logger;
+    }
 
     #region 工单发布
 
@@ -597,19 +597,26 @@ public class OrderController : BaseController
                 //        FirstSatisfactionCode = visit.Order.FirstVisitResultCode!,
                 //        ClientGuid = ""
                 //    });
-                await _provinceService.SubmitVisitInfo(new PublishVisitDto()
+                try
                 {
-                    Order = orderDto,
-                    No = visit.No,
-                    VisitType = visit.VisitType,
-                    VisitName = visit.CreatorName,
-                    VisitTime = visit.VisitTime,
-                    VisitRemark = first.VisitContent,
-                    AreaCode = visit.Order.AreaCode!,
-                    SubjectResultSatifyCode = first.OrgProcessingResults.Key,
-                    FirstSatisfactionCode = visit.Order.FirstVisitResultCode!,
-                    ClientGuid = ""
-                }, HttpContext.RequestAborted);
+                    await _provinceService.SubmitVisitInfo(new PublishVisitDto()
+                    {
+                        Order = orderDto,
+                        No = visit.No,
+                        VisitType = visit.VisitType,
+                        VisitName = visit.CreatorName,
+                        VisitTime = visit.VisitTime,
+                        VisitRemark = first.VisitContent,
+                        AreaCode = visit.Order.AreaCode!,
+                        SubjectResultSatifyCode = first.OrgProcessingResults.Key,
+                        FirstSatisfactionCode = visit.Order.FirstVisitResultCode!,
+                        ClientGuid = ""
+                    }, HttpContext.RequestAborted);
+                }
+                catch (Exception e)
+                {
+                    _logger.LogError("_provinceService.SubmitVisitInfo throw exception: {ex}", e.Message);
+                }
             }
             if (first != null)
             {
@@ -1384,12 +1391,19 @@ public class OrderController : BaseController
                     //    Supervise = superviseDto,
                     //    ClientGuid = ""
                     //});
-                    await _provinceService.SendSuperviseProcessInfo(new PublishSuperviseDto()
+                    try
                     {
-                        Order = orderDto,
-                        Supervise = superviseDto,
-                        ClientGuid = ""
-                    }, HttpContext.RequestAborted);
+                        await _provinceService.SendSuperviseProcessInfo(new PublishSuperviseDto()
+                        {
+                            Order = orderDto,
+                            Supervise = superviseDto,
+                            ClientGuid = ""
+                        }, HttpContext.RequestAborted);
+                    }
+                    catch (Exception e)
+                    {
+                        _logger.LogError("_provinceService.SendSuperviseProcessInfo throw exception: {ex}", e.Message);
+                    }
                 }
             }
         }

+ 4 - 2
src/Hotline.Api/Controllers/TestController.cs

@@ -1,9 +1,11 @@
 using Hotline.CallCenter.BlackLists;
 using Hotline.CallCenter.Devices;
 using Hotline.CallCenter.Ivrs;
+using Hotline.DataSharing.Province.Notifications;
 using Hotline.FlowEngine.WorkflowModules;
 using Hotline.Identity.Roles;
 using Hotline.Orders;
+using Hotline.Orders.Notifications;
 using Hotline.Realtimes;
 using Hotline.Repository.SqlSugar;
 using Hotline.Repository.SqlSugar.Ts;
@@ -110,9 +112,9 @@ public class TestController : BaseController
     }
 
     [HttpGet("testo")]
-    public Task<OpenResponse> TestOrigin()
+    public async Task<OpenResponse> TestOrigin()
     {
-        return Task.FromResult(OpenResponse.Ok(DateTime.Today.ToString()));
+        return OpenResponse.Ok(DateTime.Today.ToString());
     }
 
     [HttpGet("time")]

+ 38 - 18
src/Hotline.Application/Handlers/FlowEngine/WorkflowEndHandler.cs

@@ -18,6 +18,7 @@ using Hotline.Share.Mq;
 using MapsterMapper;
 using MediatR;
 using Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.Logging;
 using XF.Domain.Exceptions;
 using XF.Domain.Repository;
 
@@ -44,6 +45,7 @@ public class WorkflowEndHandler : INotificationHandler<EndWorkflowNotify>
     private readonly IRepository<OrderDelay> _orderDelayRepository;
     private readonly IRepository<OrderVisitApply> _orderVisitApplyRepository;
     private readonly IMediator _mediator;
+    private readonly ILogger<WorkflowEndHandler> _logger;
 
     public WorkflowEndHandler(
         IKnowledgeDomainService knowledgeDomainService,
@@ -63,8 +65,8 @@ public class WorkflowEndHandler : INotificationHandler<EndWorkflowNotify>
         IRepository<OrderDelay> orderDelayRepository,
         IRepository<OrderVisit> orderVisitRepository,
         IRepository<OrderVisitApply> orderVisitApplyRepository,
-        IMediator mediator
-        )
+        IMediator mediator,
+        ILogger<WorkflowEndHandler> logger)
     {
         _knowledgeDomainService = knowledgeDomainService;
         _orderDomainService = orderDomainService;
@@ -84,6 +86,7 @@ public class WorkflowEndHandler : INotificationHandler<EndWorkflowNotify>
         _orderVisitRepository = orderVisitRepository;
         _orderVisitApplyRepository = orderVisitApplyRepository;
         _mediator = mediator;
+        _logger = logger;
     }
 
     /// <summary>Handles a notification</summary>
@@ -124,12 +127,20 @@ public class WorkflowEndHandler : INotificationHandler<EndWorkflowNotify>
                 //    Order = _mapper.Map<OrderDto>(order),
                 //    WorkflowTrace = _mapper.Map<WorkflowTraceDto>(notification.Trace)
                 //}, cancellationToken: cancellationToken);
-                await _provinceService.OrderFiled(new OrderFlowDto
+                try
                 {
-                    Order = _mapper.Map<OrderDto>(order),
-                    WorkflowTrace = _mapper.Map<WorkflowTraceDto>(notification.Trace)
-                }, cancellationToken: cancellationToken);
 
+                    await _provinceService.OrderFiled(new OrderFlowDto
+                    {
+                        Order = _mapper.Map<OrderDto>(order),
+                        WorkflowTrace = _mapper.Map<WorkflowTraceDto>(notification.Trace)
+                    }, cancellationToken: cancellationToken);
+
+                }
+                catch (Exception e)
+                {
+                    _logger.LogError("_provinceService.OrderFiled throw exception: {ex}", e.Message);
+                }
                 break;
             case WorkflowModuleConsts.OrderScreen:
                 var screen = await _orderScreenRepository.GetAsync(workflow.ExternalId, cancellationToken);
@@ -171,19 +182,28 @@ public class WorkflowEndHandler : INotificationHandler<EndWorkflowNotify>
                                 //        FirstSatisfactionCode = visit.Order.FirstVisitResultCode!,
                                 //        ClientGuid = ""
                                 //    });
-                                await _provinceService.SubmitOrderScreenSuccess(new PublishVisitDto()
+                                try
+                                {
+
+                                    await _provinceService.SubmitOrderScreenSuccess(new PublishVisitDto()
+                                    {
+                                        Order = _mapper.Map<OrderDto>(visit.Order),
+                                        No = visit.No,
+                                        VisitType = visit.VisitType,
+                                        VisitName = visit.CreatorName,
+                                        VisitTime = visit.VisitTime,
+                                        VisitRemark = visitDe.VisitContent,
+                                        AreaCode = visit.Order.AreaCode!,
+                                        SubjectResultSatifyCode = visitDe.OrgProcessingResults?.Key,
+                                        FirstSatisfactionCode = visit.Order.FirstVisitResultCode!,
+                                        ClientGuid = ""
+                                    }, cancellationToken);
+
+                                }
+                                catch (Exception e)
                                 {
-                                    Order = _mapper.Map<OrderDto>(visit.Order),
-                                    No = visit.No,
-                                    VisitType = visit.VisitType,
-                                    VisitName = visit.CreatorName,
-                                    VisitTime = visit.VisitTime,
-                                    VisitRemark = visitDe.VisitContent,
-                                    AreaCode = visit.Order.AreaCode!,
-                                    SubjectResultSatifyCode = visitDe.OrgProcessingResults?.Key,
-                                    FirstSatisfactionCode = visit.Order.FirstVisitResultCode!,
-                                    ClientGuid = ""
-                                }, cancellationToken);
+                                    _logger.LogError("_provinceService.SubmitOrderScreenSuccess throw exception: {ex}", e.Message);
+                                }
                             }
                         }
                     }

+ 12 - 2
src/Hotline.Application/Handlers/FlowEngine/WorkflowPreviousHandler.cs

@@ -31,6 +31,7 @@ namespace Hotline.Application.Handlers.FlowEngine
         private readonly IProvinceService _provinceService;
         private readonly ICapPublisher _capPublisher;
         private readonly IMapper _mapper;
+        private readonly ILogger<WorkflowPreviousHandler> _logger;
 
         public WorkflowPreviousHandler(
             IOrderDomainService orderDomainService,
@@ -39,7 +40,8 @@ namespace Hotline.Application.Handlers.FlowEngine
             ITimeLimitDomainService timeLimitDomainService,
             IProvinceService provinceService,
             ICapPublisher capPublisher,
-            IMapper mapper)
+            IMapper mapper,
+            ILogger<WorkflowPreviousHandler> logger)
         {
             _orderDomainService = orderDomainService;
             _orderRepository = orderRepository;
@@ -48,6 +50,7 @@ namespace Hotline.Application.Handlers.FlowEngine
             _provinceService = provinceService;
             _capPublisher = capPublisher;
             _mapper = mapper;
+            _logger = logger;
         }
 
         /// <summary>Handles a notification</summary>
@@ -79,7 +82,14 @@ namespace Hotline.Application.Handlers.FlowEngine
 
                         var dto = _mapper.Map<OrderDto>(order);
                         //await _capPublisher.PublishAsync(EventNames.HotlineOrderExpiredTimeUpdate, dto, cancellationToken: cancellationToken);
-                        await _provinceService.HotlineOrderFlowRecalled(dto, cancellationToken);
+                        try
+                        {
+                            await _provinceService.HotlineOrderFlowRecalled(dto, cancellationToken);
+                        }
+                        catch (Exception e)
+                        {
+                            _logger.LogError("_provinceService.HotlineOrderFlowRecalled throw exception: {ex}", e.Message);
+                        }
                     }
 
                     break;

+ 23 - 0
src/Hotline.Application/Handlers/Order/AddOrderTracesAsyncNotifyHandler.cs

@@ -0,0 +1,23 @@
+using Hotline.Application.Orders;
+using Hotline.DataSharing.Province.Notifications;
+using MediatR;
+
+namespace Hotline.Application.Handlers.Order;
+
+public class AddOrderTracesAsyncNotifyHandler:INotificationHandler<AddOrderTracesAsyncNotify>
+{
+    private readonly IOrderApplication _orderApplication;
+
+    public AddOrderTracesAsyncNotifyHandler(IOrderApplication orderApplication)
+    {
+        _orderApplication = orderApplication;
+    }
+    
+    /// <summary>Handles a notification</summary>
+    /// <param name="notification">The notification</param>
+    /// <param name="cancellationToken">Cancellation token</param>
+    public async Task Handle(AddOrderTracesAsyncNotify notification, CancellationToken cancellationToken)
+    {
+        await _orderApplication.AddOrderTracesAsync(notification.OrderId, notification.Traces, cancellationToken);
+    }
+}

+ 23 - 0
src/Hotline.Application/Handlers/Order/CancelOrderAsyncNotifyHandler.cs

@@ -0,0 +1,23 @@
+using Hotline.Application.Orders;
+using Hotline.DataSharing.Province.Notifications;
+using MediatR;
+
+namespace Hotline.Application.Handlers.Order;
+
+public class CancelOrderAsyncNotifyHandler : INotificationHandler<CancelOrderAsyncNotify>
+{
+    private readonly IOrderApplication _orderApplication;
+
+    public CancelOrderAsyncNotifyHandler(IOrderApplication orderApplication)
+    {
+        _orderApplication = orderApplication;
+    }
+    
+    /// <summary>Handles a notification</summary>
+    /// <param name="notification">The notification</param>
+    /// <param name="cancellationToken">Cancellation token</param>
+    public async Task Handle(CancelOrderAsyncNotify notification, CancellationToken cancellationToken)
+    {
+        await _orderApplication.CancelOrderAsync(notification.OrderId, notification.Opinion, cancellationToken);
+    }
+}

+ 1 - 1
src/Hotline.Application/Orders/IOrderApplication.cs

@@ -19,7 +19,7 @@ namespace Hotline.Application.Orders
         /// 1.更新工单 2.更新流程 3.推送省平台
         /// </summary>
         /// <returns></returns>
-        Task DelayOrderHandleExpiredTimeAsync(Order order, ETimeType timeType, int timeCount, bool publishToProvince = true);
+        Task DelayOrderExpiredTimeAsync(Order order, ETimeType timeType, int timeCount, bool publishToProvince = true);
 
         /// <summary>
         /// 新增工单办理流程记录

+ 2 - 3
src/Hotline.Application/Orders/OrderApplication.cs

@@ -41,7 +41,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
     /// 1.更新工单 2.更新流程 3.推送省平台
     /// </summary>
     /// <returns></returns>
-    public async Task DelayOrderHandleExpiredTimeAsync(Order order, ETimeType timeType, int timeCount,
+    public async Task DelayOrderExpiredTimeAsync(Order order, ETimeType timeType, int timeCount,
         bool publishToProvince = true)
     {
         var expiredTime = _timeLimitDomainService.CalcEndTime(order.ExpiredTime.Value, timeType, timeCount, false);
@@ -51,8 +51,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
     /// <summary>
     /// 新增工单办理流程记录
     /// </summary>
-    public async Task AddOrderTracesAsync(string orderId, ICollection<WorkflowTraceDto> traces,
-        CancellationToken cancellationToken)
+    public async Task AddOrderTracesAsync(string orderId, ICollection<WorkflowTraceDto> traces, CancellationToken cancellationToken)
     {
         var order = await _orderRepository.GetAsync(orderId, cancellationToken);
         if (order is null)