using Microsoft.Extensions.DependencyInjection; using Sln.Wcs.Model.Domain; using Sln.Wcs.Repository.service; using Sln.Wcs.UI.Controls; using System; using System.Windows; using System.Windows.Controls; namespace Sln.Wcs.UI.Page.BasicInfo.MaterialInfo { public partial class MaterialEditWindow : Window { private readonly IBaseMaterialInfoService? _materialInfoService; private readonly MaterialInfoPage _parentPage; private readonly BaseMaterialInfo _material; public MaterialEditWindow(MaterialInfoPage parentPage, BaseMaterialInfo material) { InitializeComponent(); _materialInfoService = App.ServiceProvider.GetService(); _parentPage = parentPage; _material = material; // 初始化表单数据 TxtMaterialCode.Text = material.materialCode; TxtMaterialName.Text = material.materialName; TxtMaterialType.Text = material.materialType; TxtMaterialBarcode.Text = material.materialBarcode; TxtMinStorageCycle.Text = material.minStorageCycle?.ToString(); TxtMaxStorageCycle.Text = material.maxStorageCycle?.ToString(); TxtRemark.Text = material.remark; // 设置是否标识下拉框 if (material.isFlag.HasValue) { foreach (ComboBoxItem item in CmbIsFlag.Items) { if (item.Tag != null && int.TryParse(item.Tag.ToString(), out int tagValue) && tagValue == material.isFlag.Value) { item.IsSelected = true; break; } } } } private void BtnConfirm_Click(object sender, RoutedEventArgs e) { if (_materialInfoService == null) return; if (string.IsNullOrWhiteSpace(TxtMaterialCode.Text)) { CustomMessageBox.Show("请输入物料编号", "提示", MessageBoxButton.OK); return; } if (string.IsNullOrWhiteSpace(TxtMaterialName.Text)) { CustomMessageBox.Show("请输入物料名称", "提示", MessageBoxButton.OK); return; } var isFlagItem = CmbIsFlag.SelectedItem as ComboBoxItem; // 更新物料信息 _material.materialCode = TxtMaterialCode.Text.Trim(); _material.materialName = TxtMaterialName.Text.Trim(); _material.materialType = TxtMaterialType.Text?.Trim(); _material.materialBarcode = TxtMaterialBarcode.Text?.Trim(); _material.minStorageCycle = int.TryParse(TxtMinStorageCycle.Text, out int minCycle) ? minCycle : (int?)null; _material.maxStorageCycle = int.TryParse(TxtMaxStorageCycle.Text, out int maxCycle) ? maxCycle : (int?)null; _material.isFlag = isFlagItem?.Tag != null ? int.TryParse(isFlagItem.Tag.ToString(), out int flag) ? flag : (int?)null : null; _material.remark = TxtRemark.Text?.Trim(); _material.updatedTime = DateTime.Now; var success = _materialInfoService.Update(_material); if (success) { CustomMessageBox.Show("修改成功", "提示", MessageBoxButton.OK); CloseAndRefresh(); } else { CustomMessageBox.Show("修改失败", "错误", MessageBoxButton.OK); } } private void BtnCancel_Click(object sender, RoutedEventArgs e) { CloseAndRefresh(); } private void BtnClose_Click(object sender, RoutedEventArgs e) { CloseAndRefresh(); } private void CloseAndRefresh() { _parentPage.LoadData(); Close(); } } }