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.

154 lines
4.6 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 SlnMesnac.Business;
using SlnMesnac.Model.domain;
using SlnMesnac.Model.dto;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
#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
{
/// <summary>
/// 生产统计ViewModel
/// </summary>
internal class AgvAndTaskViewModel : ViewModelBase
{
private readonly ISqlSugarClient? sqlSugarClient;
// private readonly ProdCompletionBusiness _prodCompletionBusiness;
private System.Timers.Timer refreshTimer = new System.Timers.Timer(5000);
public AgvAndTaskViewModel()
{
sqlSugarClient = App.ServiceProvider.GetService<ISqlSugarClient>();
// _prodCompletionBusiness = App.ServiceProvider.GetService<ProdCompletionBusiness>();
// DeletePalletCommand = new RelayCommand<string>(DeletePallet);
// DeleteBarCodeCommand = new RelayCommand<string> (DeleteBarCode);
// _palletStowBusiness.RefreshPalletTaskListEvent += RefreshPalletTaskDataGrid;
refreshTimer.Elapsed += OnTimedEvent;
refreshTimer.AutoReset = true; // 设置为自动重置
refreshTimer.Enabled = true; // 启用定时器
}
private async void OnTimedEvent(object sender, System.Timers.ElapsedEventArgs e)
{
await RefreshWcsAgvStatusDataGrid();
await RefreshWcsTaskDataGrid();
}
#region 参数定义
/// <summary>
/// AGV任务队列DataGrid
/// </summary>
private ObservableCollection<WcsTask> wcsTaskDataGrid = new ObservableCollection<WcsTask>();
public ObservableCollection<WcsTask> WcsTaskDataGrid
{
get { return wcsTaskDataGrid; }
set { wcsTaskDataGrid = value; RaisePropertyChanged(() => WcsTaskDataGrid); }
}
/// <summary>
/// AGV状态队列DataGrid
/// </summary>
private ObservableCollection<WcsAgvStatus> wcsAgvStatusDataGrid = new ObservableCollection<WcsAgvStatus>();
public ObservableCollection<WcsAgvStatus> WcsAgvStatusDataGrid
{
get { return wcsAgvStatusDataGrid; }
set { wcsAgvStatusDataGrid = value; RaisePropertyChanged(() => WcsAgvStatusDataGrid); }
}
#endregion
#region 事件定义
// public RelayCommand<string> DeletePalletCommand { get;set; }
// public RelayCommand<string> DeleteBarCodeCommand { get; set; }
#endregion
/// <summary>
/// 刷新AGV状态信息
/// </summary>
/// <param name="palletTasks"></param>
private async Task RefreshWcsAgvStatusDataGrid()
{
List<WcsAgvStatus> agvList = await sqlSugarClient.AsTenant().GetConnection("mes").Queryable<WcsAgvStatus>().ToListAsync();
await App.Current.Dispatcher.BeginInvoke((Action)(() =>
{
WcsAgvStatusDataGrid.Clear();
foreach (var agv in agvList)
{
WcsAgvStatusDataGrid.Add(agv);
}
}));
}
/// <summary>
/// 刷新AGV状态信息
/// </summary>
/// <param name="palletTasks"></param>
private async Task RefreshWcsTaskDataGrid()
{
List<WcsTask> agvList = await sqlSugarClient.AsTenant().GetConnection("mes").Queryable<WcsTask>().Where(x => x.NextPointId == 8 || x.NextPointId==9).ToListAsync();
await App.Current.Dispatcher.BeginInvoke((Action)(() =>
{
WcsTaskDataGrid.Clear();
foreach (var agv in agvList)
{
WcsTaskDataGrid.Add(agv);
}
}));
}
}
}