using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; using Sln.Wcs.Model.Domain; using Sln.Wcs.Function; using SqlSugar; using Sln.Wcs.Function.Functions; using Microsoft.Extensions.DependencyInjection; using Sln.Wcs.Repository.@base; using Sln.Wcs.Repository; namespace Sln_Wpf.Page { /// /// AddEquipWindow.xaml 的交互逻辑 /// public partial class AddEquipWindow : Window { /// /// 返回结果:新增的设备信息 /// public BaseEquipInfo NewDevice { get; private set; } private ISqlSugarClient? sqlSugarClient; private BaseServiceImpl baseService; private equipInfoSqlFunction EquipInfoSqlFunction; private int WorkingType; public AddEquipWindow() { InitializeComponent(); sqlSugarClient = App.ServiceProvider.GetService(); baseService = new BaseServiceImpl(new Repository(sqlSugarClient)); EquipInfoSqlFunction = new equipInfoSqlFunction(App.ServiceProvider); WorkingType = 0; } public AddEquipWindow(BaseEquipInfo equipInfo) { InitializeComponent(); sqlSugarClient = App.ServiceProvider.GetService(); baseService = new BaseServiceImpl(new Repository(sqlSugarClient)); WorkingType = 1; TxtEquipNo.Text = equipInfo.EquipNo; TxtEquipName.Text = equipInfo.EquipName; CmbEquipType.SelectedIndex = 0; SetComboBoxByContent(TypeInttoString(equipInfo.EquipType)); TxtServerIp.Text = equipInfo.ServerIp; TxtServerPort.Text = equipInfo.ServerPort.ToString(); foreach (ComboBoxItem item in CmbWorkshopLevel.Items) { if (item.Content.ToString() == (equipInfo.WorkshopLevel.ToString() + "F")) { CmbEquipType.SelectedItem = item; break; } } ChkUseFlag.IsChecked = equipInfo.UseFlag == 1 ? true : false; } /// /// 确认添加按钮 /// private void BtnConfirm_Click(object sender, RoutedEventArgs e) { if (WorkingType == 0) AddFunction(); else { UpdateFunction(); } } private void UpdateFunction() { int Typeflag = 0; int level = Convert.ToInt32(((CmbWorkshopLevel.SelectedItem as ComboBoxItem)?.Content.ToString() ?? "1F").Substring(0, 1)); Typeflag = StringTypetoInt(); NewDevice = new BaseEquipInfo { EquipNo = TxtEquipNo.Text.Trim(), EquipName = TxtEquipName.Text.Trim(), EquipType = Typeflag, ServerIp = TxtServerIp.Text.Trim(), ServerPort = Convert.ToInt32(TxtServerPort.Text), WorkshopLevel = level, UseFlag = ChkUseFlag.IsChecked == true ? 1 : 0, }; baseService.Update(NewDevice, $"equip_no = '{TxtEquipNo.Text.Trim()}'"); DialogResult = true; Close(); } private void AddFunction() { // 验证输入 if (!ValidateInput()) return; int Typeflag = 0; Typeflag = StringTypetoInt(); // 创建设备信息对象 NewDevice = new BaseEquipInfo { EquipNo = TxtEquipNo.Text.Trim(), EquipName = TxtEquipName.Text.Trim(), EquipType = Typeflag, ServerIp = TxtServerIp.Text.Trim(), ServerPort = Convert.ToInt32(TxtServerPort.Text), WorkshopLevel = Convert.ToInt32(((CmbWorkshopLevel.SelectedItem as ComboBoxItem)?.Content.ToString() ?? "1F").Substring(0, 1)), UseFlag = ChkUseFlag.IsChecked == true ? 1 : 0, }; baseService.Insert(NewDevice); DialogResult = true; Close(); } private int StringTypetoInt() { int Typeflag; var EquipType = (CmbEquipType.SelectedItem as ComboBoxItem)?.Content.ToString(); switch (EquipType) { case "提升机": Typeflag = 3; break; case "AGV": Typeflag = 1; break; default: Typeflag = 0; break; } return Typeflag; } private string TypeInttoString(int EquipType) { string Typeflag; switch (EquipType) { case 1: Typeflag = "AGV"; break; case 2: Typeflag = "机台"; break; case 3: Typeflag = "提升机"; break; default: Typeflag = "其他"; break; } return Typeflag; } private void SetComboBoxByContent(string content) { foreach (ComboBoxItem item in CmbEquipType.Items) { if (item.Content.ToString() == content) { CmbEquipType.SelectedItem = item; break; } } } /// /// 取消按钮 /// private void BtnCancel_Click(object sender, RoutedEventArgs e) { DialogResult = false; Close(); } /// /// 验证输入 /// private bool ValidateInput() { // 验证设备编号 if (string.IsNullOrWhiteSpace(TxtEquipNo.Text)) { MessageBox.Show("请输入设备编号", "验证失败", MessageBoxButton.OK, MessageBoxImage.Warning); TxtEquipNo.Focus(); return false; } // 验证设备名称 if (string.IsNullOrWhiteSpace(TxtEquipName.Text)) { MessageBox.Show("请输入设备名称", "验证失败", MessageBoxButton.OK, MessageBoxImage.Warning); TxtEquipName.Focus(); return false; } // 验证IP地址格式(简单验证) string ip = TxtServerIp.Text.Trim(); if (string.IsNullOrWhiteSpace(ip)) { MessageBox.Show("请输入设备IP地址", "验证失败", MessageBoxButton.OK, MessageBoxImage.Warning); TxtServerIp.Focus(); return false; } // 简单IP格式验证 System.Net.IPAddress ipAddress; if (!System.Net.IPAddress.TryParse(ip, out ipAddress)) { MessageBox.Show("请输入正确的IP地址格式\n例如: 192.168.1.100", "验证失败", MessageBoxButton.OK, MessageBoxImage.Warning); TxtServerIp.Focus(); return false; } // 验证端口号 string port = TxtServerPort.Text.Trim(); if (string.IsNullOrWhiteSpace(port)) { MessageBox.Show("请输入设备端口号", "验证失败", MessageBoxButton.OK, MessageBoxImage.Warning); TxtServerPort.Focus(); return false; } int portNum; if (!int.TryParse(port, out portNum) || portNum < 1 || portNum > 65535) { MessageBox.Show("请输入正确的端口号(1-65535)", "验证失败", MessageBoxButton.OK, MessageBoxImage.Warning); TxtServerPort.Focus(); return false; } return true; } /// /// 窗口拖拽 /// private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { if (e.ButtonState == MouseButtonState.Pressed) { this.DragMove(); } } /// /// 最小化 /// private void BtnMinimize_Click(object sender, RoutedEventArgs e) { this.WindowState = WindowState.Minimized; } /// /// 关闭 /// private void BtnClose_Click(object sender, RoutedEventArgs e) { DialogResult = false; Close(); } } }