You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

229 lines
6.8 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Command;
using Microsoft.Extensions.DependencyInjection;
using Quartz.Util;
using SlnMesnac.Model.domain;
using SlnMesnac.Repository.service;
using SlnMesnac.WPF.Models;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
namespace SlnMesnac.WPF.ViewModel
{
public class SetKindWindowViewModel : ObservableObject
{
private ILogoFormulaService? formulaService;
private ILogoConfigService? logoConfigService;
private string CachMaterialType;
// 缓存第一次查到的海康配方
public Dictionary<string, int> TypeCache = new Dictionary<string, int>();
public LogoConfig record = null;
public delegate void SetKindWindowDelegate();
public SetKindWindowViewModel(string materialType)
{
formulaService = App.ServiceProvider.GetService<ILogoFormulaService>();
logoConfigService = App.ServiceProvider.GetService<ILogoConfigService>();
SaveCommand = new RelayCommand(Save);
// 初始加载内容
Init(materialType);
}
public void Init(string materialType)
{
List<LogoFormula> list = formulaService.GetListAsync().Result;
record = logoConfigService.GetByMaterialType(materialType);
if (record == null) return;
_MaterialType = record.MaterialName;
_IsDetectionChecked = record.IsChecked == 0 ? false : true;
Ch1HightText = record.Ch1Hight.ToString();
Ch2HightText = record.Ch2Hight.ToString();
_selectedMaterialType = list.FirstOrDefault(x=>x.Key==record.CheckKind)?.Value;
_selectedLightType = record.LightType == 0 ? "All" : (record.LightType == 1 ? "Ch1" : "Ch2");
if(list!=null && list.Count > 0)
{
foreach (var item in list)
{
MaterialTypes.Add(item.Value);
TypeCache.Add(item.Value, item.Key);
}
}
_lightTypes.Add("All");
_lightTypes.Add("Ch1");
_lightTypes.Add("Ch2");
}
public void Save()
{
if (string.IsNullOrEmpty(_selectedMaterialType) && IsDetectionChecked)
{
MessageBox.Show("请选择型号");
return;
}
if(int.TryParse(Ch1HightText, out int ch1High) && int.TryParse(Ch2HightText, out int ch2High) && ch1High>=0 && ch1High<=255 && ch2High >= 0 && ch2High <= 255)
{
record.Ch1Hight = ch1High;
record.Ch2Hight = ch2High;
}
else
{
MessageBox.Show("灯光亮度ch1和ch2请设置在0-255之间");
return;
}
if (!string.IsNullOrEmpty(_selectedMaterialType)){
//需要检测
string select = _selectedMaterialType;
TypeCache.TryGetValue(select, out int key);
record.CheckKind = key;
}
#region 修改配方
if (record != null)
{
record.IsChecked = IsDetectionChecked ? 1 : 0;
if(record.IsChecked == 0)
{
// 不检测复位0
record.CheckKind = 0;
}
if (!string.IsNullOrEmpty(_selectedLightType))
{
//需要修改灯光配置
string select = _selectedLightType;
switch (select)
{
case "All": record.LightType = 0; break;
case "Ch1": record.LightType = 1; break;
case "Ch2": record.LightType = 2; break;
}
}
logoConfigService.updateByMaterialType(record);
}
#endregion
MessageBox.Show("修改完成");
}
#region 属性
/// <summary>
/// 型号
/// </summary>
private string _MaterialType;
public string MaterialType
{
get { return _MaterialType; }
set { _MaterialType = value; RaisePropertyChanged(); }
}
/// <summary>
/// ch1亮度
/// </summary>
private string _Ch1HightText;
public string Ch1HightText
{
get { return _Ch1HightText; }
set { _Ch1HightText = value; RaisePropertyChanged(); }
}
/// <summary>
/// ch2亮度
/// </summary>
private string _Ch2HightText;
public string Ch2HightText
{
get { return _Ch2HightText; }
set { _Ch2HightText = value; RaisePropertyChanged(); }
}
/// <summary>
/// 单选框
/// </summary>
private bool _IsDetectionChecked;
public bool IsDetectionChecked
{
get { return _IsDetectionChecked; }
set { _IsDetectionChecked = value; RaisePropertyChanged(); }
}
private string _selectedMaterialType;
public string SelectedMaterialType
{
get { return _selectedMaterialType; }
set
{
_selectedMaterialType = value;
RaisePropertyChanged();
// 可以在这里处理选中项变化后的逻辑
}
}
/// <summary>
/// 识别特征下拉框集合
/// </summary>
private ObservableCollection<string> _materialTypes = new ObservableCollection<string>();
public ObservableCollection<string> MaterialTypes
{
get { return _materialTypes; }
set
{
_materialTypes = value;
RaisePropertyChanged();
}
}
private string _selectedLightType;
public string SelectedLightType
{
get { return _selectedLightType; }
set
{
_selectedLightType = value;
RaisePropertyChanged();
// 可以在这里处理选中项变化后的逻辑
}
}
/// <summary>
/// 灯光特征下拉框集合
/// </summary>
private ObservableCollection<string> _lightTypes = new ObservableCollection<string>();
public ObservableCollection<string> LightTypes
{
get { return _lightTypes; }
set
{
_lightTypes = value;
RaisePropertyChanged();
}
}
#endregion
public RelayCommand SaveCommand { get; set; }
}
}