using HandyControl.Controls; using Ping9719.WpfEx.Mvvm; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Windows; using System.Windows.Input; using WCS.BLL.DbModels; using WCS.Model; using WCS.Model.ApiModel.MatInventoryDetail; using 货架标准上位机.Api; namespace 货架标准上位机.ViewModels { public class OutInventoryAddDucumentViewModel : BindableBase { #region Property private ObservableCollection dataGridItemSource; public ObservableCollection DataGridItemSource { get { return dataGridItemSource; } set { SetProperty(ref dataGridItemSource, value); } } private MatInventorySummaryModel selectedItemSource; public MatInventorySummaryModel SelectedItemSource { get { return selectedItemSource; } set { SetProperty(ref selectedItemSource, value); } } #endregion #region Command /// /// 新增物料 /// public ICommand BtnAddCommand { get => new DelegateCommand(BtnAdd); } public void BtnAdd() { var window = new OutInventoryAddMatView(); window.Owner = Application.Current.MainWindow; var result = window.ShowDialog(); if (result == true) { if (DataGridItemSource == null) DataGridItemSource = new ObservableCollection(); DataGridItemSource.Add(window.inventorySummary); } else { return; } } public ICommand DelCommand { get => new DelegateCommand(Del); } public void Del(MatInventorySummaryModel obj) { try { DataGridItemSource.Remove(obj); ; } catch (Exception ex) { } } // 定义一个事件,当需要关闭窗口时触发 public event Action RequestClose; // 一个方法,当满足某些条件时调用,以触发关闭窗口 protected virtual void OnRequestClose() { RequestClose?.Invoke(); } public ICommand GenerateOutOrderCommand { get => new DelegateCommand(GenerateOutOrder); } public void GenerateOutOrder() { //数据校验 if (DataGridItemSource == null || DataGridItemSource.Count == 0) { HandyControl.Controls.MessageBox.Show("选择的物料为空无法生成出库单!"); return; } foreach (var itemSource in DataGridItemSource) { if (itemSource.NeedQty == 0) { Growl.Warning("需求数量未填!"); SelectedItemSource = itemSource; return; } //问一下此处是否要做限制 TO DO 物料分类(Group By)的规则 分到哪一类 //else if (itemSource.NeedQty > itemSource.TotalQty) //{ // Growl.Warning("需求数量大于库存数量!"); // SelectedItemSource = itemSource; // return; //} } #region 调用接口生成出库单据 try { var body = new SysOutOrderByMatCodeRequest() { OrderType = "出库", OrderSource = "WCS前端", ItemList = DataGridItemSource.Select(t => new MatCodeItemList() { MatCode = t.MatCode, MatName = t.MatName, MatBatch = t.MatBatch, ReqQty = t.NeedQty, }).ToList(), DeviceType = LocalFile.Config.DeviceType, UserName = LocalStatic.CurrentUser }; var Result = ApiHelp.GetDataFromHttp(LocalFile.Config.ApiIpHost + "outstore/sysOutOrderByMatCode", body, "POST"); if (Result != null && Result.Code == 200) { Growl.Success(Result.Message); OnRequestClose(); } else if (Result != null) { Growl.Warning(Result.Message); } } catch (Exception ex) { Growl.Error("加载数据失败:" + ex.Message); } finally { } #endregion } #endregion } }