Browse Source

Merge branch 'test' of http://110.188.24.182:10023/Fengwo/hotline into test

tangjiang 2 weeks ago
parent
commit
e20e684ae2

+ 31 - 11
src/Hotline.Application/OrderApp/Handlers/OrderDelayHandler/OrderDelayBatchReviewTaskCompetedHandler.cs

@@ -9,9 +9,12 @@ using System.Threading.Tasks;
 using Hotline.BatchTask;
 using Hotline.Share.Enums.BatchTask;
 using Hotline.Article;
+using Hotline.Orders;
 using Hotline.Share.Dtos.Article;
 using Hotline.Share.Enums.Article;
+using Hotline.Share.Enums.Order;
 using XF.Domain.Authentications;
+using XF.Domain.Repository;
 
 namespace Hotline.Application.OrderApp.Handlers.OrderDelayHandler;
 
@@ -20,14 +23,17 @@ namespace Hotline.Application.OrderApp.Handlers.OrderDelayHandler;
 /// </summary>
 public class OrderDelayBatchReviewTaskCompetedHandler : INotificationHandler<ApptaskCompletedNotify>
 {
-    private readonly IApptaskDomainService _apptaskDomainService;
+    private readonly IRepository<Apptask> _apptaskRepository;
+    private readonly IOrderDelayRepository _orderDelayRepository;
     private readonly ICircularRecordDomainService _circularRecordDomainService;
 
     public OrderDelayBatchReviewTaskCompetedHandler(
-        IApptaskDomainService apptaskDomainService,
+        IRepository<Apptask> apptaskRepository,
+        IOrderDelayRepository orderDelayRepository,
         ICircularRecordDomainService circularRecordDomainService)
     {
-        _apptaskDomainService = apptaskDomainService;
+        _apptaskRepository = apptaskRepository;
+        _orderDelayRepository = orderDelayRepository;
         _circularRecordDomainService = circularRecordDomainService;
     }
 
@@ -36,25 +42,39 @@ public class OrderDelayBatchReviewTaskCompetedHandler : INotificationHandler<App
     /// <param name="cancellationToken">Cancellation token</param>
     public async Task Handle(ApptaskCompletedNotify notification, CancellationToken cancellationToken)
     {
-        if(notification.ApptaskItem.TaskType is not ETaskType.OrderDelay) return;
+        if (notification.ApptaskItem.TaskType is not ETaskType.OrderDelay) return;
+
+        var apptask = await _apptaskRepository.Queryable()
+            .Includes(d => d.ApptaskItems)
+            .FirstAsync(d => d.Id == notification.ApptaskItem.ApptaskId, cancellationToken);
+        var unSuccessItems = apptask.ApptaskItems
+            .Where(d => d.TaskStatus != ETaskStatus.Succeeded)
+            .ToList();
+        if (unSuccessItems.Count > 0)
+        {
+            // 回滚delay状态为待审批
+            await _orderDelayRepository.Updateable()
+                .SetColumns(d => d.DelayState == EDelayState.Examining)
+                .Where(d => unSuccessItems.Select(x => x.BusinessId).Contains(d.Id))
+                .ExecuteCommandAsync(cancellationToken);
+        }
 
-        var progress = await _apptaskDomainService.GetProgressAsync(notification.ApptaskItem.ApptaskId, cancellationToken);
         await _circularRecordDomainService.AddCircularMessage(new AddCircularDto
         {
-            Title = $"{progress.Name} 执行完成",
-            Content = $"总共:{progress.Total}个任务,成功:{progress.Succeeded},失败:{progress.Failed}",
+            Title = $"{apptask.Name} 执行完成",
+            Content = $"总共:{apptask.ApptaskItems.Count}个任务,成功:{apptask.ApptaskItems.Count(d => d.TaskStatus == ETaskStatus.Succeeded)},失败:{apptask.ApptaskItems.Count(d => d.TaskStatus == ETaskStatus.Failed)}",
             CircularTypeId = "5",
             CircularTypeName = "系统消息",
             CircularType = ECircularType.Person,
             IsMustRead = false,
-            SourceOrgId = progress.CreatorId,
-            SourceOrgName = progress.CreatorName,
+            SourceOrgId = apptask.CreatorId,
+            SourceOrgName = apptask.CreatorName,
             CircularReadGroups = new List<CircularReadGroupDto>
             {
                 new()
                 {
-                    UserId = progress.CreatorId,
-                    UserName = progress.CreatorName
+                    UserId = apptask.CreatorId,
+                    UserName = apptask.CreatorName
                 }
             }
         }, cancellationToken);

+ 16 - 4
src/Hotline.Application/OrderApp/OrderApplication.cs

@@ -46,6 +46,7 @@ using Hotline.Share.Enums.Settings;
 using Hotline.Share.Mq;
 using Hotline.Share.Requests;
 using Hotline.Share.Tools;
+using Hotline.Snapshot.IRepository;
 using Hotline.Statistics;
 using Hotline.Tools;
 using Hotline.Users;
@@ -71,6 +72,7 @@ namespace Hotline.Application.OrderApp;
 
 public class OrderApplication : IOrderApplication, IScopeDependency
 {
+    private readonly IOrderSnapshotRepository _orderSnapshotRepository;
     private readonly IMediator _mediator;
     private readonly IRepository<TranspondCityRawData> _transpondCityRawDataRepository;
     private readonly ISessionContextProvider _sessionContextProvider;
@@ -181,7 +183,8 @@ public class OrderApplication : IOrderApplication, IScopeDependency
         IRepository<OrderVisitDetailCopy> orderVisitDetailCopyRepository,
         IRepository<OrderDelayAutomatic> orderDelayAutomaticRepository,
         IRepository<Hotline.Orders.ObservationPiece> observationPieceRepository
-        )
+,
+        IOrderSnapshotRepository orderSnapshotRepository)
     {
         _orderDomainService = orderDomainService;
         _workflowDomainService = workflowDomainService;
@@ -236,6 +239,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
         _orderVisitDetailCopyRepository = orderVisitDetailCopyRepository;
         _orderDelayAutomaticRepository = orderDelayAutomaticRepository;
         _observationPieceRepository = observationPieceRepository;
+        _orderSnapshotRepository = orderSnapshotRepository;
     }
 
     /// <summary>
@@ -1764,15 +1768,23 @@ public class OrderApplication : IOrderApplication, IScopeDependency
     {
         var orderVisitList = await _orderVisitRepository.Queryable()
             .Includes(d => d.Order)
-            .Where(d => dto.Ids.Contains(d.Id) && (d.VisitState == EVisitState.WaitForVisit || d.VisitState == EVisitState.NoSatisfiedWaitForVisit ||
-                                                   d.VisitState == EVisitState.SMSUnsatisfied))
+            .Where(d => dto.Ids.Contains(d.Id) && (d.VisitState == EVisitState.WaitForVisit || d.VisitState == EVisitState.NoSatisfiedWaitForVisit || d.VisitState == EVisitState.SMSUnsatisfied))
             .Select(d => new { d.Id, d.Order.SourceChannelCode, d.Order.Contact, d.Order.Password, d.No, d.OrderId, d.Order.Title, d.Order.FromName })
             .ToListAsync(cancellationToken);
 
         foreach (var item in orderVisitList)
         {
             var code = "1013";
-            if (item.SourceChannelCode == "ZGSSP") code = "1012";
+            if (_systemSettingCacheManager.Snapshot && item.SourceChannelCode == "ZGSSP")
+            {
+                await _orderSnapshotRepository.Queryable().Where(m => m.Id == item.OrderId)
+                    .Select(m => m.IndustryName)
+                    .FirstAsync()
+                    .Then(name => 
+                    {
+                        if (name.Trim() == "电气焊作业申报") code = "1012";
+                    });
+            }
             var messageDto = new Share.Dtos.Push.MessageDto
             {
                 PushBusiness = EPushBusiness.VisitSms,

+ 1 - 1
src/Hotline.Application/OrderApp/OrderVisitApp/VoiceVisitTaskExecutor.cs

@@ -42,7 +42,7 @@ namespace Hotline.Application.OrderApp.OrderVisitApp
 
             var client = _httpClientFactory.CreateClient();
             client.BaseAddress = new Uri(baseAddress);
-            var url = $"{baseAddress}/groupcall?content=&called1={request.PhoneNo}&called2=&called3=&called4=&called5=&caller=&customerid={request.VisitId}";
+            var url = $"{baseAddress}/groupcall?content=&called1={request.PhoneNo}&called2=&called3=&called4=&called5=&caller=12345&customerid={request.VisitId}";
             var result = await client.GetAsync(url, cancellation);
             return result.IsSuccessStatusCode
                 ? ApptaskExecuteResult.Success()