2025-03-20 19:32:49 +08:00

47 lines
1.4 KiB
C#

using Microsoft.Extensions.DependencyInjection;
using Seyounth.Hyosung.Data.Entities;
using Seyounth.Hyosung.Data.Repositories;
namespace Seyounth.Hyosung.Data.Services;
public class AgvBinService : IAgvBinService
{
private readonly List<AgvBinEntity> _cache;
private readonly IRepository<AgvBinEntity> _repository;
public AgvBinService(IServiceProvider provider)
{
_repository = provider.CreateScope().ServiceProvider.GetRequiredService<IRepository<AgvBinEntity>>();
_cache = _repository.GetList();
}
public async Task<AgvBinEntity> GetAvailableBin(int height)
{
var bin = await _repository.AsQueryable()
.Where(x => x.IsFree && !x.IsDeleted).OrderBy(x => x.Sort).FirstAsync();
if (bin.BinCode == "B10")
{
await _repository.AsUpdateable()
.Where(x => x.RackType == 2 && !x.IsDeleted)
.SetColumns(x => x.IsFree, true)
.ExecuteCommandAsync();
}
else if (bin.BinCode == "B33")
{
await _repository.AsUpdateable()
.Where(x => x.RackType == 1 && !x.IsDeleted)
.SetColumns(x => x.IsFree, true)
.ExecuteCommandAsync();
}
return bin;
}
public Task BindAsync(AgvBinEntity entity)
{
entity.IsFree = false;
_cache.First(e => e.Id == entity.Id).IsFree = false;
return _repository.UpdateAsync(entity);
}
}