using BPASmartClient.CustomResource.Pages.Model; using BPASmartClient.CustomResource.UserControls; using BPASmartClient.CustomResource.UserControls.MessageShow; using BPASmartClient.FoodStationTest.Model; using BPASmartClient.FoodStationTest.View; using BPA.Helper; using BPA.Helper; using System; using System.Collections.ObjectModel; using System.Linq; namespace BPASmartClient.FoodStationTest.ViewModel { public class RecipeReceiveViewModel : NotifyBase { //ObservableCollection RawMaterials { get; set; } = new ObservableCollection(); public RecipeReceiveViewModel() { NotUseSmallDosing = GVL_SmallStation.GetInstance.NotUseSmallStation; IsUseLocalRecipe = GVL_SmallStation.GetInstance.IsUseLocalRecipe; Recipes = Json.Data.Recipes; NewRecipe = new BPARelayCommand(() => { NewLocalRecipeView NewLocalRecipe = new NewLocalRecipeView(); NewLocalRecipe.ShowDialog(); }); RemoveRecipe = new BPARelayCommand((o) => { if (o != null && o is string cnt) { if (MessageNotify.GetInstance.ShowDialog($"请确认,是否删除订单【{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 BPARelayCommand((o) => { if (o != null && o is string cnt) { if (MessageNotify.GetInstance.ShowDialog($"请确认,是否进行编辑订单【{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.ShowDialog(); MessageNotify.GetInstance.ShowUserLog($"编辑配方——{res.RecipeName}"); } } } }); IssueRecipe = new BPARelayCommand((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 (MessageNotify.GetInstance.ShowDialog($"请确认,是否进行下发订单【{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}"); } GVL_SmallStation.GetInstance.LatestIssueRecipe = DateTime.Now; } } } }); NewSimulateRecipe = new BPARelayCommand(() => { 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 BPARelayCommand(() => { if (MessageNotify.GetInstance.ShowDialog("请确认,是否清除所有本地配方?", DialogType.Warning)) { Json.Data.Recipes.Clear(); NoticeDemoViewModel.OpenMsg(EnumPromptType.Success, App.MainWindow, "提示", $"本地配方清空成功。"); MessageNotify.GetInstance.ShowUserLog("手动清除所有本地配方"); } }); SelectedRecipes = Json.Data.SelectedRecipes; SelectRecipesCommand = new BPARelayCommand(() => { var selectView = new SelectRecipesView(); selectView.ShowDialog(); Json.Data.SelectedRecipes.Clear(); foreach (var recipe in SelectRecipesViewModel.SelectRecipes) { if (recipe != null && !Json.Data.SelectedRecipes.Any(p => p.RecipeCode == recipe.RecipeCode)) { Json.Data.SelectedRecipes.Add(recipe); } } //不保存会导致下次打开本地配方下发页面,会重新读取之前存储的文件。 Json.Save(); }); } 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 static ObservableCollection SelectedRecipes { get; set; } public BPARelayCommand DetailsCommand { get; set; } public BPARelayCommand IssueRecipe { get; set; } public BPARelayCommand RemoveRecipe { get; set; } public BPARelayCommand NewSimulateRecipe { get; set; } public BPARelayCommand ClearAllRecipe { get; set; } public BPARelayCommand NewRecipe { get; set; } public BPARelayCommand SelectRecipesCommand { get; set; } public ObservableCollection Recipes { get; set; } } }