72 lines
2.2 KiB
C#
72 lines
2.2 KiB
C#
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 YarnService : IYarnService
|
|
{
|
|
private readonly IRepository<ScannedYarnEntity> _yarnRepository;
|
|
|
|
public YarnService(IServiceProvider provider)
|
|
{
|
|
_yarnRepository = provider.CreateScope().ServiceProvider.GetRequiredService<IRepository<ScannedYarnEntity>>();
|
|
// _yarnRepository = provider.GetService<IRepository<ScannedYarnEntity>>();
|
|
NoFinished = new ConcurrentDictionary<string, Yarn>();
|
|
var yarns = _yarnRepository.GetList(y => !y.IsFinished);
|
|
foreach (var yarn in yarns)
|
|
{
|
|
NoFinished.TryAdd(yarn.ScanCode, Yarn.FromEntity(yarn));
|
|
}
|
|
}
|
|
|
|
public ConcurrentDictionary<string, Yarn> NoFinished { get; }
|
|
|
|
public async Task<Yarn?> AddYarnAsync(Yarn yarn)
|
|
{
|
|
var id = await _yarnRepository.InsertReturnIdentityAsync(yarn.ToEntity());
|
|
yarn.Id = id;
|
|
NoFinished.TryAdd(yarn.ScanCode, yarn);
|
|
return yarn;
|
|
}
|
|
|
|
public async Task<List<Yarn>> GetYarnsByTrayIdAsync(int trayId)
|
|
{
|
|
return (await _yarnRepository.GetListAsync(y => y.TrayId == trayId))
|
|
.Select(Yarn.FromEntity).ToList();
|
|
}
|
|
|
|
public async Task<Yarn> GetYarnByCodeAsync(string code)
|
|
{
|
|
try
|
|
{
|
|
return NoFinished[code];
|
|
}
|
|
catch
|
|
{
|
|
return Yarn.FromEntity(await _yarnRepository.GetFirstAsync(d => d.ScanCode == code)) ;
|
|
}
|
|
|
|
}
|
|
|
|
public async Task FinishYarnAsync(string yarnCode)
|
|
{
|
|
var yarn = NoFinished[yarnCode];
|
|
yarn.IsFinished = true;
|
|
await _yarnRepository.UpdateAsync(yarn.ToEntity());
|
|
NoFinished.TryRemove(yarnCode, out _);
|
|
}
|
|
|
|
public async Task BindTrayAsync(string yarnCode, int trayId)
|
|
{
|
|
var yarn = NoFinished[yarnCode];
|
|
yarn.TrayId = trayId;
|
|
yarn.StackTime = DateTime.Now;
|
|
yarn.IsFinished = true;
|
|
yarn.IsFinished = true;
|
|
await _yarnRepository.UpdateAsync(yarn.ToEntity());
|
|
NoFinished.TryRemove(yarnCode, out _);
|
|
}
|
|
} |