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); } } } }