|
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using Microsoft.Toolkit.Mvvm.ComponentModel;
- using System.Collections.ObjectModel;
- using BPASmartClient.JXJFoodSmallStation.Model;
- using BPASmartClient.Helper;
- using Microsoft.Toolkit.Mvvm.Input;
- using BPASmartClient.CustomResource.UserControls.MessageShow;
- using BPASmartClient.CustomResource.UserControls;
- using System.Diagnostics;
- using BPASmartClient.JXJFoodSmallStation.Model.Siemens;
- using Google.Protobuf.WellKnownTypes;
- using Newtonsoft.Json.Linq;
- using BPASmartClient.CustomResource.Pages.Model;
-
- namespace BPASmartClient.JXJFoodSmallStation.ViewModel
- {
- public class NewLocalRecipeViewModel : ObservableObject
- {
- public NewLocalRecipeViewModel()
- {
- //ActionManage.GetInstance.CancelRegister("LocalRecipeEdit");
-
- ActionManage.GetInstance.Register(new Action<object>((o) =>
- {
- if (o != null && o is RemoteRecipeData rm)
- {
- RecipeName = rm.RecipeName;
- RecipeCode = rm.RecipeCode;
- TrayNum = rm.TrayCode;
- foreach (RemoteRecipeRawMaterial item in rm.RawMaterial)
- {
- var res = Json<DevicePar>.Data.rawMaterialStockBin.FirstOrDefault(p => p.RawMaterialLocation == item.RawMaterialLocation);
- if (res != null && !string.IsNullOrEmpty(res.RawMaterialName))
- {
- var temp = Json<DevicePar>.Data.BomMaterial.FirstOrDefault(p => p.MaterialCode == res.RawMaterialName);
- if (temp != null && !string.IsNullOrEmpty(temp.MaterialName))
- {
- item.RawMaterialName = temp.MaterialName;
- }
- }
- //AllRawMaterial.Add(item);
- AllRawMaterial.Add(new RemoteRecipeRawMaterial()
- {
- RawMaterialType = item.RawMaterialType,
- RawMaterialName = item.RawMaterialName,
- RawMaterialWeight = item.RawMaterialWeight,
- RawMaterialLocation = item.RawMaterialLocation,
- RawMaterialBarrelNum = item.RawMaterialBarrelNum,
- });
- }
- foreach (var item1 in rm.WindSend)
- {
-
- var res = Json<DevicePar>.Data.windSendRawMaterial.FirstOrDefault(p => p.Location == item1.Location);
- if (res != null)
- {
- item1.RawMaterialName = res.RawMaterialChineseName;
- }
-
- AllRawMaterial.Add(new RemoteRecipeRawMaterial()
- {
- RawMaterialType = item1.RawMaterialType,
- RawMaterialName = item1.RawMaterialName,
- RawMaterialWeight = item1.RawMaterialWeight,
- RawMaterialLocation = item1.Location,
- RawMaterialBarrelNum = item1.RawMaterialBarrelNum,
- });
- }
- }
- }), "LocalRecipeEdit", true);
-
-
- RemoveCommand = new RelayCommand<object>((o) =>
- {
- var res = AllRawMaterial.FirstOrDefault(p => p.RawMaterialName == o.ToString());
- if (res != null) AllRawMaterial.Remove(res);
- //NoticeDemoViewModel.OpenMsg(EnumPromptType.Success, App.MainWindow, "提示", $"{o.ToString()}:原料删除成功!");
- });
-
- AddCommand = new RelayCommand(() =>
- {
- int MaxRawMaterial = 15;
- var res = AllRawMaterial.Where(p => p.RawMaterialType == "小料").ToList();
- if (res.Count < MaxRawMaterial)
- {
- AllRawMaterial.Add(new RemoteRecipeRawMaterial()
- {
- RawMaterialType = "小料",
- RawMaterialName = "小料" + (res.Count + 1),
- RawMaterialLocation = res.Count + 1,
- RawMaterialBarrelNum = (short)new Random().Next(6, 9),
- RawMaterialWeight = (float)(new Random().Next(100, 300) * 0.001),
- });
- }
- else
- {
- NoticeDemoViewModel.OpenMsg(EnumPromptType.Success, App.MainWindow, "提示", $"原料最多添加{MaxRawMaterial}种");
- }
-
- });
- AddFLCommand = new RelayCommand(() =>
- {
- int MaxRawMaterial = 5;
- var res = AllRawMaterial.Where(p => p.RawMaterialType == "粉料").ToList();
- if (res.Count < MaxRawMaterial)
- {
- AllRawMaterial.Add(new RemoteRecipeRawMaterial()
- {
- RawMaterialType = "粉料",
- RawMaterialName = "粉料" + (res.Count + 1),
- RawMaterialLocation = res.Count + 1,
- RawMaterialWeight = new Random().Next(1, 5),
- RawMaterialBarrelNum = 3,
- });
- }
- else
- {
- NoticeDemoViewModel.OpenMsg(EnumPromptType.Success, App.MainWindow, "提示", $"粉料最多添加{MaxRawMaterial}种");
- }
- });
- SaveCommand = new RelayCommand(() =>
- {
- if (!MessageNotify.GetInstance.ShowDialog("请确认,是否保存该配方配置?"))
- {
- return;
- }
- if (RecipeName.Length < 0 || RecipeName == null || RecipeName == String.Empty || RecipeName == "")
- {
- NoticeDemoViewModel.OpenMsg(EnumPromptType.Error, App.MainWindow, "错误", $"配方名称不能为空");
- return;
- }
- if (RecipeCode.Length < 0 || RecipeCode == null || RecipeCode == String.Empty || RecipeCode == "")
- {
- NoticeDemoViewModel.OpenMsg(EnumPromptType.Error, App.MainWindow, "错误", $"配方编号不能为空");
- return;
- }
- if (TrayNum != 1 && TrayNum != 2)
- {
- TrayNum = 1;
- }
- ObservableCollection<RemoteRecipeRawMaterial> RawMaterials = new ObservableCollection<RemoteRecipeRawMaterial>();
- ObservableCollection<WindSendRawMaterial> WindSendRawMaterials = new ObservableCollection<WindSendRawMaterial>();
- if (AllRawMaterial == null || AllRawMaterial.Count <= 0)
- {
- NoticeDemoViewModel.OpenMsg(EnumPromptType.Warn, App.MainWindow, "警告", $"没有可保存的参数!");
- return;
- }
- var res = AllRawMaterial.Where(p => p.RawMaterialType == "小料").ToList();
- for (int i = 0; i < res.Count; i++)
- {
- if (res.Where(p => p.RawMaterialLocation == res.ElementAt(i).RawMaterialLocation)?.ToList()?.Count >= 2)
- {
- NoticeDemoViewModel.OpenMsg(EnumPromptType.Error, App.MainWindow, "错误", $"原料位置冲突,请检查后重试!");
- return;
- }
- }
- var res1 = AllRawMaterial.Where(p => p.RawMaterialType == "粉料").ToList();
- for (int i = 0; i < res1.Count; i++)
- {
- if (res1.Where(p => p.RawMaterialLocation == res1.ElementAt(i).RawMaterialLocation)?.ToList()?.Count >= 2)
- {
- NoticeDemoViewModel.OpenMsg(EnumPromptType.Error, App.MainWindow, "错误", $"粉料位置冲突,请检查后重试!");
- return;
- }
- }
- int index = Array.FindIndex(Json<LocalRecipeDataColl>.Data.Recipes.ToArray(), p => p.RecipeCode == RecipeCode);
- if (index >= 0)
- {
- foreach (var item in AllRawMaterial)
- {
- if (item.RawMaterialType == "小料")
- {
- RawMaterials.Add(new RemoteRecipeRawMaterial()
- {
- RawMaterialName = item.RawMaterialName,
- RawMaterialType = item.RawMaterialType,
- RawMaterialLocation = item.RawMaterialLocation,
- RawMaterialBarrelNum = item.RawMaterialBarrelNum,
- RawMaterialWeight = item.RawMaterialWeight,
- });
- }
- if (item.RawMaterialType == "粉料")
- {
- WindSendRawMaterials.Add(new WindSendRawMaterial()
- {
- RawMaterialName = item.RawMaterialName,
- RawMaterialWeight = item.RawMaterialWeight,
- Location = item.RawMaterialLocation,
- RawMaterialType = item.RawMaterialType,
- RawMaterialBarrelNum = item.RawMaterialBarrelNum,
- });
- }
- }
- Json<LocalRecipeDataColl>.Data.Recipes.ElementAt(index).RecipeName = RecipeName;
- Json<LocalRecipeDataColl>.Data.Recipes.ElementAt(index).TrayCode = TrayNum;
- Json<LocalRecipeDataColl>.Data.Recipes.ElementAt(index).RecipeCode = RecipeCode;
- Json<LocalRecipeDataColl>.Data.Recipes.ElementAt(index).RawMaterial = RawMaterials;
- Json<LocalRecipeDataColl>.Data.Recipes.ElementAt(index).WindSend = WindSendRawMaterials;
- NoticeDemoViewModel.OpenMsg(EnumPromptType.Success, App.MainWindow, "提示", $"修改配方完成!");
- MessageNotify.GetInstance.ShowUserLog($"修改配方名称:【{RecipeName}】,配方编号:【{RecipeCode}】。");
- }
- else
- {
- foreach (var item in AllRawMaterial)
- {
- if (item.RawMaterialType == "小料")
- {
- RawMaterials.Add(new RemoteRecipeRawMaterial()
- {
- RawMaterialName = item.RawMaterialName,
- RawMaterialType = item.RawMaterialType,
- RawMaterialLocation = item.RawMaterialLocation,
- RawMaterialBarrelNum = item.RawMaterialBarrelNum,
- RawMaterialWeight = item.RawMaterialWeight,
- });
- }
- if (item.RawMaterialType == "粉料")
- {
- WindSendRawMaterials.Add(new WindSendRawMaterial()
- {
- RawMaterialName = item.RawMaterialName,
- RawMaterialWeight = item.RawMaterialWeight,
- Location = item.RawMaterialLocation,
- RawMaterialType = item.RawMaterialType,
- RawMaterialBarrelNum = item.RawMaterialBarrelNum,
- });
- }
- }
- var newRemoteRecipeData = new RemoteRecipeData()
- {
- RecipeName = RecipeName,
- RecipeCode = RecipeCode,
- TrayCode = TrayNum,
- RawMaterial = RawMaterials,
- WindSend = WindSendRawMaterials,
- RecipesSource=RecipeSource.本地
- };
- Json<LocalRecipeDataColl>.Data.Recipes.Add(newRemoteRecipeData);
- //新增一条配方应该默认显示出来。
- Json<LocalRecipeDataColl>.Data.SelectedRecipes.Add(newRemoteRecipeData);
- Json<LocalRecipeDataColl>.Save();
- NoticeDemoViewModel.OpenMsg(EnumPromptType.Success, App.MainWindow, "提示", $"自定义配方添加完成!");
- MessageNotify.GetInstance.ShowUserLog($"添加一个自定义配方,配方名称:【{RecipeName}】,配方编号:【{RecipeCode}】。");
- }
- ActionManage.GetInstance.Send("CloseNewRemoteRecipeView");
- });
- }
- public string RecipeCode { get { return _mRecipeCode; } set { _mRecipeCode = value; OnPropertyChanged(); } }
- private string _mRecipeCode = string.Empty;
-
- public string RecipeName { get { return _mRecipeName; } set { _mRecipeName = value; OnPropertyChanged(); } }
- private string _mRecipeName = string.Empty;
-
- public int TrayNum { get { return _mTrayNum; } set { _mTrayNum = value; OnPropertyChanged(); } }
- private int _mTrayNum = 1;
-
- public string ErrorInfo { get { return _mErrorInfo; } set { _mErrorInfo = value; OnPropertyChanged(); } }
- private string _mErrorInfo;
-
- public ObservableCollection<RemoteRecipeRawMaterial> AllRawMaterial { get; set; } = new ObservableCollection<RemoteRecipeRawMaterial>();
- //public ObservableCollection<NewRemoteRecipeModel> AllRawMaterial { get; set; } = new ObservableCollection<NewRemoteRecipeModel>();
-
-
-
- public RelayCommand<object> RemoveCommand { get; set; }
-
- public RelayCommand AddCommand { get; set; }
- public RelayCommand AddFLCommand { get; set; }
- public RelayCommand SaveCommand { get; set; }
-
- }
- }
|