From c40d036788a9d4f4e0d6c304a795875ab5d46701 Mon Sep 17 00:00:00 2001 From: git_rabbit Date: Tue, 18 Nov 2025 13:32:33 +0800 Subject: [PATCH] =?UTF-8?q?refactor(=E4=BA=A7=E5=93=81=E6=A8=A1=E5=9D=97):?= =?UTF-8?q?=20=E5=B0=86FinishedProductDto=E6=9B=BF=E6=8D=A2=E4=B8=BAProFin?= =?UTF-8?q?ishedProductReceipt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 统一使用ProFinishedProductReceipt作为产品数据模型,移除DTO转换层 更新相关视图模型和服务接口以匹配新模型 修改XAML绑定以使用新模型属性 --- .../Services/FinishedProductService.cs | 93 ++++++------------- .../IServices/IFinishedProductService.cs | 8 +- .../ViewModels/AddProductDialogViewModel.cs | 6 +- .../DeleteConfirmDialogViewModel.cs | 8 +- .../ViewModels/EditProductDialogViewModel.cs | 6 +- .../ViewModels/MainControlViewModel.cs | 17 ++-- .../ViewModels/PrintPreviewDialogViewModel.cs | 6 +- .../Views/MainControl.xaml | 12 +-- 8 files changed, 59 insertions(+), 97 deletions(-) diff --git a/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/Services/FinishedProductService.cs b/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/Services/FinishedProductService.cs index 74c2193..8d6b603 100644 --- a/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/Services/FinishedProductService.cs +++ b/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/Services/FinishedProductService.cs @@ -28,7 +28,7 @@ namespace RIZO_Application.Modules.ModuleName.Services private readonly HttpClient _httpClient; private readonly IEventAggregator _eventAggregator; private readonly IPrintService _printService; - private readonly List _mockData; + private readonly List _mockData; private readonly bool _useMockData = false; // 控制是否使用模拟数据 private readonly string _labelFrom = PrintConfigs.Current.LabelFrom; @@ -41,60 +41,57 @@ namespace RIZO_Application.Modules.ModuleName.Services _printService = printService; // 初始化模拟数据 - _mockData = new List + _mockData = new List { - new FinishedProductDto + new ProFinishedProductReceipt { - Id = 1, ReceiptNo = "RK202511140001", WorkOrder = "W20251114001", - ProductName = "T1EJ左后门把手-新卡其白", - ProductCode = "220707", + Description = "T1EJ左后门把手-新卡其白", + PartNumber = "220707", PackageCount = 8, PackageNum = 465, BatchCode = "20240501001", - WarehouseLocation = "A1-01-01", - Operator = "admin", + WarehouseCode = "A1-01-01", + CreatedBy = "admin", ProductionTime = DateTime.Now.AddDays(-1), - Status = "未打印", + LabelPrintStatus = "未打印", Remark = "正常入库" }, - new FinishedProductDto + new ProFinishedProductReceipt { - Id = 2, ReceiptNo = "RK202511140002", WorkOrder = "W20251114002", - ProductName = "T1EJ右前门把手-右舵-新卡其白", - ProductCode = "221353", + Description = "T1EJ右前门把手-右舵-新卡其白", + PartNumber = "221353", PackageCount = 7, PackageNum = 458, BatchCode = "20240502001", - WarehouseLocation = "A1-02-01", - Operator = "admin", + WarehouseCode = "A1-02-01", + CreatedBy = "admin", ProductionTime = DateTime.Now, - Status = "未打印", + LabelPrintStatus = "未打印", Remark = "正常入库" }, - new FinishedProductDto + new ProFinishedProductReceipt { - Id = 3, ReceiptNo = "RK202511140003", WorkOrder = "W20251114003", - ProductName = "T1EJ右前门把手-左舵-新卡其白", - ProductCode = "220701", + Description = "T1EJ右前门把手-左舵-新卡其白", + PartNumber = "220701", PackageCount = 7, PackageNum = 475, BatchCode = "20240502002", - WarehouseLocation = "A1-02-02", - Operator = "admin", + WarehouseCode = "A1-02-02", + CreatedBy = "admin", ProductionTime = DateTime.Now, - Status = "未打印", + LabelPrintStatus = "未打印", Remark = "正常入库" } }; } - public async Task> GetFinishedProductsAsync( + public async Task> GetFinishedProductsAsync( FinishedProductQueryDto query ) { @@ -111,7 +108,7 @@ namespace RIZO_Application.Modules.ModuleName.Services //var response = await _httpClient.GetAsync("api/finishedproducts"); //response.EnsureSuccessStatusCode(); //var content = await response.Content.ReadAsStringAsync(); - //return JsonConvert.DeserializeObject>(content); + //return JsonConvert.DeserializeObject>(content); // DateTime? endDateInclusive = null; if (query.EndTime.HasValue) @@ -132,21 +129,6 @@ namespace RIZO_Application.Modules.ModuleName.Services query.EndTime.Value > DateTime.MinValue, it => it.CreatedTime <= endDateInclusive ) - .Select(it => new FinishedProductDto - { - ReceiptNo = it.ReceiptNo, - WorkOrder = it.WorkOrder, - ProductName = it.Description, - ProductCode = it.PartNumber, - PackageCount = it.PackageCount, - PackageNum = it.PackageNum, - BatchCode = it.BatchCode, - WarehouseLocation = it.WarehouseCode, - Operator = it.CreatedBy, - ProductionTime = it.ProductionTime, - Status = it.LabelPrintStatus, - Remark = it.Remark - }) .OrderByDescending(it => it.ReceiptNo) .ToPageList(pageNumber, pageSize); return result; @@ -155,11 +137,11 @@ namespace RIZO_Application.Modules.ModuleName.Services catch (Exception ex) { _eventAggregator.GetEvent().Publish($"获取成品入库单失败: {ex.Message}"); - return new List(); + return new List(); } } - public async Task GetFinishedProductByReceiptNoAsync(string receiptNo) + public async Task GetFinishedProductByReceiptNoAsync(string receiptNo) { try { @@ -172,21 +154,6 @@ namespace RIZO_Application.Modules.ModuleName.Services var result = Context .Queryable() .Where(it => it.ReceiptNo == receiptNo) - .Select(it => new FinishedProductDto - { - ReceiptNo = it.ReceiptNo, - WorkOrder = it.WorkOrder, - ProductName = it.Description, - ProductCode = it.PartNumber, - PackageCount = it.PackageCount, - PackageNum = it.PackageNum, - BatchCode = it.BatchCode, - WarehouseLocation = it.WarehouseCode, - Operator = it.CreatedBy, - ProductionTime = it.ProductionTime, - Status = it.LabelPrintStatus, - Remark = it.Remark - }) .OrderByDescending(it => it.ReceiptNo) .First(); return result; @@ -199,14 +166,12 @@ namespace RIZO_Application.Modules.ModuleName.Services } } - public async Task AddFinishedProductAsync(FinishedProductDto product) + public async Task AddFinishedProductAsync(ProFinishedProductReceipt product) { try { if (_useMockData) { - product.Id = _mockData.Count > 0 ? _mockData[^1].Id + 1 : 1; - // 自动生成入库单号:RK + 年份 + 月份 + 日期 + 4位流水号 string datePart = DateTime.Now.ToString("yyyyMMdd"); int maxSerial = 0; @@ -224,7 +189,7 @@ namespace RIZO_Application.Modules.ModuleName.Services } product.ReceiptNo = $"RK{datePart}{(maxSerial + 1).ToString("D4")}"; - product.Status = "未打印"; // 默认状态为未打印 + product.LabelPrintStatus = "未打印"; // 默认状态为未打印 _mockData.Add(product); _eventAggregator @@ -278,13 +243,13 @@ namespace RIZO_Application.Modules.ModuleName.Services } } - public async Task UpdateFinishedProductAsync(FinishedProductDto product) + public async Task UpdateFinishedProductAsync(ProFinishedProductReceipt product) { try { if (_useMockData) { - var index = _mockData.FindIndex(p => p.Id == product.Id); + var index = _mockData.FindIndex(p => p.ReceiptNo == product.ReceiptNo); if (index != -1) { _mockData[index] = product; @@ -413,7 +378,7 @@ namespace RIZO_Application.Modules.ModuleName.Services // 如果打印成功,更新状态为已打印 if (success && _useMockData) { - product.Status = "已打印"; + product.LabelPrintStatus = "已打印"; _eventAggregator .GetEvent() .Publish($"更新成品入库单状态为已打印: {product.ReceiptNo}"); diff --git a/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/Services/IServices/IFinishedProductService.cs b/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/Services/IServices/IFinishedProductService.cs index 66dbe44..661479d 100644 --- a/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/Services/IServices/IFinishedProductService.cs +++ b/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/Services/IServices/IFinishedProductService.cs @@ -6,10 +6,10 @@ namespace RIZO_Application.Modules.ModuleName.Services.IServices { public interface IFinishedProductService { - Task> GetFinishedProductsAsync(FinishedProductQueryDto query); - Task GetFinishedProductByReceiptNoAsync(string receiptNo); - Task AddFinishedProductAsync(FinishedProductDto product); - Task UpdateFinishedProductAsync(FinishedProductDto product); + Task> GetFinishedProductsAsync(FinishedProductQueryDto query); + Task GetFinishedProductByReceiptNoAsync(string receiptNo); + Task AddFinishedProductAsync(ProFinishedProductReceipt product); + Task UpdateFinishedProductAsync(ProFinishedProductReceipt product); Task DeleteFinishedProductAsync(string receiptNo); Task PrintFinishedProductAsync(string receiptNo); } diff --git a/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/ViewModels/AddProductDialogViewModel.cs b/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/ViewModels/AddProductDialogViewModel.cs index a454e5b..9335dbe 100644 --- a/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/ViewModels/AddProductDialogViewModel.cs +++ b/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/ViewModels/AddProductDialogViewModel.cs @@ -10,9 +10,9 @@ namespace RIZO_Application.Modules.ModuleName.ViewModels public class AddProductDialogViewModel : BindableBase, IDialogAware { private readonly IFinishedProductService _finishedProductService; - private FinishedProductDto _product; + private ProFinishedProductReceipt _product; - public FinishedProductDto Product + public ProFinishedProductReceipt Product { get { return _product; } set { SetProperty(ref _product, value); } @@ -28,7 +28,7 @@ namespace RIZO_Application.Modules.ModuleName.ViewModels public AddProductDialogViewModel(IFinishedProductService finishedProductService) { _finishedProductService = finishedProductService; - Product = new FinishedProductDto(); + Product = new ProFinishedProductReceipt(); SaveCommand = new DelegateCommand(async () => await SaveProductAsync()); CancelCommand = new DelegateCommand(Cancel); } diff --git a/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/ViewModels/DeleteConfirmDialogViewModel.cs b/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/ViewModels/DeleteConfirmDialogViewModel.cs index 5f3e606..b9c04aa 100644 --- a/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/ViewModels/DeleteConfirmDialogViewModel.cs +++ b/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/ViewModels/DeleteConfirmDialogViewModel.cs @@ -17,8 +17,8 @@ namespace RIZO_Application.Modules.ModuleName.ViewModels set { SetProperty(ref _confirmMessage, value); } } - private FinishedProductDto _product; - public FinishedProductDto Product + private ProFinishedProductReceipt _product; + public ProFinishedProductReceipt Product { get { return _product; } set { SetProperty(ref _product, value); } @@ -66,8 +66,8 @@ namespace RIZO_Application.Modules.ModuleName.ViewModels { if (parameters.ContainsKey("Product")) { - Product = parameters.GetValue("Product"); - ConfirmMessage = string.Format("确定要删除产品 '{0}'(工单号:{1})吗?", Product.ProductName, Product.WorkOrder); + Product = parameters.GetValue("Product"); + ConfirmMessage = string.Format("确定要删除产品 '{0}'(工单号:{1})吗?", Product.Description, Product.WorkOrder); } } } diff --git a/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/ViewModels/EditProductDialogViewModel.cs b/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/ViewModels/EditProductDialogViewModel.cs index edfd5da..e82deed 100644 --- a/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/ViewModels/EditProductDialogViewModel.cs +++ b/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/ViewModels/EditProductDialogViewModel.cs @@ -10,9 +10,9 @@ namespace RIZO_Application.Modules.ModuleName.ViewModels public class EditProductDialogViewModel : BindableBase, IDialogAware { private readonly IFinishedProductService _finishedProductService; - private FinishedProductDto _product; + private ProFinishedProductReceipt _product; - public FinishedProductDto Product + public ProFinishedProductReceipt Product { get { return _product; } set { SetProperty(ref _product, value); } @@ -60,7 +60,7 @@ namespace RIZO_Application.Modules.ModuleName.ViewModels { if (parameters.ContainsKey("Product")) { - Product = parameters.GetValue("Product"); + Product = parameters.GetValue("Product"); } } } diff --git a/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/ViewModels/MainControlViewModel.cs b/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/ViewModels/MainControlViewModel.cs index 7b0b8ae..1082dd7 100644 --- a/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/ViewModels/MainControlViewModel.cs +++ b/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/ViewModels/MainControlViewModel.cs @@ -28,15 +28,15 @@ namespace RIZO_Application.Modules.ModuleName.ViewModels set { SetProperty(ref _message, value); } } - private List _finishedProducts; - public List FinishedProducts + private List _finishedProducts; + public List FinishedProducts { get { return _finishedProducts; } set { SetProperty(ref _finishedProducts, value); } } - private FinishedProductDto _selectedProduct; - public FinishedProductDto SelectedProduct + private ProFinishedProductReceipt _selectedProduct; + public ProFinishedProductReceipt SelectedProduct { get { return _selectedProduct; } set { SetProperty(ref _selectedProduct, value); } @@ -137,7 +137,7 @@ namespace RIZO_Application.Modules.ModuleName.ViewModels StartTime = _startDate, EndTime = _endDate, }; - FinishedProducts = (List)await _finishedProductService.GetFinishedProductsAsync(query); + FinishedProducts = (List)await _finishedProductService.GetFinishedProductsAsync(query); } private async System.Threading.Tasks.Task SearchProductsAsync() @@ -148,18 +148,15 @@ namespace RIZO_Application.Modules.ModuleName.ViewModels EndTime = _endDate, }; // 获取所有产品 - var allProducts = (List)await _finishedProductService.GetFinishedProductsAsync(query); + var allProducts = (List)await _finishedProductService.GetFinishedProductsAsync(query); // 应用搜索条件 var filteredProducts = allProducts.AsEnumerable(); - - - // 状态过滤 if (!string.IsNullOrEmpty(SelectedStatus) && SelectedStatus != "全部") { - filteredProducts = filteredProducts.Where(p => p.Status == SelectedStatus); + filteredProducts = filteredProducts.Where(p => p.LabelPrintStatus == SelectedStatus); } FinishedProducts = filteredProducts.ToList(); diff --git a/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/ViewModels/PrintPreviewDialogViewModel.cs b/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/ViewModels/PrintPreviewDialogViewModel.cs index 91da65f..25fd27d 100644 --- a/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/ViewModels/PrintPreviewDialogViewModel.cs +++ b/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/ViewModels/PrintPreviewDialogViewModel.cs @@ -10,9 +10,9 @@ namespace RIZO_Application.Modules.ModuleName.ViewModels public class PrintPreviewDialogViewModel : BindableBase, IDialogAware { private readonly IFinishedProductService _finishedProductService; - private FinishedProductDto _product; + private ProFinishedProductReceipt _product; - public FinishedProductDto Product + public ProFinishedProductReceipt Product { get { return _product; } set { SetProperty(ref _product, value); } @@ -62,7 +62,7 @@ namespace RIZO_Application.Modules.ModuleName.ViewModels { if (parameters.ContainsKey("Product")) { - Product = parameters.GetValue("Product"); + Product = parameters.GetValue("Product"); } } } diff --git a/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/Views/MainControl.xaml b/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/Views/MainControl.xaml index fb24f4a..cf52ce5 100644 --- a/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/Views/MainControl.xaml +++ b/RIZO_Application/Modules/RIZO_Application.Modules.ModuleName/Views/MainControl.xaml @@ -61,21 +61,21 @@ - - + + - - + + - -