You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

215 lines
7.3 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using Admin.Core.Model;
using Aucma.Scada.UI.Common;
using Aucma.Scada.UI;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Runtime.InteropServices;
using System.Windows;
namespace Aucma.Scada.UI.ViewModel.InventoryInfo
{
public partial class LinerInventoryViewModel : ObservableObject
{
[DllImport("user32.dll")]
public static extern int MessageBoxTimeoutA(IntPtr hWnd, string msg, string Caps, int type, int Id, int time);
private ObservableCollection<BaseSpaceInfo> spaceItems = new ObservableCollection<BaseSpaceInfo>();
private InventoryInfoBusiness inventoryInfoBusiness = new InventoryInfoBusiness();// InventoryInfoBusiness.Instance;
private OutStoreBusiness outStoreBusiness = new OutStoreBusiness();// OutStoreBusiness.Instance;
private InStoreBusiness inStoreBusiness = new InStoreBusiness();// InStoreBusiness.Instance;
private AppConfig appConfig = new AppConfig();//AppConfig.Instance;
public LinerInventoryViewModel()
{
outStoreBusiness.RefreshStoreStockEvent += Query;
inStoreBusiness.RefreshInStoreTaskEvent += RefreshSpaceInfo;
Query();
}
#region 参数定义
public ObservableCollection<BaseSpaceInfo> _shapes;
public ObservableCollection<BaseSpaceInfo> Shapes
{
get => _shapes;
set => SetProperty(ref _shapes, value);
}
private ObservableCollection<BaseSpaceDetail> spaceDetailDataGrid;
public ObservableCollection<BaseSpaceDetail> SpaceDetailDataGrid
{
get => spaceDetailDataGrid;
set => SetProperty(ref spaceDetailDataGrid, value);
}
#endregion
private void Query()
{
App.Current.Dispatcher.BeginInvoke((Action)(async () =>
{
var info =await inventoryInfoBusiness.GetSpaceInfos(appConfig.linerStoreCode);
if (info != null)
{
if (spaceItems.Count > 0)
{
spaceItems.Clear();
}
foreach (var item in info)
{
spaceItems.Add(item);
}
Shapes = spaceItems;
}
}));
}
private void RefreshSpaceInfo(object obj = null, bool isFinish = true)
{
Query();
}
/// <summary>
/// 货道入库标识设置
/// </summary>
/// <param name="obj"></param>
[RelayCommand]
private async void UpdateInStoreFlag(string info)
{
bool result =await inventoryInfoBusiness.UpdateInStoreFlag(appConfig.linerStoreCode, info);
if (result)
{
Query();
MessageBoxTimeoutA((IntPtr)0, $"货道入库状态修改成功3秒后关闭提示", "提示", 0, 0, 3000);
}
else
{
MessageBox.Show("货道入库状态修改失败", "提示", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK, MessageBoxOptions.DefaultDesktopOnly);
}
}
/// <summary>
/// 货道出库标识设置
/// </summary>
/// <param name="obj"></param>
[RelayCommand]
private async void UpdateOutStoreFlag(object obj)
{
string info = obj as string;
bool result =await inventoryInfoBusiness.UpdateOutStoreFlag(appConfig.linerStoreCode, info);
if (result)
{
Query();
MessageBoxTimeoutA((IntPtr)0, $"货道出库状态修改成功3秒后关闭提示", "提示", 0, 0, 3000);
}
else
{
MessageBox.Show("货道出库状态修改失败", "提示", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK, MessageBoxOptions.DefaultDesktopOnly);
}
}
/// <summary>
/// 货道异常标识设置
/// </summary>
/// <param name="obj"></param>
[RelayCommand]
private async void UpdateUnusualFlag(object obj)
{
string info = obj as string;
bool result =await inventoryInfoBusiness.UpdateUnusualFlag(appConfig.linerStoreCode, info);
if (result)
{
Query();
MessageBoxTimeoutA((IntPtr)0, $"货道异常标识修改成功3秒后关闭提示", "提示", 0, 0, 3000);
}
else
{
MessageBox.Show("货道异常标识修改失败", "提示", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK, MessageBoxOptions.DefaultDesktopOnly);
}
}
/// <summary>
/// 修改货道状态
/// </summary>
/// <param name="obj"></param>
[RelayCommand]
private async void UpdateSpaceStatus(object obj)
{
string info = obj as string;
bool result =await inventoryInfoBusiness.UpdateSpaceStatus(appConfig.linerStoreCode, info);
if (result)
{
Query();
MessageBoxTimeoutA((IntPtr)0, $"货道状态修改成功3秒后关闭提示", "提示", 0, 0, 3000);
}
else
{
MessageBox.Show("货道状态修改失败", "提示", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK, MessageBoxOptions.DefaultDesktopOnly);
}
}
/// <summary>
/// 货道明细
/// </summary>
/// <param name="obj"></param>
[RelayCommand]
private async void SpaceDetail(object obj)
{
string info = obj as string;
var list =await inventoryInfoBusiness.GetBaseSpaceDetails(appConfig.linerStoreCode, info);
RefreshSpaceDetails(list);
}
/// <summary>
/// 刷新货道明细列表
/// </summary>
/// <param name="spaceDetails"></param>
private void RefreshSpaceDetails(List<BaseSpaceDetail> spaceDetails)
{
SpaceDetailDataGrid = new ObservableCollection<BaseSpaceDetail>();
if (spaceDetails != null)
{
spaceDetails.ForEach(
arg =>
{
SpaceDetailDataGrid.Add(arg);
});
}
}
/// <summary>
/// 手动出一个
/// </summary>
/// <param name="obj"></param>
[RelayCommand]
private async void OutOnlyOne(object obj)
{
string info = obj as string;
bool result =await outStoreBusiness.OutOnlyOneBySpaceCode(appConfig.linerStoreCode, info);
if (result)
{
Query();
MessageBoxTimeoutA((IntPtr)0, $"出库任务创建成功3秒后关闭提示", "提示", 0, 0, 3000);
}
else
{
MessageBox.Show("出库任务创建失败", "提示", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK, MessageBoxOptions.DefaultDesktopOnly);
}
}
}
}