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 StocktakingViewModel : BindableBase { public StocktakingViewModel() { RefreshStockTakingOrderList(); } #region Property private StockTakingOrderModel selectedOutOrder; public StockTakingOrderModel SelectedOutOrder { get { return selectedOutOrder; } set { SetProperty(ref selectedOutOrder, value); if (selectedOutOrder != null) { SelectedOutOrderNumber = selectedOutOrder.StocktakingOrderNumber; 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.IsStocktaking).Count(); TotalPan = dataGridItemSource.Count(); }); } #endregion #region Command public ICommand BtnStartCommand { get => new DelegateCommand(BtnStart); } public void BtnStart() { try { //判断是否选择单据 if (SelectedOutOrder == null) { Growl.Warning("未选择单据!"); return; } #region 调用接口开始盘点 var body = new GetStockTakingOrderMatDetailRequest() { StockTakingOrderId = selectedOutOrder.Id, StockTakingOrderNumber = selectedOutOrder.StocktakingOrderNumber, UserName = LocalStatic.CurrentUser, DeviceType = LocalFile.Config.DeviceType, }; var Result = ApiHelp.GetDataFromHttp(LocalFile.Config.ApiIpHost + "stockTaking/startStockTakingOrder", 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 GetStockTakingOrderMatDetailRequest() { StockTakingOrderId = selectedOutOrder.Id, StockTakingOrderNumber = selectedOutOrder.StocktakingOrderNumber, UserName = LocalStatic.CurrentUser, DeviceType = LocalFile.Config.DeviceType, }; var Result = ApiHelp.GetDataFromHttp(LocalFile.Config.ApiIpHost + "stockTaking/endStockTakingOrder", 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 RefreshStockTakingOrderList(string OrderNumber = "") { #region 调用接口获取发料单 try { var body = new GetStockTakingOrdersRequest() { }; var Result = ApiHelp.GetDataFromHttp>(LocalFile.Config.ApiIpHost + "stockTaking/getStockTakingOrdersByStatus", body, "POST"); if (Result != null && Result.Code == 200) { OutOrderList = new ObservableCollection(Result.Data.Lists); if (!string.IsNullOrEmpty(OrderNumber)) { SelectedOutOrder = OutOrderList.Where(t => t.StocktakingOrderNumber == 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 GetStockTakingOrderMatDetailRequest() { StockTakingOrderId = selectedOutOrder.Id, StockTakingOrderNumber = selectedOutOrder.StocktakingOrderNumber, UserName = LocalStatic.CurrentUser, DeviceType = LocalFile.Config.DeviceType, }; var Result = ApiHelp.GetDataFromHttp>>(LocalFile.Config.ApiIpHost + "stockTaking/getStockTakingOrderMatDetail", 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 } }