From ce0a2a6362e96697323b6547b4d1697e25e07072 Mon Sep 17 00:00:00 2001 From: anerx <512464164@qq.com> Date: Thu, 20 Mar 2025 18:28:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=89=93=E5=8D=B0=E9=83=A8?= =?UTF-8?q?=E5=88=86=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Agv/HyosungAgvService.cs | 2 +- .../Plc/HyosungPlcService.cs | 21 +++++++-- .../Plc/IHyosungPlcService.cs | 2 +- .../Printer/HyosungPrinter.cs | 2 +- .../Entities/AgvBinEntity.cs | 2 + .../Services/AgvBinService.cs | 47 ++++++++++++++----- .../Services/Hyosung/HyosungWmsService.cs | 18 +++---- Seyounth.Hyosung.Runtime/HyosungRuntime.cs | 24 +++++----- Seyounth.Hyosung/ViewModels/HomeViewModel.cs | 1 + .../Views/Pages/HomeViewPage.xaml | 22 +++++---- Seyounth.Hyosung/Views/Pages/VarietyPage.xaml | 2 + 11 files changed, 94 insertions(+), 49 deletions(-) diff --git a/Seyounth.Hyosung.Core/Agv/HyosungAgvService.cs b/Seyounth.Hyosung.Core/Agv/HyosungAgvService.cs index 5d804af..7d095f4 100644 --- a/Seyounth.Hyosung.Core/Agv/HyosungAgvService.cs +++ b/Seyounth.Hyosung.Core/Agv/HyosungAgvService.cs @@ -35,7 +35,7 @@ public class HyosungAgvService( PositionCode = bin.CtnrCode, Type = "05" }; - var ctnrType = await dictService.GetKeyAsync("AgvRackType", height.ToString()); + var ctnrType = await dictService.GetKeyAsync("AgvRackType", bin.Height.ToString()); await _agv.CarryToAsync(start, stop, ctnrType, 120, "1"); await agvBinService.BindAsync(bin); } diff --git a/Seyounth.Hyosung.Core/Plc/HyosungPlcService.cs b/Seyounth.Hyosung.Core/Plc/HyosungPlcService.cs index 9a5da67..14198dc 100644 --- a/Seyounth.Hyosung.Core/Plc/HyosungPlcService.cs +++ b/Seyounth.Hyosung.Core/Plc/HyosungPlcService.cs @@ -105,14 +105,25 @@ public class HyosungPlcService(ILogger logger) : IHyosungPlcS await _writer.WriteShortsAsync(12120, ls.ToArray()); } - public async Task WritePrintLabelResultAsync(int index, bool result) + public async Task WritePrintLabelResultAsync(int index, int side, bool result) { var address = index == 1 ? 13060 : 13061; if (index == 2) - await _writer.WriteShortsAsync(13053, 4); + { + var data = SetBit(0, side); + await _writer.WriteShortsAsync(13053, data); + } + await _writer.WriteShortsAsync(address, (short)(result ? 1 : 2)); } + static byte SetBit(byte value, int bitPosition) + { + // 创建一个掩码,该掩码只有第 bitPosition 位为 1 + byte mask = (byte)(1 << bitPosition); + // 使用按位或操作将 value 的第 bitPosition 位置为 1 + return (byte)(value | mask); + } public event Func? OnPlcRequestScanProduct; @@ -254,11 +265,11 @@ public class HyosungPlcService(ILogger logger) : IHyosungPlcS YarnCount = status[0], TotalYarnCount = status[1] }; - if (yarn1!=0) + if (yarn1 != 0) info.YarnCode.Add(yarn1); - if (yarn2!=0) + if (yarn2 != 0) info.YarnCode.Add(yarn2); - if (yarn3!=0) + if (yarn3 != 0) info.YarnCode.Add(yarn3); if (info.YarnCode.Count != info.YarnCount) { diff --git a/Seyounth.Hyosung.Core/Plc/IHyosungPlcService.cs b/Seyounth.Hyosung.Core/Plc/IHyosungPlcService.cs index c92c092..13208d0 100644 --- a/Seyounth.Hyosung.Core/Plc/IHyosungPlcService.cs +++ b/Seyounth.Hyosung.Core/Plc/IHyosungPlcService.cs @@ -58,7 +58,7 @@ public interface IHyosungPlcService Task WritePackLineOptionAsync(PackLineOption option); - Task WritePrintLabelResultAsync(int index, bool result); + Task WritePrintLabelResultAsync(int index, int side, bool result); /// /// Plc请求扫描产品 diff --git a/Seyounth.Hyosung.Core/Printer/HyosungPrinter.cs b/Seyounth.Hyosung.Core/Printer/HyosungPrinter.cs index 31abdbf..9e3d9b8 100644 --- a/Seyounth.Hyosung.Core/Printer/HyosungPrinter.cs +++ b/Seyounth.Hyosung.Core/Printer/HyosungPrinter.cs @@ -111,7 +111,7 @@ public class HyosungPrinter( { "1670dtex -144F", $"\"{tray.DtexFila}\"" }, { "1500D - 144F", $"\"{tray.DenFila}\"" }, { "$SA", $"\"{tray.Grade}\"" }, - { "$900", $"\"{labelResult.NET_WEIGHT.ToString("0.0")}\"" }, + { "$900", $"\"{labelResult.NET_WEIGHT:0.0}\"" }, { "25-01-01", $"\"{DateTime.Now:yy-MM-dd}\"" }, { "$90", $"\"{variety.TotalCount}\"" }, { "$965", $"\"{labelResult.GROSS_WEIGHT}\"" }, diff --git a/Seyounth.Hyosung.Data/Entities/AgvBinEntity.cs b/Seyounth.Hyosung.Data/Entities/AgvBinEntity.cs index e6143bd..b426c16 100644 --- a/Seyounth.Hyosung.Data/Entities/AgvBinEntity.cs +++ b/Seyounth.Hyosung.Data/Entities/AgvBinEntity.cs @@ -31,4 +31,6 @@ public class AgvBinEntity [SugarColumn(ColumnDescription = "排序")] public int Sort { get; set; } + + public bool IsDeleted { get; set; } } \ No newline at end of file diff --git a/Seyounth.Hyosung.Data/Services/AgvBinService.cs b/Seyounth.Hyosung.Data/Services/AgvBinService.cs index 74211c1..7436ae1 100644 --- a/Seyounth.Hyosung.Data/Services/AgvBinService.cs +++ b/Seyounth.Hyosung.Data/Services/AgvBinService.cs @@ -18,22 +18,43 @@ public class AgvBinService : IAgvBinService public async Task GetAvailableBin(int height) { - if (height < 180) + var bin = await _repository.AsQueryable() + .Where(x => x.IsFree && x.IsDeleted == false) + .OrderBy(x => x.Sort) + .FirstAsync(); + if (bin.BinCode == "B10") { - return _cache - .Where(x => - x is { CtnrType: 1, IsFree: true } || - x is { CtnrType: 2, IsFree: true } && - _cache.Any(y => - y is { CtnrType: 1, IsFree: false } && y.BinCode == x.BinCode && - y is { Height: < 180 }) - ) - .OrderByDescending(x => x.CtnrType) - .ThenBy(x => x.Sort) - .First(); + await _repository.AsUpdateable() + .Where(x => x.RackType == 2 && x.IsDeleted == false) + .SetColumns(x => x.IsFree, true) + .ExecuteCommandAsync(); } + else if (bin.BinCode == "B33") + { + await _repository.AsUpdateable() + .Where(x => x.RackType == 1 && x.IsDeleted == false) + .SetColumns(x => x.IsFree, true) + .ExecuteCommandAsync(); + } + + return bin; - return _cache.Where(a => a is { IsFree: true }).OrderBy(a => a.CtnrType).First(); + // if (height < 180) + // { + // return _cache + // .Where(x => + // x is { CtnrType: 1, IsFree: true } || + // x is { CtnrType: 2, IsFree: true } && + // _cache.Any(y => + // y is { CtnrType: 1, IsFree: false } && y.BinCode == x.BinCode && + // y is { Height: < 180 }) + // ) + // .OrderByDescending(x => x.CtnrType) + // .ThenBy(x => x.Sort) + // .First(); + // } + // + // return _cache.Where(a => a is { IsFree: true }).OrderBy(a => a.CtnrType).First(); } public Task BindAsync(AgvBinEntity entity) diff --git a/Seyounth.Hyosung.Data/Services/Hyosung/HyosungWmsService.cs b/Seyounth.Hyosung.Data/Services/Hyosung/HyosungWmsService.cs index 7cb6c21..4513593 100644 --- a/Seyounth.Hyosung.Data/Services/Hyosung/HyosungWmsService.cs +++ b/Seyounth.Hyosung.Data/Services/Hyosung/HyosungWmsService.cs @@ -53,12 +53,12 @@ public class HyosungWmsService : IHyosungWmsService else { await _db.Updateable() - .SetColumns(i => new MST_BOXNO_SEQ_NON_DATE - { - LastNo = controlNo, - ModifiedTime = DateTime.Now, - ModifiedBy = "seyounth" - }) + .SetColumns(i => new MST_BOXNO_SEQ_NON_DATE + { + LastNo = controlNo, + ModifiedTime = DateTime.Now, + ModifiedBy = "seyounth" + }) .Where(i => i.BeId == "2240" && i.ItemCode == variety.Code && i.CheckCode == checkCode).ExecuteCommandAsync(); @@ -70,7 +70,7 @@ public class HyosungWmsService : IHyosungWmsService try { string code = $"{itemCode.Trim()} {DateTime.Now.AddDays(0):yyMMdd}"; - string code2 = $"{lot.Trim()}{(controlNo-1).ToString().PadLeft(4, '0')}0"; + string code2 = $"{lot.Trim()}{(controlNo - 1).ToString().PadLeft(4, '0')}0"; // 使用 SqlSugar 进行查询 return await _db.Queryable() @@ -80,10 +80,10 @@ public class HyosungWmsService : IHyosungWmsService x.BE_ID == "2240" ) .FirstAsync(); - } catch (Exception e) + } + catch (Exception e) { throw e; } - } } \ No newline at end of file diff --git a/Seyounth.Hyosung.Runtime/HyosungRuntime.cs b/Seyounth.Hyosung.Runtime/HyosungRuntime.cs index 7165216..87fa36a 100644 --- a/Seyounth.Hyosung.Runtime/HyosungRuntime.cs +++ b/Seyounth.Hyosung.Runtime/HyosungRuntime.cs @@ -291,29 +291,31 @@ public class HyosungRuntime( logger.LogInformation($"plc request print label:{arg1} {trayCode} {height}"); try { - - var tray = await trayService.GetByCode(trayCode); - var variety = await varietyService.GetById(tray.VarietyId); - var mod = await hyosungWmsService.GetItemInfoByItemCode(variety.Code); - var grade = "1"; - if (mod.GRADE != "AA") grade = mod.GRADE; - var controlNo = await hyosungWmsService.GetControlNo(variety, grade); + var tray = await trayService.GetByCode(trayCode); + var variety = await varietyService.GetById(tray.VarietyId); + var mod = await hyosungWmsService.GetItemInfoByItemCode(variety.Code); + var grade = "1"; + if (mod.GRADE != "AA") grade = mod.GRADE; + var controlNo = await hyosungWmsService.GetControlNo(variety, grade); await trayService.PrintTrayAsync(trayCode, height, controlNo, mod); if (arg1 == 1) { - - await printer.PrintAsync(1, trayCode); + await printer.PrintAsync(1, trayCode); + await hyosungPlcService.WritePrintLabelResultAsync(arg1, variety.SubLabelCount, true); } else + { await printer.PrintAsync(2, trayCode); + await hyosungPlcService.WritePrintLabelResultAsync(arg1, variety.MasterLabelCount, true); + } + - await hyosungPlcService.WritePrintLabelResultAsync(arg1, true); await hyosungWmsService.UpdateControlNo(variety, controlNo); logger.LogInformation($"plc request print label success"); } catch (Exception e) { - await hyosungPlcService.WritePrintLabelResultAsync(arg1, false); + await hyosungPlcService.WritePrintLabelResultAsync(arg1, 1, false); logger.LogError(e, "print label fail"); } } diff --git a/Seyounth.Hyosung/ViewModels/HomeViewModel.cs b/Seyounth.Hyosung/ViewModels/HomeViewModel.cs index ecfee3b..b48e525 100644 --- a/Seyounth.Hyosung/ViewModels/HomeViewModel.cs +++ b/Seyounth.Hyosung/ViewModels/HomeViewModel.cs @@ -51,5 +51,6 @@ public partial class HomeViewModel : ObservableObject { Stack1 = _runtime.Stack1; Stack2 = _runtime.Stack2; + PackLineOption = _runtime.PackLineOption; } } \ No newline at end of file diff --git a/Seyounth.Hyosung/Views/Pages/HomeViewPage.xaml b/Seyounth.Hyosung/Views/Pages/HomeViewPage.xaml index 3ffc4b3..74b45b0 100644 --- a/Seyounth.Hyosung/Views/Pages/HomeViewPage.xaml +++ b/Seyounth.Hyosung/Views/Pages/HomeViewPage.xaml @@ -67,6 +67,9 @@ + @@ -125,6 +128,9 @@ + @@ -305,7 +311,7 @@ - + @@ -317,27 +323,27 @@ - + - + - - + + - + - + - + diff --git a/Seyounth.Hyosung/Views/Pages/VarietyPage.xaml b/Seyounth.Hyosung/Views/Pages/VarietyPage.xaml index 0713f96..ea2e362 100644 --- a/Seyounth.Hyosung/Views/Pages/VarietyPage.xaml +++ b/Seyounth.Hyosung/Views/Pages/VarietyPage.xaml @@ -67,6 +67,8 @@ AutoGenerateColumns="False" HeadersVisibility="All" VerticalContentAlignment="Center" + VirtualizingStackPanel.IsVirtualizing="True" + VirtualizingStackPanel.VirtualizationMode="Recycling" ItemsSource="{Binding ViewModel.Varieties, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" CellEditEnding="DataGrid_CellEditEnding"> -- 2.43.0.windows.1