Files
wcs/货架标准上位机/ViewModels/OutInventoryViewModel.cs
hehaibing-1996 d283924ae1 提交代码
2024-05-03 11:04:59 +08:00

320 lines
9.9 KiB
C#

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()
{
//线程 更新当前选择的订单的状态
//Task.Run(() =>
//{
// while (true)
// {
// try
// {
// Thread.Sleep(1000);
// //if (LocalStatic.IsRefreshOrderDetail)
// //{
// // LocalStatic.IsRefreshOrderDetail = false;
// // SelectedPickBillNumberChanged();
// //}
// }
// catch
// {
// //Logs.Write("更新订单状态异常!!");
// }
// }
//});
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<OutOrderModel> outOrderList;
public ObservableCollection<OutOrderModel> OutOrderList
{
get => outOrderList;
set
{
SetProperty(ref outOrderList, value);
}
}
private ObservableCollection<OutOrderMatDetailModel> dataGridItemSource;
public ObservableCollection<OutOrderMatDetailModel> 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("未选择单据!");
}
#region
var body = new GetOutOrderDetailRequest()
{
OrderId = selectedOutOrder.Id,
OrderNumber = selectedOutOrder.OrderNumber,
UserName = LocalStatic.CurrentUser,
DeviceType = LocalFile.Config.DeviceType,
};
var Result = ApiHelp.GetDataFromHttp<ResponseCommon>(LocalFile.Config.ApiIpHost + "outStore/goInOutstore", body, "POST");
if (Result != null && Result.Code == 200)
{
Growl.Warning("已成功开始入库!");
}
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("未选择单据!");
}
#region
var body = new GetOutOrderDetailRequest()
{
OrderId = selectedOutOrder.Id,
OrderNumber = selectedOutOrder.OrderNumber,
UserName = LocalStatic.CurrentUser,
DeviceType = LocalFile.Config.DeviceType,
};
var Result = ApiHelp.GetDataFromHttp<ResponseCommon>(LocalFile.Config.ApiIpHost + "outStore/goOutOutstore", body, "POST");
if (Result != null && Result.Code == 200)
{
Growl.Warning("已成功结束入库!");
}
else if (Result != null)
{
Growl.Warning(Result.Message);
}
else
{
Growl.Warning("调用接口失败!");
}
#endregion
}
catch (Exception ex)
{
Growl.Error("出现异常:" + ex.Message);
}
finally
{
}
}
public void RefreshOutOrderList()
{
#region
try
{
var body = new GetOutOrderListByStatusRequest()
{
OrderExeStatus = new List<OutOrderExeStatus>() { OutOrderExeStatus., OutOrderExeStatus. }
};
var Result = ApiHelp.GetDataFromHttp<PageQueryResponse<OutOrderModel>>(LocalFile.Config.ApiIpHost + "outstore/getOutOrderListByStatus", body, "POST");
if (Result != null && Result.Code == 200)
{
OutOrderList = new ObservableCollection<OutOrderModel>(Result.Data.Lists);
}
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<ResponseCommon<List<OutOrderMatDetailModel>>>(LocalFile.Config.ApiIpHost + "outStore/getOutOrderMatDetail", body, "POST");
if (Result != null && Result.Code == 200)
{
if (Result.Data.Count > 0)
{
DataGridItemSource = new ObservableCollection<OutOrderMatDetailModel>(Result.Data);
}
else
{
App.Current.Dispatcher.Invoke(() =>
{
DataGridItemSource?.Clear();
});
Growl.Warning("该单据未查询到发料明细!");
}
}
else if (Result != null)
{
Growl.Warning(Result.Message);
}
else
{
Growl.Warning("调用接口失败!");
}
});
#endregion
}
#endregion
}
}