using HandyControl.Controls; using MiniExcelLibs; using Ping9719.WpfEx.Mvvm; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Input; using 智慧物流软件系统.Views.Controls; using 智慧物流软件系统.Api; using WCS.Model; using WCS.Model.ApiModel.Home; using WCS.Model.ApiModel.StoreInfo; using WCS.BLL.DbModels; using WCS.Model.ApiModel.MatBaseInfo; using WCS.Model.ApiModel.User; using WCS.Model.ApiModel; using Newtonsoft.Json.Bson; using WCS.Model.ApiModel.LocationInfo; using WCS.Model.ApiModel.MatDetailCurrentInfo; namespace 智慧物流软件系统.ViewModel { public class MatDetailCurrentInfoViewModel : BindableBase { public MatDetailCurrentInfoViewModel() { } #region Property private List dataGridItemSource; public List DataGridItemSource { get { return dataGridItemSource; } set { SetProperty(ref dataGridItemSource, value); } } private MatDetailCurrentInfoModel selectedataGridItem; public MatDetailCurrentInfoModel SelectedataGridItem { get { return selectedataGridItem; } set { SetProperty(ref selectedataGridItem, value); } } #region 位置 private string locationCode; public string LocationCode { get { return locationCode; } set { SetProperty(ref locationCode, value); } } private List locationAreaItems; public List LocationAreaItems { get { return locationAreaItems; } set { SetProperty(ref locationAreaItems, value); } } private LocationAreaInfoModel? selectedLocationAreaItems; public LocationAreaInfoModel? SelectedLocationAreaItems { get { return selectedLocationAreaItems; } set { SetProperty(ref selectedLocationAreaItems, value); } } public void InitLocationAreaItems() { //调用接口更新! Task.Run(() => { LocationAreaItems = new List(); LocationAreaItems.Add(new LocationAreaInfoModel { Id = null, LocationAreaName = "全部" }); var body = new RequestBase() { UserName = LocalStatic.CurrentUser, DeviceType = LocalFile.Config.DeviceType, }; var Result = ApiHelp.GetDataFromHttp>(LocalFile.Config.ApiIpHost + "locationInfo/getLocationAreas", body, "POST"); if (Result != null && Result.Data != null && Result.Data.Lists.Count() > 0) { LocationAreaItems.AddRange(Result.Data.Lists); } SelectedLocationAreaItems = LocationAreaItems.FirstOrDefault(); }); } #endregion #region 货架 /// /// 货架编号 /// private string shelfCode; public string ShelfCode { get { return shelfCode; } set { SetProperty(ref shelfCode, value); } } private List shelfTypeItems; public List ShelfTypeItems { get { return shelfTypeItems; } set { SetProperty(ref shelfTypeItems, value); } } private ShelfTypeModel? selectedShelfTypeItem; public ShelfTypeModel? SelectedShelfTypeItem { get { return selectedShelfTypeItem; } set { SetProperty(ref selectedShelfTypeItem, value); } } public void InitShelfTypeItems() { //调用接口更新! Task.Run(() => { ShelfTypeItems = new List(); ShelfTypeItems.Add(new ShelfTypeModel { Id = null, ShelfTypeName = "全部" }); var body = new RequestBase() { UserName = LocalStatic.CurrentUser, DeviceType = LocalFile.Config.DeviceType, }; var Result = ApiHelp.GetDataFromHttp>(LocalFile.Config.ApiIpHost + "home/getShelfTypes", body, "POST"); if (Result != null && Result.Data != null && Result.Data.Lists.Count() > 0) { ShelfTypeItems.AddRange(Result.Data.Lists); } SelectedShelfTypeItem = ShelfTypeItems.FirstOrDefault(); }); } #endregion #region 物料 /// /// 物料编码 /// private string matCode; public string MatCode { get { return matCode; } set { SetProperty(ref matCode, value); } } /// /// 物料名称 /// private string matName; public string MatName { get { return matName; } set { SetProperty(ref matName, value); } } #endregion #endregion #region Command public ICommand BtnResetCommand { get => new DelegateCommand(BtnReset); } public void BtnReset() { if (LocationAreaItems != null) { SelectedLocationAreaItems = LocationAreaItems.FirstOrDefault(); } LocationCode = string.Empty; if (ShelfTypeItems != null) { SelectedShelfTypeItem = ShelfTypeItems.FirstOrDefault(); } ShelfCode = string.Empty; MatCode = string.Empty; MatName = string.Empty; } public ICommand BtnSearchCommand { get => new DelegateCommand(BtnSearchReset); } public void BtnSearchReset() { BtnSearch(true); } public void BtnSearch(bool IsPageReset = true) { if (CurrentPage == 0 || IsPageReset) { CurrentPage = 1; return; } #region 调用接口获取数据 var dia = Dialog.Show(new TextDialog()); try { var body = new GetMatDetailCurrentInfosRequest() { LocationAreaId = SelectedLocationAreaItems == null ? null : SelectedLocationAreaItems.Id, LocationCode = LocationCode, ShelfTypeId = SelectedShelfTypeItem == null? null:selectedShelfTypeItem.Id, ShelfCode = ShelfCode, MatCode = MatCode, MatName = MatName, UserName = LocalStatic.CurrentUser, DeviceType = LocalFile.Config.DeviceType, PageNumber = CurrentPage, PageSize = PageSize, }; var Result = ApiHelp.GetDataFromHttp>(LocalFile.Config.ApiIpHost + "matDetailCurrenInfo/getMatDetailCurrentInfos", body, "POST"); if (Result != null && Result.Data != null && Result.Data.Lists != null) { DataGridItemSource = Result.Data.Lists; MaxPage = Result.Data.MaxPage; TotalCount = Result.Data.TotalCount; } } catch (Exception ex) { Growl.Error("加载数据失败:" + ex.Message); } finally { dia.Close(); } #endregion } public ICommand BtnEditCommand { get => new DelegateCommand(BtnEdit); } public void BtnEdit() { //查询勾选的第一个数据 var info = DataGridItemSource?.Where(t => t.IsSelected == true).FirstOrDefault(); if (info == null) { Growl.Warning("请选择需要修改的数据!"); } else { var updateView = new MatDetailCurrentInfoUpdateView("修改货架存量", info); updateView.ShowDialog(); if (updateView.DialogResult == true) { CurrentPage = 1; } } } public ICommand BtnDeleteCommand { get => new DelegateCommand(BtnDelete); } public void BtnDelete() { Growl.Ask($"是否删除所有勾选的数据?", isConfirmed => { if (isConfirmed) { //查询勾选的第一个数据 var needDeleteIds = DataGridItemSource?.Where(t => t.IsSelected == true) .Select(t => t.Id) .ToList(); if (needDeleteIds == null) { Growl.Warning("请选择需要修改的数据!"); } else { var body = new DeleteInfosRequest() { UserName = LocalStatic.CurrentUser, DeviceType = LocalFile.Config.DeviceType, needDeleteIds = needDeleteIds, }; var Result = ApiHelp.GetDataFromHttp>(LocalFile.Config.ApiIpHost + "matDetailCurrenInfo/deleteMatDetailCurrentInfo", body, "POST"); if (Result != null && Result.Code == 200) { BtnSearch(); Growl.Success("删除成功!" + Result?.Message); } else { Growl.Error($"{Result?.Message?.ToString()}"); } } } return true; }); } #endregion #region PageOperation 分页操作 private int currentPage; public int CurrentPage { get { return currentPage; } set { SetProperty(ref currentPage, value); BtnSearch(false); } } private int maxPage; public int MaxPage { get { return maxPage; } set { SetProperty(ref maxPage, value); } } //总数量 private int totalCount; public int TotalCount { get { return totalCount; } set { SetProperty(ref totalCount, value); } } private int pageSize = 10; public int PageSize { get => pageSize; set { SetProperty(ref pageSize, value); BtnSearch(true); } } public ICommand BtnFirstPageCommand { get => new DelegateCommand(BtnFirstPage); } public void BtnFirstPage() { CurrentPage = 1; } public ICommand BtnPrePageCommand { get => new DelegateCommand(BtnPrePage); } public void BtnPrePage() { if (CurrentPage > 1) { CurrentPage--; } } public ICommand BtnNextPageCommand { get => new DelegateCommand(BtnNextPage); } public void BtnNextPage() { if (CurrentPage < MaxPage) { CurrentPage++; } } public ICommand BtnLastPageCommand { get => new DelegateCommand(BtnLastPage); } public void BtnLastPage() { if (CurrentPage != MaxPage) { CurrentPage = MaxPage; } } #endregion } }