72 lines
2.3 KiB
C#
Raw Normal View History

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 YarnService : IYarnService
{
private readonly IRepository<ScannedYarnEntity> _yarnRepository;
public YarnService(IServiceProvider provider)
{
_yarnRepository = provider.CreateScope().ServiceProvider.GetRequiredService<IRepository<ScannedYarnEntity>>();
2025-03-21 10:19:10 +08:00
// _yarnRepository = provider.GetService<IRepository<ScannedYarnEntity>>();
2025-03-20 19:32:49 +08:00
NoFinished = new ConcurrentDictionary<string, Yarn>();
2025-03-16 03:17:36 +08:00
var yarns = _yarnRepository.GetList(y => !y.IsFinished);
foreach (var yarn in yarns)
{
NoFinished.TryAdd(yarn.ScanCode, Yarn.FromEntity(yarn));
}
}
2025-03-20 19:32:49 +08:00
public ConcurrentDictionary<string, Yarn> NoFinished { get; }
2025-03-16 03:17:36 +08:00
public async Task<Yarn?> AddYarnAsync(Yarn yarn)
{
2025-03-23 13:09:36 +08:00
var id = await _yarnRepository.CopyNew().InsertReturnIdentityAsync(yarn.ToEntity());
2025-03-16 03:17:36 +08:00
yarn.Id = id;
NoFinished.TryAdd(yarn.ScanCode, yarn);
return yarn;
}
public async Task<List<Yarn>> GetYarnsByTrayIdAsync(int trayId)
{
2025-03-23 13:09:36 +08:00
return (await _yarnRepository.CopyNew().GetListAsync(y => y.TrayId == trayId))
2025-03-16 03:17:36 +08:00
.Select(Yarn.FromEntity).ToList();
}
2025-03-20 19:32:49 +08:00
public async Task<Yarn> GetYarnByCodeAsync(string code)
2025-03-16 03:17:36 +08:00
{
2025-03-18 05:24:15 +08:00
try
{
return NoFinished[code];
}
catch
{
2025-03-23 13:09:36 +08:00
return Yarn.FromEntity(await _yarnRepository.CopyNew().GetFirstAsync(d => d.ScanCode == code)) ;
2025-03-18 05:24:15 +08:00
}
2025-03-16 03:17:36 +08:00
}
2025-03-20 19:32:49 +08:00
public async Task FinishYarnAsync(string yarnCode)
2025-03-16 03:17:36 +08:00
{
var yarn = NoFinished[yarnCode];
yarn.IsFinished = true;
2025-03-23 13:09:36 +08:00
await _yarnRepository.CopyNew().UpdateAsync(yarn.ToEntity());
2025-03-16 03:17:36 +08:00
NoFinished.TryRemove(yarnCode, out _);
}
2025-03-20 19:32:49 +08:00
public async Task BindTrayAsync(string yarnCode, int trayId)
2025-03-16 03:17:36 +08:00
{
var yarn = NoFinished[yarnCode];
yarn.TrayId = trayId;
yarn.StackTime = DateTime.Now;
yarn.IsFinished = true;
yarn.IsFinished = true;
2025-03-23 13:09:36 +08:00
await _yarnRepository.CopyNew().UpdateAsync(yarn.ToEntity());
2025-03-16 03:17:36 +08:00
NoFinished.TryRemove(yarnCode, out _);
}
}