using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Command;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using SlnMesnac.Business;
using SlnMesnac.Business.@base;
using SlnMesnac.Model.domain;
using SlnMesnac.Model.dto;
using SlnMesnac.Plc;
using SlnMesnac.Repository.service;
using SlnMesnac.WPF.Model;
using SlnMesnac.WPF.Page;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Timers;
using System.Windows;
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* 版权所有 (c) 2024 WenJY 保留所有权利。
* CLR版本:4.0.30319.42000
* 机器名称:LAPTOP-E0N2L34V
* 命名空间:SlnMesnac.WPF.ViewModel
* 唯一标识:14008fcc-0a31-4f1e-bc80-9f9ea84d3de5
*
* 创建者:WenJY
* 电子邮箱:wenjy@mesnac.com
* 创建时间:2024-04-10 16:18:57
* 版本:V1.0.0
* 描述:
*
*--------------------------------------------------------------------
* 修改人:
* 时间:
* 修改说明:
*
* 版本:V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
namespace SlnMesnac.WPF.ViewModel
{
///
/// 设备参数监控
///
internal class RecipeManageViewModel : ViewModelBase
{
private BaseBusiness baseBusiness = null;
private PlcAbsractFactory plc = null;
private RecipeManageCache recipeManageCache = RecipeManageCache.Instance;
private System.Timers.Timer refreshWeightTimer = new System.Timers.Timer(1000 * 5);
private readonly ILogger _logger;
///
/// 修改配方按钮
///
public RelayCommand UpdateRecipeCommand { get; set; }
///
/// 手自动模式切换按钮
///
public RelayCommand ModeChangeCommand { get; set; }
public RecipeManageViewModel()
{
_logger = App.ServiceProvider.GetService>();
baseBusiness = App.ServiceProvider.GetService();
UpdateRecipeCommand = new RelayCommand(obj => UpdateRecipe(obj));
ModeChangeCommand = new RelayCommand(obj => ModeChange(obj));
RrfreshDataGrid();
refreshWeightTimer.Elapsed += new System.Timers.ElapsedEventHandler(RefreshWeight);
refreshWeightTimer.AutoReset = true;
refreshWeightTimer.Enabled = true;
refreshWeightTimer.Start();
}
private void RefreshWeight(object? sender, ElapsedEventArgs e)
{
BufferWeight = recipeManageCache.BufferWeight.ToString("F2");
RecipeName = recipeManageCache.RecipeName;
RecipeMode = recipeManageCache.RecipeMode;
}
public void RrfreshDataGrid()
{
BufferWeight = recipeManageCache.BufferWeight.ToString("F2");
RecipeName = recipeManageCache.RecipeName;
RecipeMode = recipeManageCache.RecipeMode;
List list = recipeManageCache.recipeManageList;
if (list != null && list.Count > 0)
{
RecipeDataGrid.Clear();
foreach (var item in list)
{
RecipeDataGrid.Add(item);
}
}
}
#region 参数定义
///
/// 配方DataGrid
///
private ObservableCollection recipeDataGrid = new ObservableCollection();
public ObservableCollection RecipeDataGrid
{
get { return recipeDataGrid; }
set { recipeDataGrid = value; RaisePropertyChanged(() => RecipeDataGrid); }
}
//缓存区重量
private string bufferWeight = string.Empty;
public string BufferWeight
{
get { return bufferWeight; }
set { bufferWeight = value; RaisePropertyChanged(() => BufferWeight); }
}
//当前配方
private string recipeName = string.Empty;
public string RecipeName
{
get { return recipeName; }
set { recipeName = value; RaisePropertyChanged(() => RecipeName); }
}
//运行模式
private string recipeMode = string.Empty;
public string RecipeMode
{
get { return recipeMode; }
set { recipeMode = value; RaisePropertyChanged(() => RecipeMode); }
}
#endregion
///
/// 更新配方
///
///
public void UpdateRecipe(int RecipeKey)
{
RecipeManageSetWindow window = new RecipeManageSetWindow(RecipeKey);
window.ShowDialog();
RrfreshDataGrid();
}
///
/// 模式切换
///
///
public void ModeChange(string param)
{
try
{
//切换自动模式
if ("auto".Equals(param))
{
var result = MessageBox.Show("是否确认切换自动模式?", "确认", MessageBoxButton.YesNo, MessageBoxImage.Information);
if (result == MessageBoxResult.Yes)
{
recipeManageCache.RecipeMode = "自动模式";
RecipeMode = "自动模式";
}
}
else if ("manual".Equals(param))
{
RecipeModeSetWindow window = new RecipeModeSetWindow();
window.ShowDialog();
}
RecipeName = recipeManageCache.RecipeName;
RecipeMode = recipeManageCache.RecipeMode;
}catch (Exception ex)
{
_logger.LogError("ModeChange异常:" + ex.Message);
}
}
}
}