using BPASmartClient.MorkTM; using Microsoft.Toolkit.Mvvm.ComponentModel; using Microsoft.Toolkit.Mvvm.Input; using Model; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; namespace BPASmartClient.MilkWithTea.ViewModel { public class LocalConfigureViewModel : ObservableObject { #region 奶茶配方录入 /// /// 奶茶配方 /// public ObservableCollection materialRecipes { get => materialRecipes1; set => materialRecipes1 = value; } /// /// 出料集合 /// public ObservableCollection MaterailList { get; set; } = new ObservableCollection(); /// /// 奶茶名称 /// public string LocalGoodName { get { return _localGoodName; } set { _localGoodName = value; OnPropertyChanged(); } } private string _localGoodName; private ObservableCollection materialRecipes1 = new ObservableCollection(); /// /// 添加一条配方 /// public RelayCommand AddRecipeCommand { get; set; } /// /// 删除一条配方 /// public RelayCommand RemoveRecipeCommand { get; set; } /// /// 取消配方 /// public RelayCommand RecipeCancelCommand { get; set; } /// /// 保存配方 /// public RelayCommand SaveRecipeCommand { get; set; } #endregion #region 本地奶茶配方 /// /// 本地奶茶配方列表 /// public ObservableCollection localMaterialRecipes { get; set; } = GLobal.MaterialRecipes; /// /// 删除配方奶茶 /// public RelayCommand DeleteRecipeCommand { get; set; } #endregion #region 物料位置名称 /// /// 物料位置名称集合 /// public ObservableCollection materailNameAndPosions { get; set; } = new ObservableCollection(); public List materail1 { get; set; } = new List(); public List materail2 { get; set; } = new List(); /// /// 更新物料位置 /// public RelayCommand UpdateMaterialPosionCommand { get; set; } #endregion public LocalConfigureViewModel() { materialRecipes.Add(new MaterialRecipe() { MaterialWeight = 10 }); AddRecipeCommand = new RelayCommand(new Action(() => { materialRecipes.Add(new MaterialRecipe() { MaterialID = materialRecipes.Count() + 1 }); })); RemoveRecipeCommand = new RelayCommand((o => { if (o != null && o is int index) { materialRecipes.RemoveAt(index); for (int i = 0; i < materialRecipes.Count; i++)//ID排序 { materialRecipes[i].MaterialID = i + 1; } } })); RecipeCancelCommand = new RelayCommand(new Action(() => { materialRecipes.Clear(); LocalGoodName = String.Empty; })); SaveRecipeCommand = new RelayCommand(new Action(() => { if (LocalGoodName == "" || LocalGoodName == null) return; if (materialRecipes.Count == 0) return; localMaterialRecipes.Insert(0, new LocalTeaWithMilkConfig() { GoodNames = LocalGoodName, materialRecipes = materialRecipes }); UpdateLocalJosnData(GLobal.recipePath, localMaterialRecipes);//更新奶茶配方json文件 MessageBox.Show("保存成功"); })); DeleteRecipeCommand = new RelayCommand((o => { if (o != null && o is int index) { localMaterialRecipes.RemoveAt(index); UpdateLocalJosnData(GLobal.recipePath, localMaterialRecipes);//更新奶茶配方json文件 } })); UpdateMaterialPosionCommand = new RelayCommand(new Action(() => { materailNameAndPosions.Clear(); foreach(var item in materail1) { materailNameAndPosions.Add(item); } foreach (var item in materail2) { materailNameAndPosions.Add(item); } UpdateLocalJosnData(GLobal.posionPath, materailNameAndPosions);//更新物料位置名称 MaterailList.Clear(); foreach (MaterailNameAndPosion m in materailNameAndPosions) { if (m.MaterialName != null) MaterailList.Add(m.MaterialName); } })); Init(); } /// /// 界面初始化加载 /// private void Init() { materailNameAndPosions = GLobal.GetJsonToT(GLobal.posionPath); if (materailNameAndPosions.Count == 0) { foreach (MaterialPosion item in Enum.GetValues(typeof(MaterialPosion))) { materailNameAndPosions.Add(new MaterailNameAndPosion() { MaterialPosion = item.ToString() }); } } materail1 = materailNameAndPosions.Take(14).ToList(); materail2 = materailNameAndPosions.TakeLast(14).ToList(); foreach (MaterailNameAndPosion m in materailNameAndPosions) { if (m.MaterialName != null) MaterailList.Add(m.MaterialName); } } /// /// 更新Json文件数据 /// /// /// /// private void UpdateLocalJosnData(string path, ObservableCollection ts) { if (ts != null) File.WriteAllText(path, JsonConvert.SerializeObject(ts)); } } }