using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.Toolkit.Mvvm.ComponentModel; using System.Collections.Concurrent; using System.Collections.ObjectModel; using System.Windows; using BPASmartClient.Helper; using Microsoft.Toolkit.Mvvm.Input; using BPASmartClient.JXJFoodSmallStation.Model; using BPASmartClient.JXJFoodSmallStation.View; using BPASmartClient.CustomResource.UserControls; using BPASmartClient.CustomResource.UserControls.Model; using BPASmartClient.CustomResource.UserControls.Enum; using System.Windows.Media; using BPASmartClient.CustomResource.UserControls.MessageShow; using BPASmartClient.CustomResource.Pages.Model; using BPASmartClient.JXJFoodSmallStation.Model.Siemens; using BPASmartClient.JXJFoodSmallStation.Model.GVL; namespace BPASmartClient.JXJFoodSmallStation.ViewModel { public class RecipeReceiveViewModel : ObservableObject { //ObservableCollection RawMaterials { get; set; } = new ObservableCollection(); public RecipeReceiveViewModel() { NotUseSmallDosing = GVL_SmallStation.GetInstance.NotUseSmallStation; IsUseLocalRecipe = GVL_SmallStation.GetInstance.IsUseLocalRecipe; IsUseWindSendDosing = GVL_SmallStation.GetInstance.IsUseWindSend; Recipes = Json.Data.Recipes; NewRecipe = new RelayCommand(() => { NewLocalRecipeView NewLocalRecipe = new NewLocalRecipeView(); NewLocalRecipe.ShowDialog(); }); RemoveRecipe = new RelayCommand((o) => { if (o != null && o is string cnt) { var res = Json.Data.Recipes.FirstOrDefault(p => p.RecipeCode == cnt); if (res != null) { Json.Data.Recipes.Remove(res); MessageNotify.GetInstance.ShowUserLog($"删除配方——{res.RecipeName}"); } } }); DetailsCommand = new RelayCommand((o) => { if (o != null && o is string cnt) { ActionManage.GetInstance.Send("CloseNewRemoteRecipeView"); NewLocalRecipeView nrv = new NewLocalRecipeView(); var res = Json.Data.Recipes.FirstOrDefault(p => p.RecipeCode == cnt); if (res != null) { ActionManage.GetInstance.Send("LocalRecipeEdit", res); nrv.Show(); MessageNotify.GetInstance.ShowUserLog($"编辑配方——{res.RecipeName}"); } } }); IssueRecipe = new RelayCommand((o) => { if (IsUseLocalRecipe == false) { NoticeDemoViewModel.OpenMsg(EnumPromptType.Error, App.MainWindow, "错误", $"未处于本地模拟配方状态!"); return; } else { if (o != null && o is string cnt) { var res = Json.Data.Recipes.FirstOrDefault(p => p.RecipeCode == cnt); var res1 = Json.Data.Recipes.FirstOrDefault(p => p.RecipeCode == cnt); if (res1 != null) { NoticeDemoViewModel.OpenMsg(EnumPromptType.Error, App.MainWindow, "错误", $"远程已经存在该配方!"); return; } if (res != null && res1 ==null) { ActionManage.GetInstance.Send("LocalSimulationRecipeIssue", res); NoticeDemoViewModel.OpenMsg(EnumPromptType.Success, App.MainWindow, "提示", $"{res.RecipeName}配方下发成功!"); MessageNotify.GetInstance.ShowUserLog($"下发本地模拟配方——{res.RecipeName}"); } } } }); NewSimulateRecipe = new RelayCommand(() => { ObservableCollection RawMaterials = new ObservableCollection(); string recipeName = "配方" + (Json.Data.Recipes.Count + 1) + ""; go: string recipeCode = new Random().Next(1000, 9999).ToString(); foreach (var item in Json.Data.Recipes) { if (item.RecipeCode == recipeCode) { goto go; } } int trayCode = new Random().Next(1, 2); for (int i = 1; i < 16; i++) { RawMaterials.Add(new RemoteRecipeRawMaterial() { RawMaterialName = "原料" + i, RawMaterialType = "小料", RawMaterialWeight = (float)Math.Round(new Random().Next(200, 300) * 0.001 ,3), RawMaterialBarrelNum = (short)new Random().Next(6, 9), RawMaterialLocation = i, }); } if (GVL_SmallStation.GetInstance.IsUseWindSend && trayCode == 1) { for (int i = 1; i < 6; i++) { RawMaterials.Add(new RemoteRecipeRawMaterial() { RawMaterialName = "粉料" + i, RawMaterialType = "粉料", RawMaterialWeight = new Random().Next(1, 6), RawMaterialLocation = i, RawMaterialBarrelNum = 3 }); } } var res = Array.FindIndex(Json.Data.Recipes.ToArray(), p => p.RecipeCode == recipeCode); if (res < 0) { Json.Data.Recipes.Add(new RemoteRecipeData() { RecipeName = recipeName, RecipeCode = recipeCode, TrayCode = trayCode, RawMaterial = RawMaterials, }); } }); ClearAllRecipe = new RelayCommand(() => { Json.Data.Recipes.Clear(); }); } public bool NotUseSmallDosing { get { return _mNotUseSmallDosing; } set { _mNotUseSmallDosing = value; OnPropertyChanged(); } } private bool _mNotUseSmallDosing; public bool IsUseLocalRecipe { get { return _mIsUseLocalRecipe; }set { _mIsUseLocalRecipe = value; OnPropertyChanged(); } } private bool _mIsUseLocalRecipe ; public bool IsUseWindSendDosing { get { return _mIsUseWindSendDosing; } set { _mIsUseWindSendDosing = value;OnPropertyChanged(); } } private bool _mIsUseWindSendDosing ; public RelayCommand DetailsCommand { get; set; } public RelayCommand IssueRecipe { get; set; } public RelayCommand RemoveRecipe { get; set; } public RelayCommand NewSimulateRecipe { get;set; } public RelayCommand ClearAllRecipe { get; set; } public RelayCommand NewRecipe { get; set; } public ObservableCollection Recipes { get; set; } } }