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;
namespace Sln_Wpf.Page
{
///
/// AddEquipWindow.xaml 的交互逻辑
///
public partial class AddParameterWindow : Window
{
///
/// 返回结果:新增的参数信息
///
public BaseEquipParameter equipParameter { get; private set; }
private ISqlSugarClient? sqlSugarClient;
private equipParameterSqlFunction AddSqlFunction;
private int WorkingType;
///
/// 构造函数
///
public AddParameterWindow()
{
InitializeComponent();
AddSqlFunction = new equipParameterSqlFunction(App.ServiceProvider);
WorkingType = 0;
}
public AddParameterWindow(BaseEquipParameter baseEquipParameter)
{
InitializeComponent();
sqlSugarClient = App.ServiceProvider.GetService();
AddSqlFunction = new equipParameterSqlFunction(App.ServiceProvider);
TxtEquipCode.Text = baseEquipParameter.EquipCode;
TxtEquipName.Text = baseEquipParameter.EquipName;
CmbSelectFunction(CmbEquipType, baseEquipParameter.EquipType);
CmbSelectFunction(CmbParamUnit, baseEquipParameter.ParamUnit);
CmbSelectFunction(CmbParamType, baseEquipParameter.ParamType);
TxtUpdateTime.Text = baseEquipParameter.UpdateTime.ToString("yyyy-MM-dd HH:mm:ss");
WorkingType = 1;
}
private void CmbSelectFunction(ComboBox comboBox, string content)
{
foreach (ComboBoxItem item in comboBox.Items)
{
if (item.Content.ToString() == content)
{
comboBox.SelectedItem = item;
break;
}
}
}
///
/// 确认添加按钮
///
private void BtnConfirm_Click(object sender, RoutedEventArgs e)
{
if (WorkingType == 0)
{
// 验证输入
if (!ValidateInput())
return;
// 获取参数类型(string/int/bool)
string paramDataType = (CmbParamType.SelectedItem as ComboBoxItem)?.Tag?.ToString() ?? "string";
string paramValue = TxtParamValue.Text.Trim();
// 根据数据类型验证参数值格式
if (!ValidateParamValueByType(paramValue, paramDataType))
return;
// 创建参数信息对象
equipParameter = new BaseEquipParameter
{
EquipCode = TxtEquipCode.Text.Trim(),
EquipName = TxtEquipName.Text.Trim(),
EquipType = (CmbEquipType.SelectedItem as ComboBoxItem)?.Content.ToString() ?? "无",
ParamKey = TxtParamKey.Text.Trim(),
ParamValue = paramValue,
ParamType = paramDataType,
ParamUnit = (CmbParamUnit.SelectedItem as ComboBoxItem)?.Content.ToString() ?? "无",
UpdateTime = DateTime.Now
};
AddSqlFunction.insertFunction(equipParameter);
DialogResult = true;
Close();
}
else
{
if (!ValidateInput())
return;
// 获取参数类型(string/int/bool)
string paramDataType = (CmbParamType.SelectedItem as ComboBoxItem)?.Tag?.ToString() ?? "string";
string paramValue = TxtParamValue.Text.Trim();
var tempType = (CmbEquipType.SelectedItem as ComboBoxItem)?.Content.ToString() ?? "无";
var tempUnit = (CmbParamUnit.SelectedItem as ComboBoxItem)?.Content.ToString() ?? "无";
// 根据数据类型验证参数值格式
if (!ValidateParamValueByType(paramValue, paramDataType))
return;
sqlSugarClient.Updateable().Where(it => it.EquipCode == TxtEquipCode.Text.Trim()).SetColumns(it => new BaseEquipParameter()
{
EquipCode = TxtEquipCode.Text.Trim(),
EquipName = TxtEquipName.Text.Trim(),
EquipType = tempType,
ParamKey = TxtParamKey.Text.Trim(),
ParamValue = paramValue,
ParamType = paramDataType,
ParamUnit = tempUnit,
UpdateTime = DateTime.Now
}).ExecuteCommand();
DialogResult = true;
Close();
}
}
///
/// 根据数据类型验证参数值格式
///
private bool ValidateParamValueByType(string value, string dataType)
{
switch (dataType)
{
case "int":
if (!int.TryParse(value, out _))
{
MessageBox.Show("参数类型为 Int(整数),请输入有效的整数值", "格式错误",
MessageBoxButton.OK, MessageBoxImage.Warning);
TxtParamValue.Focus();
return false;
}
break;
case "bool":
if (!bool.TryParse(value, out _))
{
MessageBox.Show("参数类型为 Bool(布尔值),请输入 true 或 false", "格式错误",
MessageBoxButton.OK, MessageBoxImage.Warning);
TxtParamValue.Focus();
return false;
}
break;
case "string":
default:
// 字符串类型无需额外验证
break;
}
return true;
}
///
/// 取消按钮
///
private void BtnCancel_Click(object sender, RoutedEventArgs e)
{
DialogResult = false;
Close();
}
///
/// 验证输入
///
private bool ValidateInput()
{
// 验证设备ID
if (string.IsNullOrWhiteSpace(TxtEquipCode.Text))
{
MessageBox.Show("请输入设备ID", "验证失败", MessageBoxButton.OK, MessageBoxImage.Warning);
TxtEquipCode.Focus();
return false;
}
// 验证设备名称
if (string.IsNullOrWhiteSpace(TxtEquipName.Text))
{
MessageBox.Show("请输入设备名称", "验证失败", MessageBoxButton.OK, MessageBoxImage.Warning);
TxtEquipName.Focus();
return false;
}
// 验证参数名称
if (string.IsNullOrWhiteSpace(TxtParamKey.Text))
{
MessageBox.Show("请输入参数名称", "验证失败", MessageBoxButton.OK, MessageBoxImage.Warning);
TxtParamKey.Focus();
return false;
}
// 验证参数值
if (string.IsNullOrWhiteSpace(TxtParamValue.Text))
{
MessageBox.Show("请输入参数值", "验证失败", MessageBoxButton.OK, MessageBoxImage.Warning);
TxtParamValue.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();
}
}
}