فهرست منبع

新增市州互转消息

tangjiang 8 ماه پیش
والد
کامیت
d5ad80da3e

+ 19 - 33
src/Hotline.Api/Controllers/OrderController.cs

@@ -9,6 +9,7 @@ using Hotline.Caching.Interfaces;
 using Hotline.CallCenter.Configs;
 using Hotline.ContingencyManagement;
 using Hotline.Enterprise;
+using Hotline.EventBus;
 using Hotline.File;
 using Hotline.FlowEngine.Definitions;
 using Hotline.FlowEngine.WorkflowModules;
@@ -1884,19 +1885,19 @@ public class OrderController : BaseController
     [HttpGet("screen")]
     public async Task<PagedDto<OrderScreenListDto>> ScreenList([FromQuery] ScreenListDto dto)
     {
-		var handler = dto.TabStatus is EScreenStatus.Apply;
-		ISugarQueryable<OrderScreen> query;
-		if (dto.source == 1)
-		{
-			query = _orderScreenRepository.Queryable(hasHandled: !handler);
-		}
-		else
-		{
-			query = _orderScreenRepository.Queryable()
-				.Where(x => x.CreatorOrgId.StartsWith(_sessionContext.RequiredOrgId));
-		}
-		query = query.Includes(d => d.Order)
-			.Includes(d => d.Order)
+        var handler = dto.TabStatus is EScreenStatus.Apply;
+        ISugarQueryable<OrderScreen> query;
+        if (dto.source == 1)
+        {
+            query = _orderScreenRepository.Queryable(hasHandled: !handler);
+        }
+        else
+        {
+            query = _orderScreenRepository.Queryable()
+                .Where(x => x.CreatorOrgId.StartsWith(_sessionContext.RequiredOrgId));
+        }
+        query = query.Includes(d => d.Order)
+            .Includes(d => d.Order)
             .Includes(d => d.VisitDetail)
             .Includes(d => d.Visit, v => v.Order)
             .Includes(d => d.Workflow)
@@ -2039,7 +2040,7 @@ public class OrderController : BaseController
         screen.TypeDicId = dto.Data.TypeDicId;
         screen.TypeDicName = dto.Data.TypeDicName;
         screen.SendBackApply = false;
-		screen.SendBackApplyNum++;
+        screen.SendBackApplyNum++;
         await _orderScreenRepository.UpdateAsync(screen, HttpContext.RequestAborted);
         try
         {
@@ -2148,7 +2149,7 @@ public class OrderController : BaseController
             _sessionContext.RequiredUserId, _sessionContext.RequiredOrgId, _sessionContext.Roles) ?? false;
         if (model.Status == EScreenStatus.SendBack && model.SendBackApply)
             rspModel.IsCanHandle = false;
-		rspModel.Handle = false;
+        rspModel.Handle = false;
         if (!string.IsNullOrEmpty(rspModel.WorkflowId))
         {
             rspModel.Handle = await _workflowDomainService.CheckCurrentIsStartStepAsync(rspModel.WorkflowId, _sessionContext.RequiredUserId,
@@ -3189,23 +3190,8 @@ public class OrderController : BaseController
             throw new UserFriendlyException($"工单开启流程失败!, {e.Message}, {e.StackTrace}", "工单开启流程失败");
         }
 
-        ////是否市州互转
-        //if (dto.Data.Transpond.HasValue && dto.Data.Transpond.Value)
-        //{
-        //    var order = await _orderRepository.GetAsync(id, HttpContext.RequestAborted);
-        //    var orderDto = _mapper.Map<OrderDto>(order);
-        //    await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderTranspondCity, orderDto);
-        //    //保存本地数据
-        //    TranspondCityRawData cityRawData = new TranspondCityRawData
-        //    {
-        //        OrderCode = order.No,
-        //        TransferOutTime = DateTime.Now,
-        //        CityName = order.TranspondCityName,
-        //        Direction = ETranspondDirection.Out
-        //    };
-
-        //    await _transpondCityRawDataRepository.AddAsync(cityRawData, HttpContext.RequestAborted);
-        //}
+        //是否市州互转 
+       // await _publisher.PublishAsync(new TranspondCityNotify(order.Id), PublishStrategy.ParallelNoWait, HttpContext.RequestAborted);
     }
 
     /// <summary>
@@ -3274,7 +3260,7 @@ public class OrderController : BaseController
                 canUpdateOrderSender);
             //TODO发送短信即将超期
             //_capPublisher.PublishDelay(expiredTimeConfig.NearlyExpiredTime - DateTime.Now, EventNames.HotlineOrderNearlyExpiredTimeSms, new PublishNearlyExpiredTimeSmsDto() { OrderId = order.Id });
-           
+
         }
         else if (dto.FlowDirection is EFlowDirection.CenterToCenter)
         {

+ 71 - 0
src/Hotline.Application/Handlers/Order/TranspondCityNotifyHandler.cs

@@ -0,0 +1,71 @@
+using DotNetCore.CAP;
+using Hotline.EventBus;
+using Hotline.Orders;
+using Hotline.Orders.Notifications;
+using Hotline.OrderTranspond;
+using Hotline.Share.Dtos.Order;
+using Hotline.Share.Enums.Order;
+using MapsterMapper;
+using MediatR;
+using XF.Domain.Repository;
+
+namespace Hotline.Application.Handlers.Order
+{
+    [HandlerInject(AppScopes = EAppScope.YiBin)]
+    public class TranspondCityNotifyHandler : INotificationHandler<TranspondCityNotify>
+    {
+        private readonly IMapper _mapper;
+        private readonly ICapPublisher _capPublisher;
+        private readonly IOrderRepository _orderRepository;
+        private readonly IRepository<TranspondCityRawData> _transpondCityRawDataRepository;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="mapper"></param>
+        /// <param name="capPublisher"></param>
+        /// <param name="orderRepository"></param>
+        /// <param name="transpondCityRawDataRepository"></param>
+        public TranspondCityNotifyHandler(IMapper mapper,
+          ICapPublisher capPublisher,
+          IOrderRepository orderRepository,
+          IRepository<TranspondCityRawData> transpondCityRawDataRepository)
+        {
+            _mapper = mapper;
+            _capPublisher = capPublisher;
+            _orderRepository = orderRepository;
+            _transpondCityRawDataRepository = transpondCityRawDataRepository;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="notification"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task Handle(TranspondCityNotify notification, CancellationToken cancellationToken)
+        {
+            var id = notification.Id;
+            var order = await _orderRepository.GetAsync(id, cancellationToken);
+            if (order != null)
+            {
+                //是否市州互转
+                if (order.Transpond.HasValue && order.Transpond.Value)
+                {
+                    var orderDto = _mapper.Map<OrderDto>(order);
+                    await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderTranspondCity, orderDto);
+                    //保存本地数据
+                    TranspondCityRawData cityRawData = new TranspondCityRawData
+                    {
+                        OrderCode = order.No,
+                        TransferOutTime = DateTime.Now,
+                        CityName = order.TranspondCityName,
+                        Direction = ETranspondDirection.Out
+                    };
+
+                    await _transpondCityRawDataRepository.AddAsync(cityRawData, cancellationToken);
+                }
+            }
+        }
+    }
+}

+ 6 - 0
src/Hotline/Orders/Notifications/TranspondCityNotify.cs

@@ -0,0 +1,6 @@
+using MediatR;
+
+namespace Hotline.Orders.Notifications
+{
+    public record TranspondCityNotify(string Id) : INotification;
+}