2025-03-16 03:17:36 +08:00
|
|
|
using System.Collections.Concurrent;
|
|
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
using Seyounth.Hyosung.Data.Entities;
|
|
|
|
using Seyounth.Hyosung.Data.Models;
|
|
|
|
using Seyounth.Hyosung.Data.Repositories;
|
|
|
|
|
|
|
|
namespace Seyounth.Hyosung.Data.Services;
|
|
|
|
|
|
|
|
public class VarietyService : IVarietyService
|
|
|
|
{
|
|
|
|
private readonly IRepository<VarietyEntity> _varietyRepository;
|
|
|
|
private readonly IRepository<PalletEntity> _palletRepository;
|
2025-03-17 22:44:15 +08:00
|
|
|
private readonly List<VarietyEntity> _varietiesCache;
|
|
|
|
private readonly List<PalletEntity> _palletsCache;
|
2025-03-16 03:17:36 +08:00
|
|
|
|
|
|
|
public VarietyService(IServiceProvider provider)
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
2025-03-17 22:44:15 +08:00
|
|
|
_varietyRepository =
|
|
|
|
provider.CreateScope().ServiceProvider.GetRequiredService<IRepository<VarietyEntity>>();
|
2025-03-21 10:19:10 +08:00
|
|
|
_palletRepository = provider.CreateScope().ServiceProvider.GetRequiredService<IRepository<PalletEntity>>();
|
|
|
|
//_varietyRepository = provider.GetService<IRepository<VarietyEntity>>();
|
|
|
|
// _palletRepository = provider.GetService<IRepository<PalletEntity>>();
|
|
|
|
_varietiesCache = new List<VarietyEntity>(_varietyRepository.GetList());
|
2025-03-17 22:44:15 +08:00
|
|
|
_palletsCache = new List<PalletEntity>(_palletRepository.GetList());
|
|
|
|
}
|
|
|
|
catch (Exception e)
|
2025-03-16 03:17:36 +08:00
|
|
|
{
|
|
|
|
Console.WriteLine(e.Message);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public async Task<Variety?> GetVarietyByCodeAsync(string code, int? layers = null)
|
|
|
|
{
|
|
|
|
var entity = layers != null
|
|
|
|
? _varietiesCache.FirstOrDefault(p => p.Code == code && p.StackingLayers == layers)
|
|
|
|
: _varietiesCache.FirstOrDefault(v => v.Code == code);
|
|
|
|
return entity is null ? null : Variety.Create(entity, _palletsCache.ToList());
|
|
|
|
}
|
|
|
|
|
|
|
|
public Task<Variety> GetById(int id)
|
|
|
|
{
|
|
|
|
var entity = _varietiesCache.FirstOrDefault(p => p.Id == id);
|
|
|
|
return Task.FromResult(Variety.Create(entity, _palletsCache.ToList()));
|
|
|
|
}
|
|
|
|
|
|
|
|
public async Task AddVarietyAsync(Variety variety)
|
|
|
|
{
|
2025-03-17 22:44:15 +08:00
|
|
|
try
|
|
|
|
{
|
|
|
|
var entity = await _varietyRepository.InsertReturnEntityAsync(variety.ToEntity());
|
|
|
|
_varietiesCache.Add(entity);
|
|
|
|
}
|
|
|
|
catch (Exception e)
|
|
|
|
{
|
|
|
|
Console.WriteLine(e.Message);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public async Task UpdateVarietyAsync(Variety variety)
|
|
|
|
{
|
|
|
|
await _varietyRepository.UpdateAsync(variety.ToEntity());
|
|
|
|
_varietiesCache[_varietiesCache.IndexOf(variety.ToEntity())] = variety.ToEntity();
|
|
|
|
}
|
|
|
|
|
|
|
|
public async Task DeleteVarietyAsync(Variety variety)
|
|
|
|
{
|
|
|
|
await _varietyRepository.DeleteAsync(variety.ToEntity());
|
|
|
|
_varietiesCache.Remove(variety.ToEntity());
|
2025-03-16 03:17:36 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
public async Task<List<Pallet>> GetPalletsAsync()
|
|
|
|
{
|
2025-03-17 22:44:15 +08:00
|
|
|
return _palletsCache.Select(Pallet.FromEntity).ToList();
|
2025-03-16 03:17:36 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
public async Task AddPalletAsync(Pallet pallet)
|
|
|
|
{
|
|
|
|
var entity = await _palletRepository.InsertReturnEntityAsync(pallet);
|
|
|
|
_palletsCache.Add(entity);
|
|
|
|
}
|
2025-03-16 23:38:23 +08:00
|
|
|
|
|
|
|
public List<Variety> GetAll()
|
|
|
|
{
|
2025-03-17 22:44:15 +08:00
|
|
|
return _varietiesCache.Select(v => Variety.Create(v, _palletsCache.ToList())).ToList();
|
2025-03-16 23:38:23 +08:00
|
|
|
}
|
2025-03-23 13:09:36 +08:00
|
|
|
|
|
|
|
public async Task<int?> GetLastNo(int varietyId)
|
|
|
|
{
|
|
|
|
var variety = await (_varietyRepository.CopyNew().GetFirstAsync(x=>x.Id==varietyId));
|
|
|
|
return variety.LastNo;
|
|
|
|
}
|
|
|
|
|
|
|
|
public async Task SetLastNo(int varietyId,int lastNo)
|
|
|
|
{
|
|
|
|
await _varietyRepository.CopyNew().AsUpdateable()
|
|
|
|
.Where(x => x.Id == varietyId)
|
|
|
|
.SetColumns(x => x.LastNo , lastNo)
|
|
|
|
.ExecuteCommandAsync();
|
|
|
|
}
|
2025-03-16 03:17:36 +08:00
|
|
|
}
|