using HandyControl.Controls; using HandyControl.Data; using MiniExcelLibs; using Ping9719.WpfEx.Mvvm; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Data.SqlClient; using System.IO; using System.Linq; using System.Net; using System.Security.Cryptography.X509Certificates; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using System.Web.UI.WebControls; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using TouchSocket.Core; using WCS.Model; using WCS.Model.ApiModel.OutStore; using WCS.Model.ApiModel.Stocktaking; using 货架标准上位机.Api; using 货架标准上位机.ViewModel; namespace 货架标准上位机.ViewModel { public class OutInventoryViewModel : BindableBase { public OutInventoryViewModel() { RefreshOutOrderList(); } #region Property private OutOrderModel selectedOutOrder; public OutOrderModel SelectedOutOrder { get { return selectedOutOrder; } set { SetProperty(ref selectedOutOrder, value); if (selectedOutOrder != null) { SelectedOutOrderNumber = selectedOutOrder.OrderNumber; RefreshDataGridItemSource(); } else { DataGridItemSource?.Clear(); } } } private string selectedOutOrderNumber; public string SelectedOutOrderNumber { get => selectedOutOrderNumber; set { SetProperty(ref selectedOutOrderNumber, value); } } private ObservableCollection outOrderList; public ObservableCollection OutOrderList { get => outOrderList; set { SetProperty(ref outOrderList, value); } } private ObservableCollection dataGridItemSource; public ObservableCollection DataGridItemSource { get { return dataGridItemSource; } set { SetProperty(ref dataGridItemSource, value); RefreshCount(); } } //单据总盘数 private int totalPan; public int TotalPan { get => totalPan; set { SetProperty(ref totalPan, value); } } private int sendedPan; public int SendedPan { get => sendedPan; set { SetProperty(ref sendedPan, value); } } private string orderStatus; public string OrderStatus { get { return orderStatus; } set { SetProperty(ref orderStatus, value); } } public void RefreshCount() { Task.Run(() => { SendedPan = dataGridItemSource.Where(t => t.IsSended).Count(); TotalPan = dataGridItemSource.Count(); }); } #endregion #region Command public ICommand BtnOutOrderCommand { get => new DelegateCommand(BtnOutOrder); } public void BtnOutOrder() { var window = new OutInventoryAddDucumentView(); window.Owner = Application.Current.MainWindow; window.ShowDialog(); } public ICommand BtnStartCommand { get => new DelegateCommand(BtnStart); } public void BtnStart() { try { //判断是否选择单据 if (SelectedOutOrder == null) { Growl.Warning("未选择单据!"); return; } #region 调用接口开始出库 var body = new GetOutOrderDetailRequest() { OrderId = selectedOutOrder.Id, OrderNumber = selectedOutOrder.OrderNumber, UserName = LocalStatic.CurrentUser, DeviceType = LocalFile.Config.DeviceType, }; var Result = ApiHelp.GetDataFromHttp(LocalFile.Config.ApiIpHost + "outStore/goInOutstore", body, "POST"); if (Result != null && Result.Code == 200) { Growl.Warning("已成功开始出库!"); RefreshDataGridItemSource(); } else if (Result != null) { Growl.Warning(Result.Message); } else { Growl.Warning("调用接口失败!"); } #endregion } catch (Exception ex) { Growl.Error("出现异常:" + ex.Message); } finally { } } public ICommand BtnPauseCommand { get => new DelegateCommand(BtnPause); } public void BtnPause() { try { //判断是否选择单据 if (SelectedOutOrder == null) { Growl.Warning("未选择单据!"); return; } #region 调用接口结束出库 var body = new GetOutOrderDetailRequest() { OrderId = selectedOutOrder.Id, OrderNumber = selectedOutOrder.OrderNumber, UserName = LocalStatic.CurrentUser, DeviceType = LocalFile.Config.DeviceType, }; var Result = ApiHelp.GetDataFromHttp(LocalFile.Config.ApiIpHost + "outStore/goOutOutstore", body, "POST"); if (Result != null && Result.Code == 200) { Growl.Warning("已成功结束出库!"); RefreshDataGridItemSource(); } else if (Result != null) { Growl.Warning(Result.Message); } else { Growl.Warning("调用接口失败!"); } #endregion } catch (Exception ex) { Growl.Error("出现异常:" + ex.Message); } finally { } } public void RefreshOutOrderList(string OrderNumber = "") { #region 调用接口获取发料单 try { var body = new GetOutOrderListByStatusRequest() { OrderExeStatus = new List() { OutOrderExeStatus.开始发料, OutOrderExeStatus.发料完成 } }; var Result = ApiHelp.GetDataFromHttp>(LocalFile.Config.ApiIpHost + "outstore/getOutOrderListByStatus", body, "POST"); if (Result != null && Result.Code == 200) { OutOrderList = new ObservableCollection(Result.Data.Lists); if (!string.IsNullOrEmpty(OrderNumber)) { SelectedOutOrder = OutOrderList.Where(t => t.OrderNumber == OrderNumber).FirstOrDefault(); } } else if (Result != null && !string.IsNullOrEmpty(Result.Message)) { Growl.Warning(Result.Message); } } catch (Exception ex) { Growl.Warning(ex.Message); } #endregion } public void RefreshDataGridItemSource() { if (SelectedOutOrder == null) { //选择的单据为空无法进行查询 return; } #region 调用接口获取出库单物料明细 Task.Run(() => { var body = new GetOutOrderDetailRequest() { OrderId = selectedOutOrder.Id, OrderNumber = selectedOutOrder.OrderNumber, UserName = LocalStatic.CurrentUser, DeviceType = LocalFile.Config.DeviceType, }; var Result = ApiHelp.GetDataFromHttp>>(LocalFile.Config.ApiIpHost + "outStore/getOutOrderMatDetail", body, "POST"); if (Result != null && Result.Code == 200) { if (Result.Data.Count > 0) { DataGridItemSource = new ObservableCollection(Result.Data); } else { App.Current.Dispatcher.Invoke(() => { DataGridItemSource?.Clear(); }); Growl.Warning("该单据未查询到发料明细!"); } } else if (Result != null) { Growl.Warning(Result.Message); } else { Growl.Warning("调用接口失败!"); } }); #endregion } #endregion } }