157 lines
5.5 KiB
C#
Raw Normal View History

2025-03-16 03:17:36 +08:00
using System.Collections.Concurrent;
using Microsoft.Extensions.DependencyInjection;
2025-03-18 05:24:15 +08:00
using Seyounth.Core.Extensions;
2025-03-16 03:17:36 +08:00
using Seyounth.Hyosung.Data.Entities;
using Seyounth.Hyosung.Data.Models;
using Seyounth.Hyosung.Data.Repositories;
using Seyounth.Hyosung.Data.Services.Hyosung;
using Seyounth.Hyosung.Data.Services.Hyosung.Entities;
2025-03-23 13:09:36 +08:00
using SqlSugar;
2025-03-16 03:17:36 +08:00
namespace Seyounth.Hyosung.Data.Services;
public class TrayService : ITrayService
{
2025-03-23 13:09:36 +08:00
//private readonly ConcurrentDictionary<string, Tray> _cache = new();
2025-03-23 16:41:41 +08:00
// private readonly <TrayEntity> _repository;
2025-03-16 03:17:36 +08:00
private readonly IHyosungWmsService _hyosungWmsService;
2025-03-23 13:09:36 +08:00
private readonly ISqlSugarClient _db;
2025-03-23 16:41:41 +08:00
public TrayService(IServiceProvider provider, IHyosungWmsService hyosungWmsService, ISqlSugarClient db)
2025-03-16 03:17:36 +08:00
{
2025-03-23 13:09:36 +08:00
_db = db;
// _repository = provider.CreateScope().ServiceProvider.GetRequiredService<IRepository<TrayEntity>>();
2025-03-21 10:19:10 +08:00
//_repository = provider.GetService<IRepository<TrayEntity>>();
2025-03-23 16:41:41 +08:00
// var trays = _db.Queryable<TrayEntity>().Where(t => t.ControlNo == null).ToListAsync().Result;
2025-03-16 03:17:36 +08:00
_hyosungWmsService = hyosungWmsService;
2025-03-23 13:09:36 +08:00
//foreach (var tray in trays)
//{
// _cache.TryAdd(tray.TrayCode, Tray.FromEntity(tray));
//}
2025-03-16 03:17:36 +08:00
}
public async Task<Tray> GeneraNewTray(int varietyId)
{
var tray = new Tray()
{
TrayCode = DateTime.Now.ToTimestamp().ToString(),
2025-03-16 03:17:36 +08:00
VarietyId = varietyId,
CreateTime = DateTime.Now
};
2025-03-23 13:09:36 +08:00
var count = await _db.CopyNew().Queryable<TrayEntity>().CountAsync(t => t.VarietyId == tray.VarietyId);
2025-03-16 03:17:36 +08:00
tray.IsEven = count % 2 == 0;
2025-03-23 13:09:36 +08:00
var identity = await _db.CopyNew().Insertable<TrayEntity>(tray.ToEntity()).ExecuteReturnIdentityAsync();
2025-03-16 03:17:36 +08:00
tray.Id = identity;
2025-03-23 16:41:41 +08:00
// _cache.TryAdd(tray.TrayCode, tray);
2025-03-16 03:17:36 +08:00
return tray;
}
2025-03-20 19:32:49 +08:00
public async Task<int> GetIdByCode(string code)
2025-03-16 03:17:36 +08:00
{
2025-03-23 13:09:36 +08:00
//try
//{
// return _cache[code].Id;
//}
//catch
//{
2025-03-23 16:41:41 +08:00
return (await _db.CopyNew().Queryable<TrayEntity>().Where(d => d.TrayCode == code).FirstAsync()).Id;
// }
2025-03-16 03:17:36 +08:00
}
2025-03-20 19:32:49 +08:00
public async Task<Tray> GetByCode(string code)
2025-03-16 03:17:36 +08:00
{
2025-03-23 13:09:36 +08:00
return Tray.FromEntity(await _db.CopyNew().Queryable<TrayEntity>().Where(t => t.TrayCode == code).FirstAsync());
2025-03-16 03:17:36 +08:00
}
public Task StorageAsync(string trayCode, int stackHeight, int controlNo, MST_ITEM_2240_V itemInfo)
{
throw new NotImplementedException();
}
2025-03-24 16:57:38 +08:00
public async Task<Tray> PrintTrayAsync(string trayCode, MST_ITEM_2240_V itemInfo, Variety variety)
2025-03-16 03:17:36 +08:00
{
Tray tray;
2025-03-23 13:09:36 +08:00
//try
//{
// tray = _cache[trayCode];
//}
//catch
//{
2025-03-23 16:41:41 +08:00
tray = await GetByCode(trayCode);
2025-03-23 13:09:36 +08:00
//}
2025-03-16 03:17:36 +08:00
tray.Grade = itemInfo.GRADE;
tray.Type = itemInfo.TYPE;
tray.DenFila = itemInfo.DEN_FILA;
tray.DtexFila = itemInfo.DTEX_FILA;
tray.Unit = itemInfo.UNIT;
2025-03-24 16:57:38 +08:00
tray.NetWeight = variety.NetWeight ?? itemInfo.NET_WEIGHT;
tray.GrossWeight = variety.GrossWeight ?? itemInfo.GROSS_WEIGHT;
2025-03-26 17:56:43 +08:00
var netWeight = tray.NetWeight.ToString("0.0");
if (netWeight.EndsWith(".0"))
netWeight = netWeight.Replace(".0", "");
tray.Barcode =
2025-03-27 09:12:16 +08:00
$"{itemInfo.ITEM_CODE} {DateTime.Now:yyMMdd}{netWeight.PadLeft(6,'0')}{itemInfo.LOTNO.PadLeft(4, '0')}{tray.ControlNo?.ToString().PadLeft(4, '0')}0";
2025-03-23 13:09:36 +08:00
await _db.Updateable<TrayEntity>(tray.ToEntity()).ExecuteCommandAsync();
2025-03-23 16:41:41 +08:00
// _cache.Remove(tray.TrayCode, out _);
return tray;
2025-03-16 03:17:36 +08:00
}
2025-03-23 16:41:41 +08:00
public async Task StorageAsync(string trayCode)
2025-03-16 03:17:36 +08:00
{
2025-03-23 13:09:36 +08:00
var tray = await _db.CopyNew().Queryable<TrayEntity>().Where(d => d.TrayCode == trayCode).FirstAsync();
2025-03-21 09:07:39 +08:00
tray.FinishTime = DateTime.Now;
2025-03-23 13:09:36 +08:00
tray.IsPacking = true;
await _db.CopyNew().Updateable<TrayEntity>(tray).ExecuteCommandAsync();
2025-03-23 16:41:41 +08:00
// _cache.TryRemove(tray.TrayCode, out _);
2025-03-16 03:17:36 +08:00
}
2025-03-21 10:19:10 +08:00
public async Task UpdateHeightAsync(string trayCode, int height)
{
2025-03-23 13:09:36 +08:00
await _db.CopyNew().Updateable<TrayEntity>()
2025-03-21 10:19:10 +08:00
.Where(x => x.TrayCode == trayCode)
2025-03-23 13:09:36 +08:00
.SetColumns(x => x.StackHeight, height)
.SetColumns(x => x.IsPacking, false)
.ExecuteCommandAsync();
}
2025-03-23 16:41:41 +08:00
public Task ExportedAsync(string trayCode)
{
2025-03-23 16:46:57 +08:00
return _db.CopyNew().Updateable<TrayEntity>()
.Where(x => x.TrayCode == trayCode)
.SetColumns(x => x.Exported, true).ExecuteCommandAsync();
2025-03-23 16:41:41 +08:00
}
2025-03-23 16:46:57 +08:00
public async Task<List<string>> GetNoExportCodesAsync()
2025-03-23 16:41:41 +08:00
{
2025-03-23 16:46:57 +08:00
var tray = await _db.CopyNew().Queryable<TrayEntity>().Where(x => x.Exported != true && x.FinishTime != null)
.ToListAsync();
2025-03-23 16:41:41 +08:00
var trayCodes = tray.Select(x => x.TrayCode).ToList();
2025-03-23 16:46:57 +08:00
return trayCodes;
2025-03-23 16:41:41 +08:00
}
public Task SetControlNoAsync(string trayCode, int controlNo)
{
2025-03-23 16:46:57 +08:00
return _db.CopyNew()
.Updateable<TrayEntity>()
.Where(d => d.TrayCode == trayCode)
.SetColumns(x => x.ControlNo, controlNo)
.ExecuteCommandAsync();
2025-03-23 16:41:41 +08:00
}
2025-03-24 16:57:38 +08:00
public Task<List<Tray>> GetTodayTrayAsync()
{
return _db.CopyNew()
.Queryable<TrayEntity>()
.Where(x => x.FinishTime >= DateTime.Today && x.FinishTime < DateTime.Today.AddDays(1))
.ToListAsync(x => Tray.FromEntity(x));
}
2025-03-23 13:09:36 +08:00
public async Task<Tray> GetIsPacking()
{
2025-03-23 16:41:41 +08:00
var tray = await _db.CopyNew().Queryable<TrayEntity>().Where(x => x.IsPacking != null && x.IsPacking.Value)
.FirstAsync();
2025-03-23 13:09:36 +08:00
return Tray.FromEntity(tray);
2025-03-21 10:19:10 +08:00
}
2025-03-16 03:17:36 +08:00
}