using Sln.Wcs.Model.Domain; using Sln.Wcs.Repository.service; using Sln.Wcs.UI.Controls; using System; using System.Windows; using System.Windows.Controls; using Microsoft.Extensions.DependencyInjection; namespace Sln.Wcs.UI.Page.BasicInfo.LocationInfo { public partial class LocationEditWindow : Window { private readonly IBaseLocationInfoService _locationService; private readonly BaseLocationInfo _location; public LocationEditWindow(BaseLocationInfo location) { InitializeComponent(); _locationService = App.ServiceProvider.GetService(); _location = location; LoadData(); } private void LoadData() { TxtLocationCode.Text = _location.locationCode; TxtLocationName.Text = _location.locationName; TxtLocationArea.Text = _location.locationArea; TxtStoreCode.Text = _location.storeCode; TxtLocationRows.Text = _location.locationRows?.ToString() ?? ""; TxtLocationColumns.Text = _location.locationColumns?.ToString() ?? ""; TxtLocationLayers.Text = _location.locationLayers?.ToString() ?? ""; TxtAgvPosition.Text = _location.agvPosition; TxtDeviceCode.Text = _location.deviceCode; TxtMaterialCode.Text = _location.materialCode; TxtPalletBarcode.Text = _location.palletBarcode; TxtStackCount.Text = _location.stackCount; TxtRemark.Text = _location.remark; SetSelectedStatus(_location.locationStatus ?? 0); SetSelectedIsFlag(_location.isFlag ?? 0); } private void SetSelectedStatus(int status) { foreach (ComboBoxItem item in CmbLocationStatus.Items) { if (item.Tag != null && int.TryParse(item.Tag.ToString(), out int tagValue) && tagValue == status) { CmbLocationStatus.SelectedItem = item; return; } } CmbLocationStatus.SelectedIndex = 0; } private void SetSelectedIsFlag(int isFlag) { foreach (ComboBoxItem item in CmbIsFlag.Items) { if (item.Tag != null && int.TryParse(item.Tag.ToString(), out int tagValue) && tagValue == isFlag) { CmbIsFlag.SelectedItem = item; return; } } CmbIsFlag.SelectedIndex = 0; } private void BtnClose_Click(object sender, RoutedEventArgs e) { DialogResult = false; Close(); } private void BtnCancel_Click(object sender, RoutedEventArgs e) { DialogResult = false; Close(); } private void BtnConfirm_Click(object sender, RoutedEventArgs e) { try { _location.locationName = TxtLocationName.Text.Trim(); _location.locationArea = TxtLocationArea.Text.Trim(); _location.storeCode = TxtStoreCode.Text.Trim(); _location.locationRows = int.TryParse(TxtLocationRows.Text, out int rows) ? rows : null; _location.locationColumns = int.TryParse(TxtLocationColumns.Text, out int cols) ? cols : null; _location.locationLayers = int.TryParse(TxtLocationLayers.Text, out int layers) ? layers : null; _location.locationStatus = GetSelectedStatus(CmbLocationStatus); _location.agvPosition = TxtAgvPosition.Text.Trim(); _location.deviceCode = TxtDeviceCode.Text.Trim(); _location.materialCode = TxtMaterialCode.Text.Trim(); _location.palletBarcode = TxtPalletBarcode.Text.Trim(); _location.stackCount = TxtStackCount.Text.Trim(); _location.isFlag = GetSelectedIsFlag(CmbIsFlag); _location.remark = TxtRemark.Text.Trim(); _location.updatedBy = Environment.UserName; _location.updatedTime = DateTime.Now; _locationService.Update(_location); CustomMessageBox.Show("更新成功", "提示"); DialogResult = true; Close(); } catch (Exception ex) { CustomMessageBox.Show($"更新失败: {ex.Message}", "错误"); } } private int GetSelectedStatus(ComboBox cmb) { if (cmb.SelectedItem is ComboBoxItem item && item.Tag != null) { return int.TryParse(item.Tag.ToString(), out int status) ? status : 0; } return 0; } private int GetSelectedIsFlag(ComboBox cmb) { if (cmb.SelectedItem is ComboBoxItem item && item.Tag != null) { return int.TryParse(item.Tag.ToString(), out int flag) ? flag : 0; } return 0; } } }