using Admin.Core.Common; using Admin.Core.IService; using Admin.Core.Model; using Admin.Core.Service; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using LiveCharts; using LiveCharts.Defaults; using LiveCharts.Wpf; using Microsoft.Extensions.DependencyInjection; using Pipelines.Sockets.Unofficial; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Threading.Tasks; using System.Windows; using System.Windows.Media; namespace Aucma.Core.SheetMetal.ViewModels { public partial class MaterialStatisticsViewModel : ObservableObject { private readonly IBaseSpaceInfoServices? _baseSpaceInfoServices; private readonly ISysUserInfoServices? _sysUserInfoServices; public MaterialStatisticsViewModel() { _baseSpaceInfoServices = App.ServiceProvider.GetService(); _sysUserInfoServices = App.ServiceProvider.GetService(); //Refresh(); //RefreshTest(); } [RelayCommand] public void RefreshTest() { //箱壳 ShellMaterialStockDataGrid.Clear(); ShellMaterialStockDataGrid.Add(new BaseSpaceInfo() { MaterialType = "BCD-162CST", SpaceStock =7 }); ShellMaterialStockDataGrid.Add(new BaseSpaceInfo() { MaterialType = "BCD-212CHG", SpaceStock = 6 }); ShellMaterialStockDataGrid.Add(new BaseSpaceInfo() { MaterialType = "BCD-211CGN", SpaceStock = 9 }); ShellMaterialStockDataGrid.Add(new BaseSpaceInfo() { MaterialType = "BC/BD-310NF", SpaceStock = 10}); //内胆 LinerMaterialStockDataGrid.Clear(); LinerMaterialStockDataGrid.Add(new BaseSpaceInfo() { MaterialType = "BCD-162CST", SpaceStock = 6 }); LinerMaterialStockDataGrid.Add(new BaseSpaceInfo() { MaterialType = "BCD-212CHG", SpaceStock = 5 }); LinerMaterialStockDataGrid.Add(new BaseSpaceInfo() { MaterialType = "BCD-211CGN", SpaceStock = 4 }); LinerMaterialStockDataGrid.Add(new BaseSpaceInfo() { MaterialType = "BC/BD-310NF", SpaceStock = 11 }); //泡前库 FoamBeforeMaterialStockDataGrid.Clear(); FoamBeforeMaterialStockDataGrid.Add(new BaseSpaceInfo() { MaterialType = "BCD-162CST", SpaceStock =3 }); FoamBeforeMaterialStockDataGrid.Add(new BaseSpaceInfo() { MaterialType = "BCD-212CHG", SpaceStock = 3 }); FoamBeforeMaterialStockDataGrid.Add(new BaseSpaceInfo() { MaterialType = "BCD-211CGN", SpaceStock = 3}); FoamBeforeMaterialStockDataGrid.Add(new BaseSpaceInfo() { MaterialType = "BC/BD-310NF", SpaceStock = 2 }); RefreshModeStatusTest(); } #region 刷新夹具统计测试 /// /// 刷新夹具统计 /// private void RefreshModeStatusTest() { App.Current.Dispatcher.Invoke((Action)(async () => { var modeStatus = await _sysUserInfoServices.StatisticalModelStatus(); if (modeStatus != null) { if (Achievement.Count != 0) Achievement.Clear(); ModeTypeList = new List() { "BCD-162CST", "BCD-212CHG", "BCD-211CGN", "BC/BD-310NF", }; ChartValues achievement = new ChartValues() { 3,4,5,4 }; #region 按夹具状态统计 Achievement.Add(new ColumnSeries { DataLabels = true, Title = "夹具状态", ScalesYAt = 0, Values = achievement, Fill = new SolidColorBrush(Color.FromRgb(15, 209, 226)), Foreground = Brushes.CadetBlue, FontSize = 18 }); #endregion } })); } #endregion #region 刷新 [RelayCommand] private async void Refresh() { string shellStoreCode = Appsettings.app("StationInfo", "shellStoreCode"); string linerStoreCode = Appsettings.app("StationInfo", "linerStoreCode"); string foamBeforeStoreCode = Appsettings.app("StationInfo", "foamBeforeStoreCode"); //箱壳物料库存 ShellMaterialStockDataGrid = new ObservableCollection(); List shellList =await _baseSpaceInfoServices.GetSpaceInfosByStoreCode(shellStoreCode); if (shellList == null) return; shellList.OrderBy(x => x.ObjId); var shellResult = from m in shellList group m by m.MaterialType into g select new BaseSpaceInfo() { MaterialType = g.Key, SpaceStock = g.Sum(m => m.SpaceStock) }; foreach (var item in shellResult) { if (string.IsNullOrEmpty(item.MaterialType)) continue; ShellMaterialStockDataGrid.Add(new BaseSpaceInfo() { MaterialType = item.MaterialType, SpaceStock = item.SpaceStock }); } //内胆物料库存 LinerMaterialStockDataGrid = new ObservableCollection(); List linerList =await _baseSpaceInfoServices.GetSpaceInfosByStoreCode(linerStoreCode); var linerResult = from m in linerList group m by m.MaterialType into g select new BaseSpaceInfo() { MaterialType = g.Key, SpaceStock = g.Sum(m => m.SpaceStock) }; foreach (var item in linerResult) { if (string.IsNullOrEmpty(item.MaterialType)) continue; LinerMaterialStockDataGrid.Add(new BaseSpaceInfo() { MaterialType = item.MaterialType, SpaceStock = item.SpaceStock }); } //泡前库物料库存 FoamBeforeMaterialStockDataGrid = new ObservableCollection(); List foamBeforeList =await _baseSpaceInfoServices.GetSpaceInfosByStoreCode(foamBeforeStoreCode); var foamBeforeResult = from m in foamBeforeList group m by m.MaterialType into g select new BaseSpaceInfo() { MaterialType = g.Key, SpaceStock = g.Sum(m => m.SpaceStock) }; foreach (var item in foamBeforeResult) { if (string.IsNullOrEmpty(item.MaterialType)) continue; FoamBeforeMaterialStockDataGrid.Add(new BaseSpaceInfo() { MaterialType = item.MaterialType, SpaceStock = item.SpaceStock }); } //夹具状态 RefreshModeStatus(); } #endregion #region 关闭窗口 [RelayCommand] private void CloseWindow(object parameter) { var window = parameter as Window; if (window != null) { window.Close(); } } #endregion #region 参数定义 /// /// 箱壳物料库存DataGrid /// private ObservableCollection shellMaterialStockDataGrid=new ObservableCollection(); public ObservableCollection ShellMaterialStockDataGrid { get => shellMaterialStockDataGrid; set => SetProperty(ref shellMaterialStockDataGrid, value); } /// /// 内胆物料库存DataGrid /// private ObservableCollection linerMaterialStockDataGrid=new ObservableCollection(); public ObservableCollection LinerMaterialStockDataGrid { get => linerMaterialStockDataGrid; set => SetProperty(ref linerMaterialStockDataGrid, value); } /// /// 泡前库物料库存DataGrid /// private ObservableCollection foamBeforeMaterialStockDataGrid = new ObservableCollection(); public ObservableCollection FoamBeforeMaterialStockDataGrid { get => foamBeforeMaterialStockDataGrid; set => SetProperty(ref foamBeforeMaterialStockDataGrid, value); } #endregion #region 刷新夹具统计 /// /// 刷新夹具统计 /// private void RefreshModeStatus() { App.Current.Dispatcher.Invoke((Action)(async () => { var modeStatus = await _sysUserInfoServices.StatisticalModelStatus(); if (modeStatus != null) { if (Achievement.Count != 0) Achievement.Clear(); ModeTypeList = new List(); ChartValues achievement = new ChartValues(); int hour = 0; foreach (var item in modeStatus) { achievement.Add(Convert.ToInt32(item.YValue)); ModeTypeList.Add(item.XValue); hour++; } #region 按夹具状态统计 Achievement.Add(new ColumnSeries { DataLabels = true, Title = "夹具状态", ScalesYAt = 0, Values = achievement, Fill = new SolidColorBrush(Color.FromRgb(15, 209, 226)), Foreground = Brushes.CadetBlue, FontSize = 18 }); #endregion } })); } #endregion #region 夹具状态统计 #region 夹具状态统计 /// /// 夹具状态统计 /// private List modeTypeList; public List ModeTypeList { get { return modeTypeList; } set { modeTypeList = value; } } #endregion /// /// 夹具状态统计 /// private SeriesCollection achievement = new SeriesCollection(); public SeriesCollection Achievement { get { return achievement; } set { achievement = value; } } #endregion } }