|
@@ -9,9 +9,12 @@ using System.Threading.Tasks;
|
|
using Hotline.BatchTask;
|
|
using Hotline.BatchTask;
|
|
using Hotline.Share.Enums.BatchTask;
|
|
using Hotline.Share.Enums.BatchTask;
|
|
using Hotline.Article;
|
|
using Hotline.Article;
|
|
|
|
+using Hotline.Orders;
|
|
using Hotline.Share.Dtos.Article;
|
|
using Hotline.Share.Dtos.Article;
|
|
using Hotline.Share.Enums.Article;
|
|
using Hotline.Share.Enums.Article;
|
|
|
|
+using Hotline.Share.Enums.Order;
|
|
using XF.Domain.Authentications;
|
|
using XF.Domain.Authentications;
|
|
|
|
+using XF.Domain.Repository;
|
|
|
|
|
|
namespace Hotline.Application.OrderApp.Handlers.OrderDelayHandler;
|
|
namespace Hotline.Application.OrderApp.Handlers.OrderDelayHandler;
|
|
|
|
|
|
@@ -20,14 +23,17 @@ namespace Hotline.Application.OrderApp.Handlers.OrderDelayHandler;
|
|
/// </summary>
|
|
/// </summary>
|
|
public class OrderDelayBatchReviewTaskCompetedHandler : INotificationHandler<ApptaskCompletedNotify>
|
|
public class OrderDelayBatchReviewTaskCompetedHandler : INotificationHandler<ApptaskCompletedNotify>
|
|
{
|
|
{
|
|
- private readonly IApptaskDomainService _apptaskDomainService;
|
|
|
|
|
|
+ private readonly IRepository<Apptask> _apptaskRepository;
|
|
|
|
+ private readonly IOrderDelayRepository _orderDelayRepository;
|
|
private readonly ICircularRecordDomainService _circularRecordDomainService;
|
|
private readonly ICircularRecordDomainService _circularRecordDomainService;
|
|
|
|
|
|
public OrderDelayBatchReviewTaskCompetedHandler(
|
|
public OrderDelayBatchReviewTaskCompetedHandler(
|
|
- IApptaskDomainService apptaskDomainService,
|
|
|
|
|
|
+ IRepository<Apptask> apptaskRepository,
|
|
|
|
+ IOrderDelayRepository orderDelayRepository,
|
|
ICircularRecordDomainService circularRecordDomainService)
|
|
ICircularRecordDomainService circularRecordDomainService)
|
|
{
|
|
{
|
|
- _apptaskDomainService = apptaskDomainService;
|
|
|
|
|
|
+ _apptaskRepository = apptaskRepository;
|
|
|
|
+ _orderDelayRepository = orderDelayRepository;
|
|
_circularRecordDomainService = circularRecordDomainService;
|
|
_circularRecordDomainService = circularRecordDomainService;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -36,25 +42,39 @@ public class OrderDelayBatchReviewTaskCompetedHandler : INotificationHandler<App
|
|
/// <param name="cancellationToken">Cancellation token</param>
|
|
/// <param name="cancellationToken">Cancellation token</param>
|
|
public async Task Handle(ApptaskCompletedNotify notification, CancellationToken cancellationToken)
|
|
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
|
|
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",
|
|
CircularTypeId = "5",
|
|
CircularTypeName = "系统消息",
|
|
CircularTypeName = "系统消息",
|
|
CircularType = ECircularType.Person,
|
|
CircularType = ECircularType.Person,
|
|
IsMustRead = false,
|
|
IsMustRead = false,
|
|
- SourceOrgId = progress.CreatorId,
|
|
|
|
- SourceOrgName = progress.CreatorName,
|
|
|
|
|
|
+ SourceOrgId = apptask.CreatorId,
|
|
|
|
+ SourceOrgName = apptask.CreatorName,
|
|
CircularReadGroups = new List<CircularReadGroupDto>
|
|
CircularReadGroups = new List<CircularReadGroupDto>
|
|
{
|
|
{
|
|
new()
|
|
new()
|
|
{
|
|
{
|
|
- UserId = progress.CreatorId,
|
|
|
|
- UserName = progress.CreatorName
|
|
|
|
|
|
+ UserId = apptask.CreatorId,
|
|
|
|
+ UserName = apptask.CreatorName
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}, cancellationToken);
|
|
}, cancellationToken);
|