You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.6 KiB
73 lines
2.6 KiB
using System.Collections.Generic;
|
|
using System.Threading.Tasks;
|
|
using StackExchange.Redis;
|
|
using Volo.Abp.EventBus;
|
|
using Win_in.Sfs.Shared.Event;
|
|
using Win_in.Sfs.Wms.Job.Domain;
|
|
using Win_in.Sfs.Wms.Job.Domain.Shared;
|
|
using Win_in.Sfs.Wms.Store.Application.Contracts;
|
|
|
|
namespace Win_in.Sfs.Wms.Job.Event.Requests;
|
|
|
|
using Microsoft.Extensions.Configuration;
|
|
|
|
public class DeliverJobEventHandler :
|
|
JobEventHandlerBase
|
|
, ILocalEventHandler<SfsCreatedEntityEventData<DeliverJob>>
|
|
, ILocalEventHandler<SfsCreatedEntityEventData<List<DeliverJob>>>
|
|
, ILocalEventHandler<SfsCompletedEntityEventData<DeliverJob>>
|
|
{
|
|
private const string DeliverRequestPrefix = "DeliverRequest";
|
|
|
|
private readonly IDeliverRequestAppService _deliverRequestAppService;
|
|
|
|
public DeliverJobEventHandler(
|
|
IDeliverRequestAppService deliverRequestAppService
|
|
, IConfiguration configuration)
|
|
{
|
|
_deliverRequestAppService = deliverRequestAppService;
|
|
var redisConnectionString = configuration["Redis:Configuration"];
|
|
var redisConnection = ConnectionMultiplexer.Connect(redisConnectionString);
|
|
RedisDB = redisConnection.GetDatabase();
|
|
|
|
}
|
|
|
|
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<DeliverJob> eventData)
|
|
{
|
|
var entity = eventData.Entity;
|
|
var cacheKey = GetCacheKey(entity.DeliverRequestNumber);
|
|
var jobNumber = entity.Number;
|
|
await RedisDB.HashSetAsync(cacheKey, jobNumber, true).ConfigureAwait(false);
|
|
}
|
|
|
|
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<List<DeliverJob>> eventData)
|
|
{
|
|
var entities = eventData.Entity;
|
|
foreach (var entity in entities)
|
|
{
|
|
var cacheKey = GetCacheKey(entity.DeliverRequestNumber);
|
|
var jobNumber = entity.Number;
|
|
await RedisDB.HashSetAsync(cacheKey, jobNumber, true).ConfigureAwait(false);
|
|
}
|
|
}
|
|
|
|
public virtual async Task HandleEventAsync(SfsCompletedEntityEventData<DeliverJob> eventData)
|
|
{
|
|
await Task.CompletedTask.ConfigureAwait(false);
|
|
//var entity = eventData.Entity;
|
|
//var cacheKey = GetCacheKey(entity.DeliverRequestNumber);
|
|
//var jobNumber = entity.Number;
|
|
//await RedisDB.HashDeleteAsync(cacheKey, jobNumber);
|
|
//var count = await RedisDB.HashLengthAsync(cacheKey);
|
|
//if (count == 0)
|
|
//{
|
|
// await _deliverRequestAppService.CompleteAsync(entity.DeliverRequestNumber);
|
|
//}
|
|
}
|
|
|
|
private static string GetCacheKey(string requestNumber)
|
|
{
|
|
return $"{JobConsts.CachePrefix}:{DeliverRequestPrefix}:{requestNumber}";
|
|
}
|
|
|
|
}
|
|
|