using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Command;
using Microsoft.Extensions.DependencyInjection;
using NPOI.SS.Formula.Functions;
using SlnMesnac.Business;
using SlnMesnac.Model.domain;
using SlnMesnac.Model.dto;
using SlnMesnac.WPF.MessageTips;
using SlnMesnac.WPF.Model;
using SlnMesnac.WPF.Templates;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Drawing.Printing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static DevExpress.Drawing.Printing.Internal.DXPageSizeInfo;
#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
{
///
/// 生产统计ViewModel
///
public class MachineStopHistoryViewModel : ViewModelBase
{
private readonly ISqlSugarClient? sqlSugarClient;
public PagenationModel PagenationModel { get; set; }
private Dictionary machineNameDic = new Dictionary();
public MachineStopHistoryViewModel()
{
PagenationModel = new PagenationModel()
{
FindPreCommand = new RelayCommand(OnPreCommand),
FindNextCommand = new RelayCommand(OnNextCommand),
FindTargetCommand = new RelayCommand(OnGoCommand)
};
sqlSugarClient = App.ServiceProvider.GetService();
InitList();
}
#region 事件定义
private void OnPreCommand()
{
if (PagenationModel.Current == 1) return;
// 处理前一页逻辑
PagenationModel.Current = PagenationModel.Current - 1;
Task.Run(async () => await RefreshWcsTaskDataGrid(PagenationModel.Current, PagenationModel.PageSize));
}
private void OnNextCommand()
{
// 处理下一页逻辑
PagenationModel.Current = PagenationModel.Current + 1;
Task.Run(async () => await RefreshWcsTaskDataGrid(PagenationModel.Current, PagenationModel.PageSize));
}
private void OnGoCommand()
{
// 处理跳转到指定页逻辑
// 处理下一页逻辑
Task.Run(async () => await RefreshWcsTaskDataGrid(PagenationModel.Current, PagenationModel.PageSize));
}
#endregion
private async void InitList()
{
machineNameDic.Add(1016, "3楼拆包机");
machineNameDic.Add(1017, "2楼磁选机");
machineNameDic.Add(1018, "2楼螺旋机");
machineNameDic.Add(1019, "2楼烘干机");
machineNameDic.Add(1020, "2楼除尘机");
machineNameDic.Add(1021, "2楼喷码机");
PagenationModel.Total = await getListTotal();
PagenationModel.computePage();
await RefreshWcsTaskDataGrid(PagenationModel.Current, PagenationModel.PageSize);
}
private async Task getListTotal()
{
List deviceIds = new List { 1016, 1017, 1018, 1019, 1020, 1021 };
int aa = await sqlSugarClient.AsTenant().GetConnection("mes").Queryable().Where(x => deviceIds.Contains(x.DeviceId)).CountAsync();
return aa;
}
#region 参数定义
///
/// 停机记录DataGrid
///
private ObservableCollection dmsShutDownModelDataGrid = new ObservableCollection();
public ObservableCollection DmsShutDownModelDataGrid
{
get { return dmsShutDownModelDataGrid; }
set { dmsShutDownModelDataGrid = value; RaisePropertyChanged(() => DmsShutDownModelDataGrid); }
}
#endregion
///
/// 刷新停机记录信息
///
///
private async Task RefreshWcsTaskDataGrid(int pageNumber=1,int pageSize=0)
{
try
{
PagenationModel.computePage();
List deviceIds = new List { 1016, 1017, 1018, 1019, 1020, 1021 };
List list = await sqlSugarClient.AsTenant().GetConnection("mes").Queryable().Where(x=>deviceIds.Contains(x.DeviceId)).OrderByDescending(x=>x.ShutBeginTime).ToPageListAsync(pageNumber,pageSize);
await App.Current.Dispatcher.BeginInvoke((Action)(() =>
{
dmsShutDownModelDataGrid.Clear();
int startId = (pageNumber-1)*pageSize+1;
foreach (var item in list)
{
DmsShutDownModel model = new DmsShutDownModel();
model.id = startId++;
model.deviceName = machineNameDic[item.DeviceId];
model.shutReason = item.ShutReason??"未知";
model.shutBeginTime = item.ShutBeginTime==null?"":item.ShutBeginTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
model.shutEndTime = item.ShutEndTime == null?"":item.ShutEndTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
model.totalTime = item.ShutEndTime == null ? "" : (item.ShutEndTime.Value - item.ShutBeginTime.Value).TotalMinutes.ToString("F2");
dmsShutDownModelDataGrid.Add(model);
}
}));
}catch(Exception ex)
{
Msg.MsgShow($"刷新停机记录信息{ex.Message}", 2, 3);
}
}
}
}