using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using Models.Const;
using Models.Models;
using SamplePre.ProcessBll.BLL;
using SamplePre.UIWpf.ParamManager.chirld;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
namespace SamplePreSystem.UI.ViewModel.SopManager
{
public partial class ParamManagerViewModel : ObservableObject
{
SysParamBll sysParamBll = new SysParamBll();
public ParamManagerViewModel()
{
//初始化标准
InitParamData();
BangdingUnit();
}
///
/// 参数列表
///
[ObservableProperty]
public List sysParams = new List();
///
/// 选中的参数行
///
[ObservableProperty]
public sys_parm selectItem = new sys_parm();
List allSysParams = new List();
public void InitParamData()
{
allSysParams = sysParamBll.QuerySysParm()?.OrderBy(p => p.plc_type).ToList();
OnFilterTypeChange();
}
///
/// 参数类型
///
[ObservableProperty]
public List dataTypes = new List { "通用", "耗材", "液体" };
///
/// 过滤类型
///
private string filterType = "通用";
public string FilterType
{
get { return filterType; }
set {
SetProperty(ref filterType, value);
OnFilterTypeChange();
}
}
public void OnFilterTypeChange()
{
if (string.IsNullOrEmpty(FilterType))
{
SysParams = allSysParams;
return;
}
SysParams = allSysParams.Where(p => p.param_type == FilterType).ToList();
}
///
/// 单位列表
///
[ObservableProperty]
public List units = new List();
public void BangdingUnit()
{
Units = SystemConst.dictDatas.Where(p => p.class_id == 4).ToList();
//cmbUnit.BindingData(units, "data_value", "id");
//cmbUnit.SelectedIndex = 0;
}
///
/// 参数值绑定
///
[ObservableProperty]
public sys_parm sysParm = new sys_parm();
///
/// 保存参数
///
///
public bool SaveParam()
{
if (string.IsNullOrEmpty(SysParm.title) || string.IsNullOrEmpty(SysParm.data_value))
{
MessageBox.Show("内容不能为空");
return false;
}
if (string.IsNullOrEmpty(SysParm.param_type))
{
MessageBox.Show("参数类型不能为空");
return false;
}
if (SysParm.data_type == "数值")
{
string val = SysParm.data_value;
if (float.TryParse(val, out _) == false)
{
MessageBox.Show("参数值格式不正确,请重新修改!");
SysParm.data_value = "0";
return false;
}
}
if (SysParm != null && !string.IsNullOrEmpty(SysParm.id))
{
//修改
sysParamBll.UpdateSysParm(SysParm);
}
else
{
//判断plc编码是否重复
if (sysParamBll.IsExtisPlCcode(SysParm.plc_type))
{
MessageBox.Show("存在相同plc编码,不能保存!");
return false;
}
//新增
SysParm.id = Guid.NewGuid().ToString();
sysParamBll.SaveSysParm(SysParm);
}
//刷新参数列表
InitParamData();
OnFilterTypeChange();
return true;
}
///
/// 删除参数
///
///
public bool DelParam()
{
sys_parm parm = SelectItem;
string id = parm.id;
string title = parm.title;
if (MessageBox.Show($"确定删除:{title}", "提示",MessageBoxButton.OKCancel) == MessageBoxResult.OK)
{
//判断该参数是否已经被使用
if (IsDelete(id) == false)
{
return false;
}
sysParamBll.DelSysParm(id);
//刷新参数列表
InitParamData();
OnFilterTypeChange();
}
return true;
}
private bool IsDelete(string parmId)
{
bool isExit = sysParamBll.IsExtisActionParam(parmId);
if (isExit)
{
MessageBox.Show("该参数已经被使用,不能删除!");
return false;
}
return true;
}
///
/// 新增参数
///
///
///
[RelayCommand]
public void BtnAddParamClick()
{
SysParm = new sys_parm();
NewStandParmWindow frm = new NewStandParmWindow(this);
frm.ShowDialog();
}
///
/// 编辑参数
///
[RelayCommand]
public void BtnEditClick()
{
SysParm = SelectItem;
NewStandParmWindow frm = new NewStandParmWindow(this);
frm.ShowDialog();
}
///
/// 删除参数
///
///
///
[RelayCommand]
private void BtnDelParamClick()
{
DelParam();
}
}
}